Just for those interested in how to make an app which can use features in later versions of Windows and make it so it can still run on early versions of Windows.
The key is the API:
GetProcAddress
You can load any DLL (even OS DLL's) and then poll the DLL using GetProcAddress to see if an API exists. If it does, then you make the call via a code pointer. In PowerBasic that would be the CALL DWORD command. Not sure if Oxygen has a similar command or not.
But by polling a DLL to see if an API exists and then only use it when available, this allows the app (or DLL) to work even on older versions of Windows. Now if the API does not exist, you can either simply ignore it (tell your app, not available) or you can code an alternative which is available.
As an example to demonstrate, IN EZGUI I have a drawing command which can draw many UI objects (control type shapes). If Windows provides Themes and you tell your app to use them, then a number of the UI objects will be drawn using the Themed version API's. If the app does not have themes available when run, EZGUI switches to the GDI versions of the objects (unthemed). Here is a list of the themed UI objects it can draw:
Theme Aware objects:
%EZ_XBTNUP - Close (X) Button up
%EZ_XBTNDN - Close (X) Button down
%EZ_HBTNUP - Help Button up
%EZ_HBTNDN - Help Button down
%EZ_MXBTNUP - Maximize Button Up
%EZ_MXBTNDN - Maximize Button down
%EZ_MNBTNUP - Minimize Button up
%EZ_MNBTNDN - Minimize Button down
%EZ_RBTNUP - Restore Button up
%EZ_RBTNDN - Restore Button down
%EZ_CAPA - Caption Bar Active (square style)
%EZ_CAPI - Caption Bar InActive (square style)
%EZ_CAPAR - Caption Bar Active (rounded style)
%EZ_CAPIR - Caption Bar InActive (rounded style)
%EZ_TABBG - Tab Control Background
%EZ_TABBGF - Tab Control Background with a Flat border
%EZ_REBARBG - Rebar background
So the app can run on a later version of Windows and automatically use Themed drawing, but if run on an older version of Windows (ie. Win98) without Themes, it has an alternative.
So the GetProcAddress API is a powerful tool for designing apps (or libraries) which can run on more versions of Windows, including older ones.
I should also point out that by using long time WIN32 API's more effectively, one can actually write apps which run even on very old versions of Windows (ie. 95/98) but have the look and feel of later versions.
Also if a DLL does not exist on an older version of Windows (like the Theme DLL), the by using the LoadLibrary API to load some DLL's (rather than a defined declaration) if LoadLibrary returns NULL then the DLL does not exist and your app simply ignores it or provides an alternative. If LoadLibrary succeeds, then using the DLL handle, you can call GetProcAddress to poll for the API's you require and call them via a code pointer.