Using of #pragma in IDL files


Using #pragma vbname

With #pragma vbname you can map an IDL name to any VB name you want. See the following examples.

The reason why #pragma vbname exists

It is not possible to compile VB programs to executable files if project name plus class name has more than 39 characters due to a limitation of VB5 and ActiveX. Please use the #pragma vbname in your IDL files to work around.

Example of using #pragma vbname

module CosNaming
{
   #pragma vbname CosNaming
   // A good method to shorten VB names is setting a module name to nothing.
   // Above #pragma sets the module name CosNaming to nothing
   
   interface NamingContext
   { // VB name of this interface will be c_NamingContext
     // Without #pragma the VB name would be c_CosNamingNamingContext
   };
};

Example of using #pragma together with __IDL2VB__ macro

module CosNaming
{
   // If you have problems using #pragma with other IDL compilers
   // but the preprocessor works fine so you can write following
   #if defined __IDL2VB__
   #pragma vbname CosNaming
   #endif
   
   interface NamingContext
   { // VB name of this interface will be c_NamingContext
   };
};

Example of shortening an interface name

module grid
{
   interface MyServer
   { // interface name will be c_gridMySrv
   };
   // Map the interface name MyServer to MySrv
   #pragma vbname MyServer MySrv
};

Example of setting a name of an anonymous sequence

module grid
{
   typedef sequence<sequence<long> > Fred;
   
   // Map anonymous sequence of long to SeqOfLng
   #pragma vbname sequence<long> SeqOfLng
};

Using #pragma vbclsprefix

With #pragma vbclsprefix you can set the prefix of all generated VB classes. The default prefix is c_. This default can be overwritten by compiler option -C.

Example of setting VB class prefix

// Set the VB class prefix to cIdl
#pragma vbclsprefix cIdl

module grid
{
   interface MyServer
   { // VB class name of this interface will be cIdlgridMyServer.cls
     // Without #pragma the VB name would be c_gridMyServer.cls
   };
};

Using #pragma vbmodprefix

With #pragma vbmodprefix you can set the prefix of all generated VB modules. The default prefix is m_. This default can be overwritten by compiler option -M.

Example of setting VB module prefix

// Set the VB module prefix to mIdl
#pragma vbmodprefix mIdl

module grid
{
   interface MyServer
   { // VB module name of this interface will be mIdlgridMyServer.bas
     // Without #pragma the VB name would be m_gridMyServer.bas
   };
};