Главная страница | назад





Article #17003: How do I enable the 3D controls?

 Question and Answer Database

FAQ2003C.txt   How do I enable the 3D controls?
Category   :OWL
Platform    :All
Product    :BC++  5.x

Question:
Whenever I try to enable the 3D controls in OWL they are 
not enabled?  What the heck is the problem?

Answer:
This is the result of a bug. When we check the OS version
in applicat.cpp (to make sure we don't use the 3D Controls in 
3.1), we check the wrong thing.  The fix for this is either to 
include the applicat.cpp source file in your project and change 
the line where we check this from GetMajorVersion to 
GetMinorVersion.  (Yes it is correct as GetMajorVersion, but
in the WinSys/system.h header (a microsoft header) it checks 
the byte the wrong way). If you do this you have to link 
statically.
Or you can Rebuild the OWL libraries, after changing the above 
problem.

Here is the code in applicat.cpp that you need to change--

//
// Enable or disable the use of the CTL3D DLL. Loads it on demand if needed.
//
void
TApplication::EnableCtl3d(bool enable)
{
  // As per Article Q125684 of Microsoft Development Library:
  // "If major version is 4 or greater, the application should not 
  //  implement CTL3D".
  //      'How to Use CTL3D Under the Windows 95 Operating System'
  //
  /*if (TSystem::GetMajorVersion() >= 4)   OLD STATEMENT*/
    if (TSystem::GetMinorVersion() >= 4)  //corrected
    return;

  // Load the Ctl3d DLL if needed & register our instance
  //
  if (enable) {
    if (!Ctl3dModule) {
      try {
        Ctl3dModule = new TCtl3dDll();
        Ctl3dModule->Register(*this);
      }
      catch (...) {
        TRACEX(OwlApp, 0, "Unable to create instance of TCtl3dDll");
        return;
      }
    }
  }
  Ctl3dOn = enable;
}

 

7/2/98 10:32:32 AM
 

Last Modified: 01-SEP-99