ID Number: Q60388
2.03 2.10 3.00
WINDOWS
Summary:
Applications that are targeted at both Windows versions 2.x and
Windows 3.0 must be developed using the Windows 2.x Software
Development Kit (SDK). To take full advantage of the Windows 3.0
environment, target your application solely at Windows 3.0 and use the
Windows 3.0 SDK to develop it.
In other words, DO NOT try to build 2.x applications with 3.0 tools.
More Information:
The following are the options for running under Windows 3.0:
1. Compile applications using the versions 2.x SDK, then mark them as
compatible with Windows 3.0. Such applications can run under both
Windows 2.x and Windows 3.0. However, applications compiled using
versions 2.x SDKs cannot use the new Windows 3.0 APIs.
2. Compile the application using the version 3.0 SDK. Such
applications can run only under Windows 3.0; however, they can take
full advantage of the new features that Windows 3.0 offers.
Microsoft does not provide any tools or support for achieving the
effect of having a Windows 3.0 application that runs in Windows 2.x.
However, the converse is supported (that is, building a Windows 2.x
application, testing it under 3.0 to make sure the proportional fonts
and protected-mode memory scheme do not cause problems, then marking
it as Windows 3.0 compatible with the MARK.EXE utility.) This process
(making the 2.x application 3.0-aware) is described in the "Microsoft
Windows Software Development Kit Installation and Update Guide" for
version 3.0.
The Windows 3.0 SDK libraries, include files, and resource compiler do
not attempt to support the Windows 2.x environment. For one thing,
running into errors with bad ordinal references may occur because
Windows 3.0 has new functions with new ordinal numbers, and Windows
2.x will treat them incorrectly when it encounters them (FatalExit
0x0403 "Invalid Ordinal Reference to USER" errors occur in debug
mode).
In some cases, it may be necessary to check the version and then take
appropriate action. For example, if the columns in the list boxes are
misaligned in version 3.0 but correctly aligned in 2.x, it is possible
that spaces were used to align them. Spaces do not perfectly match
characters in a proportional font. To avoid this problem, use the
GetVersion() call to see which version of Windows the application is
running in (Windows 2.x or Windows 3.0). In 2.x, use spaces; in 3.0,
align the text with the WM_SETTABSTOP message.
If it is necessary to call a particular Windows version 3.0 function
that does not exist in Windows versions 2.x, use the GetProcAddress()
function to get a far pointer to the function; this method eliminates
the need for the function's import reference to exist in the xLIBW
library the program is linked to.