WindowPro OS/2 ver 1.5

From OS2World.Com Wiki
Jump to navigation Jump to search

This document is a temporary update to The WindowPro Users Guide and Reference Manual for use with the OS2 version of the WindowPro.

The DEMO

You must have CRTLIB.DLL (provided with the MSC 5.1 compiler) and MTWDWPRO.DLL (provided in this package) to run DEMO.EXE. Place both of these files in the DLL directory specified in your CONFIG.SYS file. Then type DEMO at the OS2 prompt. Note that the demo has not been updated for OS2 and therefore makes reference to certain things which are not relevant to the OS2 version of The WindowPro. Most notably, the OS2 version only has a DMA and an ANSI screen update method. The BIOS update method can be specified but does nothing.

STATIC LINK LIBS

When compiling for use with the statically linked you must define the manifest constant OS2. Use the compiler/linker driver batch file SLWDWPRO.CMD for compiling with the static large model library. Make sure that all .lib files have been copied to your LIB directory, all .dll files have been copied to your DLL directory, all your .h and .mt files have been copied to your INCLUDE directory, and that your .c files are in your default directory.

Most mouse functions do not work with the exception of kb_ismouse() and kb_mouseclicks(). kb_mouseclicks() should provide you with sufficient functionality for most operations. In fact I never use anything other than kb_mouseclicks for detecting mouse events. The balance of the mouse functions are lower-level functions which do not have a direct correlation to the OS2 mouse services. The stat libs are named:

OS2PROL.LIB                   large model
OS2PROM.LIB                   medium model
OS2PROS.LIB                   small model

SINGLE THREADED DYNAMIC LINK LIBS

When compiling and linking for use with the single-threaded DLL, STWDWPRO.DLL. Be sure to define these manifest constants:

OS2
DL
DLL

use only the LARGE model, and make sure that the import library STWDWPRO.LIB has been copied to your LIB directory. The single threaded DLL does not use CRTLIB.DLL. Use the compiler/linker driver batch file STWDWPRO.CMD to do this automatically.

MULTI THREADED DYNAMIC LINK LIBS

When compiling and linking for use with the multithreaded DLL, MTWDWPRO.DLL. Be sure to define these manifest constants:

OS2
DL
DLL
MT

use only the large model, make sure that the import library MTWDWPRO.LIB has been copied to your LIB directory, and copy the include files pro.mt and vs.mt to your INCLUDE directory. The multithreaded version is very simplistic. It establishes a single DOS semaphore, and then changes each call to a wn_ or vs_ function (via #define) to a request for the semaphore, the function call, followed by clearing the semaphore. This seems to work very well. Incorporating the semaphore checking directly into the libraries could be done in a similar fashion, or it could be done at a lower level. Doing semaphore checking at a lower level would probably result in more semaphore checking but would probably allow better CPU access for some threads.

Compile and run the sample file MTDEMO.C by typing

MTWDWPRO MTDEMO

at the OS2 command line for a look at how to develop multithreaded WindowPro applications.

The one problem with the semaphore checking approach is that it does not work with functions which take variable length argument lists. Therefore, when using the function vs_printf you must manually include a REQ; and a CLR; before and after each call to vs_printf.

ADDITIONAL CONSIDERATIONS

Both versions of the DLLs define the DLL global data as MULTIPLE. I will follow up shortly with a version which treats the global data as SHARED. This will allow creation of a WindowPro shell which could run WindowPro-aware applications or allow for development of Vio subsystem replacements which would allow any text-based application to run within a WindowPro window.

Also, if you are familiar with The DialogPro, under DOS, we expect to be able to port this over soon. This would provide all of your OS/2 applications SAA-like, text-based, dialog box and menuing services.

Because of the several variations available for linking it is not possible to supply all possible approaches in object form. If you require an approach not listed above please contact us for further information.

When compiling...