How To Create Constants and DLL Declarations in a Type Library

This article was previously published under Q143258
This article has been archived. It is offered "as is" and will no longer be updated.
It can be very useful to package constant definitions and DLL declarationsin a type Library. Visual Basic allows you to access type libraries andtheir contents. Once you have made a reference to the type library, you canview its information in Visual Basic's own Object Browser. Type Librariesare also superior in that you can also provide help strings along with thedeclarations to always let the user know what a definition is for.
To create a type library, you need the command line programs UUID.EXE andMKTYPLIB.EXE. These programs are provided with Visual C++.

Suppose we wanted to create a type library with three integer constants, astring constant, and one Windows API declaration. The following is theObject Description Language (ODL) code needed to produce the type library.Read through the ODL and there will be comments explaining what eachsection is and why we need them.
   [   // The Universal Unique identifier (UUID), needs to be generated by   // using uuid.exe program. Then, you paste the value into the type   // library.   uuid(006da100-110f-11cf-83b2-00aa0068851c),   // The Help String comes up in the object browser as the second   // piece of the library description in the "Libraries/Projects" combo   // box.   helpstring("Constants TypeLib"),   // The Locale Identifier (LCID), identifies the language the type   // library applies to.   lcid(0x9),   // This is the version number of the type library.   version(1.0)   ]   // This is the name of the type library. It comes up in the object   // browser as the first piece of the library description in the   // "Libraries/Projects" combo box.   library MyLib   {     // Define numeric constants.     typedef enum tagConst        {          mylibConst1,       // Make the constant mylibconst1 equal to 0.          mylibConst2=5,     // Make the constant mylibconst2 equal to 5.          mylibConst3=7      // Make the constant mylibconst3 equal to 7.        }Constants;      // You need to define string constants in a module.      // Modules also need to reference a dll name. In this case you don't      // need to, so just give it a bogus name.      [dllname("bogus")]      module MoreConstants       {         // Define a constant mystr and assign it the value StringConstant.         const LPSTR mystr="StringConstant";       };      // Now call a function located in the Windows API, specifically      // User32.dll. Now you see why you need a dll name here, this is      // where the API function will come from.      [dllname("user32.dll")]      module APIDeclare       {         // Give the API function a descriptive help line, this will         // be seen in the Object browser. Then, you can declare the         // function. The entry attribute specifies the identifier for the         // entry point into the dll.         // The in attribute specifies a parameter as a value going into         // the function.         //Note that the following two lines need to be all on one line.   [helpstring("Test API function Declaration"), entry("CloseWindow")]_    boolean   CloseWindow([in] long Winhndl);       };   }				

To compile this code, copy it into a text file and call it test.odl, andthen run the command line program MkTypLib as follows:
   mktyplib /nocpp test.odl				

The following message appears:
   Successfully generated type library 'test.tlb'.				

To Use the Type Library from Visual Basic

  1. Start Visual Basic with a new project.
  2. From the tools menu, select references. This will bring up the Reference dialog box; click the Browse button to search for the Test.tlb file. Once you have found the file, click OK.
  3. The Type Library will now be in the list of references, make sure it is checked, then exit the references dialog box.
  4. Draw a command button on form1.
  5. Enter the following code:
          Private Sub Command1_Click()      Dim x As Boolean      'Call the Windows API function CloseWindow without making one      'declare at all. Note that the CloseWindow API will close the current      'window.      x = CloseWindow(Me.hWnd)      'Now print out the value of the constants in the type library      'using message boxes.      MsgBox mylibConst1      MsgBox mylibConst2      MsgBox mylibConst3      MsgBox mystr      End Sub						
  6. Run the program; you will see form1 minimize and then you will see a message box for each constant we defined in our type library and the value for each constant.
OLE 2 Programmers Reference Volume 2

Article ID: 143258 - Last Review: 02/27/2014 10:23:56 - Revision: 1.3

Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Visual Basic 6.0 Enterprise Edition, Microsoft Visual Basic 4.0 Standard Edition, Microsoft Visual Basic 4.0 Professional Edition, Microsoft Visual Basic 4.0 Professional Edition, Microsoft Visual Basic 4.0 16-bit Enterprise Edition, Microsoft Visual Basic 4.0 32-Bit Enterprise Edition

  • kbnosurvey kbarchive kbhowto KB143258