Adapting Quick Editor for COM
Copyright © Dec 31, 2000 by Ernest Murphy ernie@surfree.com
For educational use only. All commercial use only by written license.
revised 3/5/01 for new Tools
The Build DLL, Build OCX, and Build LIB settings described may be found at ...\COM\BIN\
ABSTRACT
Several useful settings and bat files for the Quick Editor programming environment are discussed and offered as suggestions
INTRODUCTION
Quick Editor is a highly adaptable environment for building programming projects. Due to the menu configuration options many desirable features may be added. While some of these tricks and hints are solely applicable to COM projects, many (such as building a DLL) will see wider popularity.
The techniques to be discussed are:
Building a Dynamic Link Library (.dll or .ocx)
Building a Static linked library (.lib)
Shelling Helper programs such as GUIDGEN, OleView, etc
Registering and Unregistering COM components.
Building Dynamic Link Libraries
Dynamic link libraries are a quite useful build product, yet Quick Editor/MASM32 does not support them. This is easily remmedyied.
DLLs are produced at the LINK stage, so these following statements will produce the required filetype:
With Resources:
Link /DLL /SUBSYSTEM:WINDOWS /DEF:%1.def
/LIBPATH:c:\masm32\lib %1.obj rsrc.obj
With No resources:
Link /DLL /SUBSYSTEM:WINDOWS /DEF:%1.def /LIBPATH:c:\masm32\lib %1.obj
These LINK directives should be all on the same line.
A .bat file BLDDLL.bat is provided to automate the entire build process, similar to the BLDALL.bat file does. This may be invoked with this Quick Editor menu macro:
Build &DLL,\MASM32\BIN\BLDDLL.bat {b}
A DLL also requires a .def file to specify the exported items. This file may also optionally name the final .dll Library. If it does not, the .asm file name is used with the .dll extension.
Building Visual Components (.ocx)
A Visual Component (.ocx) is simply a DLL with the extension changed to .ocx, no further magic is required. If the .def file specifies the library name as .ocx, then the DLL build as above may be used.
For those who prefer a choice, a BLDOCX.bat file option is included. This is identical to the BLDDLL.bat file, with the inclusion of an /OUT directive to change the Library name:
With Resources:
Link /DLL /SUBSYSTEM:WINDOWS /DEF:%1.def /OUT:%1.ocx
/LIBPATH:c:\masm32\lib %1.obj rsrc.obj
With No resources:
Link /DLL /SUBSYSTEM:WINDOWS /DEF:%1.def /OUT:%1.ocx /LIBPATH:c:\masm32\lib %1.obj
These LINK directives should be all on the same line.
Build &OCX,\MASM32\BIN\BLDOCX.bat {b} {n}
Building Object Libraries
Another generally useful LINK option not included in Quick Editor/MASM32 is the object library. An object library is a set of pre-compiled procedures. They may be added by static linking to your project at Link time. Only those library routines actually required by the project are imported, making for the fastest, and smallest possible project build.
The MASM32lib is just such a library.
Libraries also require include files so that other projects can get references to the contained procedures. Typically, the .lib and the .inc will have the same name.
Library files may be built with the following series of commands:
\masm32\bin\ml /nologo /c /coff *.asm\masm32\bin\lib *.obj /out:%1.lib
This builds a lib with the same name as the file you currently have open in Quick Editor. If you build the .lib with the .inc open you will get the correct .lib name.
Shelling Helper Applications
It is convienient to be able to shell helper applications directly from Quick Editor. This was your attention stays on the task at hand.
Generally, to add a helper application, open a shortcut to the app and inspect it's properties. You can copy the "Target" line, and use that as the Quick Editor path. Here are several examples from my Quick Editor settings:
OLEVIEW,\Program Files\Microsoft Visual Studio\Common\Tools\OLEVIEW.EXE
FindGUID,\MASM32\BIN\FINDGUID.BAT
GUID Generator,\Program Files\Microsoft Visual Studio\Common\Tools\GUIDGEN.EXE
MSDN, \WINDOWS\HH.EXE \Program Files\Microsoft Visual Studio\MSDN98\98VS\1033\msdnvs98.col
All your folder paths may be different, these are only given as examples.
Registering and Unregistering COM Components
All COM components must be referenced in the registry before they will work, and it's also a good idea to unregister them if you go making changes in the design phase.
Being the lazy type, I made Quick Editor setting to do this for me. It takes the current file name, adds on either .dll or .ocx extensions, and registers or unregisters as you need be.
Register DLL,\MASM32\BIN\regsvr32.exe {n}.DLL
Unregister DLL,\MASM32\BIN\regsvr32.exe /u {n}.DLL
-
Register OCX,\MASM32\BIN\regsvr32.exe {n}.ocx
Unregister OCX,\MASM32\BIN\regsvr32.exe /u {n}.ocx
Note I have moved my copy of regsvr32 to my MASM32/BIN folder. Had it been in my path I would not have had to do this.
TOOLS FOR COM
New to CoLib 1.1 are two tools to simplify working with GUIDS is asm. AsmGUID.DLL will convert a registry formatted GUID string to asm style. GUIDGen will create a new GUID in asm format and paste it into your source.
Add the following to your TOOLS settings:
New GUID,GUIDGen.dll
Convert GUID,AsmGUID.DLL
These dlls must be moved to the same folder as Quick Editor.
Conclusion
The harder you make Quick Editor work for you, the easier your task will be. I hope I've spured you on to seek other improvements you can make.