ControlWizard Generates Both 16-bit and 32-bit Projects

Last reviewed: October 12, 1995
Article ID: Q125242
The information in this article applies to:
  • Microsoft OLE Control Development Kit (CDK), version 1.0

SUMMARY

The ControlWizard included with the Microsoft OLE Control Development Kit (CDK) generates both 16-bit and 32-bit projects. In most cases, you can develop your control on either a 16-bit or 32-bit platform, and then rebuild the control on the other platform.

MORE INFORMATION

When ControlWizard is used to create an OLE control, two projects are generated. The full project name you specify is used as the base name for the 16-bit MAK file and other files used by the 16-bit IDE. The first six letters of the project name followed by "32" are used to create a base name for the 32-bit MAK and DEF files and other files used by the 32-bit IDE.

For example, if the full project name is TESTCTRL, these two MAK files are generated:

   TESTCTRL.MAK -- 16-bit Project File
   TESTCT32.MAK -- 32-bit Project File

ControlWizard also generates a 'makefile' file that NMAKE can use to generate either a 16- or 32-bit project by specifying the WIN32 flag on the command line. For example:

nmake WIN32=1       // 32 bit version
nmake WIN32=0       // 16 bit version

Within the generated source files, place platform-dependent code in conditional compilation blocks, as shown in this example:

   LRESULT CTestCtrl::OnOcmCommand(WPARAM wParam, LPARAM lParam)
   {
   #ifdef _WIN32
      WORD wNotifyCode = HIWORD(wParam);
   #else
      WORD wNotifyCode = HIWORD(lParam);
   #endif

      // TODO: Switch on wNotifyCode here.

      return 0;
   }

To maintain platform independence, use conditional compilation blocks to isolate platform dependencies in the code you add to your control. Use the #error statement to flag features that are not implemented for one platform or the other. For example, you might code the previous example like the following if the 32-bit implementation was not complete:

   LRESULT CTestCtrl::OnOcmCommand(WPARAM wParam, LPARAM lParam)
   {
   #ifdef _WIN32
      #error OnOcmCommand parameter decoding not completed for Win32!
   #else
      WORD wNotifyCode = HIWORD(lParam);
   #endif

      // TODO: Switch on wNotifyCode here.

      return 0;
   }

Note that because separate project files are used for 16- and 32-bit targets, all project maintenance will need to be performed for both projects. Project maintenance activities include:
  • Adding or removing project files.
  • Changing compiler settings.
  • Changing linker settings, including input libraries.


Additional reference words: kbinf 1.00 2.00
KBCategory: kbole kbprg kbtool
KBSubcategory: CDKIss


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: October 12, 1995
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.