The 32-bit API was designed to minimize the impact on existing code so that 16-bit applications could be adapted as easily as possible. However, some changes were mandated by the larger address space. Pointers are all 32 bits wide and no longer near or far, and your code cannot make assumptions based on segmented memory.
Items which have increased to 32 bits include:
These size differences are generally resolved in WINDOWS.H or by the C language, but some changes to source code are necessary. Because the different sizes can change the way information is packed in some message parameters, you must rewrite code that handles these messages. The larger size of graphics coordinates also affects a number of function calls.
Some source code changes are required because Win32 uses higher-level mechanisms for certain operations, such as MS-DOS calls. With these mechanisms, the 32-bit API is adaptable to many platforms, and it supports powerful new features such as multiple threads of execution.
Although Windows 3.x and Win32 were designed to be as compatible as possible, you may need to carefully review large amounts of source code. Where do you start? The top-down approach is recommended: