Previous: Windows Foreign Procedures, Up: Foreign function interface

18.2.3 Win32 API names and procedures

This section is a moving target. The #define values from wingdi.h and winuser.h are available as bindings in the (win32) package environment. The #define symbols are all uppercase; these have been translated to all lowercase Scheme identifiers, thus WM_LBUTTONUP is the scheme variable wm_lbuttonup. As Scheme is case insensitive, the upper-case version may be used and probably should to make the code look more like conventional Windows code. The Scheme bindings have been produced automagically. Most of the #define-symbols contain an underscore so there are not many name clashes. There is one very notable name clash, however: ERROR is #defined to 0, which shadows the scheme procedure error in the root package environment. To signal an error, use access to get error from the system global environment:

     (declare (usual-integrations))
     ((access error system-global-environment) "Complain" ...)

The set of procedures is incomplete because procedures have been added on a by-need basis for the implementation of other parts of the system, e.g. Scheme Graphics. Look in the implementation for further details.

Win32 API procedure names have been uniformly converted into Scheme identifiers as follows:

Example: applying these rules to IsWindow yields is-window?, and GetDC is translated into get-dc.