free os2.h version
authorRobert Kopferl <robertk@mok.lvcm.com>
Tue, 23 Jul 2002 13:00:46 +0000 (13:00 +0000)
committerRobert Kopferl <robertk@mok.lvcm.com>
Tue, 23 Jul 2002 13:00:46 +0000 (13:00 +0000)
svn path=/trunk/; revision=3299

os2/include/os2.h [new file with mode: 0644]

diff --git a/os2/include/os2.h b/os2/include/os2.h
new file mode 100644 (file)
index 0000000..81f567e
--- /dev/null
@@ -0,0 +1,12583 @@
+/* os2emx.h (emx+gcc) */
+
+#ifndef _OS2EMX_H
+#define _OS2EMX_H
+
+#pragma pack(1)
+
+/* ------------------------ INCL_ SYMBOLS --------------------------------- */
+
+#if defined (INCL_BASE)
+#define INCL_DOS
+#define INCL_DOSERRORS
+#define INCL_SUB
+#endif
+
+#if defined (INCL_DOS)
+#define INCL_DOSDATETIME
+#define INCL_DOSDEVICES
+#define INCL_DOSEXCEPTIONS
+#define INCL_DOSFILEMGR
+#define INCL_DOSMEMMGR
+#define INCL_DOSMISC
+#define INCL_DOSMVDM
+#define INCL_DOSMODULEMGR
+#define INCL_DOSNLS
+#define INCL_DOSPROCESS
+#define INCL_DOSPROFILE
+#define INCL_DOSRAS
+#define INCL_DOSQUEUES
+#define INCL_DOSRESOURCES
+#define INCL_DOSSEMAPHORES
+#define INCL_DOSSESMGR
+#endif
+
+#if defined (INCL_REXXSAA)
+#define INCL_RXSUBCOM
+#define INCL_RXSHV
+#define INCL_RXFUNC
+#define INCL_RXSYSEXIT
+#define INCL_RXMACRO
+#define INCL_RXARI
+#endif
+
+#if defined (INCL_SUB)
+#define INCL_KBD
+#define INCL_VIO
+#define INCL_MOU
+#endif
+
+#if defined (INCL_PM)
+#define INCL_AVIO
+#define INCL_FONTFILEFORMAT
+#define INCL_GPI
+#define INCL_SPL
+#define INCL_WIN
+#define INCL_WINWORKPLACE
+#endif
+
+#if defined (INCL_WIN) || defined (RC_INVOKED)
+#define INCL_WINACCELERATORS
+#define INCL_WINBUTTONS
+#define INCL_WINDIALOGS
+#define INCL_WINENTRYFIELDS
+#define INCL_WINFRAMECTLS
+#define INCL_WINFRAMEMGR
+#define INCL_WINHELP
+#define INCL_WININPUT
+#define INCL_WINLISTBOXES
+#define INCL_WINMENUS
+#define INCL_WINMESSAGEMGR
+#define INCL_WINMLE
+#define INCL_WINPOINTERS
+#define INCL_WINSCROLLBARS
+#define INCL_WINSTATICS
+#define INCL_WINSTDDLGS
+#define INCL_WINSYS
+#endif /* INCL_WIN || RC_INVOKED */
+
+#if defined (INCL_WIN)
+#define INCL_WINATOM
+#define INCL_WINCLIPBOARD
+#define INCL_WINCOUNTRY
+#define INCL_WINCURSORS
+#define INCL_WINDDE
+#define INCL_WINDESKTOP
+#define INCL_WINERRORS
+#define INCL_WINHOOKS
+#define INCL_WINLOAD
+#define INCL_WINPALETTE
+#define INCL_WINPROGRAMLIST
+#define INCL_WINRECTANGLES
+#define INCL_WINSHELLDATA
+#define INCL_WINSWITCHLIST
+#define INCL_WINTHUNKAPI
+#define INCL_WINTIMER
+#define INCL_WINTRACKRECT
+#define INCL_WINTYPES
+#define INCL_WINWINDOWMGR
+#endif /* INCL_WIN */
+
+#if defined (INCL_WINCOMMON)
+#define INCL_WINWINDOWMGR
+#endif
+
+#if defined (INCL_WINSTDDLGS)
+#define INCL_WINCIRCULARSLIDER
+#define INCL_WINSTDBOOK
+#define INCL_WINSTDCNR
+#define INCL_WINSTDDRAG
+#define INCL_WINSTDFILE
+#define INCL_WINSTDFONT
+#define INCL_WINSTDSLIDER
+#define INCL_WINSTDSPIN
+#define INCL_WINSTDVALSET
+#endif
+
+#if defined (INCL_WINSTDCNR) || defined (INCL_WINSTDVALSET)
+#define INCL_WINSTDDRAG
+#endif
+
+#if defined (INCL_WINMLE) && !defined (INCL_WINENTRYFIELDS)
+#define INCL_WINENTRYFIELDS
+#endif
+
+#if defined (INCL_WINWORKPLACE)
+#define INCL_WPCLASS
+#endif
+
+#if defined (INCL_GPI)
+#define INCL_GPIBITMAPS
+#define INCL_GPICONTROL
+#define INCL_GPICORRELATION
+#define INCL_GPIINK
+#define INCL_GPISEGMENTS
+#endif
+
+#if defined (INCL_ERRORS)
+#define INCL_DOSERRORS
+#define INCL_GPIERRORS
+#define INCL_SHLERRORS
+#define INCL_WINERRORS
+#endif
+
+#if defined (INCL_DDIDEFS)
+#define INCL_GPIBITMAPS
+#define INCL_GPIERRORS
+#endif
+
+#if defined (INCL_CIRCULARSLIDER) && !defined (INCL_WINCIRCULARSLIDER)
+#define INCL_WINCIRCULARSLIDER
+#endif
+
+/* ------------------------ DISABLE KEYWORDS ------------------------------ */
+
+#define APIENTRY
+#define EXPENTRY
+#define FAR
+
+/* ------------------------ CONSTANTS AND TYPES --------------------------- */
+
+#if !defined (FALSE)
+#define FALSE 0
+#endif
+
+#if !defined (TRUE)
+#define TRUE 1
+#endif
+
+#define VOID                           void
+
+#define NULLHANDLE                     ((LHANDLE)0)
+#define NULLSHANDLE                    ((SHANDLE)0)
+
+#if !defined (NULL)
+#if defined (__cplusplus)
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
+
+typedef int INT;               /* Required for Toolkit sample programs */
+typedef unsigned UINT;
+typedef unsigned long APIRET;
+
+typedef unsigned long BOOL;
+typedef BOOL *PBOOL;
+
+typedef unsigned long BOOL32;
+typedef BOOL *PBOOL32;
+
+typedef char CHAR;
+typedef CHAR *PCHAR;
+
+#if !defined (OS2EMX_PLAIN_CHAR)
+
+typedef unsigned char BYTE;
+typedef unsigned char *PCH;
+typedef unsigned char *PSZ;
+typedef __const__ unsigned char *PCCH;
+typedef __const__ unsigned char *PCSZ;
+
+#else
+
+typedef char BYTE;
+typedef char *PCH;
+typedef char *PSZ;
+typedef __const__ char *PCCH;
+typedef __const__ char *PCSZ;
+
+#endif
+
+typedef BYTE *PBYTE;
+
+typedef unsigned char UCHAR;
+typedef UCHAR *PUCHAR;
+
+typedef short SHORT;
+typedef SHORT *PSHORT;
+
+typedef unsigned short USHORT;
+typedef USHORT *PUSHORT;
+
+typedef long LONG;
+typedef LONG *PLONG;
+
+typedef unsigned long ULONG;
+typedef ULONG *PULONG;
+
+typedef VOID *PVOID;
+typedef PVOID *PPVOID;
+
+typedef __const__ VOID *CPVOID;
+
+typedef CHAR STR8[8];
+typedef STR8 *PSTR8;
+
+typedef CHAR STR16[16];
+typedef STR16 *PSTR16;
+typedef CHAR STR32[32];
+typedef STR32 *PSTR32;
+typedef CHAR STR64[64];
+typedef STR64 *PSTR64;
+
+typedef unsigned short SHANDLE;
+typedef unsigned long LHANDLE;
+
+typedef LHANDLE HPIPE;
+typedef HPIPE *PHPIPE;
+
+typedef LHANDLE HQUEUE;
+typedef HQUEUE *PHQUEUE;
+
+typedef LHANDLE HMODULE;
+typedef HMODULE *PHMODULE;
+
+typedef VOID *HSEM;
+typedef HSEM *PHSEM;
+
+typedef LHANDLE HOBJECT;
+
+typedef ULONG PID;
+typedef PID *PPID;
+
+typedef ULONG TID;
+typedef TID *PTID;
+
+typedef int (*PFN)();
+typedef PFN *PPFN;
+
+typedef USHORT SEL;
+typedef SEL *PSEL;
+
+typedef ULONG HMTX;
+typedef HMTX *PHMTX;
+
+typedef ULONG HMUX;
+typedef HMUX *PHMUX;
+
+
+#define FIELDOFFSET(t,f)  ((SHORT)&(((t *)0)->f))
+
+#define MAKETYPE(v,t)    (*((t *)&v))
+
+#define MAKEUSHORT(l,h)          (((USHORT)(l)) | ((USHORT)(h))<<8)
+#define MAKESHORT(l,h)   ((SHORT)MAKEUSHORT(l, h))
+
+#define MAKEULONG(l,h)   ((ULONG)(((USHORT)(l)) | ((ULONG)((USHORT)(h)))<<16))
+#define MAKELONG(l,h)    ((LONG)MAKEULONG(l, h))
+
+#define LOUCHAR(w)       ((UCHAR)(w))
+#define HIUCHAR(w)       ((UCHAR)((USHORT)(w)>>8))
+
+#define LOBYTE(x)        LOUCHAR(x)
+#define HIBYTE(x)        HIUCHAR(x)
+
+#define LOUSHORT(x)      ((USHORT)((ULONG)(x)))
+#define HIUSHORT(x)      ((USHORT)((ULONG)(x)>>16))
+
+/* ---------------------------- ERROR CODES ------------------------------- */
+
+#define WINERR_BASE                    0x1000
+#define GPIERR_BASE                    0x2000
+#define DEVERR_BASE                    0x3000
+#define SPLERR_BASE                    0x4000
+
+#define SEVERITY_NOERROR               0x0000
+#define SEVERITY_WARNING               0x0004
+#define SEVERITY_ERROR                 0x0008
+#define SEVERITY_SEVERE                        0x000c
+#define SEVERITY_UNRECOVERABLE         0x0010
+
+#if defined (INCL_DOSERRORS)
+
+#define NO_ERROR                               0
+#define ERROR_INVALID_FUNCTION                 1
+#define ERROR_FILE_NOT_FOUND                   2
+#define ERROR_PATH_NOT_FOUND                   3
+#define ERROR_TOO_MANY_OPEN_FILES              4
+#define ERROR_ACCESS_DENIED                    5
+#define ERROR_INVALID_HANDLE                   6
+#define ERROR_ARENA_TRASHED                    7
+#define ERROR_NOT_ENOUGH_MEMORY                        8
+#define ERROR_INVALID_BLOCK                    9
+#define ERROR_BAD_ENVIRONMENT                 10
+#define ERROR_BAD_FORMAT                      11
+#define ERROR_INVALID_ACCESS                  12
+#define ERROR_INVALID_DATA                    13
+#define ERROR_INVALID_DRIVE                   15
+#define ERROR_CURRENT_DIRECTORY                       16
+#define ERROR_NOT_SAME_DEVICE                 17
+#define ERROR_NO_MORE_FILES                   18
+#define ERROR_WRITE_PROTECT                   19
+#define ERROR_BAD_UNIT                        20
+#define ERROR_NOT_READY                               21
+#define ERROR_BAD_COMMAND                     22
+#define ERROR_CRC                             23
+#define ERROR_BAD_LENGTH                      24
+#define ERROR_SEEK                            25
+#define ERROR_NOT_DOS_DISK                    26
+#define ERROR_SECTOR_NOT_FOUND                27
+#define ERROR_OUT_OF_PAPER                    28
+#define ERROR_WRITE_FAULT                     29
+#define ERROR_READ_FAULT                      30
+#define ERROR_GEN_FAILURE                     31
+#define ERROR_SHARING_VIOLATION                       32
+#define ERROR_LOCK_VIOLATION                  33
+#define ERROR_WRONG_DISK                      34
+#define ERROR_FCB_UNAVAILABLE                 35
+#define ERROR_SHARING_BUFFER_EXCEEDED         36
+#define ERROR_CODE_PAGE_MISMATCHED            37
+#define ERROR_HANDLE_EOF                      38
+#define ERROR_HANDLE_DISK_FULL                39
+#define ERROR_NOT_SUPPORTED                   50
+#define ERROR_REM_NOT_LIST                    51
+#define ERROR_DUP_NAME                        52
+#define ERROR_BAD_NETPATH                     53
+#define ERROR_NETWORK_BUSY                    54
+#define ERROR_DEV_NOT_EXIST                   55
+#define ERROR_TOO_MANY_CMDS                   56
+#define ERROR_ADAP_HDW_ERR                    57
+#define ERROR_BAD_NET_RESP                    58
+#define ERROR_UNEXP_NET_ERR                   59
+#define ERROR_BAD_REM_ADAP                    60
+#define ERROR_PRINTQ_FULL                     61
+#define ERROR_NO_SPOOL_SPACE                  62
+#define ERROR_PRINT_CANCELLED                 63
+#define ERROR_NETNAME_DELETED                 64
+#define ERROR_NETWORK_ACCESS_DENIED           65
+#define ERROR_BAD_DEV_TYPE                    66
+#define ERROR_BAD_NET_NAME                    67
+#define ERROR_TOO_MANY_NAMES                  68
+#define ERROR_TOO_MANY_SESS                   69
+#define ERROR_SHARING_PAUSED                  70
+#define ERROR_REQ_NOT_ACCEP                   71
+#define ERROR_REDIR_PAUSED                    72
+#define ERROR_SBCS_ATT_WRITE_PROT             73
+#define ERROR_SBCS_GENERAL_FAILURE            74
+#define ERROR_XGA_OUT_MEMORY                  75
+#define ERROR_FILE_EXISTS                     80
+#define ERROR_DUP_FCB                         81
+#define ERROR_CANNOT_MAKE                     82
+#define ERROR_FAIL_I24                        83
+#define ERROR_OUT_OF_STRUCTURES                       84
+#define ERROR_ALREADY_ASSIGNED                85
+#define ERROR_INVALID_PASSWORD                86
+#define ERROR_INVALID_PARAMETER                       87
+#define ERROR_NET_WRITE_FAULT                 88
+#define ERROR_NO_PROC_SLOTS                   89
+#define ERROR_NOT_FROZEN                      90
+#define ERROR_SYS_COMP_NOT_LOADED             90 /*!*/
+#define ERR_TSTOVFL                           91
+#define ERR_TSTDUP                            92
+#define ERROR_NO_ITEMS                        93
+#define ERROR_INTERRUPT                               95
+#define ERROR_DEVICE_IN_USE                   99
+#define ERROR_TOO_MANY_SEMAPHORES            100
+#define ERROR_EXCL_SEM_ALREADY_OWNED         101
+#define ERROR_SEM_IS_SET                     102
+#define ERROR_TOO_MANY_SEM_REQUESTS          103
+#define ERROR_INVALID_AT_INTERRUPT_TIME              104
+#define ERROR_SEM_OWNER_DIED                 105
+#define ERROR_SEM_USER_LIMIT                 106
+#define ERROR_DISK_CHANGE                    107
+#define ERROR_DRIVE_LOCKED                   108
+#define ERROR_BROKEN_PIPE                    109
+#define ERROR_OPEN_FAILED                    110
+#define ERROR_BUFFER_OVERFLOW                111
+#define ERROR_DISK_FULL                              112
+#define ERROR_NO_MORE_SEARCH_HANDLES         113
+#define ERROR_INVALID_TARGET_HANDLE          114
+#define ERROR_PROTECTION_VIOLATION           115
+#define ERROR_VIOKBD_REQUEST                 116
+#define ERROR_INVALID_CATEGORY               117
+#define ERROR_INVALID_VERIFY_SWITCH          118
+#define ERROR_BAD_DRIVER_LEVEL               119
+#define ERROR_CALL_NOT_IMPLEMENTED           120
+#define ERROR_SEM_TIMEOUT                    121
+#define ERROR_INSUFFICIENT_BUFFER            122
+#define ERROR_INVALID_NAME                   123
+#define ERROR_INVALID_LEVEL                  124
+#define ERROR_NO_VOLUME_LABEL                125
+#define ERROR_MOD_NOT_FOUND                  126
+#define ERROR_PROC_NOT_FOUND                 127
+#define ERROR_WAIT_NO_CHILDREN               128
+#define ERROR_CHILD_NOT_COMPLETE             129
+#define ERROR_DIRECT_ACCESS_HANDLE           130
+#define ERROR_NEGATIVE_SEEK                  131
+#define ERROR_SEEK_ON_DEVICE                 132
+#define ERROR_IS_JOIN_TARGET                 133
+#define ERROR_IS_JOINED                              134
+#define ERROR_IS_SUBSTED                     135
+#define ERROR_NOT_JOINED                     136
+#define ERROR_NOT_SUBSTED                    137
+#define ERROR_JOIN_TO_JOIN                   138
+#define ERROR_SUBST_TO_SUBST                 139
+#define ERROR_JOIN_TO_SUBST                  140
+#define ERROR_SUBST_TO_JOIN                  141
+#define ERROR_BUSY_DRIVE                     142
+#define ERROR_SAME_DRIVE                     143
+#define ERROR_DIR_NOT_ROOT                   144
+#define ERROR_DIR_NOT_EMPTY                  145
+#define ERROR_IS_SUBST_PATH                  146
+#define ERROR_IS_JOIN_PATH                   147
+#define ERROR_PATH_BUSY                              148
+#define ERROR_IS_SUBST_TARGET                149
+#define ERROR_SYSTEM_TRACE                   150
+#define ERROR_INVALID_EVENT_COUNT            151
+#define ERROR_TOO_MANY_MUXWAITERS            152
+#define ERROR_INVALID_LIST_FORMAT            153
+#define ERROR_LABEL_TOO_LONG                 154
+#define ERROR_TOO_MANY_TCBS                  155
+#define ERROR_SIGNAL_REFUSED                 156
+#define ERROR_DISCARDED                              157
+#define ERROR_NOT_LOCKED                     158
+#define ERROR_BAD_THREADID_ADDR                      159
+#define ERROR_BAD_ARGUMENTS                  160
+#define ERROR_BAD_PATHNAME                   161
+#define ERROR_SIGNAL_PENDING                 162
+#define ERROR_UNCERTAIN_MEDIA                163
+#define ERROR_MAX_THRDS_REACHED                      164
+#define ERROR_MONITORS_NOT_SUPPORTED         165
+#define ERROR_UNC_DRIVER_NOT_INSTALLED       166
+#define ERROR_LOCK_FAILED                    167
+#define ERROR_SWAPIO_FAILED                  168
+#define ERROR_SWAPIN_FAILED                  169
+#define ERROR_BUSY                           170
+#define ERROR_CANCEL_VIOLATION               173
+#define ERROR_ATOMIC_LOCK_NOT_SUPPORTED              174
+#define ERROR_READ_LOCKS_NOT_SUPPORTED       175
+#define ERROR_INVALID_SEGMENT_NUMBER         180
+#define ERROR_INVALID_CALLGATE               181
+#define ERROR_INVALID_ORDINAL                182
+#define ERROR_ALREADY_EXISTS                 183
+#define ERROR_NO_CHILD_PROCESS               184
+#define ERROR_CHILD_ALIVE_NOWAIT             185
+#define ERROR_INVALID_FLAG_NUMBER            186
+#define ERROR_SEM_NOT_FOUND                  187
+#define ERROR_INVALID_STARTING_CODESEG       188
+#define ERROR_INVALID_STACKSEG               189
+#define ERROR_INVALID_MODULETYPE             190
+#define ERROR_INVALID_EXE_SIGNATURE          191
+#define ERROR_EXE_MARKED_INVALID             192
+#define ERROR_BAD_EXE_FORMAT                 193
+#define ERROR_ITERATED_DATA_EXCEEDS_64K              194
+#define ERROR_INVALID_MINALLOCSIZE           195
+#define ERROR_DYNLINK_FROM_INVALID_RING              196
+#define ERROR_IOPL_NOT_ENABLED               197
+#define ERROR_INVALID_SEGDPL                 198
+#define ERROR_AUTODATASEG_EXCEEDS_64K        199
+#define ERROR_RING2SEG_MUST_BE_MOVABLE       200
+#define ERROR_RELOCSRC_CHAIN_EXCEEDS_SEGLIMIT 201
+#define ERROR_INFLOOP_IN_RELOC_CHAIN         202
+#define ERROR_ENVVAR_NOT_FOUND               203
+#define ERROR_NOT_CURRENT_CTRY               204
+#define ERROR_NO_SIGNAL_SENT                 205
+#define ERROR_FILENAME_EXCED_RANGE           206
+#define ERROR_RING2_STACK_IN_USE             207
+#define ERROR_META_EXPANSION_TOO_LONG        208
+#define ERROR_INVALID_SIGNAL_NUMBER          209
+#define ERROR_THREAD_1_INACTIVE                      210
+#define ERROR_INFO_NOT_AVAIL                 211
+#define ERROR_LOCKED                         212
+#define ERROR_BAD_DYNALINK                   213
+#define ERROR_TOO_MANY_MODULES               214
+#define ERROR_NESTING_NOT_ALLOWED            215
+#define ERROR_CANNOT_SHRINK                  216
+#define ERROR_ZOMBIE_PROCESS                 217
+#define ERROR_STACK_IN_HIGH_MEMORY           218
+#define ERROR_INVALID_EXITROUTINE_RING       219
+#define ERROR_GETBUF_FAILED                  220
+#define ERROR_FLUSHBUF_FAILED                221
+#define ERROR_TRANSFER_TOO_LONG                      222
+#define ERROR_FORCENOSWAP_FAILED             223
+#define ERROR_SMG_NO_TARGET_WINDOW           224
+#define ERROR_NO_CHILDREN                    228
+#define ERROR_INVALID_SCREEN_GROUP           229
+#define ERROR_BAD_PIPE                       230
+#define ERROR_PIPE_BUSY                              231
+#define ERROR_NO_DATA                        232
+#define ERROR_PIPE_NOT_CONNECTED             233
+#define ERROR_MORE_DATA                              234
+#define ERROR_VC_DISCONNECTED                240
+#define ERROR_CIRCULARITY_REQUESTED          250
+#define ERROR_DIRECTORY_IN_CDS               251
+#define ERROR_INVALID_FSD_NAME               252
+#define ERROR_INVALID_PATH                   253
+#define ERROR_INVALID_EA_NAME                254
+#define ERROR_EA_LIST_INCONSISTENT           255
+#define ERROR_EA_LIST_TOO_LONG               256
+#define ERROR_NO_META_MATCH                  257
+#define ERROR_FINDNOTIFY_TIMEOUT             258
+#define ERROR_NO_MORE_ITEMS                  259
+#define ERROR_SEARCH_STRUC_REUSED            260
+#define ERROR_CHAR_NOT_FOUND                 261
+#define ERROR_TOO_MUCH_STACK                 262
+#define ERROR_INVALID_ATTR                   263
+#define ERROR_INVALID_STARTING_RING          264
+#define ERROR_INVALID_DLL_INIT_RING          265
+#define ERROR_CANNOT_COPY                    266
+#define ERROR_DIRECTORY                              267
+#define ERROR_OPLOCKED_FILE                  268
+#define ERROR_OPLOCK_THREAD_EXISTS           269
+#define ERROR_VOLUME_CHANGED                 270
+#define ERROR_FINDNOTIFY_HANDLE_IN_USE       271
+#define ERROR_FINDNOTIFY_HANDLE_CLOSED       272
+#define ERROR_NOTIFY_OBJECT_REMOVED          273
+#define ERROR_ALREADY_SHUTDOWN               274
+#define ERROR_EAS_DIDNT_FIT                  275
+#define ERROR_EA_FILE_CORRUPT                276
+#define ERROR_EA_TABLE_FULL                  277
+#define ERROR_INVALID_EA_HANDLE                      278
+#define ERROR_NO_CLUSTER                     279
+#define ERROR_CREATE_EA_FILE                 280
+#define ERROR_CANNOT_OPEN_EA_FILE            281
+#define ERROR_EAS_NOT_SUPPORTED                      282
+#define ERROR_NEED_EAS_FOUND                 283
+#define ERROR_DUPLICATE_HANDLE               284
+#define ERROR_DUPLICATE_NAME                 285
+#define ERROR_EMPTY_MUXWAIT                  286
+#define ERROR_MUTEX_OWNED                    287
+#define ERROR_NOT_OWNER                              288
+#define ERROR_PARAM_TOO_SMALL                289
+#define ERROR_TOO_MANY_HANDLES               290
+#define ERROR_TOO_MANY_OPENS                 291
+#define ERROR_WRONG_TYPE                     292
+#define ERROR_UNUSED_CODE                    293
+#define ERROR_THREAD_NOT_TERMINATED          294
+#define ERROR_INIT_ROUTINE_FAILED            295
+#define ERROR_MODULE_IN_USE                  296
+#define ERROR_NOT_ENOUGH_WATCHPOINTS         297
+#define ERROR_TOO_MANY_POSTS                 298
+#define ERROR_ALREADY_POSTED                 299
+#define ERROR_ALREADY_RESET                  300
+#define ERROR_SEM_BUSY                       301
+#define ERROR_INVALID_PROCID                 303
+#define ERROR_INVALID_PDELTA                 304
+#define ERROR_NOT_DESCENDANT                 305
+#define ERROR_NOT_SESSION_MANAGER            306
+#define ERROR_INVALID_PCLASS                 307
+#define ERROR_INVALID_SCOPE                  308
+#define ERROR_INVALID_THREADID               309
+#define ERROR_DOSSUB_SHRINK                  310
+#define ERROR_DOSSUB_NOMEM                   311
+#define ERROR_DOSSUB_OVERLAP                 312
+#define ERROR_DOSSUB_BADSIZE                 313
+#define ERROR_DOSSUB_BADFLAG                 314
+#define ERROR_DOSSUB_BADSELECTOR             315
+#define ERROR_MR_MSG_TOO_LONG                316
+#define ERROR_MR_MID_NOT_FOUND               317
+#define ERROR_MR_UN_ACC_MSGF                 318
+#define ERROR_MR_INV_MSGF_FORMAT             319
+#define ERROR_MR_INV_IVCOUNT                 320
+#define ERROR_MR_UN_PERFORM                  321
+#define ERROR_TS_WAKEUP                              322
+#define ERROR_TS_SEMHANDLE                   323
+#define ERROR_TS_NOTIMER                     324
+#define ERROR_TS_HANDLE                              326
+#define ERROR_TS_DATETIME                    327
+#define ERROR_SYS_INTERNAL                   328
+#define ERROR_QUE_CURRENT_NAME               329
+#define ERROR_QUE_PROC_NOT_OWNED             330
+#define ERROR_QUE_PROC_OWNED                 331
+#define ERROR_QUE_DUPLICATE                  332
+#define ERROR_QUE_ELEMENT_NOT_EXIST          333
+#define ERROR_QUE_NO_MEMORY                  334
+#define ERROR_QUE_INVALID_NAME               335
+#define ERROR_QUE_INVALID_PRIORITY           336
+#define ERROR_QUE_INVALID_HANDLE             337
+#define ERROR_QUE_LINK_NOT_FOUND             338
+#define ERROR_QUE_MEMORY_ERROR               339
+#define ERROR_QUE_PREV_AT_END                340
+#define ERROR_QUE_PROC_NO_ACCESS             341
+#define ERROR_QUE_EMPTY                              342
+#define ERROR_QUE_NAME_NOT_EXIST             343
+#define ERROR_QUE_NOT_INITIALIZED            344
+#define ERROR_QUE_UNABLE_TO_ACCESS           345
+#define ERROR_QUE_UNABLE_TO_ADD                      346
+#define ERROR_QUE_UNABLE_TO_INIT             347
+#define ERROR_VIO_INVALID_MASK               349
+#define ERROR_VIO_PTR                        350
+#define ERROR_VIO_APTR                       351
+#define ERROR_VIO_RPTR                       352
+#define ERROR_VIO_CPTR                       353
+#define ERROR_VIO_LPTR                       354
+#define ERROR_VIO_MODE                       355
+#define ERROR_VIO_WIDTH                              356
+#define ERROR_VIO_ATTR                       357
+#define ERROR_VIO_ROW                        358
+#define ERROR_VIO_COL                        359
+#define ERROR_VIO_TOPROW                     360
+#define ERROR_VIO_BOTROW                     361
+#define ERROR_VIO_RIGHTCOL                   362
+#define ERROR_VIO_LEFTCOL                    363
+#define ERROR_SCS_CALL                       364
+#define ERROR_SCS_VALUE                              365
+#define ERROR_VIO_WAIT_FLAG                  366
+#define ERROR_VIO_UNLOCK                     367
+#define ERROR_SGS_NOT_SESSION_MGR            368
+#define ERROR_SMG_INVALID_SGID               369
+#define ERROR_SMG_INVALID_SESSION_ID         369 /*!*/
+#define ERROR_SMG_NOSG                       370
+#define ERROR_SMG_NO_SESSIONS                370 /*!*/
+#define ERROR_SMG_GRP_NOT_FOUND                      371
+#define ERROR_SMG_SESSION_NOT_FOUND          371 /*!*/
+#define ERROR_SMG_SET_TITLE                  372
+#define ERROR_KBD_PARAMETER                  373
+#define ERROR_KBD_NO_DEVICE                  374
+#define ERROR_KBD_INVALID_IOWAIT             375
+#define ERROR_KBD_INVALID_LENGTH             376
+#define ERROR_KBD_INVALID_ECHO_MASK          377
+#define ERROR_KBD_INVALID_INPUT_MASK         378
+#define ERROR_MON_INVALID_PARMS                      379
+#define ERROR_MON_INVALID_DEVNAME            380
+#define ERROR_MON_INVALID_HANDLE             381
+#define ERROR_MON_BUFFER_TOO_SMALL           382
+#define ERROR_MON_BUFFER_EMPTY               383
+#define ERROR_MON_DATA_TOO_LARGE             384
+#define ERROR_MOUSE_NO_DEVICE                385
+#define ERROR_MOUSE_INV_HANDLE               386
+#define ERROR_MOUSE_INV_PARMS                387
+#define ERROR_MOUSE_CANT_RESET               388
+#define ERROR_MOUSE_DISPLAY_PARMS            389
+#define ERROR_MOUSE_INV_MODULE               390
+#define ERROR_MOUSE_INV_ENTRY_PT             391
+#define ERROR_MOUSE_INV_MASK                 392
+#define NO_ERROR_MOUSE_NO_DATA               393
+#define NO_ERROR_MOUSE_PTR_DRAWN             394
+#define ERROR_INVALID_FREQUENCY                      395
+#define ERROR_NLS_NO_COUNTRY_FILE            396
+#define ERROR_NLS_OPEN_FAILED                397
+#define ERROR_NLS_NO_CTRY_CODE               398
+#define ERROR_NLS_TABLE_TRUNCATED            399
+#define ERROR_NLS_BAD_TYPE                   400
+#define ERROR_NLS_TYPE_NOT_FOUND             401
+#define ERROR_VIO_SMG_ONLY                   402
+#define ERROR_VIO_INVALID_ASCIIZ             403
+#define ERROR_VIO_DEREGISTER                 404
+#define ERROR_VIO_NO_POPUP                   405
+#define ERROR_VIO_EXISTING_POPUP             406
+#define ERROR_KBD_SMG_ONLY                   407
+#define ERROR_KBD_INVALID_ASCIIZ             408
+#define ERROR_KBD_INVALID_MASK               409
+#define ERROR_KBD_REGISTER                   410
+#define ERROR_KBD_DEREGISTER                 411
+#define ERROR_MOUSE_SMG_ONLY                 412
+#define ERROR_MOUSE_INVALID_ASCIIZ           413
+#define ERROR_MOUSE_INVALID_MASK             414
+#define ERROR_MOUSE_REGISTER                 415
+#define ERROR_MOUSE_DEREGISTER               416
+#define ERROR_SMG_BAD_ACTION                 417
+#define ERROR_SMG_INVALID_CALL               418
+#define ERROR_SCS_SG_NOTFOUND                419
+#define ERROR_SCS_NOT_SHELL                  420
+#define ERROR_VIO_INVALID_PARMS                      421
+#define ERROR_VIO_FUNCTION_OWNED             422
+#define ERROR_VIO_RETURN                     423
+#define ERROR_SCS_INVALID_FUNCTION           424
+#define ERROR_SCS_NOT_SESSION_MGR            425
+#define ERROR_VIO_REGISTER                   426
+#define ERROR_VIO_NO_MODE_THREAD             427
+#define ERROR_VIO_NO_SAVE_RESTORE_THD        428
+#define ERROR_VIO_IN_BG                              429
+#define ERROR_VIO_ILLEGAL_DURING_POPUP       430
+#define ERROR_SMG_NOT_BASESHELL                      431
+#define ERROR_SMG_BAD_STATUSREQ                      432
+#define ERROR_QUE_INVALID_WAIT               433
+#define ERROR_VIO_LOCK                       434
+#define ERROR_MOUSE_INVALID_IOWAIT           435
+#define ERROR_VIO_INVALID_HANDLE             436
+#define ERROR_VIO_ILLEGAL_DURING_LOCK        437
+#define ERROR_VIO_INVALID_LENGTH             438
+#define ERROR_KBD_INVALID_HANDLE             439
+#define ERROR_KBD_NO_MORE_HANDLE             440
+#define ERROR_KBD_CANNOT_CREATE_KCB          441
+#define ERROR_KBD_CODEPAGE_LOAD_INCOMPL              442
+#define ERROR_KBD_INVALID_CODEPAGE_ID        443
+#define ERROR_KBD_NO_CODEPAGE_SUPPORT        444
+#define ERROR_KBD_FOCUS_REQUIRED             445
+#define ERROR_KBD_FOCUS_ALREADY_ACTIVE       446
+#define ERROR_KBD_KEYBOARD_BUSY                      447
+#define ERROR_KBD_INVALID_CODEPAGE           448
+#define ERROR_KBD_UNABLE_TO_FOCUS            449
+#define ERROR_SMG_SESSION_NON_SELECT         450
+#define ERROR_SMG_SESSION_NOT_FOREGRND       451
+#define ERROR_SMG_SESSION_NOT_PARENT         452
+#define ERROR_SMG_INVALID_START_MODE         453
+#define ERROR_SMG_INVALID_RELATED_OPT        454
+#define ERROR_SMG_INVALID_BOND_OPTION        455
+#define ERROR_SMG_INVALID_SELECT_OPT         456
+#define ERROR_SMG_START_IN_BACKGROUND        457
+#define ERROR_SMG_INVALID_STOP_OPTION        458
+#define ERROR_SMG_BAD_RESERVE                459
+#define ERROR_SMG_PROCESS_NOT_PARENT         460
+#define ERROR_SMG_INVALID_DATA_LENGTH        461
+#define ERROR_SMG_NOT_BOUND                  462
+#define ERROR_SMG_RETRY_SUB_ALLOC            463
+#define ERROR_KBD_DETACHED                   464
+#define ERROR_VIO_DETACHED                   465
+#define ERROR_MOU_DETACHED                   466
+#define ERROR_VIO_FONT                       467
+#define ERROR_VIO_USER_FONT                  468
+#define ERROR_VIO_BAD_CP                     469
+#define ERROR_VIO_NO_CP                              470
+#define ERROR_VIO_NA_CP                              471
+#define ERROR_INVALID_CODE_PAGE                      472
+#define ERROR_CPLIST_TOO_SMALL               473
+#define ERROR_CP_NOT_MOVED                   474
+#define ERROR_MODE_SWITCH_INIT               475
+#define ERROR_CODE_PAGE_NOT_FOUND            476
+#define ERROR_UNEXPECTED_SLOT_RETURNED       477
+#define ERROR_SMG_INVALID_TRACE_OPTION       478
+#define ERROR_VIO_INTERNAL_RESOURCE          479
+#define ERROR_VIO_SHELL_INIT                 480
+#define ERROR_SMG_NO_HARD_ERRORS             481
+#define ERROR_CP_SWITCH_INCOMPLETE           482
+#define ERROR_VIO_TRANSPARENT_POPUP          483
+#define ERROR_CRITSEC_OVERFLOW               484
+#define ERROR_CRITSEC_UNDERFLOW                      485
+#define ERROR_VIO_BAD_RESERVE                486
+#define ERROR_INVALID_ADDRESS                487
+#define ERROR_ZERO_SELECTORS_REQUESTED       488
+#define ERROR_NOT_ENOUGH_SELECTORS_AVA       489
+#define ERROR_INVALID_SELECTOR               490
+#define ERROR_SMG_INVALID_PROGRAM_TYPE       491
+#define ERROR_SMG_INVALID_PGM_CONTROL        492
+#define ERROR_SMG_INVALID_INHERIT_OPT        493
+#define ERROR_VIO_EXTENDED_SG                494
+#define ERROR_VIO_NOT_PRES_MGR_SG            495
+#define ERROR_VIO_SHIELD_OWNED               496
+#define ERROR_VIO_NO_MORE_HANDLES            497
+#define ERROR_VIO_SEE_ERROR_LOG                      498
+#define ERROR_VIO_ASSOCIATED_DC                      499
+#define ERROR_KBD_NO_CONSOLE                 500
+#define ERROR_MOUSE_NO_CONSOLE               501
+#define ERROR_MOUSE_INVALID_HANDLE           502
+#define ERROR_SMG_INVALID_DEBUG_PARMS        503
+#define ERROR_KBD_EXTENDED_SG                504
+#define ERROR_MOU_EXTENDED_SG                505
+#define ERROR_SMG_INVALID_ICON_FILE          506
+#define ERROR_TRC_PID_NON_EXISTENT           507
+#define ERROR_TRC_COUNT_ACTIVE               508
+#define ERROR_TRC_SUSPENDED_BY_COUNT         509
+#define ERROR_TRC_COUNT_INACTIVE             510
+#define ERROR_TRC_COUNT_REACHED                      511
+#define ERROR_NO_MC_TRACE                    512
+#define ERROR_MC_TRACE                       513
+#define ERROR_TRC_COUNT_ZERO                 514
+#define ERROR_SMG_TOO_MANY_DDS               515
+#define ERROR_SMG_INVALID_NOTIFICATION       516
+#define ERROR_LF_INVALID_FUNCTION            517
+#define ERROR_LF_NOT_AVAIL                   518
+#define ERROR_LF_SUSPENDED                   519
+#define ERROR_LF_BUF_TOO_SMALL               520
+#define ERROR_LF_BUFFER_CORRUPTED            521
+#define ERROR_LF_BUFFER_FULL                 521 /*!*/
+#define ERROR_LF_INVALID_DAEMON                      522
+#define ERROR_LF_INVALID_RECORD                      522 /*!*/
+#define ERROR_LF_INVALID_TEMPL               523
+#define ERROR_LF_INVALID_SERVICE             523 /*!*/
+#define ERROR_LF_GENERAL_FAILURE             524
+#define ERROR_LF_INVALID_ID                  525
+#define ERROR_LF_INVALID_HANDLE                      526
+#define ERROR_LF_NO_ID_AVAIL                 527
+#define ERROR_LF_TEMPLATE_AREA_FULL          528
+#define ERROR_LF_ID_IN_USE                   529
+#define ERROR_MOU_NOT_INITIALIZED            530
+#define ERROR_MOUINITREAL_DONE               531
+#define ERROR_DOSSUB_CORRUPTED               532
+#define ERROR_MOUSE_CALLER_NOT_SUBSYS        533
+#define ERROR_ARITHMETIC_OVERFLOW            534
+#define ERROR_TMR_NO_DEVICE                  535
+#define ERROR_TMR_INVALID_TIME               536
+#define ERROR_PVW_INVALID_ENTITY             537
+#define ERROR_PVW_INVALID_ENTITY_TYPE        538
+#define ERROR_PVW_INVALID_SPEC               539
+#define ERROR_PVW_INVALID_RANGE_TYPE         540
+#define ERROR_PVW_INVALID_COUNTER_BLK        541
+#define ERROR_PVW_INVALID_TEXT_BLK           542
+#define ERROR_PRF_NOT_INITIALIZED            543
+#define ERROR_PRF_ALREADY_INITIALIZED        544
+#define ERROR_PRF_NOT_STARTED                545
+#define ERROR_PRF_ALREADY_STARTED            546
+#define ERROR_PRF_TIMER_OUT_OF_RANGE         547
+#define ERROR_PRF_TIMER_RESET                548
+#define ERROR_VDD_LOCK_USEAGE_DENIED         639
+#define ERROR_TIMEOUT                        640
+#define ERROR_VDM_DOWN                       641
+#define ERROR_VDM_LIMIT                              642
+#define ERROR_VDD_NOT_FOUND                  643
+#define ERROR_INVALID_CALLER                 644
+#define ERROR_PID_MISMATCH                   645
+#define ERROR_INVALID_VDD_HANDLE             646
+#define ERROR_VLPT_NO_SPOOLER                647
+#define ERROR_VCOM_DEVICE_BUSY               648
+#define ERROR_VLPT_DEVICE_BUSY               649
+#define ERROR_NESTING_TOO_DEEP               650
+#define ERROR_VDD_MISSING                    651
+#define ERROR_BIDI_INVALID_LENGTH            671
+#define ERROR_BIDI_INVALID_INCREMENT         672
+#define ERROR_BIDI_INVALID_COMBINATION       673
+#define ERROR_BIDI_INVALID_RESERVED          674
+#define ERROR_BIDI_INVALID_EFFECT            675
+#define ERROR_BIDI_INVALID_CSDREC            676
+#define ERROR_BIDI_INVALID_CSDSTATE          677
+#define ERROR_BIDI_INVALID_LEVEL             678
+#define ERROR_BIDI_INVALID_TYPE_SUPPORT              679
+#define ERROR_BIDI_INVALID_ORIENTATION       680
+#define ERROR_BIDI_INVALID_NUM_SHAPE         681
+#define ERROR_BIDI_INVALID_CSD               682
+#define ERROR_BIDI_NO_SUPPORT                683
+#define NO_ERROR_BIDI_RW_INCOMPLETE          684
+#define ERROR_IMP_INVALID_PARM               691
+#define ERROR_IMP_INVALID_LENGTH             692
+#define ERROR_MON_BAD_BUFFER                 730
+#define ERROR_MODULE_CORRUPTED               731
+#define ERROR_SM_OUTOF_SWAPFILE                     1477
+#define ERROR_LF_TIMEOUT                    2055
+#define ERROR_LF_SUSPEND_SUCCESS            2057
+#define ERROR_LF_RESUME_SUCCESS                     2058
+#define ERROR_LF_REDIRECT_SUCCESS           2059
+#define ERROR_LF_REDIRECT_FAILURE           2060
+#define ERROR_SWAPPER_NOT_ACTIVE           32768
+#define ERROR_INVALID_SWAPID               32769
+#define ERROR_IOERR_SWAP_FILE              32770
+#define ERROR_SWAP_TABLE_FULL              32771
+#define ERROR_SWAP_FILE_FULL               32772
+#define ERROR_CANT_INIT_SWAPPER                    32773
+#define ERROR_SWAPPER_ALREADY_INIT         32774
+#define ERROR_PMM_INSUFFICIENT_MEMORY      32775
+#define ERROR_PMM_INVALID_FLAGS                    32776
+#define ERROR_PMM_INVALID_ADDRESS          32777
+#define ERROR_PMM_LOCK_FAILED              32778
+#define ERROR_PMM_UNLOCK_FAILED                    32779
+#define ERROR_PMM_MOVE_INCOMPLETE          32780
+#define ERROR_UCOM_DRIVE_RENAMED           32781
+#define ERROR_UCOM_FILENAME_TRUNCATED      32782
+#define ERROR_UCOM_BUFFER_LENGTH           32783
+#define ERROR_MON_CHAIN_HANDLE             32784
+#define ERROR_MON_NOT_REGISTERED           32785
+#define ERROR_SMG_ALREADY_TOP              32786
+#define ERROR_PMM_ARENA_MODIFIED           32787
+#define ERROR_SMG_PRINTER_OPEN             32788
+#define ERROR_PMM_SET_FLAGS_FAILED         32789
+#define ERROR_INVALID_DOS_DD               32790
+#define ERROR_BLOCKED                      32791
+#define ERROR_NOBLOCK                      32792
+#define ERROR_INSTANCE_SHARED              32793
+#define ERROR_NO_OBJECT                            32794
+#define ERROR_PARTIAL_ATTACH               32795
+#define ERROR_INCACHE                      32796
+#define ERROR_SWAP_IO_PROBLEMS             32797
+#define ERROR_CROSSES_OBJECT_BOUNDARY      32798
+#define ERROR_LONGLOCK                     32799
+#define ERROR_SHORTLOCK                            32800
+#define ERROR_UVIRTLOCK                            32801
+#define ERROR_ALIASLOCK                            32802
+#define ERROR_ALIAS                        32803
+#define ERROR_NO_MORE_HANDLES              32804
+#define ERROR_SCAN_TERMINATED              32805
+#define ERROR_TERMINATOR_NOT_FOUND         32806
+#define ERROR_NOT_DIRECT_CHILD             32807
+#define ERROR_DELAY_FREE                   32808
+#define ERROR_GUARDPAGE                            32809
+#define ERROR_SWAPERROR                            32900
+#define ERROR_LDRERROR                     32901
+#define ERROR_NOMEMORY                     32902
+#define ERROR_NOACCESS                     32903
+#define ERROR_NO_DLL_TERM                  32904
+#define ERROR_CPSIO_CODE_PAGE_INVALID      65026
+#define ERROR_CPSIO_NO_SPOOLER             65027
+#define ERROR_CPSIO_FONT_ID_INVALID        65028
+#define ERROR_CPSIO_INTERNAL_ERROR         65033
+#define ERROR_CPSIO_INVALID_PTR_NAME       65034
+#define ERROR_CPSIO_NOT_ACTIVE             65037
+#define ERROR_CPSIO_PID_FULL               65039
+#define ERROR_CPSIO_PID_NOT_FOUND          65040
+#define ERROR_CPSIO_READ_CTL_SEQ           65043
+#define ERROR_CPSIO_READ_FNT_DEF           65045
+#define ERROR_CPSIO_WRITE_ERROR                    65047
+#define ERROR_CPSIO_WRITE_FULL_ERROR       65048
+#define ERROR_CPSIO_WRITE_HANDLE_BAD       65049
+#define ERROR_CPSIO_SWIT_LOAD              65074
+#define ERROR_CPSIO_INV_COMMAND                    65077
+#define ERROR_CPSIO_NO_FONT_SWIT           65078
+#define ERROR_ENTRY_IS_CALLGATE                    65079
+
+#endif /* INCL_DOSERRORS */
+
+/* ----------------------------- ERRORS ----------------------------------- */
+
+#if defined (INCL_DOSERRORS)
+
+#define ERRACT_RETRY           1
+#define ERRACT_DLYRET          2
+#define ERRACT_USER            3
+#define ERRACT_ABORT           4
+#define ERRACT_PANIC           5
+#define ERRACT_IGNORE          6
+#define ERRACT_INTRET          7
+
+#define ERRCLASS_OUTRES                1
+#define ERRCLASS_TEMPSIT       2
+#define ERRCLASS_AUTH          3
+#define ERRCLASS_INTRN         4
+#define ERRCLASS_HRDFAIL       5
+#define ERRCLASS_SYSFAIL       6
+#define ERRCLASS_APPERR                7
+#define ERRCLASS_NOTFND                8
+#define ERRCLASS_BADFMT                9
+#define ERRCLASS_LOCKED                10
+#define ERRCLASS_MEDIA         11
+#define ERRCLASS_ALREADY       12
+#define ERRCLASS_UNK           13
+#define ERRCLASS_CANT          14
+#define ERRCLASS_TIME          15
+
+#define ERRLOC_UNK             1
+#define ERRLOC_DISK            2
+#define ERRLOC_NET             3
+#define ERRLOC_SERDEV          4
+#define ERRLOC_MEM             5
+
+#endif /* INCL_DOSERRORS */
+
+#if defined (INCL_DOSMISC)
+
+#define FERR_DISABLEHARDERR    0x0000L
+#define FERR_ENABLEHARDERR     0x0001L
+#define FERR_ENABLEEXCEPTION   0x0000L
+#define FERR_DISABLEEXCEPTION  0x0002L
+
+#define BEGIN_LIBPATH          1
+#define END_LIBPATH            2
+
+ULONG DosErrClass (ULONG ulCode, PULONG pulClass, PULONG pulAction,
+    PULONG pulLocus);
+ULONG DosError (ULONG ulError);
+ULONG DosQueryExtLIBPATH (PCSZ pszExtLIBPATH, ULONG flags);
+ULONG DosSetExtLIBPATH (PCSZ pszExtLIBPATH, ULONG flags);
+
+#endif /* INCL_DOSMISC */
+
+/* ----------------------------- FONTS ------------------------------------ */
+
+#define FACESIZE 32
+
+#define FATTR_SEL_ITALIC               0x0001
+#define FATTR_SEL_UNDERSCORE           0x0002
+#define FATTR_SEL_OUTLINE              0x0008
+#define FATTR_SEL_STRIKEOUT            0x0010
+#define FATTR_SEL_BOLD                 0x0020
+
+#define FATTR_TYPE_KERNING             0x0004
+#define FATTR_TYPE_MBCS                        0x0008
+#define FATTR_TYPE_DBCS                        0x0010
+#define FATTR_TYPE_ANTIALIASED         0x0020
+
+#define FATTR_FONTUSE_NOMIX            0x0002
+#define FATTR_FONTUSE_OUTLINE          0x0004
+#define FATTR_FONTUSE_TRANSFORMABLE    0x0008
+
+#define FM_TYPE_FIXED                  0x0001
+#define FM_TYPE_LICENSED               0x0002
+#define FM_TYPE_KERNING                        0x0004
+#define FM_TYPE_DBCS                   0x0010
+#define FM_TYPE_MBCS                   0x0018
+#define FM_TYPE_64K                    0x8000
+#define FM_TYPE_ATOMS                  0x4000
+#define FM_TYPE_FAMTRUNC               0x2000
+#define FM_TYPE_FACETRUNC              0x1000
+
+#define FM_DEFN_OUTLINE                        0x0001
+#define FM_DEFN_IFI                    0x0002
+#define FM_DEFN_WIN                    0x0004
+#define FM_DEFN_GENERIC                        0x8000
+
+#define FM_SEL_ITALIC                  0x0001
+#define FM_SEL_UNDERSCORE              0x0002
+#define FM_SEL_NEGATIVE                        0x0004
+#define FM_SEL_OUTLINE                 0x0008
+#define FM_SEL_STRIKEOUT               0x0010
+#define FM_SEL_BOLD                    0x0020
+#define FM_SEL_ISO9241_TESTED          0x0040
+
+#define FM_CAP_NOMIX                   0x0001
+
+#define FM_ISO_9518_640                        0x01
+#define FM_ISO_9515_640                        0x02
+#define FM_ISO_9515_1024               0x04
+#define FM_ISO_9517_640                        0x08
+#define FM_ISO_9517_1024               0x10
+
+
+typedef struct _PANOSE
+{
+  BYTE bFamilyType;
+  BYTE bSerifStyle;
+  BYTE bWeight;
+  BYTE bProportion;
+  BYTE bContrast;
+  BYTE bStrokeVariation;
+  BYTE bArmStyle;
+  BYTE bLetterform;
+  BYTE bMidline;
+  BYTE bXHeight;
+  BYTE fbPassedISO;
+  BYTE fbFailedISO;
+} PANOSE;
+
+typedef struct _FONTMETRICS
+{
+  CHAR  szFamilyname[FACESIZE];
+  CHAR  szFacename[FACESIZE];
+  USHORT idRegistry;
+  USHORT usCodePage;
+  LONG  lEmHeight;
+  LONG  lXHeight;
+  LONG  lMaxAscender;
+  LONG  lMaxDescender;
+  LONG  lLowerCaseAscent;
+  LONG  lLowerCaseDescent;
+  LONG  lInternalLeading;
+  LONG  lExternalLeading;
+  LONG  lAveCharWidth;
+  LONG  lMaxCharInc;
+  LONG  lEmInc;
+  LONG  lMaxBaselineExt;
+  SHORT         sCharSlope;
+  SHORT         sInlineDir;
+  SHORT         sCharRot;
+  USHORT usWeightClass;
+  USHORT usWidthClass;
+  SHORT         sXDeviceRes;
+  SHORT         sYDeviceRes;
+  SHORT         sFirstChar;
+  SHORT         sLastChar;
+  SHORT         sDefaultChar;
+  SHORT         sBreakChar;
+  SHORT         sNominalPointSize;
+  SHORT         sMinimumPointSize;
+  SHORT         sMaximumPointSize;
+  USHORT fsType;
+  USHORT fsDefn;
+  USHORT fsSelection;
+  USHORT fsCapabilities;
+  LONG  lSubscriptXSize;
+  LONG  lSubscriptYSize;
+  LONG  lSubscriptXOffset;
+  LONG  lSubscriptYOffset;
+  LONG  lSuperscriptXSize;
+  LONG  lSuperscriptYSize;
+  LONG  lSuperscriptXOffset;
+  LONG  lSuperscriptYOffset;
+  LONG  lUnderscoreSize;
+  LONG  lUnderscorePosition;
+  LONG  lStrikeoutSize;
+  LONG  lStrikeoutPosition;
+  SHORT         sKerningPairs;
+  SHORT         sFamilyClass;
+  LONG  lMatch;
+  LONG  FamilyNameAtom;
+  LONG  FaceNameAtom;
+  PANOSE panose;
+} FONTMETRICS;
+typedef FONTMETRICS *PFONTMETRICS;
+
+typedef struct _FATTRS
+{
+  USHORT usRecordLength;
+  USHORT fsSelection;
+  LONG  lMatch;
+  CHAR  szFacename[FACESIZE];
+  USHORT idRegistry;
+  USHORT usCodePage;
+  LONG  lMaxBaselineExt;
+  LONG  lAveCharWidth;
+  USHORT fsType;
+  USHORT fsFontUse;
+} FATTRS;
+typedef FATTRS *PFATTRS;
+
+/* ------------------------- MEMORY MANAGEMENT ---------------------------- */
+
+#if defined (INCL_DOSMEMMGR) || !defined (INCL_NOCOMMON)
+
+#define PAG_READ               0x0001
+#define PAG_WRITE              0x0002
+#define PAG_EXECUTE            0x0004
+#define PAG_GUARD              0x0008
+#define PAG_COMMIT             0x0010
+#define PAG_DECOMMIT           0x0020
+#define OBJ_TILE               0x0040
+#define OBJ_PROTECTED          0x0080
+#define OBJ_GETTABLE           0x0100
+#define OBJ_GIVEABLE           0x0200
+#define PAG_DEFAULT            0x0400
+#define PAG_SHARED             0x2000
+#define PAG_FREE               0x4000
+#define PAG_BASE               0x00010000
+
+#define DOSSUB_INIT            0x0001
+#define DOSSUB_GROW            0x0002
+#define DOSSUB_SPARSE_OBJ      0x0004
+#define DOSSUB_SERIALIZE       0x0008
+
+#define fPERM                  (PAG_EXECUTE | PAG_READ | PAG_WRITE)
+#define fSHARE                 (OBJ_GETTABLE | OBJ_GIVEABLE)
+#define fALLOC                 (fPERM | OBJ_TILE | PAG_COMMIT)
+#define fALLOCSHR              (fPERM | fSHARE | OBJ_TILE | PAG_COMMIT)
+#define fGETNMSHR              (fPERM)
+#define fGETSHR                        (fPERM)
+#define fGIVESHR               (fPERM)
+#define fSET                   (fPERM|PAG_COMMIT|PAG_DECOMMIT|PAG_DEFAULT)
+
+ULONG DosAllocMem (PPVOID pBaseAddress, ULONG ulObjectSize,
+    ULONG ulAllocationFlags);
+ULONG DosAllocSharedMem (PPVOID pBaseAddress, PCSZ pszName,
+    ULONG ulObjectSize, ULONG ulAllocationFlags);
+ULONG DosFreeMem (PVOID pBaseAddress);
+ULONG DosGetNamedSharedMem (PPVOID pBaseAddress, PCSZ pszSharedMemName,
+    ULONG ulAttributeFlags);
+ULONG DosGetSharedMem (CPVOID pBaseAddress, ULONG ulAttributeFlags);
+ULONG DosGiveSharedMem (CPVOID pBaseAddress, PID idProcessId,
+    ULONG ulAttributeFlags);
+ULONG DosQueryMem (CPVOID pBaseAddress, PULONG pulRegionSize,
+    PULONG pulAllocationFlags);
+ULONG DosSetMem (CPVOID pBaseAddress, ULONG ulRegionSize,
+    ULONG ulAttributeFlags);
+ULONG DosSubAllocMem (PVOID pOffset, PPVOID pBlockOffset, ULONG ulSize);
+ULONG DosSubFreeMem (PVOID pOffset, PVOID pBlockOffset, ULONG ulSize);
+ULONG DosSubSetMem (PVOID pOffset, ULONG ulFlags, ULONG ulSize);
+ULONG DosSubUnsetMem (PVOID pOffset);
+
+#endif /* INCL_DOSMEMMGR || !INCL_NOCOMMON */
+
+/* --------------------------- FILE SYSTEM -------------------------------- */
+
+#define CCHMAXPATH                     260
+#define CCHMAXPATHCOMP                 256
+
+#if defined (INCL_DOSMISC)
+#define DSP_IMPLIEDCUR                 1
+#define DSP_PATHREF                    2
+#define DSP_IGNORENETERR               4
+#endif
+
+#if defined (INCL_DOSFILEMGR) || !defined (INCL_NOCOMMON)
+
+#define DCPY_EXISTING                  0x0001
+#define DCPY_APPEND                    0x0002
+#define DCPY_FAILEAS                   0x0004
+
+#define DSPI_WRTTHRU                   0x0010
+
+#define EAT_BINARY                     0xfffe
+#define EAT_ASCII                      0xfffd
+#define EAT_BITMAP                     0xfffb
+#define EAT_METAFILE                   0xfffa
+#define EAT_ICON                       0xfff9
+#define EAT_EA                         0xffee
+#define EAT_MVMT                       0xffdf
+#define EAT_MVST                       0xffde
+#define EAT_ASN1                       0xffdd
+
+#define ENUMEA_LEVEL_NO_VALUE          1
+
+#define ENUMEA_REFTYPE_FHANDLE         0
+#define ENUMEA_REFTYPE_PATH            1
+#define ENUMEA_REFTYPE_MAX             ENUMEA_REFTYPE_PATH
+
+#define ENUMEA_REFTYPE_FHANDLE         0
+#define ENUMEA_REFTYPE_PATH            1
+
+#define FEA_NEEDEA                     0x80
+
+#define FHB_DSKREMOTE                  0x8000
+#define FHB_CHRDEVREMOTE               0x8000
+#define FHB_PIPEREMOTE                 0x8000
+
+#define FHT_DISKFILE                   0x0000
+#define FHT_CHRDEV                     0x0001
+#define FHT_PIPE                       0x0002
+
+#define FIL_STANDARD                   1
+#define FIL_QUERYEASIZE                        2
+#define FIL_QUERYEASFROMLIST           3
+#define FIL_QUERYFULLNAME              5 /* DosQueryPathInfo */
+
+#define FILE_BEGIN                     0
+#define FILE_CURRENT                   1
+#define FILE_END                       2
+
+#define FILE_NORMAL                    0x0000
+#define FILE_READONLY                  0x0001
+#define FILE_HIDDEN                    0x0002
+#define FILE_SYSTEM                    0x0004
+#define FILE_DIRECTORY                 0x0010
+#define FILE_ARCHIVED                  0x0020
+
+#define FILE_IGNORE                    0x10000
+
+#define FILE_EXISTED                   0x0001
+#define FILE_CREATED                   0x0002
+#define FILE_TRUNCATED                 0x0003
+
+#define FILE_OPEN                      0x0001
+#define FILE_TRUNCATE                  0x0002
+#define FILE_CREATE                    0x0010
+
+#define FS_ATTACH                      0
+#define FS_DETACH                      1
+#define FS_SPOOLATTACH                 2
+#define FS_SPOOLDETACH                 3
+
+#define FSAIL_QUERYNAME                        1
+#define FSAIL_DEVNUMBER                        2
+#define FSAIL_DRVNUMBER                        3
+
+#define FSAT_CHARDEV                   1
+#define FSAT_PSEUDODEV                 2
+#define FSAT_LOCALDRV                  3
+#define FSAT_REMOTEDRV                 4
+
+#define FSCTL_HANDLE                   1
+#define FSCTL_PATHNAME                 2
+#define FSCTL_FSDNAME                  3
+
+#define FSCTL_ERROR_INFO               1
+#define FSCTL_MAX_EASIZE               2
+#define FSCTL_GET_NEXT_ROUTE_NAME      3
+#define FSCTL_DAEMON_QUERY             4
+
+#define FSCTL_QUERY_COMPLETE           0
+#define FSCTL_QUERY_AGAIN              1
+
+#define FSIL_ALLOC                     1
+#define FSIL_VOLSER                    2
+
+#define HANDTYPE_FILE                  0x0000
+#define HANDTYPE_DEVICE                        0x0001
+#define HANDTYPE_PIPE                  0x0002
+#define HANDTYPE_PROTECTED             0x4000
+#define HANDTYPE_NETWORK               0x8000
+
+#define HDIR_SYSTEM                    1
+#define HDIR_CREATE                    ((HDIR)-1)
+
+#define MUST_HAVE_READONLY     (FILE_READONLY  | (FILE_READONLY  << 8))
+#define MUST_HAVE_HIDDEN       (FILE_HIDDEN    | (FILE_HIDDEN    << 8))
+#define MUST_HAVE_SYSTEM       (FILE_SYSTEM    | (FILE_SYSTEM    << 8))
+#define MUST_HAVE_DIRECTORY    (FILE_DIRECTORY | (FILE_DIRECTORY << 8))
+#define MUST_HAVE_ARCHIVED     (FILE_ARCHIVED  | (FILE_ARCHIVED  << 8))
+
+#define OPEN_ACTION_FAIL_IF_EXISTS     0x0000
+#define OPEN_ACTION_OPEN_IF_EXISTS     0x0001
+#define OPEN_ACTION_REPLACE_IF_EXISTS  0x0002
+#define OPEN_ACTION_FAIL_IF_NEW               0x0000
+#define OPEN_ACTION_CREATE_IF_NEW      0x0010
+
+#define OPEN_ACCESS_READONLY          0x0000
+#define OPEN_ACCESS_WRITEONLY         0x0001
+#define OPEN_ACCESS_READWRITE         0x0002
+
+#define OPEN_SHARE_DENYREADWRITE       0x0010
+#define OPEN_SHARE_DENYWRITE          0x0020
+#define OPEN_SHARE_DENYREAD           0x0030
+#define OPEN_SHARE_DENYNONE           0x0040
+
+#define OPEN_FLAGS_NOINHERIT          0x0080
+#define OPEN_FLAGS_NO_LOCALITY        0x0000
+#define OPEN_FLAGS_SEQUENTIAL         0x0100
+#define OPEN_FLAGS_RANDOM             0x0200
+#define OPEN_FLAGS_RANDOMSEQUENTIAL    0x0300
+#define OPEN_FLAGS_NO_CACHE           0x1000
+#define OPEN_FLAGS_FAIL_ON_ERROR       0x2000
+#define OPEN_FLAGS_WRITE_THROUGH       0x4000
+#define OPEN_FLAGS_DASD                       0x8000
+#define OPEN_FLAGS_NONSPOOLED         0x40000
+#define OPEN_FLAGS_PROTECTED_HANDLE    0x40000000
+
+#define SEARCH_PATH                    0x0000
+#define SEARCH_CUR_DIRECTORY           0x0001
+#define SEARCH_ENVIRONMENT             0x0002
+#define SEARCH_IGNORENETERRS           0x0004
+
+
+typedef LHANDLE HFILE;
+typedef HFILE *PHFILE;
+
+typedef ULONG FHLOCK;
+typedef PULONG PFHLOCK;
+
+typedef LHANDLE HDIR;
+typedef HDIR *PHDIR;
+
+
+typedef struct _FTIME
+{
+  USHORT twosecs : 5;
+  USHORT minutes : 6;
+  USHORT hours  : 5;
+} FTIME;
+typedef FTIME *PFTIME;
+
+typedef struct _FDATE
+{
+  USHORT day   : 5;
+  USHORT month : 4;
+  USHORT year  : 7;
+} FDATE;
+typedef FDATE *PFDATE;
+
+typedef struct _FEA
+{
+  BYTE  fEA;
+  BYTE  cbName;
+  USHORT cbValue;
+} FEA;
+typedef FEA *PFEA;
+
+typedef struct _FEALIST
+{
+  ULONG cbList;
+  FEA  list[1];
+} FEALIST;
+typedef FEALIST *PFEALIST;
+
+typedef struct _GEA
+{
+  BYTE cbName;
+  CHAR szName[1];
+} GEA;
+typedef GEA *PGEA;
+
+typedef struct _GEALIST
+{
+  ULONG cbList;
+  GEA  list[1];
+} GEALIST;
+typedef GEALIST *PGEALIST;
+
+typedef struct _EAOP
+{
+  PGEALIST fpGEAList;
+  PFEALIST fpFEAList;
+  ULONG           oError;
+} EAOP;
+typedef EAOP *PEAOP;
+
+typedef struct _FEA2
+{
+  ULONG         oNextEntryOffset;
+  BYTE  fEA;
+  BYTE  cbName;
+  USHORT cbValue;
+  CHAR  szName[1];
+} FEA2;
+typedef FEA2 *PFEA2;
+
+typedef struct _FEA2LIST
+{
+  ULONG cbList;
+  FEA2 list[1];
+} FEA2LIST;
+typedef FEA2LIST *PFEA2LIST;
+
+typedef struct _GEA2
+{
+  ULONG oNextEntryOffset;
+  BYTE cbName;
+  CHAR szName[1];
+} GEA2;
+typedef GEA2 *PGEA2;
+
+typedef struct _GEA2LIST
+{
+  ULONG cbList;
+  GEA2 list[1];
+} GEA2LIST;
+typedef GEA2LIST *PGEA2LIST;
+
+typedef struct _EAOP2
+{
+  PGEA2LIST fpGEA2List;
+  PFEA2LIST fpFEA2List;
+  ULONG            oError;
+} EAOP2;
+typedef EAOP2 *PEAOP2;
+
+typedef struct _DENA1
+{
+  UCHAR         reserved;
+  UCHAR         cbName;
+  USHORT cbValue;
+  UCHAR         szName[1];
+} DENA1;
+typedef DENA1 *PDENA1;
+
+typedef FEA2 DENA2;
+typedef PFEA2 PDENA2;
+
+typedef struct _EASIZEBUF
+{
+  USHORT cbMaxEASize;
+  ULONG         cbMaxEAListSize;       /* Packed? */
+} EASIZEBUF;
+typedef EASIZEBUF *PEASIZEBUF;
+
+typedef struct _ROUTENAMEBUF
+{
+  ULONG hRouteHandle;
+  UCHAR szRouteName;
+} ROUTENAMEBUF;
+typedef ROUTENAMEBUF *PROUTENAMEBUF;
+
+typedef struct _FSDTHREAD
+{
+  USHORT usFunc;
+  USHORT usStackSize;
+  ULONG         ulPriorityClass;
+  LONG  lPriorityLevel;
+} FSDTHREAD;
+
+typedef struct _FSDDAEMON
+{
+  USHORT    usNumThreads;
+  USHORT    usMoreFlag;
+  USHORT    usCallInstance;
+  FSDTHREAD tdThrds[16];
+} FSDDAEMON;
+
+typedef struct _FILEFINDBUF
+{
+  FDATE         fdateCreation;
+  FTIME         ftimeCreation;
+  FDATE         fdateLastAccess;
+  FTIME         ftimeLastAccess;
+  FDATE         fdateLastWrite;
+  FTIME         ftimeLastWrite;
+  ULONG         cbFile;
+  ULONG         cbFileAlloc;
+  USHORT attrFile;
+  UCHAR         cchName;
+  CHAR  achName[CCHMAXPATHCOMP];
+} FILEFINDBUF;
+typedef FILEFINDBUF *PFILEFINDBUF;
+
+typedef struct _FILEFINDBUF2
+{
+  FDATE         fdateCreation;
+  FTIME         ftimeCreation;
+  FDATE         fdateLastAccess;
+  FTIME         ftimeLastAccess;
+  FDATE         fdateLastWrite;
+  FTIME         ftimeLastWrite;
+  ULONG         cbFile;
+  ULONG         cbFileAlloc;
+  USHORT attrFile;
+  ULONG         cbList;
+  UCHAR         cchName;
+  CHAR  achName[CCHMAXPATHCOMP];
+} FILEFINDBUF2;
+typedef FILEFINDBUF2 *PFILEFINDBUF2;
+
+typedef struct _FILEFINDBUF3
+{
+  ULONG oNextEntryOffset;
+  FDATE fdateCreation;
+  FTIME ftimeCreation;
+  FDATE fdateLastAccess;
+  FTIME ftimeLastAccess;
+  FDATE fdateLastWrite;
+  FTIME ftimeLastWrite;
+  ULONG cbFile;
+  ULONG cbFileAlloc;
+  ULONG attrFile;
+  UCHAR cchName;
+  CHAR achName[CCHMAXPATHCOMP];
+} FILEFINDBUF3;
+typedef FILEFINDBUF3 *PFILEFINDBUF3;
+
+typedef struct _FILEFINDBUF4
+{
+  ULONG oNextEntryOffset;
+  FDATE fdateCreation;
+  FTIME ftimeCreation;
+  FDATE fdateLastAccess;
+  FTIME ftimeLastAccess;
+  FDATE fdateLastWrite;
+  FTIME ftimeLastWrite;
+  ULONG cbFile;
+  ULONG cbFileAlloc;
+  ULONG attrFile;
+  ULONG cbList;
+  UCHAR cchName;
+  CHAR achName[CCHMAXPATHCOMP];
+} FILEFINDBUF4;
+typedef FILEFINDBUF4 *PFILEFINDBUF4;
+
+typedef struct _FILELOCK
+{
+  LONG lOffset;
+  LONG lRange;
+} FILELOCK;
+typedef FILELOCK *PFILELOCK;
+
+typedef struct _FILESTATUS
+{
+  FDATE         fdateCreation;
+  FTIME         ftimeCreation;
+  FDATE         fdateLastAccess;
+  FTIME         ftimeLastAccess;
+  FDATE         fdateLastWrite;
+  FTIME         ftimeLastWrite;
+  ULONG         cbFile;
+  ULONG         cbFileAlloc;
+  USHORT attrFile;
+} FILESTATUS;
+typedef FILESTATUS *PFILESTATUS;
+
+typedef struct _FILESTATUS2
+{
+  FDATE         fdateCreation;
+  FTIME         ftimeCreation;
+  FDATE         fdateLastAccess;
+  FTIME         ftimeLastAccess;
+  FDATE         fdateLastWrite;
+  FTIME         ftimeLastWrite;
+  ULONG         cbFile;
+  ULONG         cbFileAlloc;
+  USHORT attrFile;
+  ULONG         cbList;
+} FILESTATUS2;
+typedef FILESTATUS2 *PFILESTATUS2;
+
+typedef struct _FILESTATUS3
+{
+  FDATE fdateCreation;
+  FTIME ftimeCreation;
+  FDATE fdateLastAccess;
+  FTIME ftimeLastAccess;
+  FDATE fdateLastWrite;
+  FTIME ftimeLastWrite;
+  ULONG cbFile;
+  ULONG cbFileAlloc;
+  ULONG attrFile;
+} FILESTATUS3;
+typedef FILESTATUS3 *PFILESTATUS3;
+
+typedef struct _FILESTATUS4
+{
+  FDATE fdateCreation;
+  FTIME ftimeCreation;
+  FDATE fdateLastAccess;
+  FTIME ftimeLastAccess;
+  FDATE fdateLastWrite;
+  FTIME ftimeLastWrite;
+  ULONG cbFile;
+  ULONG cbFileAlloc;
+  ULONG attrFile;
+  ULONG cbList;
+} FILESTATUS4;
+typedef FILESTATUS4 *PFILESTATUS4;
+
+typedef struct _FSALLOCATE
+{
+  ULONG         idFileSystem;
+  ULONG         cSectorUnit;
+  ULONG         cUnit;
+  ULONG         cUnitAvail;
+  USHORT cbSector;
+} FSALLOCATE;
+typedef FSALLOCATE *PFSALLOCATE;
+
+typedef struct _FSQBUFFER
+{
+  USHORT iType;
+  USHORT cbName;
+  UCHAR         szName[1];
+  USHORT cbFSDName;
+  UCHAR         szFSDName[1];
+  USHORT cbFSAData;
+  UCHAR         rgFSAData[1];
+} FSQBUFFER;
+typedef FSQBUFFER *PFSQBUFFER;
+
+typedef struct _FSQBUFFER2
+{
+  USHORT iType;
+  USHORT cbName;
+  USHORT cbFSDName;
+  USHORT cbFSAData;
+  UCHAR         szName[1];
+  UCHAR         szFSDName[1];
+  UCHAR         rgFSAData[1];
+} FSQBUFFER2;
+typedef FSQBUFFER2 *PFSQBUFFER2;
+
+typedef struct _SPOOLATTACH
+{
+  USHORT hNmPipe;
+  ULONG         ulKey;
+} SPOOLATTACH;
+typedef SPOOLATTACH *PSPOOLATTACH;
+
+typedef struct _VOLUMELABEL
+{
+  BYTE cch;
+  CHAR szVolLabel[12];
+} VOLUMELABEL;
+typedef VOLUMELABEL *PVOLUMELABEL;
+
+typedef struct _FSINFO
+{
+  FDATE fdateCreation;
+  FTIME ftimeCreation;
+  VOLUMELABEL vol;
+} FSINFO;
+typedef FSINFO *PFSINFO;
+
+
+ULONG DosCancelLockRequest (HFILE hFile, __const__ FILELOCK *pfl);
+ULONG DosClose (HFILE hFile);
+ULONG DosCopy (PCSZ pszSource, PCSZ pszTarget, ULONG ulOption);
+ULONG DosCreateDir (PCSZ pszDirName, PEAOP2 pEABuf);
+ULONG DosDelete (PCSZ pszFileName);
+ULONG DosDeleteDir (PCSZ pszDirName);
+ULONG DosDupHandle (HFILE hFile, PHFILE phFile);
+ULONG DosEditName (ULONG ulLevel, PCSZ pszSource, PCSZ pszEdit,
+    PBYTE pszTargetBuf, ULONG ulTargetBufLength);
+ULONG DosEnumAttribute (ULONG ulRefType, CPVOID pvFile, ULONG ulEntry,
+    PVOID pvBuf, ULONG ulBufLength, PULONG pulCount, ULONG ulInfoLevel);
+ULONG DosFindClose (HDIR hDir);
+ULONG DosFindFirst (PCSZ pszFileSpec, PHDIR phDir, ULONG flAttribute,
+    PVOID pFindBuf, ULONG ulFindBufLength, PULONG pulFileNames,
+    ULONG ulInfoLevel);
+ULONG DosFindNext (HDIR hDir, PVOID pFindBuf, ULONG ulFindBufLength,
+    PULONG pulFileNames);
+ULONG DosForceDelete (PCSZ pszFileName);
+ULONG DosFSAttach (PCSZ pszDevice, PCSZ pszFilesystem,
+    __const__ VOID *pData, ULONG ulDataLength, ULONG ulFlag);
+ULONG DosFSCtl (PVOID pData, ULONG ulDataLengthMax, PULONG pulDataLength,
+    PVOID pParmList, ULONG ulParmLengthMax, PULONG pulParmLength,
+    ULONG ulFunction, PCSZ pszRouteName, HFILE hFile, ULONG ulMethod);
+ULONG DosMove (PCSZ pszOldName, PCSZ pszNewName);
+ULONG DosOpen (PCSZ pszFileName, PHFILE phFile, PULONG pulAction,
+    ULONG ulFileSize, ULONG ulAttribute, ULONG ulOpenFlags, ULONG ulOpenMode,
+    PEAOP2 pEABuf);
+ULONG DosProtectClose (HFILE hFile, FHLOCK fhFileHandleLockID);
+ULONG DosProtectEnumAttribute (ULONG ulRefType, CPVOID pvFile,
+    ULONG ulEntry, PVOID pvBuf, ULONG ulBufLength, PULONG pulCount,
+    ULONG ulInfoLevel, FHLOCK fhFileHandleLockID);
+ULONG DosProtectOpen (PCSZ pszFileName, PHFILE phFile, PULONG pulAction,
+    ULONG ulFileSize, ULONG ulAttribute, ULONG ulOpenFlags, ULONG ulOpenMode,
+    PEAOP2 pEABuf, PFHLOCK pfhFileHandleLockID);
+ULONG DosProtectQueryFHState (HFILE hFile, PULONG pulMode,
+    FHLOCK fhFileHandleLockID);
+ULONG DosProtectQueryFileInfo (HFILE hFile, ULONG ulInfoLevel,
+    PVOID pInfoBuffer, ULONG ulInfoLength, FHLOCK fhFileHandleLockID);
+ULONG DosProtectRead (HFILE hFile, PVOID pBuffer, ULONG ulLength,
+    PULONG pulBytesRead, FHLOCK fhFileHandleLockID);
+ULONG DosProtectSetFHState (HFILE hFile, ULONG ulMode,
+    FHLOCK fhFileHandleLockID);
+ULONG DosProtectSetFileInfo (HFILE hFile, ULONG ulInfoLevel, PVOID pInfoBuffer,
+    ULONG ulInfoLength, FHLOCK fhFileHandleLockID);
+ULONG DosProtectSetFileLocks (HFILE hFile, __const__ FILELOCK *pflUnlock,
+    __const__ FILELOCK *pflLock, ULONG ulTimeout, ULONG ulFlags,
+    FHLOCK fhFileHandleLockID);
+ULONG DosProtectSetFilePtr (HFILE hFile, LONG lOffset, ULONG ulOrigin,
+    PULONG pulPos, FHLOCK fhFileHandleLockID);
+ULONG DosProtectSetFileSize (HFILE hFile, ULONG ulSize,
+    FHLOCK fhFileHandleLockID);
+ULONG DosProtectWrite (HFILE hFile, CPVOID pBuffer, ULONG ulLength,
+    PULONG pulBytesWritten, FHLOCK fhFileHandleLockID);
+ULONG DosQueryCurrentDir (ULONG ulDrive, PBYTE pPath, PULONG pulPathLength);
+ULONG DosQueryCurrentDisk (PULONG pulDrive, PULONG pulLogical);
+ULONG DosQueryFHState (HFILE hFile, PULONG pulMode);
+ULONG DosQueryFileInfo (HFILE hFile, ULONG ulInfoLevel, PVOID pInfoBuffer,
+    ULONG ulInfoLength);
+ULONG DosQueryFSAttach (PCSZ pszDeviceName, ULONG ulOrdinal,
+    ULONG ulFSAInfoLevel, PFSQBUFFER2 pfsqb, PULONG pulBufLength);
+ULONG DosQueryFSInfo (ULONG ulDrive, ULONG ulInfoLevel, PVOID pBuf,
+    ULONG ulBufLength);
+ULONG DosQueryHType (HFILE hFile, PULONG pulType, PULONG pulAttr);
+ULONG DosQueryPathInfo (PCSZ pszPathName, ULONG ulInfoLevel,
+    PVOID pInfoBuffer, ULONG ulInfoLength);
+ULONG DosQueryVerify (PBOOL32 pVerify);
+ULONG DosRead (HFILE hFile, PVOID pBuffer, ULONG ulLength,
+    PULONG pulBytesRead);
+ULONG DosResetBuffer (HFILE hf);
+ULONG DosSetCurrentDir (PCSZ pszDir);
+ULONG DosSetDefaultDisk (ULONG ulDrive);
+ULONG DosSetFHState (HFILE hFile, ULONG ulMode);
+ULONG DosSetFileInfo (HFILE hFile, ULONG ulInfoLevel, PVOID pInfoBuffer,
+    ULONG ulInfoLength);
+ULONG DosSetFileLocks (HFILE hFile, __const__ FILELOCK *pflUnlock,
+    __const__ FILELOCK *pflLock, ULONG ulTimeout, ULONG ulFlags);
+ULONG DosSetFilePtr (HFILE hFile, LONG lOffset, ULONG ulOrigin, PULONG pulPos);
+ULONG DosSetFileSize (HFILE hFile, ULONG ulSize);
+ULONG DosSetFSInfo (ULONG ulDrive, ULONG ulInfoLevel, PVOID pBuf,
+    ULONG ulBufLength);
+ULONG DosSetMaxFH (ULONG ulCount);
+ULONG DosSetPathInfo (PCSZ pszPathName, ULONG ulInfoLevel, PVOID pInfoBuffer,
+    ULONG ulInfoLength, ULONG ulOptions);
+ULONG DosSetRelMaxFH (PLONG pulReqCount, PULONG pulCurMaxFH);
+ULONG DosSetVerify (BOOL32 f32Verify);
+ULONG DosShutdown (ULONG ulReserved);
+ULONG DosWrite (HFILE hFile, CPVOID pBuffer, ULONG ulLength,
+    PULONG pulBytesWritten);
+
+#endif /* INCL_DOSFILEMGR || !INCL_NOCOMMON */
+
+
+#if defined (INCL_DOSMISC)
+ULONG DosSearchPath (ULONG ulControl, PCSZ pszPath, PCSZ pszFilename,
+    PBYTE pBuf, ULONG ulBufLength);
+#endif /* INCL_DOSMISC */
+
+/* ---------------------------- DEVICE I/O -------------------------------- */
+
+#if defined (INCL_DOSDEVICES)
+
+#define DEVINFO_PRINTER                       0
+#define DEVINFO_RS232                 1
+#define DEVINFO_FLOPPY                2
+#define DEVINFO_COPROCESSOR           3
+#define DEVINFO_SUBMODEL              4
+#define DEVINFO_MODEL                 5
+#define DEVINFO_ADAPTER                       6
+
+#define INFO_COUNT_PARTITIONABLE_DISKS 1
+#define INFO_GETIOCTLHANDLE           2
+#define INFO_FREEIOCTLHANDLE          3
+
+ULONG DosDevConfig (PVOID pInfo, ULONG ulItem);
+ULONG DosDevIOCtl (HFILE hDevice, ULONG ulCategory, ULONG ulFunction,
+    PVOID pParams, ULONG ulParamsLengthMax, PULONG pulParamsLength,
+    PVOID pData, ULONG ulDataLengthMax, PULONG pulDataLength);
+ULONG DosPhysicalDisk (ULONG ulFunction, PVOID pBuffer, ULONG ulBufferLength,
+    PVOID pParams, ULONG ulParamsLength);
+
+#endif /* INCL_DOSDEVICES */
+
+#if defined (INCL_DOSDEVIOCTL)
+
+#define IOCTL_ASYNC                    0x0001
+#define IOCTL_SCR_AND_PTRDRAW          0x0003
+#define IOCTL_KEYBOARD                 0x0004
+#define IOCTL_PRINTER                  0x0005
+#define IOCTL_LIGHTPEN                 0x0006
+#define IOCTL_POINTINGDEVICE           0x0007
+#define IOCTL_DISK                     0x0008
+#define IOCTL_PHYSICALDISK             0x0009
+#define IOCTL_MONITOR                  0x000a
+#define IOCTL_GENERAL                  0x000b
+#define IOCTL_POWER                    0x000c
+#define IOCTL_OEMHLP                   0x0080
+#define IOCTL_TESTCFG_SYS              0x0080
+#define IOCTL_CDROMDISK                        0x0080
+#define IOCTL_CDROMAUDIO               0x0081
+#define IOCTL_TOUCH_DEVDEP             0x0081
+#define IOCTL_TOUCH_DEVINDEP           0x0081
+
+#define ASYNC_SETBAUDRATE              0x0041
+#define ASYNC_SETLINECTRL              0x0042
+#define ASYNC_EXTSETBAUDRATE           0x0043
+#define ASYNC_TRANSMITIMM              0x0044
+#define ASYNC_SETBREAKOFF              0x0045
+#define ASYNC_SETMODEMCTRL             0x0046
+#define ASYNC_STOPTRANSMIT             0x0047
+#define ASYNC_STARTTRANSMIT            0x0048
+#define ASYNC_SETBREAKON               0x004b
+#define ASYNC_SETDCBINFO               0x0053
+#define ASYNC_SETENHANCEDMODEPARMS     0x0054
+#define ASYNC_GETBAUDRATE              0x0061
+#define ASYNC_GETLINECTRL              0x0062
+#define ASYNC_EXTGETBAUDRATE           0x0063
+#define ASYNC_GETCOMMSTATUS            0x0064
+#define ASYNC_GETLINESTATUS            0x0065
+#define ASYNC_GETMODEMOUTPUT           0x0066
+#define ASYNC_GETMODEMINPUT            0x0067
+#define ASYNC_GETINQUECOUNT            0x0068
+#define ASYNC_GETOUTQUECOUNT           0x0069
+#define ASYNC_GETCOMMERROR             0x006d
+#define ASYNC_GETCOMMEVENT             0x0072
+#define ASYNC_GETDCBINFO               0x0073
+#define ASYNC_GETENHANCEDMODEPARMS     0x0074
+
+#define SCR_ALLOCLDT                   0x0070
+#define SCR_DEALLOCLDT                 0x0071
+#define PTR_GETPTRDRAWADDRESS          0x0072
+#define VID_INITCALLVECTOR             0x0073
+#define SCR_ABIOSPASSTHRU              0x0074
+#define SCR_ALLOCLDTOFF                        0x0075
+#define SCR_ALLOCLDTBGVAL              0x0076
+#define SCR_ALLOCVIDEOBUFFER           0x007e
+#define SCR_GETROMFONTADDR             0x007f
+
+#define KBD_SETTRANSTABLE              0x0050
+#define KBD_SETINPUTMODE               0x0051
+#define KBD_SETINTERIMFLAG             0x0052
+#define KBD_SETSHIFTSTATE              0x0053
+#define KBD_SETTYPAMATICRATE           0x0054
+#define KBD_SETFGNDSCREENGRP           0x0055
+#define KBD_SETSESMGRHOTKEY            0x0056
+#define KBD_SETFOCUS                   0x0057
+#define KBD_SETKCB                     0x0058
+#define KBD_SETREADNOTIFICATION                0x0059
+#define KBD_ALTERKBDLED                        0x005a
+#define KBD_SETNLS                     0x005c
+#define KBD_CREATE                     0x005d
+#define KBD_DESTROY                    0x005e
+#define KBD_GETINPUTMODE               0x0071
+#define KBD_GETINTERIMFLAG             0x0072
+#define KBD_GETSHIFTSTATE              0x0073
+#define KBD_READCHAR                   0x0074
+#define KBD_PEEKCHAR                   0x0075
+#define KBD_GETSESMGRHOTKEY            0x0076
+#define KBD_GETKEYBDTYPE               0x0077
+#define KBD_GETCODEPAGEID              0x0078
+#define KBD_XLATESCAN                  0x0079
+#define KBD_QUERYKBDHARDWAREID         0x007a
+#define KBD_QUERYKBDCODEPAGESUPPORT    0x007b
+
+#define PRT_QUERYJOBHANDLE             0x0021
+#define PRT_SETFRAMECTL                        0x0042
+#define PRT_SETINFINITERETRY           0x0044
+#define PRT_INITPRINTER                        0x0046
+#define PRT_ACTIVATEFONT               0x0048
+#define PRT_SETPRINTJOBTITLE           0x004d
+#define PRT_SETIRQTIMEOUT              0x004e
+#define PRT_GETFRAMECTL                        0x0062
+#define PRT_GETINFINITERETRY           0x0064
+#define PRT_GETPRINTERSTATUS           0x0066
+#define PRT_QUERYACTIVEFONT            0x0069
+#define PRT_VERIFYFONT                 0x006a
+#define PRT_QUERYIRQTIMEOUT            0x006e
+
+#define MOU_ALLOWPTRDRAW               0x0050
+#define MOU_UPDATEDISPLAYMODE          0x0051
+#define MOU_SCREENSWITCH               0x0052
+#define MOU_SETSCALEFACTORS            0x0053
+#define MOU_SETEVENTMASK               0x0054
+#define MOU_SETHOTKEYBUTTON            0x0055
+#define MOU_REASSIGNTHRESHOLDVALUES    0x0055 /* ? */
+#define MOU_SETPTRSHAPE                        0x0056
+#define MOU_DRAWPTR                    0x0057
+#define MOU_UNMARKCOLLISIONAREA                0x0057 /* ? */
+#define MOU_REMOVEPTR                  0x0058
+#define MOU_MARKCOLLISIONAREA          0x0058 /* ? */
+#define MOU_SETPTRPOS                  0x0059
+#define MOU_SETPROTDRAWADDRESS         0x005a
+#define MOU_SETREALDRAWADDRESS         0x005b
+#define MOU_SETMOUSTATUS               0x005c
+#define MOU_DISPLAYMODECHANGE          0x005d
+#define MOU_GETBUTTONCOUNT             0x0060
+#define MOU_GETMICKEYCOUNT             0x0061
+#define MOU_GETMOUSTATUS               0x0062
+#define MOU_READEVENTQUE               0x0063
+#define MOU_GETQUESTATUS               0x0064
+#define MOU_GETEVENTMASK               0x0065
+#define MOU_GETSCALEFACTORS            0x0066
+#define MOU_GETPTRPOS                  0x0067
+#define MOU_GETPTRSHAPE                        0x0068
+#define MOU_GETHOTKEYBUTTON            0x0069
+#define MOU_QUERYTHRESHOLDVALUES       0x0069 /* ? */
+#define MOU_VER                                0x006a
+#define MOU_QUERYPOINTERID             0x006b /* ? */
+
+#define DSK_LOCKDRIVE                  0x0000
+#define DSK_UNLOCKDRIVE                        0x0001
+#define DSK_REDETERMINEMEDIA           0x0002
+#define DSK_SETLOGICALMAP              0x0003
+#define DSK_BEGINFORMAT                        0x0004
+#define DSK_BLOCKREMOVABLE             0x0020
+#define DSK_GETLOGICALMAP              0x0021
+#define DSK_UNLOCKEJECTMEDIA           0x0040
+#define DSK_SETDEVICEPARAMS            0x0043
+#define DSK_WRITETRACK                 0x0044
+#define DSK_FORMATVERIFY               0x0045
+#define DSK_DISKETTECONTROL            0x005d
+#define DSK_QUERYMEDIASENSE            0x0060
+#define DSK_GETDEVICEPARAMS            0x0063
+#define DSK_READTRACK                  0x0064
+#define DSK_VERIFYTRACK                        0x0065
+#define DSK_GETLOCKSTATUS              0x0066
+
+#define PDSK_LOCKPHYSDRIVE             0x0000
+#define PDSK_UNLOCKPHYSDRIVE           0x0001
+#define PDSK_WRITEPHYSTRACK            0x0044
+#define PDSK_GETPHYSDEVICEPARAMS       0x0063
+#define PDSK_READPHYSTRACK             0x0064
+#define PDSK_VERIFYPHYSTRACK           0x0065
+
+#define POWER_SENDPOWEREVENT           0x0040
+#define POWER_SETPOWEREVENTRES         0x0041
+#define POWER_GETPOWERSTATUS           0x0060
+#define POWER_GETPOWEREVENT            0x0061
+#define POWER_GETPOWERINFO             0x0062
+
+#define OEMHLP_GETOEMADAPTIONINFO      0x0000
+#define OEMHLP_GETMACHINEINFO          0x0001
+#define OEMHLP_GETDISPLAYCOMBCODE      0x0002
+#define OEMHLP_GETVIDEOFONTS           0x0003
+#define OEMHLP_READEISACONFIGINFO      0x0004
+#define OEMHLP_GETROMBIOSINFO          0x0005
+#define OEMHLP_GETMISCVIDEOINFO                0x0006
+#define OEMHLP_GETVIDEOADAPTER         0x0007
+#define OEMHLP_GETSVGAINFO             0x0008
+#define OEMHLP_GETMEMINFO              0x0009
+#define OEMHLP_GETDMQSINFO             0x000a
+#define OEMHLP_PCI                     0x000b
+
+#define TESTCFG_SYS_GETBIOSADAPTER     0x0040
+#define TESTCFG_SYS_ISSUEINIOINSTR     0x0041
+#define TESTCFG_SYS_ISSUEOUTIOINSTR    0x0042
+#define TESTCFG_SYS_GETBUSARCH         0x0060
+#define TESTCFG_SYS_GETALLPOSIDS       0x0061
+#define TESTCFG_SYS_GETALLEISAIDS      0x0062
+
+#define CDROMDISK_RESETDRIVE           0x0040
+#define CDROMDISK_EJECTDISK            0x0044
+#define CDROMDISK_LOCKUNLOCKDOOR       0x0046
+#define CDROMDISK_SEEK                 0x0050
+#define CDROMDISK_DEVICESTATUS         0x0060
+#define CDROMDISK_GETDRIVER            0x0061
+#define CDROMDISK_GETSECTORSIZE                0x0063
+#define CDROMDISK_GETHEADLOC           0x0070
+#define CDROMDISK_READLONG             0x0072
+#define CDROMDISK_GETVOLUMESIZE                0x0078
+#define CDROMDISK_GETUPC               0x0079
+
+#define CDROMAUDIO_SETCHANNELCTRL      0x0040
+#define CDROMAUDIO_PLAYAUDIO           0x0050
+#define CDROMAUDIO_STOPAUDIO           0x0051
+#define CDROMAUDIO_RESUMEAUDIO         0x0052
+#define CDROMAUDIO_GETCHANNEL          0x0060
+#define CDROMAUDIO_GETAUDIODISK                0x0061
+#define CDROMAUDIO_GETAUDIOTRACK       0x0062
+#define CDROMAUDIO_GETSUBCHANNELQ      0x0063
+#define CDROMAUDIO_GETAUDIOSTATUS      0x0065
+
+#define TOUCH_DEVDEP_SETCALIBCONST     0x0052
+#define TOUCH_DEVDEP_READDATA          0x0053
+#define TOUCH_DEVDEP_SETDATAMODE       0x0054
+#define TOUCH_DEVDEP_SETCLICKLOCK      0x0055
+#define TOUCH_DEVDEP_SETTOUCHTHRESHOLD 0x0056
+#define TOUCH_DEVDEP_SETEMULXY         0x0057
+#define TOUCH_DEVDEP_SETDATAREPORTRATE 0x0058
+#define TOUCH_DEVDEP_SETLOWPASSFILTER  0x0059
+#define TOUCH_DEVDEP_WRITEMEMLOC       0x005a
+#define TOUCH_DEVDEP_GETCALIBCONST     0x0060
+#define TOUCH_DEVDEP_GETDATAMODE       0x0061
+#define TOUCH_DEVDEP_GETCLICKLOCK      0x0062
+#define TOUCH_DEVDEP_GETTOUCHTHRESHOLD 0x0063
+#define TOUCH_DEVDEP_GETEMULXY         0x0064
+#define TOUCH_DEVDEP_GETDATAREPORTRATE 0x0065
+#define TOUCH_DEVDEP_GETLOWPASSFILTER  0x0066
+#define TOUCH_DEVDEP_READMEMLOC                0x0067
+
+#define TOUCH_DEVINDEP_SETCOORDSYS     0x0050
+#define TOUCH_DEVINDEP_SETSELECTMECH   0x0052
+#define TOUCH_DEVINDEP_SETEVENTMASK    0x0053
+#define TOUCH_DEVINDEP_SETQUEUESIZE    0x0054
+#define TOUCH_DEVINDEP_SETEMULSTATE    0x0055
+#define TOUCH_DEVINDEP_GETCOORDSYS     0x0060
+#define TOUCH_DEVINDEP_GETSELECTMECH   0x0062
+#define TOUCH_DEVINDEP_GETEVENTMASK    0x0063
+#define TOUCH_DEVINDEP_GETQUEUESIZE    0x0064
+#define TOUCH_DEVINDEP_GETEMULSTATE    0x0065
+#define TOUCH_DEVINDEP_GETREADEVENTQUEUE 0x0066
+
+#define MON_REGISTERMONITOR            0x0040
+
+#define DEV_FLUSHINPUT                 0x0001
+#define DEV_FLUSHOUTPUT                        0x0002
+#define DEV_SYSTEMNOTIFYPDD            0x0041
+#define DEV_QUERYMONSUPPORT            0x0060
+
+#define RX_QUE_OVERRUN                 0x0001
+#define RX_HARDWARE_OVERRUN            0x0002
+#define PARITY_ERROR                   0x0004
+#define FRAMING_ERROR                  0x0008
+
+#define CHAR_RECEIVED                  0x0001
+#define LAST_CHAR_SENT                 0x0004
+#define CTS_CHANGED                    0x0008
+#define DSR_CHANGED                    0x0010
+#define DCD_CHANGED                    0x0020
+#define BREAK_DETECTED                 0x0040
+#define ERROR_OCCURRED                 0x0080
+#define RI_DETECTED                    0x0100
+
+#define TX_WAITING_FOR_CTS             0x0001
+#define TX_WAITING_FOR_DSR             0x0002
+#define TX_WAITING_FOR_DCD             0x0004
+#define TX_WAITING_FOR_XON             0x0008
+#define TX_WAITING_TO_SEND_XON         0x0010
+#define TX_WAITING_WHILE_BREAK_ON      0x0020
+#define TX_WAITING_TO_SEND_IMM         0x0040
+#define RX_WAITING_FOR_DSR             0x0080
+
+#define WRITE_REQUEST_QUEUED           0x0001
+#define DATA_IN_TX_QUE                 0x0002
+#define HARDWARE_TRANSMITTING          0x0004
+#define CHAR_READY_TO_SEND_IMM         0x0008
+#define WAITING_TO_SEND_XON            0x0010
+#define WAITING_TO_SEND_XOFF           0x0020
+
+#define CTS_ON                         0x10
+#define DSR_ON                         0x20
+#define RI_ON                          0x40
+#define DCD_ON                         0x80
+
+#define MODE_DTR_CONTROL               0x01
+#define MODE_DTR_HANDSHAKE             0x02
+#define MODE_CTS_HANDSHAKE             0x08
+#define MODE_DSR_HANDSHAKE             0x10
+#define MODE_DCD_HANDSHAKE             0x20
+#define MODE_DSR_SENSITIVITY           0x40
+
+#define MODE_AUTO_TRANSMIT             0x01
+#define MODE_AUTO_RECEIVE              0x02
+#define MODE_ERROR_CHAR                        0x04
+#define MODE_NULL_STRIPPING            0x08
+#define MODE_BREAK_CHAR                        0x10
+#define MODE_RTS_CONTROL               0x40
+#define MODE_RTS_HANDSHAKE             0x80
+#define MODE_TRANSMIT_TOGGLE           0xc0
+
+#define MODE_NO_WRITE_TIMEOUT          0x01
+#define MODE_READ_TIMEOUT              0x02
+#define MODE_WAIT_READ_TIMEOUT         0x04
+#define MODE_NOWAIT_READ_TIMEOUT       0x06
+
+#define DTR_ON                         0x01
+#define RTS_ON                         0x02
+
+#define DTR_OFF                                0xfe
+#define RTS_OFF                                0xfd
+
+#define ASCII_MODE                     0x00
+#define BINARY_MODE                    0x80
+
+#define CONVERSION_REQUEST             0x20
+#define INTERIM_CHAR                   0x80
+
+#define HOTKEY_MAX_COUNT               0x0000
+#define HOTKEY_CURRENT_COUNT           0x0001
+
+#define KBD_DATA_RECEIVED              0x0001
+#define KBD_DATA_BINARY                        0x8000
+
+#define KBD_READ_WAIT                  0x0000
+#define KBD_READ_NOWAIT                        0x8000
+
+#define SHIFT_REPORT_MODE              0x01
+
+#define RIGHTSHIFT                     0x0001
+#define LEFTSHIFT                      0x0002
+#define CONTROL                                0x0004
+#define ALT                            0x0008
+#define SCROLLLOCK_ON                  0x0010
+#define NUMLOCK_ON                     0x0020
+#define CAPSLOCK_ON                    0x0040
+#define INSERT_ON                      0x0080
+#define LEFTCONTROL                    0x0100
+#define LEFTALT                                0x0200
+#define RIGHTCONTROL                   0x0400
+#define RIGHTALT                       0x0800
+#define SCROLLLOCK                     0x1000
+#define NUMLOCK                                0x2000
+#define CAPSLOCK                       0x4000
+#define SYSREQ                         0x8000
+
+#define PRINTER_TIMEOUT                        0x0001
+#define PRINTER_IO_ERROR               0x0008
+#define PRINTER_SELECTED               0x0010
+#define PRINTER_OUT_OF_PAPER           0x0020
+#define PRINTER_ACKNOWLEDGED           0x0040
+#define PRINTER_NOT_BUSY               0x0080
+
+#define MOUSE_MOTION                   0x0001
+#define MOUSE_MOTION_WITH_BN1_DOWN     0x0002
+#define MOUSE_BN1_DOWN                 0x0004
+#define MOUSE_MOTION_WITH_BN2_DOWN     0x0008
+#define MOUSE_BN2_DOWN                 0x0010
+#define MOUSE_MOTION_WITH_BN3_DOWN     0x0020
+#define MOUSE_BN3_DOWN                 0x0040
+
+#define MHK_BUTTON1                    0x0001
+#define MHK_BUTTON2                    0x0002
+#define MHK_BUTTON3                    0x0004
+
+#define MOU_NOWAIT                     0x0000
+#define MOU_WAIT                       0x0001
+
+#define MHK_NO_HOTKEY                  0x0000
+
+#define MOUSE_QUEUEBUSY                        0x0001
+#define MOUSE_BLOCKREAD                        0x0002
+#define MOUSE_FLUSH                    0x0004
+#define MOUSE_UNSUPPORTED_MODE         0x0008
+#define MOUSE_DISABLED                 0x0100
+#define MOUSE_MICKEYS                  0x0200
+
+#define BUILD_BPB_FROM_MEDIUM          0x00
+#define REPLACE_BPB_FOR_DEVICE         0x01
+#define REPLACE_BPB_FOR_MEDIUM         0x02
+
+#define DEVTYPE_48TPI                  0x0000
+#define DEVTYPE_96TPI                  0x0001
+#define DEVTYPE_35                     0x0002
+#define DEVTYPE_8SD                    0x0003
+#define DEVTYPE_8DD                    0x0004
+#define DEVTYPE_FIXED                  0x0005
+#define DEVTYPE_TAPE                   0x0006
+#define DEVTYPE_UNKNOWN                        0x0007
+
+#define SCREENDD_GETCURRENTBANK                0x00
+#define SCREENDD_SETCURRENTBANK                0x01
+#define SCREENDD_SVGA_ID               0x08
+#define SCREENDD_SVGA_OEM              0x09
+#define SCREENDD_UPDATEMEMORY          0x0a
+#define SCREENDD_GETLINEARACCESS       0x0b
+#define SCREENDD_GETGLOBALACCESS       0x0c
+#define SCREENDD_FREEGLOBALACCESS      0x0d
+#define SCREENDD_REGISTER_RING0_CALLER 0x0e
+#define SCREENDD_WAIT_ON_RING0_CALLER  0x0f
+#define SCREENDD_CATEGORY              0x80
+#define SCREENDD_NAME                  "SCREEN$"
+
+#define GETLINEAR_FLAG_MAPPHYSICAL     0x00000010
+#define GETLINEAR_FLAG_MAPPROCESS      0x00000020
+#define GETLINEAR_FLAG_MAPSHARED       0x00000400
+#define GETLINEAR_FLAG_MAPATTACH       0x80000000
+
+#define EGA_BIT                                4
+#define VGA_BIT                                8
+#define EGAVGA_BIT                     (EGA_BIT|VGA_BIT)
+
+#define READ_BANK                      0
+#define WRITE_BANK                     1
+#define MODE_TEXT                      0
+#define MODE_PLANAR                    1
+#define MODE_LINEAR                    2
+
+typedef struct _DCBINFO
+{
+  USHORT usWriteTimeout;
+  USHORT usReadTimeout;
+  BYTE  fbCtlHndShake;
+  BYTE  fbFlowReplace;
+  BYTE  fbTimeout;
+  BYTE  bErrorReplacementChar;
+  BYTE  bBreakReplacementChar;
+  BYTE  bXONChar;
+  BYTE  bXOFFChar;
+} DCBINFO;
+typedef DCBINFO *PDCBINFO;
+
+typedef struct _LINECONTROL
+{
+  BYTE bDataBits;
+  BYTE bParity;
+  BYTE bStopBits;
+  BYTE fTransBreak;
+} LINECONTROL;
+typedef LINECONTROL *PLINECONTROL;
+
+typedef struct _MODEMSTATUS
+{
+  BYTE fbModemOn;
+  BYTE fbModemOff;
+} MODEMSTATUS;
+typedef MODEMSTATUS *PMODEMSTATUS;
+
+typedef struct _KBDTYPE
+{
+  USHORT usType;
+  USHORT reserved1;
+  USHORT reserved2;
+} KBDTYPE;
+typedef KBDTYPE *PKBDTYPE;
+
+typedef struct _RATEDELAY
+{
+  USHORT usDelay;
+  USHORT usRate;
+} RATEDELAY;
+typedef RATEDELAY *PRATEDELAY;
+
+typedef struct _CODEPAGEINFO
+{
+  PBYTE         pbTransTable;
+  USHORT idCodePage;
+  USHORT idTable;
+} CODEPAGEINFO;
+typedef CODEPAGEINFO *PCODEPAGEINFO;
+
+typedef struct _CPID
+{
+  USHORT idCodePage;
+  USHORT Reserved;
+} CPID;
+typedef CPID *PCPID;
+
+typedef struct _SHIFTSTATE
+{
+  USHORT fsState;
+  BYTE  fNLS;
+} SHIFTSTATE;
+typedef SHIFTSTATE *PSHIFTSTATE;
+
+typedef struct _HOTKEY
+{
+  USHORT fsHotKey;
+  UCHAR         uchScancodeMake;
+  UCHAR         uchScancodeBreak;
+  USHORT idHotKey;
+} HOTKEY;
+typedef HOTKEY *PHOTKEY;
+
+typedef struct _PTRDRAWFUNCTION
+{
+  USHORT usReturnCode;
+  PFN   pfnDraw;
+  PCH   pchDataSeg;
+} PTRDRAWFUNCTION;
+typedef PTRDRAWFUNCTION *PPTRDRAWFUNCTION;
+
+typedef struct _PTRDRAWADDRESS
+{
+  USHORT         reserved;
+  PTRDRAWFUNCTION ptrdfnc;
+} PTRDRAWADDRESS;
+typedef PTRDRAWADDRESS *PPTRDRAWADDRESS;
+
+typedef struct _PTRDRAWDATA
+{
+  USHORT cb;
+  USHORT usConfig;
+  USHORT usFlag;
+} PTRDRAWDATA;
+typedef PTRDRAWDATA *PPTRDRAWDATA;
+
+typedef struct _TRACKLAYOUT
+{
+  BYTE  bCommand;
+  USHORT usHead;
+  USHORT usCylinder;
+  USHORT usFirstSector;
+  USHORT cSectors;
+  struct
+    {
+      USHORT usSectorNumber;
+      USHORT usSectorSize;
+    } TrackTable[1];
+} TRACKLAYOUT;
+typedef TRACKLAYOUT *PTRACKLAYOUT;
+
+typedef struct _TRACKFORMAT
+{
+  BYTE  bCommand;
+  USHORT usHead;
+  USHORT usCylinder;
+  USHORT usReserved;
+  USHORT cSectors;
+  struct
+    {
+      BYTE bCylinder;
+      BYTE bHead;
+      BYTE idSector;
+      BYTE bBytesSector;
+    } FormatTable[1];
+} TRACKFORMAT;
+typedef TRACKFORMAT *PTRACKFORMAT;
+
+typedef struct _BIOSPARAMETERBLOCK
+{
+  USHORT usBytesPerSector;
+  BYTE  bSectorsPerCluster;
+  USHORT usReservedSectors;
+  BYTE  cFATs;
+  USHORT cRootEntries;
+  USHORT cSectors;
+  BYTE  bMedia;
+  USHORT usSectorsPerFAT;
+  USHORT usSectorsPerTrack;
+  USHORT cHeads;
+  ULONG         cHiddenSectors;
+  ULONG         cLargeSectors;
+  BYTE  abReserved[6];
+  USHORT cCylinders;
+  BYTE  bDeviceType;
+  USHORT fsDeviceAttr;
+} BIOSPARAMETERBLOCK;
+typedef BIOSPARAMETERBLOCK *PBIOSPARAMETERBLOCK;
+
+typedef struct _DEVICEPARAMETERBLOCK
+{
+  USHORT reserved1;
+  USHORT cCylinders;
+  USHORT cHeads;
+  USHORT cSectorsPerTrack;
+  USHORT reserved2;
+  USHORT reserved3;
+  USHORT reserved4;
+  USHORT reserved5;
+} DEVICEPARAMETERBLOCK;
+typedef DEVICEPARAMETERBLOCK *PDEVICEPARAMETERBLOCK;
+
+typedef struct _MONITORPOSITION
+{
+  USHORT fPosition;
+  USHORT index;
+  ULONG         pbInBuf;
+  USHORT offOutBuf;
+} MONITORPOSITION;
+typedef MONITORPOSITION *PMONITORPOSITION;
+
+typedef struct _FRAME
+{
+  BYTE bCharsPerLine;
+  BYTE bLinesPerInch;
+} FRAME;
+typedef FRAME *PFRAME;
+
+typedef struct _LDTADDRINFO
+{
+  PULONG pulPhysAddr;
+  USHORT cb;
+} LDTADDRINFO;
+typedef LDTADDRINFO *PLDTADDRINFO;
+
+typedef struct _SCREENGROUP
+{
+  USHORT idScreenGrp;
+  USHORT fTerminate;
+} SCREENGROUP;
+typedef SCREENGROUP *PSCREENGROUP;
+
+typedef struct _RXQUEUE
+{
+  USHORT cch;
+  USHORT cb;
+} RXQUEUE;
+typedef RXQUEUE *PRXQUEUE;
+
+typedef struct _GETLINIOCTLDATA
+{
+  ULONG PacketLength;
+  ULONG PhysicalAddress;
+  ULONG ApertureSize;
+  PBYTE LinearAddress;
+  ULONG LinearFlags;
+} GETLINIOCTLDATA;
+typedef GETLINIOCTLDATA *PGETLINIOCTLDATA;
+
+typedef struct _BANKINFO
+{
+  ULONG         ulBankLength;
+  USHORT usBank;
+  USHORT usVideoModeType;
+  USHORT usReadWriteMode;
+} BANKINFO;
+
+typedef struct _GLOBALIOCTLDATA
+{
+  ULONG ProcessAddress;
+  ULONG AddressLength;
+  ULONG GlobalAddress;
+} GLOBALIOCTLDATA;
+
+typedef struct _OEMSVGAINFO
+{
+  USHORT AdapterType;
+  USHORT ChipType;
+  ULONG         Memory;
+} OEMSVGAINFO;
+
+typedef struct _OEMINFO
+{
+  ULONG         OEMLength;
+  USHORT Manufacturer;
+  ULONG         ManufacturerData;
+} OEMINFO;
+
+typedef struct _GETGLOBALPACKET
+{
+  ULONG                  GlobalPktLength;
+  GLOBALIOCTLDATA GlobalPktData[1];
+} GETGLOBALPACKET;
+
+#endif /* INCL_DOSDEVIOCTL */
+
+/* -------------------- NATIONAL LANGUAGE SUPPORT ------------------------- */
+
+#if defined (INCL_DOSNLS)
+
+typedef struct _COUNTRYCODE
+{
+  ULONG country;
+  ULONG codepage;
+} COUNTRYCODE;
+typedef COUNTRYCODE *PCOUNTRYCODE;
+
+typedef struct _COUNTRYINFO
+{
+  ULONG         country;
+  ULONG         codepage;
+  ULONG         fsDateFmt;
+  CHAR  szCurrency[5];
+  CHAR  szThousandsSeparator[2];
+  CHAR  szDecimal[2];
+  CHAR  szDateSeparator[2];
+  CHAR  szTimeSeparator[2];
+  UCHAR         fsCurrencyFmt;
+  UCHAR         cDecimalPlace;
+  UCHAR         fsTimeFmt;
+  USHORT abReserved1[2];
+  CHAR  szDataSeparator[2];
+  USHORT abReserved2[5];
+} COUNTRYINFO;
+typedef COUNTRYINFO *PCOUNTRYINFO;
+
+
+ULONG DosMapCase (ULONG ulLength, __const__ COUNTRYCODE *pCountryCode,
+    PCHAR pchString);
+ULONG DosQueryCollate (ULONG ulLength, __const__ COUNTRYCODE *pCountryCode,
+    PCHAR pchBuffer, PULONG pulDataLength);
+ULONG DosQueryCp (ULONG ulLength, PULONG pCodePageList, PULONG pDataLength);
+ULONG DosQueryCtryInfo (ULONG ulLength, PCOUNTRYCODE pCountryCode,
+    PCOUNTRYINFO pCountryInfo, PULONG pulDataLength);
+ULONG DosQueryDBCSEnv (ULONG ulLength, PCOUNTRYCODE pCountryCode, PCHAR pBuf);
+ULONG DosSetProcessCp (ULONG ulCodePage);
+
+#endif /* INCL_DOSNLS */
+
+/* -------------------------- DYNAMIC LINKING ----------------------------- */
+
+#if defined (INCL_DOSMODULEMGR)
+
+#define PT_16BIT               0
+#define PT_32BIT               1
+
+
+ULONG DosFreeModule (HMODULE hmod);
+ULONG DosLoadModule (PSZ pszObject, ULONG uObjectLen, PCSZ pszModule,
+    PHMODULE phmod);
+ULONG DosQueryModuleHandle (PCSZ pszModname, PHMODULE phmod);
+ULONG DosQueryModuleName (HMODULE hmod, ULONG ulNameLength, PCHAR pNameBuf);
+ULONG DosQueryProcAddr (HMODULE hmod, ULONG ulOrdinal, PCSZ pszProcName,
+    PPFN pProcAddr);
+ULONG DosQueryProcType (HMODULE hmod, ULONG ulOrdinal, PCSZ pszProcName,
+     PULONG pulProcType);
+
+#endif /* INCL_DOSMODULEMGR */
+
+/* ----------------------------- RESOURCES -------------------------------- */
+
+#if defined (INCL_DOSRESOURCES) || !defined (INCL_NOCOMMON)
+
+#define RT_POINTER             1
+#define RT_BITMAP              2
+#define RT_MENU                        3
+#define RT_DIALOG              4
+#define RT_STRING              5
+#define RT_FONTDIR             6
+#define RT_FONT                        7
+#define RT_ACCELTABLE          8
+#define RT_RCDATA              9
+#define RT_MESSAGE             10
+#define RT_DLGINCLUDE          11
+#define RT_VKEYTBL             12
+#define RT_KEYTBL              13
+#define RT_CHARTBL             14
+#define RT_DISPLAYINFO         15
+#define RT_FKASHORT            16
+#define RT_FKALONG             17
+#define RT_HELPTABLE           18
+#define RT_HELPSUBTABLE                19
+#define RT_FDDIR               20
+#define RT_FD                  21
+#define RT_MAX                 22
+
+#define RF_ORDINALID           0x80000000L
+
+
+ULONG DosFreeResource (PVOID pResAddr);
+ULONG DosGetResource (HMODULE hmod, ULONG ulTypeID, ULONG ulNameID,
+    PPVOID pOffset);
+ULONG DosQueryResourceSize (HMODULE hmod, ULONG ulTypeID, ULONG ulNameID,
+    PULONG pulSize);
+
+#endif /* INCL_DOSRESOURCES || !INCL_NOCOMMON */
+
+/* -------------------------------- TASKS --------------------------------- */
+
+#if defined (INCL_DOSPROCESS) || !defined (INCL_NOCOMMON)
+
+#define EXIT_THREAD            0
+#define EXIT_PROCESS           1
+
+ULONG DosBeep (ULONG ulFrequency, ULONG ulDuration);
+VOID DosExit (ULONG ulAction, ULONG ulResult) __attribute__ ((__noreturn__));
+
+#endif /* INCL_DOSPROCESS || !defined (INCL_NOCOMMON) */
+
+
+#if defined (INCL_DOSPROCESS)
+
+#define CREATE_READY           0
+#define CREATE_SUSPENDED       1
+
+#define STACK_SPARSE           0
+#define STACK_COMMITTED                2
+
+#define DCWA_PROCESS           0
+#define DCWA_PROCESSTREE       1
+
+#define DCWW_WAIT              0
+#define DCWW_NOWAIT            1
+
+#define DKP_PROCESSTREE                0
+#define DKP_PROCESS            1
+
+#define EXEC_SYNC              0
+#define EXEC_ASYNC             1
+#define EXEC_ASYNCRESULT       2
+#define EXEC_TRACE             3
+#define EXEC_BACKGROUND                4
+#define EXEC_LOAD              5
+#define EXEC_ASYNCRESULTDB     6
+
+#define EXLST_ADD              1
+#define EXLST_REMOVE           2
+#define EXLST_EXIT             3
+
+#define PRTYC_NOCHANGE         0
+#define PRTYC_IDLETIME         1
+#define PRTYC_REGULAR          2
+#define PRTYC_TIMECRITICAL     3
+#define PRTYC_FOREGROUNDSERVER 4
+
+#define PRTYD_MINIMUM          (-31)
+#define PRTYD_MAXIMUM          31
+
+#define PRTYS_PROCESS          0
+#define PRTYS_PROCESSTREE      1
+#define PRTYS_THREAD           2
+
+#define TC_EXIT                        0
+#define TC_HARDERROR           1
+#define TC_TRAP                        2
+#define TC_KILLPROCESS         3
+#define TC_EXCEPTION           4
+
+
+typedef struct _RESULTCODES
+{
+  ULONG codeTerminate;
+  ULONG codeResult;
+} RESULTCODES;
+typedef RESULTCODES *PRESULTCODES;
+
+typedef struct tib2_s
+{
+  ULONG         tib2_ultid;
+  ULONG         tib2_ulpri;
+  ULONG         tib2_version;
+  USHORT tib2_usMCCount;
+  USHORT tib2_fMCForceFlag;
+} TIB2;
+typedef TIB2 *PTIB2;
+
+typedef struct tib_s
+{
+  PVOID tib_pexchain;
+  PVOID tib_pstack;
+  PVOID tib_pstacklimit;
+  PTIB2 tib_ptib2;
+  ULONG tib_version;
+  ULONG tib_ordinal;
+} TIB;
+typedef TIB *PTIB;
+
+typedef struct pib_s
+{
+  ULONG pib_ulpid;
+  ULONG pib_ulppid;
+  ULONG pib_hmte;
+  PCHAR pib_pchcmd;
+  PCHAR pib_pchenv;
+  ULONG pib_flstatus;
+  ULONG pib_ultype;
+} PIB;
+typedef PIB *PPIB;
+
+typedef VOID (*PFNTHREAD)(ULONG ulThreadArg);
+typedef VOID (*PFNEXITLIST)(ULONG ulArg);
+
+
+ULONG DosAllocThreadLocalMemory (ULONG cb, PULONG *p);
+ULONG DosCreateThread (PTID ptidThreadID, PFNTHREAD pfnThreadAddr,
+    ULONG ulThreadArg, ULONG ulFlags, ULONG ulStackSize);
+ULONG DosEnterCritSec (VOID);
+ULONG DosExecPgm (PCHAR pObjname, LONG lObjnameLength, ULONG ulFlagS,
+    PCSZ pszArg, PCSZ pszEnv, PRESULTCODES pReturnCodes, PCSZ pszName);
+ULONG DosExitCritSec (VOID);
+ULONG DosExitList (ULONG ulOrder, PFNEXITLIST pfn);
+ULONG DosFreeThreadLocalMemory (ULONG *p);
+ULONG DosGetInfoBlocks (PTIB *ptib, PPIB *ppib);
+ULONG DosKillProcess (ULONG ulAction, PID pid);
+ULONG DosKillThread (TID tid);
+ULONG DosResumeThread (TID tid);
+ULONG DosSetPriority (ULONG ulScope, ULONG ulClass, LONG lDelta, ULONG ulID);
+ULONG DosSleep (ULONG ulInterval);
+ULONG DosSuspendThread (TID tid);
+ULONG DosVerifyPidTid (PID pid, TID tid);
+ULONG DosWaitChild (ULONG ulAction, ULONG ulWait, PRESULTCODES pReturnCodes,
+    PPID ppidOut, PID pidIn);
+ULONG DosWaitThread (PTID ptid, ULONG ulWait);
+
+#endif /* INCL_DOSPROCESS */
+
+/* ------------------------------ SESSIONS -------------------------------- */
+
+#if defined (INCL_DOSSESMGR) || defined (INCL_DOSFILEMGR)
+
+#define FAPPTYP_NOTSPEC                0x0000
+#define FAPPTYP_NOTWINDOWCOMPAT 0x0001
+#define FAPPTYP_WINDOWCOMPAT   0x0002
+#define FAPPTYP_WINDOWAPI      0x0003
+#define FAPPTYP_BOUND          0x0008
+#define FAPPTYP_DLL            0x0010
+#define FAPPTYP_DOS            0x0020
+#define FAPPTYP_PHYSDRV                0x0040
+#define FAPPTYP_VIRTDRV                0x0080
+#define FAPPTYP_PROTDLL                0x0100
+#define FAPPTYP_WINDOWSREAL    0x0200
+#define FAPPTYP_WINDOWSPROT    0x0400
+#define FAPPTYP_WINDOWSPROT31  0x1000
+#define FAPPTYP_32BIT          0x4000
+#define FAPPTYP_EXETYPE                0x0003
+#define FAPPTYP_RESERVED       (~(FAPPTYP_WINDOWAPI | FAPPTYP_BOUND | \
+                                  FAPPTYP_DLL | FAPPTYP_DOS | \
+                                  FAPPTYP_PHYSDRV | FAPPTYP_VIRTDRV | \
+                                  FAPPTYP_PROTDLL | FAPPTYP_32BIT))
+
+#endif /* INCL_DOSSESMGR || INCL_DOSFILEMGR */
+
+#if defined (INCL_DOSSESMGR)
+
+#define SET_SESSION_UNCHANGED         0
+#define SET_SESSION_SELECTABLE        1
+#define SET_SESSION_NON_SELECTABLE     2
+#define SET_SESSION_BOND              1
+#define SET_SESSION_NO_BOND           2
+
+#define SSF_RELATED_INDEPENDENT 0
+#define SSF_RELATED_CHILD      1
+
+#define SSF_FGBG_FORE          0
+#define SSF_FGBG_BACK          1
+
+#define SSF_TRACEOPT_NONE      0
+#define SSF_TRACEOPT_TRACE     1
+#define SSF_TRACEOPT_TRACEALL  2
+
+#define SSF_INHERTOPT_SHELL    0
+#define SSF_INHERTOPT_PARENT   1
+
+#define SSF_TYPE_DEFAULT       0
+#define SSF_TYPE_FULLSCREEN    1
+#define SSF_TYPE_WINDOWABLEVIO 2
+#define SSF_TYPE_PM            3
+#define SSF_TYPE_VDM           4
+#define SSF_TYPE_GROUP         5
+#define SSF_TYPE_DLL           6
+#define SSF_TYPE_WINDOWEDVDM   7
+#define SSF_TYPE_PDD           8
+#define SSF_TYPE_VDD           9
+
+#define SSF_CONTROL_VISIBLE    0x0000
+#define SSF_CONTROL_INVISIBLE  0x0001
+#define SSF_CONTROL_MAXIMIZE   0x0002
+#define SSF_CONTROL_MINIMIZE   0x0004
+#define SSF_CONTROL_NOAUTOCLOSE 0x0008
+#define SSF_CONTROL_SETPOS     0x8000
+
+#define STOP_SESSION_SPECIFIED        0
+#define STOP_SESSION_ALL              1
+
+typedef struct _STARTDATA
+{
+  USHORT Length;
+  USHORT Related;
+  USHORT FgBg;
+  USHORT TraceOpt;
+  PSZ   PgmTitle;
+  PSZ   PgmName;
+  PBYTE         PgmInputs;
+  PBYTE         TermQ;
+  PBYTE         Environment;
+  USHORT InheritOpt;
+  USHORT SessionType;
+  PSZ   IconFile;
+  ULONG         PgmHandle;
+  USHORT PgmControl;
+  USHORT InitXPos;
+  USHORT InitYPos;
+  USHORT InitXSize;
+  USHORT InitYSize;
+  USHORT Reserved;
+  PSZ   ObjectBuffer;
+  ULONG         ObjectBuffLen;
+} STARTDATA;
+typedef STARTDATA *PSTARTDATA;
+
+typedef struct _STATUSDATA
+{
+  USHORT Length;
+  USHORT SelectInd;
+  USHORT BondInd;
+} STATUSDATA;
+typedef STATUSDATA *PSTATUSDATA;
+
+ULONG DosQueryAppType (PCSZ pszName, PULONG pulFlags);
+ULONG DosSelectSession (ULONG ulIDSession);
+ULONG DosSetSession (ULONG ulIDSession, PSTATUSDATA psd);
+ULONG DosStartSession (PSTARTDATA psd, PULONG pulIDSession, PPID ppid);
+ULONG DosStopSession (ULONG ulScope, ULONG ulIDSession);
+
+#endif /* INCL_DOSSESMGR */
+
+/* ----------------------------- SEMAPHORES ------------------------------- */
+
+#if defined (INCL_DOSSEMAPHORES) || !defined (INCL_NOCOMMON)
+
+#define DC_SEM_SHARED          0x01
+#define DCMW_WAIT_ANY          0x02
+#define DCMW_WAIT_ALL          0x04
+
+#define SEM_INDEFINITE_WAIT    ((ULONG)-1)
+#define SEM_IMMEDIATE_RETURN   0
+
+typedef ULONG HEV;
+typedef HEV *PHEV;
+
+typedef struct _PSEMRECORD     /* Note 1 */
+{
+  HSEM hsemCur;
+  ULONG ulUser;
+} SEMRECORD;
+typedef SEMRECORD *PSEMRECORD;
+
+#endif /* INCL_DOSSEMAPHORES || !INCL_NOCOMMON */
+
+#if defined (INCL_DOSSEMAPHORES)
+
+ULONG DosCloseEventSem (HEV hev);
+ULONG DosCreateEventSem (PCSZ pszName, PHEV phev, ULONG ulAttr, BOOL32 fState);
+ULONG DosOpenEventSem (PCSZ pszName, PHEV phev);
+ULONG DosPostEventSem (HEV hev);
+ULONG DosQueryEventSem (HEV hev, PULONG pulCount);
+ULONG DosResetEventSem (HEV hev, PULONG pulCount);
+ULONG DosWaitEventSem (HEV hev, ULONG ulTimeout);
+
+ULONG DosCloseMutexSem (HMTX hmtx);
+ULONG DosCreateMutexSem (PCSZ pszName, PHMTX phmtx, ULONG ulAttr,
+    BOOL32 fState);
+ULONG DosOpenMutexSem (PCSZ pszName, PHMTX phmtx);
+ULONG DosQueryMutexSem (HMTX hmtx, PPID ppid, PTID ptid, PULONG pulCount);
+ULONG DosReleaseMutexSem (HMTX hmtx);
+ULONG DosRequestMutexSem (HMTX hmtx, ULONG ulTimeout);
+
+ULONG DosAddMuxWaitSem (HMUX hmux, PSEMRECORD pSemRec);
+ULONG DosCloseMuxWaitSem (HMUX hmux);
+ULONG DosCreateMuxWaitSem (PCSZ pszName, PHMUX phmux, ULONG ulcSemRec,
+    PSEMRECORD pSemRec, ULONG ulAttr);
+ULONG DosDeleteMuxWaitSem (HMUX hmux, HSEM hSem);
+ULONG DosOpenMuxWaitSem (PCSZ pszName, PHMUX phmux);
+ULONG DosQueryMuxWaitSem (HMUX hmux, PULONG pulcSemRec, PSEMRECORD pSemRec,
+    PULONG pulAttr);
+ULONG DosWaitMuxWaitSem (HMUX hmux, ULONG ulTimeout, PULONG pulUser);
+
+#endif /* INCL_DOSSEMAPHORES */
+
+/* ---------------------------- NAMED PIPES ------------------------------- */
+
+#define NP_INDEFINITE_WAIT     ((ULONG)-1)
+#define NP_DEFAULT_WAIT                0
+
+#define NP_STATE_DISCONNECTED  1
+#define NP_STATE_LISTENING     2
+#define NP_STATE_CONNECTED     3
+#define NP_STATE_CLOSING       4
+
+#define NP_ACCESS_INBOUND      0x0000
+#define NP_ACCESS_OUTBOUND     0x0001
+#define NP_ACCESS_DUPLEX       0x0002
+#define NP_INHERIT             0x0000
+#define NP_NOINHERIT           0x0080
+#define NP_WRITEBEHIND         0x0000
+#define NP_NOWRITEBEHIND       0x4000
+
+#define NP_READMODE_BYTE       0x0000
+#define NP_READMODE_MESSAGE    0x0100
+#define NP_TYPE_BYTE           0x0000
+#define NP_TYPE_MESSAGE                0x0400
+#define NP_END_CLIENT          0x0000
+#define NP_END_SERVER          0x4000
+#define NP_WAIT                        0x0000
+#define NP_NOWAIT              0x8000
+#define NP_UNLIMITED_INSTANCES 0x00ff
+
+#define NP_NBLK                        NO_WAIT
+#define NP_SERVER              NP_END_SERVER
+#define NP_WMESG               NP_TYPE_MESSAGE
+#define NP_RMESG               NP_READMODE_MESSAGE
+#define NP_ICOUNT              0x00ff
+
+#define NPSS_EOI               0
+#define NPSS_RDATA             1
+#define NPSS_WSPACE            2
+#define NPSS_CLOSE             3
+
+#define NPSS_WAIT              0x0001
+
+typedef struct _AVAILDATA
+{
+  USHORT cbpipe;
+  USHORT cbmessage;
+} AVAILDATA;
+typedef AVAILDATA *PAVAILDATA;
+
+typedef struct _PIPEINFO
+{
+  USHORT cbOut;
+  USHORT cbIn;
+  BYTE  cbMaxInst;
+  BYTE  cbCurInst;
+  BYTE  cbName;
+  CHAR  szName[1];
+} PIPEINFO;
+typedef PIPEINFO *PPIPEINFO;
+
+typedef struct _PIPESEMSTATE
+{
+  BYTE  fStatus;
+  BYTE  fFlag;
+  USHORT usKey;
+  USHORT usAvail;
+} PIPESEMSTATE;
+typedef PIPESEMSTATE *PPIPESEMSTATE;
+
+ULONG DosCallNPipe (PCSZ pszName, PVOID pInbuf, ULONG ulInbufLength,
+    PVOID pOutbuf, ULONG ulOutbufSize, PULONG pulActualLength,
+    ULONG ulTimeout);
+ULONG DosConnectNPipe (HPIPE hpipe);
+ULONG DosCreateNPipe (PCSZ pszName, PHPIPE phpipe, ULONG ulOpenMode,
+    ULONG ulPipeMode, ULONG ulInbufLength, ULONG ulOutbufLength,
+    ULONG ulTimeout);
+ULONG DosDisConnectNPipe (HPIPE hpipe);
+ULONG DosPeekNPipe (HPIPE hpipe, PVOID pBuf, ULONG ulBufLength,
+    PULONG pulActualLength, PAVAILDATA pAvail, PULONG pulState);
+ULONG DosQueryNPHState (HPIPE hpipe, PULONG pulState);
+ULONG DosQueryNPipeInfo (HPIPE hpipe, ULONG ulInfoLevel, PVOID pBuf,
+    ULONG ulBufLength);
+ULONG DosQueryNPipeSemState (HSEM hsem, PPIPESEMSTATE pState,
+    ULONG ulBufLength);
+ULONG DosRawReadNPipe (PCSZ pszName, ULONG ulCount, PULONG pulLength,
+    PVOID pBuf);
+ULONG DosRawWriteNPipe (PCSZ pszName, ULONG ulCount);
+ULONG DosSetNPHState (HPIPE hpipe, ULONG ulState);
+ULONG DosSetNPipeSem (HPIPE hpipe, HSEM hsem, ULONG ulKey);
+ULONG DosTransactNPipe (HPIPE hpipe, PVOID pOutbuf, ULONG ulOutbufLength,
+    PVOID pInbuf, ULONG ulInbufLength, PULONG pulBytesRead);
+ULONG DosWaitNPipe (PCSZ pszName, ULONG ulTimeout);
+
+/* ------------------------------- QUEUES --------------------------------- */
+
+#if defined (INCL_DOSQUEUES)
+
+#define QUE_FIFO                       0x0000
+#define QUE_LIFO                       0x0001
+#define QUE_PRIORITY                   0x0002
+#define QUE_NOCONVERT_ADDRESS          0x0000
+#define QUE_CONVERT_ADDRESS            0x0004
+
+typedef struct _REQUESTDATA
+{
+  PID  pid;
+  ULONG ulData;
+} REQUESTDATA;
+typedef REQUESTDATA *PREQUESTDATA;
+
+ULONG DosCreatePipe (PHFILE phfReadHandle, PHFILE phfWriteHandle,
+    ULONG ulPipeSize);
+
+ULONG DosCloseQueue (HQUEUE hq);
+ULONG DosCreateQueue (PHQUEUE phq, ULONG ulPriority, PCSZ pszName);
+ULONG DosOpenQueue (PPID ppid, PHQUEUE phq, PCSZ pszName);
+ULONG DosPeekQueue (HQUEUE hq, PREQUESTDATA pRequest, PULONG pulDataLength,
+    PPVOID pDataAddress, PULONG pulElement, BOOL32 fNowait, PBYTE pPriority,
+    HEV hsem);
+ULONG DosPurgeQueue (HQUEUE hq);
+ULONG DosQueryQueue (HQUEUE hq, PULONG pulCount);
+ULONG DosReadQueue (HQUEUE hq, PREQUESTDATA pRequest, PULONG pulDataLength,
+    PPVOID pDataAddress, ULONG pulElement, BOOL32 fNowait, PBYTE pPriority,
+    HEV hsem);
+ULONG DosWriteQueue (HQUEUE hq, ULONG ulRequest, ULONG ulDataLength,
+    PVOID pData, ULONG ulPriority);
+
+#endif /* INCL_DOSQUEUES */
+
+/* --------------------------- EXCEPTIONS --------------------------------- */
+
+#if defined (INCL_DOSEXCEPTIONS)
+
+#define CONTEXT_CONTROL                        0x0001
+#define CONTEXT_INTEGER                        0x0002
+#define CONTEXT_SEGMENTS               0x0004
+#define CONTEXT_FLOATING_POINT         0x0008
+#define CONTEXT_FULL                   (CONTEXT_CONTROL | CONTEXT_INTEGER | \
+                                 CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT)
+
+#define EH_NONCONTINUABLE              0x0001
+#define EH_UNWINDING                   0x0002
+#define EH_EXIT_UNWIND                 0x0004
+#define EH_STACK_INVALID               0x0008
+#define EH_NESTED_CALL                 0x0010
+
+#define SIG_UNSETFOCUS                 0
+#define SIG_SETFOCUS                   1
+
+#define UNWIND_ALL                     0
+
+#define XCPT_CONTINUE_SEARCH           0x00000000
+#define XCPT_CONTINUE_EXECUTION                0xffffffff
+#define XCPT_CONTINUE_STOP             0x00716668
+
+#define XCPT_SIGNAL_INTR               1
+#define XCPT_SIGNAL_KILLPROC           3
+#define XCPT_SIGNAL_BREAK              4
+
+#define XCPT_FATAL_EXCEPTION           0xc0000000
+#define XCPT_SEVERITY_CODE             0xc0000000
+#define XCPT_CUSTOMER_CODE             0x20000000
+#define XCPT_FACILITY_CODE             0x1fff0000
+#define XCPT_EXCEPTION_CODE            0x0000ffff
+
+#define XCPT_UNKNOWN_ACCESS            0x00000000
+#define XCPT_READ_ACCESS               0x00000001
+#define XCPT_WRITE_ACCESS              0x00000002
+#define XCPT_EXECUTE_ACCESS            0x00000004
+#define XCPT_SPACE_ACCESS              0x00000008
+#define XCPT_LIMIT_ACCESS              0x00000010
+#define XCPT_DATA_UNKNOWN              0xffffffff
+
+#define XCPT_GUARD_PAGE_VIOLATION      0x80000001
+#define XCPT_UNABLE_TO_GROW_STACK      0x80010001
+#define XCPT_ACCESS_VIOLATION          0xc0000005
+#define XCPT_IN_PAGE_ERROR             0xc0000006
+#define XCPT_ILLEGAL_INSTRUCTION       0xc000001c
+#define XCPT_INVALID_LOCK_SEQUENCE     0xc000001d
+#define XCPT_NONCONTINUABLE_EXCEPTION  0xc0000024
+#define XCPT_INVALID_DISPOSITION       0xc0000025
+#define XCPT_UNWIND                    0xc0000026
+#define XCPT_BAD_STACK                 0xc0000027
+#define XCPT_INVALID_UNWIND_TARGET     0xc0000028
+#define XCPT_ARRAY_BOUNDS_EXCEEDED     0xc0000093
+#define XCPT_FLOAT_DENORMAL_OPERAND    0xc0000094
+#define XCPT_FLOAT_DIVIDE_BY_ZERO      0xc0000095
+#define XCPT_FLOAT_INEXACT_RESULT      0xc0000096
+#define XCPT_FLOAT_INVALID_OPERATION   0xc0000097
+#define XCPT_FLOAT_OVERFLOW            0xc0000098
+#define XCPT_FLOAT_STACK_CHECK         0xc0000099
+#define XCPT_FLOAT_UNDERFLOW           0xc000009a
+#define XCPT_INTEGER_DIVIDE_BY_ZERO    0xc000009b
+#define XCPT_INTEGER_OVERFLOW          0xc000009c
+#define XCPT_PRIVILEGED_INSTRUCTION    0xc000009d
+#define XCPT_DATATYPE_MISALIGNMENT     0xc000009e
+#define XCPT_BREAKPOINT                        0xc000009f
+#define XCPT_SINGLE_STEP               0xc00000a0
+#define XCPT_PROCESS_TERMINATE         0xc0010001
+#define XCPT_ASYNC_PROCESS_TERMINATE   0xc0010002
+#define XCPT_SIGNAL                    0xc0010003
+
+typedef struct _fpreg          /* Note 1 */
+{
+  ULONG         losig;
+  ULONG         hisig;
+  USHORT signexp;
+} FPREG;
+typedef FPREG *PFPREG;
+
+typedef struct _CONTEXT                /* Note 1 */
+{
+  ULONG ContextFlags;
+  ULONG ctx_env[7];
+  FPREG ctx_stack[8];
+  ULONG ctx_SegGs;
+  ULONG ctx_SegFs;
+  ULONG ctx_SegEs;
+  ULONG ctx_SegDs;
+  ULONG ctx_RegEdi;
+  ULONG ctx_RegEsi;
+  ULONG ctx_RegEax;
+  ULONG ctx_RegEbx;
+  ULONG ctx_RegEcx;
+  ULONG ctx_RegEdx;
+  ULONG ctx_RegEbp;
+  ULONG ctx_RegEip;
+  ULONG ctx_SegCs;
+  ULONG ctx_EFlags;
+  ULONG ctx_RegEsp;
+  ULONG ctx_SegSs;
+} CONTEXTRECORD;
+typedef CONTEXTRECORD *PCONTEXTRECORD;
+
+#define EXCEPTION_MAXIMUM_PARAMETERS 4
+
+typedef struct _EXCEPTIONREPORTRECORD
+{
+  ULONG                                  ExceptionNum;
+  ULONG                                  fHandlerFlags;
+  struct _EXCEPTIONREPORTRECORD * NestedExceptionReportRecord;
+  PVOID                                  ExceptionAddress;
+  ULONG                                  cParameters;
+  ULONG                                  ExceptionInfo[EXCEPTION_MAXIMUM_PARAMETERS];
+} EXCEPTIONREPORTRECORD;
+typedef EXCEPTIONREPORTRECORD *PEXCEPTIONREPORTRECORD;
+
+struct _EXCEPTIONREGISTRATIONRECORD;
+
+typedef ULONG _ERR (PEXCEPTIONREPORTRECORD pReport,
+                   struct _EXCEPTIONREGISTRATIONRECORD *pRegistration,
+                   PCONTEXTRECORD pContext, PVOID pWhatever);
+typedef _ERR *ERR;
+
+typedef struct _EXCEPTIONREGISTRATIONRECORD
+{
+  struct _EXCEPTIONREGISTRATIONRECORD * __volatile__ prev_structure;
+  ERR __volatile__                                  ExceptionHandler;
+} EXCEPTIONREGISTRATIONRECORD;
+typedef EXCEPTIONREGISTRATIONRECORD *PEXCEPTIONREGISTRATIONRECORD;
+
+#define END_OF_CHAIN           ((PEXCEPTIONREGISTRATIONRECORD)(-1))
+
+ULONG DosAcknowledgeSignalException (ULONG ulSignal);
+ULONG DosEnterMustComplete (PULONG pulNesting);
+ULONG DosExitMustComplete (PULONG pulNesting);
+ULONG DosQueryThreadContext (TID tid, ULONG ulLevel, PCONTEXTRECORD pContext);
+ULONG DosRaiseException (PEXCEPTIONREPORTRECORD pXRepRec);
+ULONG DosSendSignalException (PID pid, ULONG ulSignal);
+ULONG DosSetExceptionHandler (PEXCEPTIONREGISTRATIONRECORD pXRegRec);
+ULONG DosSetSignalExceptionFocus (BOOL32 flag, PULONG pulTimes);
+ULONG DosUnsetExceptionHandler (PEXCEPTIONREGISTRATIONRECORD pXRegRec);
+ULONG DosUnwindException (PEXCEPTIONREGISTRATIONRECORD pXRegRec,
+    PVOID pJumpThere, PEXCEPTIONREPORTRECORD pXRepRec);
+
+#endif /* INCL_DOSEXCEPTIONS */
+
+/* --------------------------- INFORMATION -------------------------------- */
+
+#if defined (INCL_DOSMISC)
+
+#define QSV_MAX_PATH_LENGTH            1
+#define QSV_MAX_TEXT_SESSIONS          2
+#define QSV_MAX_PM_SESSIONS            3
+#define QSV_MAX_VDM_SESSIONS           4
+#define QSV_BOOT_DRIVE                 5
+#define QSV_DYN_PRI_VARIATION          6
+#define QSV_MAX_WAIT                   7
+#define QSV_MIN_SLICE                  8
+#define QSV_MAX_SLICE                  9
+#define QSV_PAGE_SIZE                  10
+#define QSV_VERSION_MAJOR              11
+#define QSV_VERSION_MINOR              12
+#define QSV_VERSION_REVISION           13
+#define QSV_MS_COUNT                   14
+#define QSV_TIME_LOW                   15
+#define QSV_TIME_HIGH                  16
+#define QSV_TOTPHYSMEM                 17
+#define QSV_TOTRESMEM                  18
+#define QSV_TOTAVAILMEM                        19
+#define QSV_MAXPRMEM                   20
+#define QSV_MAXSHMEM                   21
+#define QSV_TIMER_INTERVAL             22
+#define QSV_MAX_COMP_LENGTH            23
+#define QSV_FOREGROUND_FS_SESSION      24
+#define QSV_FOREGROUND_PROCESS         25
+#define QSV_MAX                                QSV_FOREGROUND_PROCESS
+
+#define SIS_MMIOADDR                   0
+#define SIS_MEC_TABLE                  1
+#define SIS_SYS_LOG                    2
+
+ULONG DosQuerySysInfo (ULONG ulStart, ULONG ulLast, PVOID pBuf,
+    ULONG ulBufLength);
+ULONG DosScanEnv (PCSZ pszName, PSZ *pszValue);
+ULONG DosQueryRASInfo (ULONG Index, PPVOID Addr);
+
+#endif /* INCL_DOSMISC */
+
+/* ---------------------------- TIMERS ------------------------------------ */
+
+#if defined (INCL_DOSDATETIME) || !defined (INCL_NOCOMMON)
+
+typedef struct _DATETIME
+{
+  UCHAR         hours;
+  UCHAR         minutes;
+  UCHAR         seconds;
+  UCHAR         hundredths;
+  UCHAR         day;
+  UCHAR         month;
+  USHORT year;
+  SHORT         timezone;
+  UCHAR         weekday;
+} DATETIME;
+typedef DATETIME *PDATETIME;
+
+ULONG DosGetDateTime (PDATETIME pdt);
+ULONG DosSetDateTime (__const__ DATETIME *pdt);
+
+#endif /* INCL_DOSDATETIME || !INCL_NOCOMMON */
+
+
+#if defined (INCL_DOSDATETIME)
+
+typedef LHANDLE HTIMER;
+typedef HTIMER *PHTIMER;
+
+ULONG DosAsyncTimer (ULONG ulMilliSec, HSEM hsem, PHTIMER phtimer);
+ULONG DosStartTimer (ULONG ulMilliSec, HSEM hsem, PHTIMER phtimer);
+ULONG DosStopTimer (HTIMER htimer);
+
+#endif /* INCL_DOSDATETIME */
+
+#if defined (INCL_DOSPROFILE)
+
+typedef struct _QWORD
+{
+  ULONG ulLo;
+  ULONG ulHi;
+} QWORD;
+typedef QWORD *PQWORD;
+
+ULONG DosTmrQueryFreq (PULONG pulTmrFreq);
+ULONG DosTmrQueryTime (PQWORD pqwTmrTime);
+
+#endif /* INCL_DOSPROFILE */
+
+/* ---------------------- VIRTUAL DOS MACHINES----------------------------- */
+
+typedef USHORT SGID;
+
+#if defined (INCL_DOSMVDM)
+
+typedef LHANDLE HVDD;
+typedef HVDD *PHVDD;
+
+ULONG DosCloseVDD (HVDD hvdd);
+ULONG DosOpenVDD (PCSZ pszVDD, PHVDD phvdd);
+ULONG DosQueryDOSProperty (SGID sgidSesssionID, PCSZ pszName,
+    ULONG ulBufferLength, PSZ pBuffer);
+ULONG DosRequestVDD (HVDD hvdd, SGID sgidSessionID, ULONG ulCommand,
+    ULONG ulInputBufferLength, PVOID pInputBuffer,
+    ULONG ulOutputBufferLength, PVOID pOutputBuffer);
+ULONG DosSetDOSProperty (SGID sgidSessionID, PCSZ pszName,
+    ULONG ulBufferLength, PCSZ pBuffer);
+
+#endif /* INCL_DOSMVDM */
+
+/* --------------------------- DEBUGGING ---------------------------------- */
+
+#if defined (INCL_DOSPROCESS)
+
+#define DBG_C_Null                     0
+#define DBG_C_ReadMem                  1
+#define DBG_C_ReadMem_I                        1
+#define DBG_C_ReadMem_D                        2
+#define DBG_C_ReadReg                  3
+#define DBG_C_WriteMem                 4
+#define DBG_C_WriteMem_I               4
+#define DBG_C_WriteMem_D               5
+#define DBG_C_WriteReg                 6
+#define DBG_C_Go                       7
+#define DBG_C_Term                     8
+#define DBG_C_SStep                    9
+#define DBG_C_Stop                     10
+#define DBG_C_Freeze                   11
+#define DBG_C_Resume                   12
+#define DBG_C_NumToAddr                        13
+#define DBG_C_ReadCoRegs               14
+#define DBG_C_WriteCoRegs              15
+#define DBG_C_ThrdStat                 17
+#define DBG_C_MapROAlias               18
+#define DBG_C_MapRWAlias               19
+#define DBG_C_UnMapAlias               20
+#define DBG_C_Connect                  21
+#define DBG_C_ReadMemBuf               22
+#define DBG_C_WriteMemBuf              23
+#define DBG_C_SetWatch                 24
+#define DBG_C_ClearWatch               25
+#define DBG_C_RangeStep                        26
+#define DBG_C_Continue                 27
+#define DBG_C_AddrToObject             28
+#define DBG_C_XchngOpcode              29
+#define DBG_C_LinToSel                 30
+#define DBG_C_SelToLin                 31
+
+#define DBG_N_Success                  0
+#define DBG_N_Error                    (-1)
+#define DBG_N_ProcTerm                 (-6)
+#define DBG_N_Exception                        (-7)
+#define DBG_N_ModuleLoad               (-8)
+#define DBG_N_CoError                  (-9)
+#define DBG_N_ThreadTerm               (-10)
+#define DBG_N_AsyncStop                        (-11)
+#define DBG_N_NewProc                  (-12)
+#define DBG_N_AliasFree                        (-13)
+#define DBG_N_Watchpoint               (-14)
+#define DBG_N_ThreadCreate             (-15)
+#define DBG_N_ModuleFree               (-16)
+#define DBG_N_RangeStep                        (-17)
+
+#define DBG_D_Thawed                   0
+#define DBG_D_Frozen                   1
+
+#define DBG_T_Runnable                 0
+#define DBG_T_Suspended                        1
+#define DBG_T_Blocked                  2
+#define DBG_T_CritSec                  3
+
+#define DBG_L_386                      1
+
+#define DBG_LEN_387                    108
+
+#define DBG_CO_387                     1
+
+#define DBG_O_OBJMTE                   0x10000000
+
+#define DBG_W_Global                   0x00000001
+#define DBG_W_Local                    0x00000002
+#define DBG_W_Execute                  0x00010000
+#define DBG_W_Write                    0x00020000
+#define DBG_W_ReadWrite                        0x00030000
+
+#define DBG_X_PRE_FIRST_CHANCE         0x00000000
+#define DBG_X_FIRST_CHANCE             0x00000001
+#define DBG_X_LAST_CHANCE              0x00000002
+#define DBG_X_STACK_INVALID            0x00000003
+
+typedef struct _TStat
+{
+  UCHAR         DbgState;
+  UCHAR         TState;
+  USHORT TPriority;
+} TStat_t;
+
+typedef struct _uDB
+{
+  ULONG         Pid;
+  ULONG         Tid;
+  LONG  Cmd;
+  LONG  Value;
+  ULONG         Addr;
+  ULONG         Buffer;
+  ULONG         Len;
+  ULONG         Index;
+  ULONG         MTE;
+  ULONG         EAX;
+  ULONG         ECX;
+  ULONG         EDX;
+  ULONG         EBX;
+  ULONG         ESP;
+  ULONG         EBP;
+  ULONG         ESI;
+  ULONG         EDI;
+  ULONG         EFlags;
+  ULONG         EIP;
+  ULONG         CSLim;
+  ULONG         CSBase;
+  UCHAR         CSAcc;
+  UCHAR         CSAtr;
+  USHORT CS;
+  ULONG         DSLim;
+  ULONG         DSBase;
+  UCHAR         DSAcc;
+  UCHAR         DSAtr;
+  USHORT DS;
+  ULONG         ESLim;
+  ULONG         ESBase;
+  UCHAR         ESAcc;
+  UCHAR         ESAtr;
+  USHORT ES;
+  ULONG         FSLim;
+  ULONG         FSBase;
+  UCHAR         FSAcc;
+  UCHAR         FSAtr;
+  USHORT FS;
+  ULONG         GSLim;
+  ULONG         GSBase;
+  UCHAR         GSAcc;
+  UCHAR         GSAtr;
+  USHORT GS;
+  ULONG         SSLim;
+  ULONG         SSBase;
+  UCHAR         SSAcc;
+  UCHAR         SSAtr;
+  USHORT SS;
+} uDB_t;
+
+ULONG DosDebug (uDB_t *pDebugBuffer);
+
+#endif /* INCL_DOSPROCESS */
+
+/* ---------------------------- MESSAGES ---------------------------------- */
+
+#if defined (INCL_DOSMISC)
+
+ULONG DosGetMessage (PCHAR *pTable, ULONG ulTableEntries,
+    PCHAR pBuffer, ULONG ulBufferLengthMax, ULONG ulMsgnNumber,
+    PCSZ pszFile, PULONG pulBufferLength);
+ULONG DosInsertMessage (PCHAR *pTable, ULONG ulCount, PCSZ pszMsg,
+    ULONG ulMsgLength, PCHAR pBuffer, ULONG ulBufferLengthMax,
+    PULONG pulBufferLength);
+ULONG DosPutMessage (HFILE hfile, ULONG ulMessageLength, PCHAR pMessage);
+ULONG DosQueryMessageCP (PCHAR pBuffer, ULONG ulBufferLengthMax,
+    PCSZ pszFilename, PULONG pulBufferLength);
+
+#endif /* INCL_DOSMISC */
+
+/* ----------------------------- RAS -------------------------------------- */
+
+#if defined (INCL_DOSRAS)
+
+#define DDP_DISABLEPROCDUMP            0
+#define DDP_ENABLEPROCDUMP             1
+#define DDP_PERFORMPROCDUMP            2
+
+#define LF_LOGENABLE                   0x0001
+#define LF_LOGAVAILABLE                        0x0002
+
+#define SIS_MMIOADDR                   0
+#define SIS_MEC_TABLE                  1
+#define SIS_SYS_LOG                    2
+
+#define SPU_DISABLESUPPRESSION         0
+#define SPU_ENABLESUPPRESSION          1
+
+ULONG DosDumpProcess (ULONG ulFlag, ULONG ulDrive, PID pid);
+ULONG DosForceSystemDump (ULONG ulReserved);
+ULONG DosQueryRASInfo (ULONG ulIndex, PPVOID addr);
+ULONG DosSuppressPopUps (ULONG ulFlag, ULONG ulDrive);
+
+#endif /* INCL_DOSRAS */
+
+/* ---------------------------- REXX -------------------------------------- */
+
+#define RXAUTOBUFLEN                   256
+
+typedef struct _RXSTRING
+{
+  ULONG strlength;
+  PCH  strptr;
+} RXSTRING;
+typedef RXSTRING *PRXSTRING;
+
+typedef struct _RXSYSEXIT
+{
+  PSZ  sysexit_name;
+  LONG sysexit_code;
+} RXSYSEXIT;
+typedef RXSYSEXIT *PRXSYSEXIT;
+
+#define RXNULLSTRING(r)                ((r).strptr == (PCH)0)
+#define RXZEROLENSTRING(r)     ((r).strptr != (PCH)0 && (r).strlength == 0)
+#define RXVALIDSTRING(r)       ((r).strptr != (PCH)0 && (r).strlength != 0)
+#define RXSTRLEN(r)            (RXNULLSTRING(r) ? 0 : (r).strlength)
+#define RXSTRPTR(r)            (r).strptr
+#define MAKERXSTRING(r,p,l) \
+    ((r).strptr = (PCH)p, (r).strlength = (ULONG)l)
+
+#define RXCOMMAND                      0
+#define RXSUBROUTINE                   1
+#define RXFUNCTION                     2
+
+#if defined (INCL_RXSUBCOM)
+
+#define RXSUBCOM_DROPPABLE             0x0000
+#define RXSUBCOM_NONDROP               0x0001
+
+#define RXSUBCOM_ISREG                 0x0001
+#define RXSUBCOM_ERROR                 0x0001
+#define RXSUBCOM_FAILURE               0x0002
+
+#define RXSUBCOM_BADENTRY              1001
+#define RXSUBCOM_NOEMEM                        1002
+#define RXSUBCOM_BADTYPE               1003
+#define RXSUBCOM_NOTINIT               1004
+
+#define RXSUBCOM_OK                    0
+#define RXSUBCOM_DUP                   10
+#define RXSUBCOM_MAXREG                        20
+#define RXSUBCOM_NOTREG                        30
+#define RXSUBCOM_NOCANDROP             40
+#define RXSUBCOM_LOADERR               50
+#define RXSUBCOM_NOPROC                        127
+
+typedef ULONG RexxSubcomHandler (PRXSTRING prxCommand, PUSHORT pusFlags,
+    PRXSTRING prxResult);
+
+ULONG RexxDeregisterSubcom (PCSZ pszEnvName, PCSZ pszModuleName);
+ULONG RexxQuerySubcom (PCSZ pszEnvName, PCSZ pszModuleName, PUSHORT pusFlags,
+    PUCHAR pUserWord);
+ULONG RexxRegisterSubcomDll (PCSZ pszEnvName, PCSZ pszModuleName,
+    PCSZ pszEntryPoint, PUCHAR pUserArea, ULONG ulDropAuth);
+ULONG RexxRegisterSubcomExe (PCSZ pszEnvName, PFN pfnEntryPoint,
+    PUCHAR pUserArea);
+
+#define REXXDEREGISTERSUBCOM  RexxDeregisterSubcom
+#define REXXREGISTERSUBCOMDLL          RexxRegisterSubcomDll
+#define REXXREGISTERSUBCOMEXE          RexxRegisterSubcomExe
+#define REXXQUERYSUBCOM                        RexxQuerySubcom
+
+#endif /* INCL_RXSUBCOM */
+
+#if defined (INCL_RXSHV)
+
+#define RXSHV_SET                      0x0000
+#define RXSHV_FETCH                    0x0001
+#define RXSHV_DROPV                    0x0002
+#define RXSHV_SYSET                    0x0003
+#define RXSHV_SYFET                    0x0004
+#define RXSHV_SYDRO                    0x0005
+#define RXSHV_NEXTV                    0x0006
+#define RXSHV_PRIV                     0x0007
+#define RXSHV_EXIT                     0x0008
+
+#define RXSHV_NOAVL                    144
+
+#define RXSHV_OK                       0x0000
+#define RXSHV_NEWV                     0x0001
+#define RXSHV_LVAR                     0x0002
+#define RXSHV_TRUNC                    0x0004
+#define RXSHV_BADN                     0x0008
+#define RXSHV_MEMFL                    0x0010
+#define RXSHV_BADF                     0x0080
+
+typedef struct _SHVBLOCK
+{
+  struct _SHVBLOCK *shvnext;
+  RXSTRING         shvname;
+  RXSTRING         shvvalue;
+  ULONG                    shvnamelen;
+  ULONG                    shvvaluelen;
+  UCHAR                    shvcode;
+  UCHAR                    shvret;
+} SHVBLOCK;
+typedef SHVBLOCK *PSHVBLOCK;
+
+ULONG RexxVariablePool (PSHVBLOCK pRequest);
+
+#define REXXVARIABLEPOOL               RexxVariablePool
+
+#endif /* INCL_RXSHV */
+
+#if defined (INCL_RXFUNC)
+
+#define RXFUNC_DYNALINK                        1
+#define RXFUNC_CALLENTRY               2
+
+#define RXFUNC_OK                      0
+#define RXFUNC_DEFINED                 10
+#define RXFUNC_NOMEM                   20
+#define RXFUNC_NOTREG                  30
+#define RXFUNC_MODNOTFND               40
+#define RXFUNC_ENTNOTFND               50
+#define RXFUNC_NOTINIT                 60
+#define RXFUNC_BADTYPE                 70
+
+typedef ULONG RexxFunctionHandler (PCSZ pszName, ULONG ulArgCount,
+    PRXSTRING prxArgList, PCSZ pszQueueName, PRXSTRING prxResult);
+
+ULONG RexxDeregisterFunction (PCSZ pszFuncName);
+ULONG RexxQueryFunction (PCSZ pszFuncName);
+ULONG RexxRegisterFunctionDll (PCSZ pszFuncName, PCSZ pszModuleName,
+    PCSZ pszEntryPoint);
+ULONG RexxRegisterFunctionExe (PCSZ pszFuncName,
+    RexxFunctionHandler *pfnEntryPoint);
+
+#define REXXDEREGISTERFUNCTION RexxDeregisterFunction
+#define REXXQUERYFUNCTION  RexxQueryFunction
+#define REXXREGISTERFUNCTIONDLL                RexxRegisterFunctionDll
+#define REXXREGISTERFUNCTIONEXE                RexxRegisterFunctionExe
+
+#endif /* INCL_RXFUNC */
+
+#if defined (INCL_RXSYSEXIT)
+
+#define RXEXIT_DROPPABLE               0x0000
+#define RXEXIT_NONDROP                 0x0001
+
+#define RXEXIT_HANDLED                 0
+#define RXEXIT_NOT_HANDLED             1
+#define RXEXIT_RAISE_ERROR             (-1)
+
+#define RXEXIT_ISREG                   0x0001
+#define RXEXIT_ERROR                   0x0001
+#define RXEXIT_FAILURE                 0x0002
+
+#define RXEXIT_BADENTRY                        1001
+#define RXEXIT_NOEMEM                  1002
+#define RXEXIT_BADTYPE                 1003
+#define RXEXIT_NOTINIT                 1004
+
+#define RXEXIT_OK                      0
+#define RXEXIT_DUP                     10
+#define RXEXIT_MAXREG                  20
+#define RXEXIT_NOTREG                  30
+#define RXEXIT_NOCANDROP               40
+#define RXEXIT_LOADERR                 50
+#define RXEXIT_NOPROC                  127
+
+#define RXENDLST                       0
+
+#define RXFNC                          2
+#define RXFNCCAL                       1
+
+#define RXCMD                          3
+#define RXCMDHST                       1
+
+#define RXMSQ                          4
+#define RXMSQPLL                       1
+#define RXMSQPSH                       2
+#define RXMSQSIZ                       3
+#define RXMSQNAM                       20
+
+#define RXSIO                          5
+#define RXSIOSAY                       1
+#define RXSIOTRC                       2
+#define RXSIOTRD                       3
+#define RXSIODTR                       4
+#define RXSIOTLL                       5
+
+#define RXHLT                          7
+#define RXHLTCLR                       1
+#define RXHLTTST                       2
+
+#define RXTRC                          8
+#define RXTRCTST                       1
+
+#define RXINI                          9
+#define RXINIEXT                       1
+
+#define RXTER                          10
+#define RXTEREXT                       1
+
+#define RXNOOFEXITS                    11
+
+typedef PUCHAR PEXIT;
+
+typedef struct _RXFNC_FLAGS
+{
+  ULONG rxfferr         : 1;
+  ULONG rxffnfnd : 1;
+  ULONG rxffsub         : 1;
+} RXFNC_FLAGS;
+
+typedef struct _RXFNCCAL_PARM
+{
+  RXFNC_FLAGS rxfnc_flags;
+  PUCHAR      rxfnc_name;
+  USHORT      rxfnc_namel;
+  PUCHAR      rxfnc_que;
+  USHORT      rxfnc_quel;
+  USHORT      rxfnc_argc;
+  PRXSTRING   rxfnc_argv;
+  RXSTRING    rxfnc_retc;
+} RXFNCCAL_PARM;
+
+typedef struct _RXCMD_FLAGS
+{
+  ULONG rxfcfail : 1;
+  ULONG rxfcerr         : 1;
+} RXCMD_FLAGS;
+
+typedef struct _RXCMDHST_PARM
+{
+  RXCMD_FLAGS rxcmd_flags;
+  PUCHAR      rxcmd_address;
+  USHORT      rxcmd_addressl;
+  PUCHAR      rxcmd_dll;
+  USHORT      rxcmd_dll_len;
+  RXSTRING    rxcmd_command;
+  RXSTRING    rxcmd_retc;
+} RXCMDHST_PARM;
+
+typedef struct _RXMSQPLL_PARM
+{
+  RXSTRING rxmsq_retc;
+} RXMSQPLL_PARM;
+
+typedef struct _RXMSQ_FLAGS
+{
+  ULONG rxfmlifo : 1;
+} RXMSQ_FLAGS;
+
+typedef struct _RXMSQPSH_PARM
+{
+  RXMSQ_FLAGS rxmsq_flags;
+  RXSTRING    rxmsq_value;
+} RXMSQPSH_PARM;
+
+typedef struct _RXMSQSIZ_PARM
+{
+  ULONG rxmsq_size;
+} RXMSQSIZ_PARM;
+
+typedef struct _RXMSQNAM_PARM
+{
+  RXSTRING rxmsq_name;
+} RXMSQNAM_PARM;
+
+typedef struct _RXSIOSAY_PARM
+{
+  RXSTRING rxsio_string;
+} RXSIOSAY_PARM;
+
+typedef struct _RXSIOTRC_PARM
+{
+  RXSTRING rxsio_string;
+} RXSIOTRC_PARM;
+
+typedef struct _RXSIOTRD_PARM
+{
+  RXSTRING rxsiotrd_retc;
+} RXSIOTRD_PARM;
+
+typedef struct _RXSIODR_PARM
+{
+  RXSTRING rxsiodtr_retc;
+} RXSIODTR_PARM;
+
+typedef struct _RXHLT_FLAGS
+{
+  ULONG rxfhhalt : 1;
+} RXHLT_FLAGS;
+
+typedef struct _RXHLTTST_PARM
+{
+  RXHLT_FLAGS rxhlt_flags;
+} RXHLTTST_PARM;
+
+typedef struct _RXTRC_FLAGS
+{
+  ULONG rxftrace : 1;
+} RXTRC_FLAGS;
+
+typedef struct _RXTRCTST_PARM
+{
+  RXTRC_FLAGS rxtrc_flags;
+} RXTRCTST_PARM;
+
+typedef LONG RexxExitHandler (LONG lExitNumber, LONG lSubfunction,
+    PEXIT pParmBlock);
+
+ULONG RexxDeregisterExit (PCSZ pszEnvName, PCSZ pszModuleName);
+ULONG RexxQueryExit (PCSZ pszEnvName, PCSZ pszModuleName, PUSHORT pusFlag,
+    PUCHAR pUserWord);
+ULONG RexxRegisterExitDll (PCSZ pszEnvName, PCSZ pszModuleName,
+    PCSZ pszEntryName, PUCHAR pUserArea, ULONG ulDropAuth);
+ULONG RexxRegisterExitExe (PCSZ pszEnvName, PFN pfnEntryPoint,
+    PUCHAR pUserArea);
+
+#define REXXDEREGISTEREXIT             RexxDeregisterExit
+#define REXXQUERYEXIT                  RexxQueryExit
+#define REXXREGISTEREXITDLL            RexxRegisterExitDll
+#define REXXREGISTEREXITEXE            RexxRegisterExitExe
+
+#endif /* INCL_RXSYSEXIT */
+
+#if defined (INCL_RXARI)
+
+#define RXARI_OK                       0
+#define RXARI_NOT_FOUND                        1
+#define RXARI_PROCESSING_ERROR         2
+
+ULONG RexxResetTrace (PID pid, TID tid);
+ULONG RexxSetHalt (PID pid, TID tid);
+ULONG RexxSetTrace (PID pid, TID tid);
+
+#define REXXRESETTRACE                 RexxResetTrace
+#define REXXSETHALT                    RexxSetHalt
+#define REXXSETTRACE                   RexxSetTrace
+
+#endif /* INCL_RXARI */
+
+#if defined (INCL_RXMACRO)
+
+#define RXMACRO_SEARCH_BEFORE          1
+#define RXMACRO_SEARCH_AFTER           2
+
+#define RXMACRO_OK                     0
+#define RXMACRO_NO_STORAGE             1
+#define RXMACRO_NOT_FOUND              2
+#define RXMACRO_EXTENSION_REQUIRED     3
+#define RXMACRO_ALREADY_EXISTS         4
+#define RXMACRO_FILE_ERROR             5
+#define RXMACRO_SIGNATURE_ERROR                6
+#define RXMACRO_SOURCE_NOT_FOUND       7
+#define RXMACRO_INVALID_POSITION       8
+#define RXMACRO_NOT_INIT               9
+
+ULONG RexxAddMacro (PCSZ pszFuncName, PCSZ pszSourceFile, ULONG ulPosition);
+ULONG RexxClearMacroSpace (VOID);
+ULONG RexxDropMacro (PCSZ pszFuncName);
+ULONG RexxLoadMacroSpace (ULONG ulFuncCout, PCSZ *apszFuncNames,
+    PCSZ pszMacroLibFile);
+ULONG RexxQueryMacro (PCSZ pszFuncName, PUSHORT pusPosition);
+ULONG RexxReorderMacro(PCSZ pszFuncName, ULONG ulPosition);
+ULONG RexxSaveMacroSpace (ULONG ulFuncCount, PCSZ *apszFuncNames,
+    PCSZ pszMacroLibFile);
+
+#define REXXADDMACRO                   RexxAddMacro
+#define REXXCLEARMACROSPACE            RexxClearMacroSpace
+#define REXXDROPMACRO                  RexxDropMacro
+#define REXXSAVEMACROSPACE             RexxSaveMacroSpace
+#define REXXLOADMACROSPACE             RexxLoadMacroSpace
+#define REXXQUERYMACRO                 RexxQueryMacro
+#define REXXREORDERMACRO               RexxReorderMacro
+
+#endif /* INCL_RXMACRO */
+
+LONG RexxStart (LONG lArgCount, PRXSTRING prxArgList, PCSZ pszProgramName,
+    PRXSTRING prxInstore, PCSZ pszEnvName, LONG lCallType, PRXSYSEXIT pExits,
+    PSHORT psReturnCode, PRXSTRING prxResult);
+
+#define REXXSTART                      RexxStart
+
+/* ----------------------- PRESENTATION MANAGER --------------------------- */
+
+#define         CTLS_WM_BIDI_FIRST             0x390
+#define         CTLS_WM_BIDI_LAST              0x39f
+
+#if defined (INCL_NLS)
+#define WM_DBCSFIRST                   0x00b0
+#define WM_DBCSLAST                    0x00cf
+#endif /* INCL_NLS */
+
+#define WC_FRAME                       ((PSZ)0xffff0001)
+#define WC_COMBOBOX                    ((PSZ)0xffff0002)
+#define WC_BUTTON                      ((PSZ)0xffff0003)
+#define WC_MENU                                ((PSZ)0xffff0004)
+#define WC_STATIC                      ((PSZ)0xffff0005)
+#define WC_ENTRYFIELD                  ((PSZ)0xffff0006)
+#define WC_LISTBOX                     ((PSZ)0xffff0007)
+#define WC_SCROLLBAR                   ((PSZ)0xffff0008)
+#define WC_TITLEBAR                    ((PSZ)0xffff0009)
+#define WC_MLE                         ((PSZ)0xffff000a)
+#define WC_APPSTAT                     ((PSZ)0xffff0010)
+#define WC_KBDSTAT                     ((PSZ)0xffff0011)
+#define WC_PECIC                       ((PSZ)0xffff0012)
+#define WC_DBE_KKPOPUP                 ((PSZ)0xffff0013)
+#define WC_SPINBUTTON                  ((PSZ)0xffff0020)
+#define WC_CONTAINER                   ((PSZ)0xffff0025)
+#define WC_SLIDER                      ((PSZ)0xffff0026)
+#define WC_VALUESET                    ((PSZ)0xffff0027)
+#define WC_NOTEBOOK                    ((PSZ)0xffff0028)
+#define WC_PENFIRST                    ((PSZ)0xffff0029)
+#define WC_PENLAST                     ((PSZ)0xffff002c)
+#define WC_MMPMFIRST                   ((PSZ)0xffff0040)
+#define WC_CIRCULARSLIDER              ((PSZ)0xffff0041)
+#define WC_MMPMLAST                    ((PSZ)0xffff004f)
+
+#define WS_VISIBLE                     0x80000000
+#define WS_DISABLED                    0x40000000
+#define WS_CLIPCHILDREN                        0x20000000
+#define WS_CLIPSIBLINGS                        0x10000000
+#define WS_PARENTCLIP                  0x08000000
+#define WS_SAVEBITS                    0x04000000
+#define WS_SYNCPAINT                   0x02000000
+#define WS_MINIMIZED                   0x01000000
+#define WS_MAXIMIZED                   0x00800000
+#define WS_ANIMATE                     0x00400000
+#define WS_GROUP                       0x00010000
+#define WS_TABSTOP                     0x00020000
+#define WS_MULTISELECT                 0x00040000
+
+#define CS_MOVENOTIFY                  0x00000001
+#define CS_SIZEREDRAW                  0x00000004
+#define CS_HITTEST                     0x00000008
+#define CS_PUBLIC                      0x00000010
+#define CS_FRAME                       0x00000020
+#define CS_CLIPCHILDREN                        0x20000000
+#define CS_CLIPSIBLINGS                        0x10000000
+#define CS_PARENTCLIP                  0x08000000
+#define CS_SAVEBITS                    0x04000000
+#define CS_SYNCPAINT                   0x02000000
+
+#define MID_NONE                       (-1)
+#define MID_ERROR                      (-1)
+
+#define DB_PATCOPY                     0x0000
+#define DB_PATINVERT                   0x0001
+#define DB_DESTINVERT                  0x0002
+#define DB_AREAMIXMODE                 0x0003
+
+#define DB_ROP                         0x0007
+#define DB_INTERIOR                    0x0008
+#define DB_AREAATTRS                   0x0010
+#define DB_STANDARD                    0x0100
+#define DB_DLGBORDER                   0x0200
+
+#define DBM_NORMAL                     0x0000
+#define DBM_INVERT                     0x0001
+#define DBM_HALFTONE                   0x0002
+#define DBM_STRETCH                    0x0004
+#define DBM_IMAGEATTRS                 0x0008
+
+#define DT_LEFT                                0x00000000
+#define DT_QUERYEXTENT                 0x00000002
+#define DT_UNDERSCORE                  0x00000010
+#define DT_STRIKEOUT                   0x00000020
+#define DT_TEXTATTRS                   0x00000040
+#define DT_EXTERNALLEADING             0x00000080
+#define DT_CENTER                      0x00000100
+#define DT_RIGHT                       0x00000200
+#define DT_TOP                         0x00000000
+#define DT_VCENTER                     0x00000400
+#define DT_BOTTOM                      0x00000800
+#define DT_HALFTONE                    0x00001000
+#define DT_MNEMONIC                    0x00002000
+#define DT_WORDBREAK                   0x00004000
+#define DT_ERASERECT                   0x00008000
+
+#define QW_NEXT                                0
+#define QW_PREV                                1
+#define QW_TOP                         2
+#define QW_BOTTOM                      3
+#define QW_OWNER                       4
+#define QW_PARENT                      5
+#define QW_NEXTTOP                     6
+#define QW_PREVTOP                     7
+#define QW_FRAMEOWNER                  8
+
+#define SWP_SIZE                       0x0001
+#define SWP_MOVE                       0x0002
+#define SWP_ZORDER                     0x0004
+#define SWP_SHOW                       0x0008
+#define SWP_HIDE                       0x0010
+#define SWP_NOREDRAW                   0x0020
+#define SWP_NOADJUST                   0x0040
+#define SWP_ACTIVATE                   0x0080
+#define SWP_DEACTIVATE                 0x0100
+#define SWP_EXTSTATECHANGE             0x0200
+#define SWP_MINIMIZE                   0x0400
+#define SWP_MAXIMIZE                   0x0800
+#define SWP_RESTORE                    0x1000
+#define SWP_FOCUSACTIVATE              0x2000
+#define SWP_FOCUSDEACTIVATE            0x4000
+#define SWP_NOAUTOCLOSE                        0x8000
+
+#define AWP_MINIMIZED                  0x00010000
+#define AWP_MAXIMIZED                  0x00020000
+#define AWP_RESTORED                   0x00040000
+#define AWP_ACTIVATE                   0x00080000
+#define AWP_DEACTIVATE                 0x00100000
+
+#define HWND_DESKTOP                   ((HWND)1)
+#define HWND_OBJECT                    ((HWND)2)
+#define HWND_TOP                       ((HWND)3)
+#define HWND_BOTTOM                    ((HWND)4)
+#define HWND_THREADCAPTURE             ((HWND)5)
+
+#define EAF_DEFAULTOWNER               0x0001
+#define EAF_UNCHANGEABLE               0x0002
+#define EAF_REUSEICON                  0x0004
+
+#define ICON_FILE                      1
+#define ICON_RESOURCE                  2
+#define ICON_DATA                      3
+#define ICON_CLEAR                     4
+
+#define SZDDEFMT_RTF                   "Rich Text Format"
+#define SZDDEFMT_PTRPICT               "Printer_Picture"
+
+#define STR_DLLNAME                    "keyremap"
+
+#if defined (INCL_WINERRORS)
+
+#define PMERR_INVALID_HWND             0x1001
+#define PMERR_INVALID_HMQ              0x1002
+#define PMERR_PARAMETER_OUT_OF_RANGE   0x1003
+#define PMERR_WINDOW_LOCK_UNDERFLOW    0x1004
+#define PMERR_WINDOW_LOCK_OVERFLOW     0x1005
+#define PMERR_BAD_WINDOW_LOCK_COUNT    0x1006
+#define PMERR_WINDOW_NOT_LOCKED                0x1007
+#define PMERR_INVALID_SELECTOR         0x1008
+#define PMERR_CALL_FROM_WRONG_THREAD   0x1009
+#define PMERR_RESOURCE_NOT_FOUND       0x100a
+#define PMERR_INVALID_STRING_PARM      0x100b
+#define PMERR_INVALID_HHEAP            0x100c
+#define PMERR_INVALID_HEAP_POINTER     0x100d
+#define PMERR_INVALID_HEAP_SIZE_PARM   0x100e
+#define PMERR_INVALID_HEAP_SIZE                0x100f
+#define PMERR_INVALID_HEAP_SIZE_WORD   0x1010
+#define PMERR_HEAP_OUT_OF_MEMORY       0x1011
+#define PMERR_HEAP_MAX_SIZE_REACHED    0x1012
+#define PMERR_INVALID_HATOMTBL         0x1013
+#define PMERR_INVALID_ATOM             0x1014
+#define PMERR_INVALID_ATOM_NAME                0x1015
+#define PMERR_INVALID_INTEGER_ATOM     0x1016
+#define PMERR_ATOM_NAME_NOT_FOUND      0x1017
+#define PMERR_QUEUE_TOO_LARGE          0x1018
+#define PMERR_INVALID_FLAG             0x1019
+#define PMERR_INVALID_HACCEL           0x101a
+#define PMERR_INVALID_HPTR             0x101b
+#define PMERR_INVALID_HENUM            0x101c
+#define PMERR_INVALID_SRC_CODEPAGE     0x101d
+#define PMERR_INVALID_DST_CODEPAGE     0x101e
+#define PMERR_UNKNOWN_COMPONENT_ID     0x101f
+#define PMERR_UNKNOWN_ERROR_CODE       0x1020
+#define PMERR_SEVERITY_LEVELS          0x1021
+#define PMERR_INVALID_RESOURCE_FORMAT  0x1034
+#define PMERR_NO_MSG_QUEUE             0x1036
+#define PMERR_CANNOT_SET_FOCUS         0x1037
+#define PMERR_QUEUE_FULL               0x1038
+#define PMERR_LIBRARY_LOAD_FAILED      0x1039
+#define PMERR_PROCEDURE_LOAD_FAILED    0x103a
+#define PMERR_LIBRARY_DELETE_FAILED    0x103b
+#define PMERR_PROCEDURE_DELETE_FAILED  0x103c
+#define PMERR_ARRAY_TOO_LARGE          0x103d
+#define PMERR_ARRAY_TOO_SMALL          0x103e
+#define PMERR_DATATYPE_ENTRY_BAD_INDEX 0x103f
+#define PMERR_DATATYPE_ENTRY_CTL_BAD   0x1040
+#define PMERR_DATATYPE_ENTRY_CTL_MISS  0x1041
+#define PMERR_DATATYPE_ENTRY_INVALID   0x1042
+#define PMERR_DATATYPE_ENTRY_NOT_NUM   0x1043
+#define PMERR_DATATYPE_ENTRY_NOT_OFF   0x1044
+#define PMERR_DATATYPE_INVALID         0x1045
+#define PMERR_DATATYPE_NOT_UNIQUE      0x1046
+#define PMERR_DATATYPE_TOO_LONG                0x1047
+#define PMERR_DATATYPE_TOO_SMALL       0x1048
+#define PMERR_DIRECTION_INVALID                0x1049
+#define PMERR_INVALID_HAB              0x104a
+#define PMERR_INVALID_HSTRUCT          0x104d
+#define PMERR_LENGTH_TOO_SMALL         0x104e
+#define PMERR_MSGID_TOO_SMALL          0x104f
+#define PMERR_NO_HANDLE_ALLOC          0x1050
+#define PMERR_NOT_IN_A_PM_SESSION      0x1051
+#define PMERR_MSG_QUEUE_ALREADY_EXISTS 0x1052
+#define PMERR_SEND_MSG_TIMEOUT         0x1053
+#define PMERROR_SEND_MSG_FAILED                0x1054
+#define PMERR_OLD_RESOURCE             0x1055
+#define PMERR_WPDSERVER_IS_ACTIVE      0x1056
+#define PMERR_WPDSERVER_NOT_STARTED    0x1057
+#define PMERR_SOMDD_IS_ACTIVE          0x1058
+#define PMERR_SOMDD_NOT_STARTED                0x1059
+
+#define PMERR_BIDI_FIRST               0x10f0
+#define PMERR_BIDI_LAST                        0x10ff
+
+#endif /* INCL_WINERRORS */
+
+#if defined (INCL_SHLERRORS)
+
+#define PMERR_INVALID_PIB              0x1101
+#define PMERR_INSUFF_SPACE_TO_ADD      0x1102
+#define PMERR_INVALID_GROUP_HANDLE     0x1103
+#define PMERR_DUPLICATE_TITLE          0x1104
+#define PMERR_INVALID_TITLE            0x1105
+#define PMERR_HANDLE_NOT_IN_GROUP      0x1107
+#define PMERR_INVALID_TARGET_HANDLE    0x1106
+#define PMERR_INVALID_PATH_STATEMENT   0x1108
+#define PMERR_NO_PROGRAM_FOUND         0x1109
+#define PMERR_INVALID_BUFFER_SIZE      0x110a
+#define PMERR_BUFFER_TOO_SMALL         0x110b
+#define PMERR_PL_INITIALISATION_FAIL   0x110c
+#define PMERR_CANT_DESTROY_SYS_GROUP   0x110d
+#define PMERR_INVALID_TYPE_CHANGE      0x110e
+#define PMERR_INVALID_PROGRAM_HANDLE   0x110f
+#define PMERR_NOT_CURRENT_PL_VERSION   0x1110
+#define PMERR_INVALID_CIRCULAR_REF     0x1111
+#define PMERR_MEMORY_ALLOCATION_ERR    0x1112
+#define PMERR_MEMORY_DEALLOCATION_ERR  0x1113
+#define PMERR_TASK_HEADER_TOO_BIG      0x1114
+#define PMERR_INVALID_INI_FILE_HANDLE  0x1115
+#define PMERR_MEMORY_SHARE             0x1116
+#define PMERR_OPEN_QUEUE               0x1117
+#define PMERR_CREATE_QUEUE             0x1118
+#define PMERR_WRITE_QUEUE              0x1119
+#define PMERR_READ_QUEUE               0x111a
+#define PMERR_CALL_NOT_EXECUTED                0x111b
+#define PMERR_UNKNOWN_APIPKT           0x111c
+#define PMERR_INITHREAD_EXISTS         0x111d
+#define PMERR_CREATE_THREAD            0x111e
+#define PMERR_NO_HK_PROFILE_INSTALLED  0x111f
+#define PMERR_INVALID_DIRECTORY                0x1120
+#define PMERR_WILDCARD_IN_FILENAME     0x1121
+#define PMERR_FILENAME_BUFFER_FULL     0x1122
+#define PMERR_FILENAME_TOO_LONG                0x1123
+#define PMERR_INI_FILE_IS_SYS_OR_USER  0x1124
+#define PMERR_BROADCAST_PLMSG          0x1125
+#define PMERR_190_INIT_DONE            0x1126
+#define PMERR_HMOD_FOR_PMSHAPI         0x1127
+#define PMERR_SET_HK_PROFILE           0x1128
+#define PMERR_API_NOT_ALLOWED          0x1129
+#define PMERR_INI_STILL_OPEN           0x112a
+#define PMERR_PROGDETAILS_NOT_IN_INI   0x112b
+#define PMERR_PIBSTRUCT_NOT_IN_INI     0x112c
+#define PMERR_INVALID_DISKPROGDETAILS  0x112d
+#define PMERR_PROGDETAILS_READ_FAILURE 0x112e
+#define PMERR_PROGDETAILS_WRITE_FAILURE 0x112f
+#define PMERR_PROGDETAILS_QSIZE_FAILURE 0x1130
+#define PMERR_INVALID_PROGDETAILS      0x1131
+#define PMERR_SHEPROFILEHOOK_NOT_FOUND 0x1132
+#define PMERR_190PLCONVERTED           0x1133
+#define PMERR_FAILED_TO_CONVERT_INI_PL 0x1134
+#define PMERR_PMSHAPI_NOT_INITIALISED  0x1135
+#define PMERR_INVALID_SHELL_API_HOOK_ID 0x1136
+#define PMERR_DOS_ERROR                        0x1200
+#define PMERR_NO_SPACE                 0x1201
+#define PMERR_INVALID_SWITCH_HANDLE    0x1202
+#define PMERR_NO_HANDLE                        0x1203
+#define PMERR_INVALID_PROCESS_ID       0x1204
+#define PMERR_NOT_SHELL                        0x1205
+#define PMERR_INVALID_WINDOW           0x1206
+#define PMERR_INVALID_POST_MSG         0x1207
+#define PMERR_INVALID_PARAMETERS       0x1208
+#define PMERR_INVALID_PROGRAM_TYPE     0x1209
+#define PMERR_NOT_EXTENDED_FOCUS       0x120a
+#define PMERR_INVALID_SESSION_ID       0x120b
+#define PMERR_SMG_INVALID_ICON_FILE    0x120c
+#define PMERR_SMG_ICON_NOT_CREATED     0x120d
+#define PMERR_SHL_DEBUG                        0x120e
+#define PMERR_OPENING_INI_FILE         0x1301
+#define PMERR_INI_FILE_CORRUPT         0x1302
+#define PMERR_INVALID_PARM             0x1303
+#define PMERR_NOT_IN_IDX               0x1304
+#define PMERR_NO_ENTRIES_IN_GROUP      0x1305
+#define PMERR_INI_WRITE_FAIL           0x1306
+#define PMERR_IDX_FULL                 0x1307
+#define PMERR_INI_PROTECTED            0x1308
+#define PMERR_MEMORY_ALLOC             0x1309
+#define PMERR_INI_INIT_ALREADY_DONE    0x130a
+#define PMERR_INVALID_INTEGER          0x130b
+#define PMERR_INVALID_ASCIIZ           0x130c
+#define PMERR_CAN_NOT_CALL_SPOOLER     0x130d
+#define PMERR_VALIDATION_REJECTED      0x130d /*!*/
+#define PMERR_WARNING_WINDOW_NOT_KILLED 0x1401
+#define PMERR_ERROR_INVALID_WINDOW     0x1402
+#define PMERR_ALREADY_INITIALIZED      0x1403
+#define PMERR_MSG_PROG_NO_MOU          0x1405
+#define PMERR_MSG_PROG_NON_RECOV       0x1406
+#define PMERR_WINCONV_INVALID_PATH     0x1407
+#define PMERR_PI_NOT_INITIALISED       0x1408
+#define PMERR_PL_NOT_INITIALISED       0x1409
+#define PMERR_NO_TASK_MANAGER          0x140a
+#define PMERR_SAVE_NOT_IN_PROGRESS     0x140b
+#define PMERR_NO_STACK_SPACE           0x140c
+#define PMERR_INVALID_COLR_FIELD       0x140d
+#define PMERR_INVALID_COLR_VALUE       0x140e
+#define PMERR_COLR_WRITE               0x140f
+#define PMERR_TARGET_FILE_EXISTS       0x1501
+#define PMERR_SOURCE_SAME_AS_TARGET    0x1502
+#define PMERR_SOURCE_FILE_NOT_FOUND    0x1503
+#define PMERR_INVALID_NEW_PATH         0x1504
+#define PMERR_TARGET_FILE_NOT_FOUND    0x1505
+#define PMERR_INVALID_DRIVE_NUMBER     0x1506
+#define PMERR_NAME_TOO_LONG            0x1507
+#define PMERR_NOT_ENOUGH_ROOM_ON_DISK  0x1508
+#define PMERR_NOT_ENOUGH_MEM           0x1509
+#define PMERR_LOG_DRV_DOES_NOT_EXIST   0x150b
+#define PMERR_INVALID_DRIVE            0x150c
+#define PMERR_ACCESS_DENIED            0x150d
+#define PMERR_NO_FIRST_SLASH           0x150e
+#define PMERR_READ_ONLY_FILE           0x150f
+#define PMERR_GROUP_PROTECTED          0x151f
+#define PMERR_INVALID_PROGRAM_CATEGORY 0x152f
+#define PMERR_INVALID_APPL             0x1530
+#define PMERR_CANNOT_START             0x1531
+#define PMERR_STARTED_IN_BACKGROUND    0x1532
+#define PMERR_INVALID_HAPP             0x1533
+#define PMERR_CANNOT_STOP              0x1534
+#define PMERR_INVALID_FREE_MESSAGE_ID  0x1630
+#define PMERR_FUNCTION_NOT_SUPPORTED   0x1641
+#define PMERR_INVALID_ARRAY_COUNT      0x1642
+#define PMERR_INVALID_LENGTH           0x1643
+#define PMERR_INVALID_BUNDLE_TYPE      0x1644
+#define PMERR_INVALID_PARAMETER                0x1645
+#define PMERR_INVALID_NUMBER_OF_PARMS  0x1646
+#define PMERR_GREATER_THAN_64K         0x1647
+#define PMERR_INVALID_PARAMETER_TYPE   0x1648
+#define PMERR_NEGATIVE_STRCOND_DIM     0x1649
+#define PMERR_INVALID_NUMBER_OF_TYPES  0x164a
+#define PMERR_INCORRECT_HSTRUCT                0x164b
+#define PMERR_INVALID_ARRAY_SIZE       0x164c
+#define PMERR_INVALID_CONTROL_DATATYPE 0x164d
+#define PMERR_INCOMPLETE_CONTROL_SEQU  0x164e
+#define PMERR_INVALID_DATATYPE         0x164f
+#define PMERR_INCORRECT_DATATYPE       0x1650
+#define PMERR_NOT_SELF_DESCRIBING_DTYP 0x1651
+#define PMERR_INVALID_CTRL_SEQ_INDEX   0x1652
+#define PMERR_INVALID_TYPE_FOR_LENGTH  0x1653
+#define PMERR_INVALID_TYPE_FOR_OFFSET  0x1654
+#define PMERR_INVALID_TYPE_FOR_MPARAM  0x1655
+#define PMERR_INVALID_MESSAGE_ID       0x1656
+#define PMERR_C_LENGTH_TOO_SMALL       0x1657
+#define PMERR_APPL_STRUCTURE_TOO_SMALL 0x1658
+#define PMERR_INVALID_ERRORINFO_HANDLE 0x1659
+#define PMERR_INVALID_CHARACTER_INDEX  0x165a
+
+#endif /* INCL_SHLERRORS */
+
+#if defined (INCL_GPIERRORS)
+
+#define PMERR_OK                       0x0000
+#define PMERR_ALREADY_IN_AREA          0x2001
+#define PMERR_ALREADY_IN_ELEMENT       0x2002
+#define PMERR_ALREADY_IN_PATH          0x2003
+#define PMERR_ALREADY_IN_SEG           0x2004
+#define PMERR_AREA_INCOMPLETE          0x2005
+#define PMERR_BASE_ERROR               0x2006
+#define PMERR_BITBLT_LENGTH_EXCEEDED   0x2007
+#define PMERR_BITMAP_IN_USE            0x2008
+#define PMERR_BITMAP_IS_SELECTED       0x2009
+#define PMERR_BITMAP_NOT_FOUND         0x200a
+#define PMERR_BITMAP_NOT_SELECTED      0x200b
+#define PMERR_BOUNDS_OVERFLOW          0x200c
+#define PMERR_CALLED_SEG_IS_CHAINED    0x200d
+#define PMERR_CALLED_SEG_IS_CURRENT    0x200e
+#define PMERR_CALLED_SEG_NOT_FOUND     0x200f
+#define PMERR_CANNOT_DELETE_ALL_DATA   0x2010
+#define PMERR_CANNOT_REPLACE_ELEMENT_0 0x2011
+#define PMERR_COL_TABLE_NOT_REALIZABLE 0x2012
+#define PMERR_COL_TABLE_NOT_REALIZED   0x2013
+#define PMERR_COORDINATE_OVERFLOW      0x2014
+#define PMERR_CORR_FORMAT_MISMATCH     0x2015
+#define PMERR_DATA_TOO_LONG            0x2016
+#define PMERR_DC_IS_ASSOCIATED         0x2017
+#define PMERR_DESC_STRING_TRUNCATED    0x2018
+#define PMERR_DEVICE_DRIVER_ERROR_1    0x2019
+#define PMERR_DEVICE_DRIVER_ERROR_2    0x201a
+#define PMERR_DEVICE_DRIVER_ERROR_3    0x201b
+#define PMERR_DEVICE_DRIVER_ERROR_4    0x201c
+#define PMERR_DEVICE_DRIVER_ERROR_5    0x201d
+#define PMERR_DEVICE_DRIVER_ERROR_6    0x201e
+#define PMERR_DEVICE_DRIVER_ERROR_7    0x201f
+#define PMERR_DEVICE_DRIVER_ERROR_8    0x2020
+#define PMERR_DEVICE_DRIVER_ERROR_9    0x2021
+#define PMERR_DEVICE_DRIVER_ERROR_10   0x2022
+#define PMERR_DEV_FUNC_NOT_INSTALLED   0x2023
+#define PMERR_DOSOPEN_FAILURE          0x2024
+#define PMERR_DOSREAD_FAILURE          0x2025
+#define PMERR_DRIVER_NOT_FOUND         0x2026
+#define PMERR_DUP_SEG                  0x2027
+#define PMERR_DYNAMIC_SEG_SEQ_ERROR    0x2028
+#define PMERR_DYNAMIC_SEG_ZERO_INV     0x2029
+#define PMERR_ELEMENT_INCOMPLETE       0x202a
+#define PMERR_ESC_CODE_NOT_SUPPORTED   0x202b
+#define PMERR_EXCEEDS_MAX_SEG_LENGTH   0x202c
+#define PMERR_FONT_AND_MODE_MISMATCH   0x202d
+#define PMERR_FONT_FILE_NOT_LOADED     0x202e
+#define PMERR_FONT_NOT_LOADED          0x202f
+#define PMERR_FONT_TOO_BIG             0x2030
+#define PMERR_HARDWARE_INIT_FAILURE    0x2031
+#define PMERR_HBITMAP_BUSY             0x2032
+#define PMERR_HDC_BUSY                 0x2033
+#define PMERR_HRGN_BUSY                        0x2034
+#define PMERR_HUGE_FONTS_NOT_SUPPORTED 0x2035
+#define PMERR_ID_HAS_NO_BITMAP         0x2036
+#define PMERR_IMAGE_INCOMPLETE         0x2037
+#define PMERR_INCOMPAT_COLOR_FORMAT    0x2038
+#define PMERR_INCOMPAT_COLOR_OPTIONS   0x2039
+#define PMERR_INCOMPATIBLE_BITMAP      0x203a
+#define PMERR_INCOMPATIBLE_METAFILE    0x203b
+#define PMERR_INCORRECT_DC_TYPE                0x203c
+#define PMERR_INSUFFICIENT_DISK_SPACE  0x203d
+#define PMERR_INSUFFICIENT_MEMORY      0x203e
+#define PMERR_INV_ANGLE_PARM           0x203f
+#define PMERR_INV_ARC_CONTROL          0x2040
+#define PMERR_INV_AREA_CONTROL         0x2041
+#define PMERR_INV_ARC_POINTS           0x2042
+#define PMERR_INV_ATTR_MODE            0x2043
+#define PMERR_INV_BACKGROUND_COL_ATTR  0x2044
+#define PMERR_INV_BACKGROUND_MIX_ATTR  0x2045
+#define PMERR_INV_BITBLT_MIX           0x2046
+#define PMERR_INV_BITBLT_STYLE         0x2047
+#define PMERR_INV_BITMAP_DIMENSION     0x2048
+#define PMERR_INV_BOX_CONTROL          0x2049
+#define PMERR_INV_BOX_ROUNDING_PARM    0x204a
+#define PMERR_INV_CHAR_ANGLE_ATTR      0x204b
+#define PMERR_INV_CHAR_DIRECTION_ATTR  0x204c
+#define PMERR_INV_CHAR_MODE_ATTR       0x204d
+#define PMERR_INV_CHAR_POS_OPTIONS     0x204e
+#define PMERR_INV_CHAR_SET_ATTR                0x204f
+#define PMERR_INV_CHAR_SHEAR_ATTR      0x2050
+#define PMERR_INV_CLIP_PATH_OPTIONS    0x2051
+#define PMERR_INV_CODEPAGE             0x2052
+#define PMERR_INV_COLOR_ATTR           0x2053
+#define PMERR_INV_COLOR_DATA           0x2054
+#define PMERR_INV_COLOR_FORMAT         0x2055
+#define PMERR_INV_COLOR_INDEX          0x2056
+#define PMERR_INV_COLOR_OPTIONS                0x2057
+#define PMERR_INV_COLOR_START_INDEX    0x2058
+#define PMERR_INV_COORD_OFFSET         0x2059
+#define PMERR_INV_COORD_SPACE          0x205a
+#define PMERR_INV_COORDINATE           0x205b
+#define PMERR_INV_CORRELATE_DEPTH      0x205c
+#define PMERR_INV_CORRELATE_TYPE       0x205d
+#define PMERR_INV_CURSOR_BITMAP                0x205e
+#define PMERR_INV_DC_DATA              0x205f
+#define PMERR_INV_DC_TYPE              0x2060
+#define PMERR_INV_DEVICE_NAME          0x2061
+#define PMERR_INV_DEV_MODES_OPTIONS    0x2062
+#define PMERR_INV_DRAW_CONTROL         0x2063
+#define PMERR_INV_DRAW_VALUE           0x2064
+#define PMERR_INV_DRAWING_MODE         0x2065
+#define PMERR_INV_DRIVER_DATA          0x2066
+#define PMERR_INV_DRIVER_NAME          0x2067
+#define PMERR_INV_DRAW_BORDER_OPTION   0x2068
+#define PMERR_INV_EDIT_MODE            0x2069
+#define PMERR_INV_ELEMENT_OFFSET       0x206a
+#define PMERR_INV_ELEMENT_POINTER      0x206b
+#define PMERR_INV_END_PATH_OPTIONS     0x206c
+#define PMERR_INV_ESC_CODE             0x206d
+#define PMERR_INV_ESCAPE_DATA          0x206e
+#define PMERR_INV_EXTENDED_LCID                0x206f
+#define PMERR_INV_FILL_PATH_OPTIONS    0x2070
+#define PMERR_INV_FIRST_CHAR           0x2071
+#define PMERR_INV_FONT_ATTRS           0x2072
+#define PMERR_INV_FONT_FILE_DATA       0x2073
+#define PMERR_INV_FOR_THIS_DC_TYPE     0x2074
+#define PMERR_INV_FORMAT_CONTROL       0x2075
+#define PMERR_INV_FORMS_CODE           0x2076
+#define PMERR_INV_FONTDEF              0x2077
+#define PMERR_INV_GEOM_LINE_WIDTH_ATTR 0x2078
+#define PMERR_INV_GETDATA_CONTROL      0x2079
+#define PMERR_INV_GRAPHICS_FIELD       0x207a
+#define PMERR_INV_HBITMAP              0x207b
+#define PMERR_INV_HDC                  0x207c
+#define PMERR_INV_HJOURNAL             0x207d
+#define PMERR_INV_HMF                  0x207e
+#define PMERR_INV_HPS                  0x207f
+#define PMERR_INV_HRGN                 0x2080
+#define PMERR_INV_ID                   0x2081
+#define PMERR_INV_IMAGE_DATA_LENGTH    0x2082
+#define PMERR_INV_IMAGE_DIMENSION      0x2083
+#define PMERR_INV_IMAGE_FORMAT         0x2084
+#define PMERR_INV_IN_AREA              0x2085
+#define PMERR_INV_IN_CALLED_SEG                0x2086
+#define PMERR_INV_IN_CURRENT_EDIT_MODE 0x2087
+#define PMERR_INV_IN_DRAW_MODE         0x2088
+#define PMERR_INV_IN_ELEMENT           0x2089
+#define PMERR_INV_IN_IMAGE             0x208a
+#define PMERR_INV_IN_PATH              0x208b
+#define PMERR_INV_IN_RETAIN_MODE       0x208c
+#define PMERR_INV_IN_SEG               0x208d
+#define PMERR_INV_IN_VECTOR_SYMBOL     0x208e
+#define PMERR_INV_INFO_TABLE           0x208f
+#define PMERR_INV_JOURNAL_OPTION       0x2090
+#define PMERR_INV_KERNING_FLAGS                0x2091
+#define PMERR_INV_LENGTH_OR_COUNT      0x2092
+#define PMERR_INV_LINE_END_ATTR                0x2093
+#define PMERR_INV_LINE_JOIN_ATTR       0x2094
+#define PMERR_INV_LINE_TYPE_ATTR       0x2095
+#define PMERR_INV_LINE_WIDTH_ATTR      0x2096
+#define PMERR_INV_LOGICAL_ADDRESS      0x2097
+#define PMERR_INV_MARKER_BOX_ATTR      0x2098
+#define PMERR_INV_MARKER_SET_ATTR      0x2099
+#define PMERR_INV_MARKER_SYMBOL_ATTR   0x209a
+#define PMERR_INV_MATRIX_ELEMENT       0x209b
+#define PMERR_INV_MAX_HITS             0x209c
+#define PMERR_INV_METAFILE             0x209d
+#define PMERR_INV_METAFILE_LENGTH      0x209e
+#define PMERR_INV_METAFILE_OFFSET      0x209f
+#define PMERR_INV_MICROPS_DRAW_CONTROL 0x20a0
+#define PMERR_INV_MICROPS_FUNCTION     0x20a1
+#define PMERR_INV_MICROPS_ORDER                0x20a2
+#define PMERR_INV_MIX_ATTR             0x20a3
+#define PMERR_INV_MODE_FOR_OPEN_DYN    0x20a4
+#define PMERR_INV_MODE_FOR_REOPEN_SEG  0x20a5
+#define PMERR_INV_MODIFY_PATH_MODE     0x20a6
+#define PMERR_INV_MULTIPLIER           0x20a7
+#define PMERR_INV_NESTED_FIGURES       0x20a8
+#define PMERR_INV_OR_INCOMPAT_OPTIONS  0x20a9
+#define PMERR_INV_ORDER_LENGTH         0x20aa
+#define PMERR_INV_ORDERING_PARM                0x20ab
+#define PMERR_INV_OUTSIDE_DRAW_MODE    0x20ac
+#define PMERR_INV_PAGE_VIEWPORT                0x20ad
+#define PMERR_INV_PATH_ID              0x20ae
+#define PMERR_INV_PATH_MODE            0x20af
+#define PMERR_INV_PATTERN_ATTR         0x20b0
+#define PMERR_INV_PATTERN_REF_PT_ATTR  0x20b1
+#define PMERR_INV_PATTERN_SET_ATTR     0x20b2
+#define PMERR_INV_PATTERN_SET_FONT     0x20b3
+#define PMERR_INV_PICK_APERTURE_OPTION 0x20b4
+#define PMERR_INV_PICK_APERTURE_POSN   0x20b5
+#define PMERR_INV_PICK_APERTURE_SIZE   0x20b6
+#define PMERR_INV_PICK_NUMBER          0x20b7
+#define PMERR_INV_PLAY_METAFILE_OPTION 0x20b8
+#define PMERR_INV_PRIMITIVE_TYPE       0x20b9
+#define PMERR_INV_PS_SIZE              0x20ba
+#define PMERR_INV_PUTDATA_FORMAT       0x20bb
+#define PMERR_INV_QUERY_ELEMENT_NO     0x20bc
+#define PMERR_INV_RECT                 0x20bd
+#define PMERR_INV_REGION_CONTROL       0x20be
+#define PMERR_INV_REGION_MIX_MODE      0x20bf
+#define PMERR_INV_REPLACE_MODE_FUNC    0x20c0
+#define PMERR_INV_RESERVED_FIELD       0x20c1
+#define PMERR_INV_RESET_OPTIONS                0x20c2
+#define PMERR_INV_RGBCOLOR             0x20c3
+#define PMERR_INV_SCAN_START           0x20c4
+#define PMERR_INV_SEG_ATTR             0x20c5
+#define PMERR_INV_SEG_ATTR_VALUE       0x20c6
+#define PMERR_INV_SEG_CH_LENGTH                0x20c7
+#define PMERR_INV_SEG_NAME             0x20c8
+#define PMERR_INV_SEG_OFFSET           0x20c9
+#define PMERR_INV_SETID                        0x20ca
+#define PMERR_INV_SETID_TYPE           0x20cb
+#define PMERR_INV_SET_VIEWPORT_OPTION  0x20cc
+#define PMERR_INV_SHARPNESS_PARM       0x20cd
+#define PMERR_INV_SOURCE_OFFSET                0x20ce
+#define PMERR_INV_STOP_DRAW_VALUE      0x20cf
+#define PMERR_INV_TRANSFORM_TYPE       0x20d0
+#define PMERR_INV_USAGE_PARM           0x20d1
+#define PMERR_INV_VIEWING_LIMITS       0x20d2
+#define PMERR_JFILE_BUSY               0x20d3
+#define PMERR_JNL_FUNC_DATA_TOO_LONG   0x20d4
+#define PMERR_KERNING_NOT_SUPPORTED    0x20d5
+#define PMERR_LABEL_NOT_FOUND          0x20d6
+#define PMERR_MATRIX_OVERFLOW          0x20d7
+#define PMERR_METAFILE_INTERNAL_ERROR  0x20d8
+#define PMERR_METAFILE_IN_USE          0x20d9
+#define PMERR_METAFILE_LIMIT_EXCEEDED  0x20da
+#define PMERR_NAME_STACK_FULL          0x20db
+#define PMERR_NOT_CREATED_BY_DEVOPENDC 0x20dc
+#define PMERR_NOT_IN_AREA              0x20dd
+#define PMERR_NOT_IN_DRAW_MODE         0x20de
+#define PMERR_NOT_IN_ELEMENT           0x20df
+#define PMERR_NOT_IN_IMAGE             0x20e0
+#define PMERR_NOT_IN_PATH              0x20e1
+#define PMERR_NOT_IN_RETAIN_MODE       0x20e2
+#define PMERR_NOT_IN_SEG               0x20e3
+#define PMERR_NO_BITMAP_SELECTED       0x20e4
+#define PMERR_NO_CURRENT_ELEMENT       0x20e5
+#define PMERR_NO_CURRENT_SEG           0x20e6
+#define PMERR_NO_METAFILE_RECORD_HANDLE 0x20e7
+#define PMERR_ORDER_TOO_BIG            0x20e8
+#define PMERR_OTHER_SET_ID_REFS                0x20e9
+#define PMERR_OVERRAN_SEG              0x20ea
+#define PMERR_OWN_SET_ID_REFS          0x20eb
+#define PMERR_PATH_INCOMPLETE          0x20ec
+#define PMERR_PATH_LIMIT_EXCEEDED      0x20ed
+#define PMERR_PATH_UNKNOWN             0x20ee
+#define PMERR_PEL_IS_CLIPPED           0x20ef
+#define PMERR_PEL_NOT_AVAILABLE                0x20f0
+#define PMERR_PRIMITIVE_STACK_EMPTY    0x20f1
+#define PMERR_PROLOG_ERROR             0x20f2
+#define PMERR_PROLOG_SEG_ATTR_NOT_SET  0x20f3
+#define PMERR_PS_BUSY                  0x20f4
+#define PMERR_PS_IS_ASSOCIATED         0x20f5
+#define PMERR_RAM_JNL_FILE_TOO_SMALL   0x20f6
+#define PMERR_REALIZE_NOT_SUPPORTED    0x20f7
+#define PMERR_REGION_IS_CLIP_REGION    0x20f8
+#define PMERR_RESOURCE_DEPLETION       0x20f9
+#define PMERR_SEG_AND_REFSEG_ARE_SAME  0x20fa
+#define PMERR_SEG_CALL_RECURSIVE       0x20fb
+#define PMERR_SEG_CALL_STACK_EMPTY     0x20fc
+#define PMERR_SEG_CALL_STACK_FULL      0x20fd
+#define PMERR_SEG_IS_CURRENT           0x20fe
+#define PMERR_SEG_NOT_CHAINED          0x20ff
+#define PMERR_SEG_NOT_FOUND            0x2100
+#define PMERR_SEG_STORE_LIMIT_EXCEEDED 0x2101
+#define PMERR_SETID_IN_USE             0x2102
+#define PMERR_SETID_NOT_FOUND          0x2103
+#define PMERR_STARTDOC_NOT_ISSUED      0x2104
+#define PMERR_STOP_DRAW_OCCURRED       0x2105
+#define PMERR_TOO_MANY_METAFILES_IN_USE 0x2106
+#define PMERR_TRUNCATED_ORDER          0x2107
+#define PMERR_UNCHAINED_SEG_ZERO_INV   0x2108
+#define PMERR_UNSUPPORTED_ATTR         0x2109
+#define PMERR_UNSUPPORTED_ATTR_VALUE   0x210a
+#define PMERR_ENDDOC_NOT_ISSUED                0x210b
+#define PMERR_PS_NOT_ASSOCIATED                0x210c
+#define PMERR_INV_FLOOD_FILL_OPTIONS   0x210d
+#define PMERR_INV_FACENAME             0x210e
+#define PMERR_PALETTE_SELECTED         0x210f
+#define PMERR_NO_PALETTE_SELECTED      0x2110
+#define PMERR_INV_HPAL                 0x2111
+#define PMERR_PALETTE_BUSY             0x2112
+#define PMERR_START_POINT_CLIPPED      0x2113
+#define PMERR_NO_FILL                  0x2114
+#define PMERR_INV_FACENAMEDESC         0x2115
+#define PMERR_INV_BITMAP_DATA          0x2116
+#define PMERR_INV_CHAR_ALIGN_ATTR      0x2117
+#define PMERR_INV_HFONT                        0x2118
+#define PMERR_HFONT_IS_SELECTED                0x2119
+#define PMERR_DRVR_NOT_SUPPORTED       0x2120
+#define PMERR_INV_INKPS_FUNCTION       0x2121
+
+#endif /* INCL_GPIERRORS */
+
+#if defined (INCL_WPERRORS)
+
+#define WPERR_PROTECTED_CLASS          0x1700
+#define WPERR_INVALID_CLASS            0x1701
+#define WPERR_INVALID_SUPERCLASS       0x1702
+#define WPERR_NO_MEMORY                        0x1703
+#define WPERR_SEMAPHORE_ERROR          0x1704
+#define WPERR_BUFFER_TOO_SMALL         0x1705
+#define WPERR_CLSLOADMOD_FAILED                0x1706
+#define WPERR_CLSPROCADDR_FAILED       0x1707
+#define WPERR_OBJWORD_LOCATION         0x1708
+#define WPERR_INVALID_OBJECT           0x1709
+#define WPERR_MEMORY_CLEANUP           0x170a
+#define WPERR_INVALID_MODULE           0x170b
+#define WPERR_INVALID_OLDCLASS         0x170c
+#define WPERR_INVALID_NEWCLASS         0x170d
+#define WPERR_NOT_IMMEDIATE_CHILD      0x170e
+#define WPERR_NOT_WORKPLACE_CLASS      0x170f
+#define WPERR_CANT_REPLACE_METACLS     0x1710
+#define WPERR_INI_FILE_WRITE           0x1711
+#define WPERR_INVALID_FOLDER           0x1712
+#define WPERR_BUFFER_OVERFLOW          0x1713
+#define WPERR_OBJECT_NOT_FOUND         0x1714
+#define WPERR_INVALID_HFIND            0x1715
+#define WPERR_INVALID_COUNT            0x1716
+#define WPERR_INVALID_BUFFER           0x1717
+#define WPERR_ALREADY_EXISTS           0x1718
+#define WPERR_INVALID_FLAGS            0x1719
+#define WPERR_INVALID_OBJECTID         0x1720
+#define WPERR_INVALID_TARGET_OBJECT    0x1721
+
+#endif /* INCL_WPERRORS */
+
+#if defined (INCL_SPLERRORS)
+
+#define PMERR_SPL_DRIVER_ERROR         0x4001
+#define PMERR_SPL_DEVICE_ERROR         0x4002
+#define PMERR_SPL_DEVICE_NOT_INSTALLED 0x4003
+#define PMERR_SPL_QUEUE_ERROR          0x4004
+#define PMERR_SPL_INV_HSPL             0x4005
+#define PMERR_SPL_NO_DISK_SPACE                0x4006
+#define PMERR_SPL_NO_MEMORY            0x4007
+#define PMERR_SPL_PRINT_ABORT          0x4008
+#define PMERR_SPL_SPOOLER_NOT_INSTALLED 0x4009
+#define PMERR_SPL_INV_FORMS_CODE       0x400a
+#define PMERR_SPL_INV_PRIORITY         0x400b
+#define PMERR_SPL_NO_FREE_JOB_ID       0x400c
+#define PMERR_SPL_NO_DATA              0x400d
+#define PMERR_SPL_INV_TOKEN            0x400e
+#define PMERR_SPL_INV_DATATYPE         0x400f
+#define PMERR_SPL_PROCESSOR_ERROR      0x4010
+#define PMERR_SPL_INV_JOB_ID           0x4011
+#define PMERR_SPL_JOB_NOT_PRINTING     0x4012
+#define PMERR_SPL_JOB_PRINTING         0x4013
+#define PMERR_SPL_QUEUE_ALREADY_EXISTS 0x4014
+#define PMERR_SPL_INV_QUEUE_NAME       0x4015
+#define PMERR_SPL_QUEUE_NOT_EMPTY      0x4016
+#define PMERR_SPL_DEVICE_ALREADY_EXISTS 0x4017
+#define PMERR_SPL_DEVICE_LIMIT_REACHED 0x4018
+#define PMERR_SPL_STATUS_STRING_TRUNC  0x4019
+#define PMERR_SPL_INV_LENGTH_OR_COUNT  0x401a
+#define PMERR_SPL_FILE_NOT_FOUND       0x401b
+#define PMERR_SPL_CANNOT_OPEN_FILE     0x401c
+#define PMERR_SPL_DRIVER_NOT_INSTALLED 0x401d
+#define PMERR_SPL_INV_PROCESSOR_DATTYPE 0x401e
+#define PMERR_SPL_INV_DRIVER_DATATYPE  0x401f
+#define PMERR_SPL_PROCESSOR_NOT_INST   0x4020
+#define PMERR_SPL_NO_SUCH_LOG_ADDRESS  0x4021
+#define PMERR_SPL_PRINTER_NOT_FOUND    0x4022
+#define PMERR_SPL_DD_NOT_FOUND         0x4023
+#define PMERR_SPL_QUEUE_NOT_FOUND      0x4024
+#define PMERR_SPL_MANY_QUEUES_ASSOC    0x4025
+#define PMERR_SPL_NO_QUEUES_ASSOCIATED 0x4026
+#define PMERR_SPL_INI_FILE_ERROR       0x4027
+#define PMERR_SPL_NO_DEFAULT_QUEUE     0x4028
+#define PMERR_SPL_NO_CURRENT_FORMS_CODE 0x4029
+#define PMERR_SPL_NOT_AUTHORISED       0x402a
+#define PMERR_SPL_TEMP_NETWORK_ERROR   0x402b
+#define PMERR_SPL_HARD_NETWORK_ERROR   0x402c
+#define PMERR_DEL_NOT_ALLOWED          0x402d
+#define PMERR_CANNOT_DEL_QP_REF                0x402e
+#define PMERR_CANNOT_DEL_QNAME_REF     0x402f
+#define PMERR_CANNOT_DEL_PRINTER_DD_REF 0x4030
+#define PMERR_CANNOT_DEL_PRN_NAME_REF  0x4031
+#define PMERR_CANNOT_DEL_PRN_ADDR_REF  0x4032
+#define PMERR_SPOOLER_QP_NOT_DEFINED   0x4033
+#define PMERR_PRN_NAME_NOT_DEFINED     0x4034
+#define PMERR_PRN_ADDR_NOT_DEFINED     0x4035
+#define PMERR_PRINTER_DD_NOT_DEFINED   0x4036
+#define PMERR_PRINTER_QUEUE_NOT_DEFINED 0x4037
+#define PMERR_PRN_ADDR_IN_USE          0x4038
+#define PMERR_SPL_TOO_MANY_OPEN_FILES  0x4039
+#define PMERR_SPL_CP_NOT_REQD          0x403a
+#define PMERR_SPL_PORT_SHUTDOWN                0x403b
+#define PMERR_SPL_NOT_HANDLED          0x403c
+#define PMERR_SPL_CNV_NOT_INIT         0x403d
+#define PMERR_SPL_INIT_IN_PROGRESS     0x403e
+#define PMERR_SPL_TYPE_NOT_AVAIL       0x403f
+#define PMERR_UNABLE_TO_CLOSE_DEVICE   0x4040
+#define PMERR_SPL_SESSION_TERM         0x4041
+#define PMERR_SPL_NOT_REGISTERED       0x4042
+
+#endif /* INCL_SPLERRORS */
+
+#if defined (INCL_PICERRORS)
+
+#define PMERR_INV_TYPE                 0x5001
+#define PMERR_INV_CONV                 0x5002
+#define PMERR_INV_SEGLEN               0x5003
+#define PMERR_DUP_SEGNAME              0x5004
+#define PMERR_INV_XFORM                        0x5005
+#define PMERR_INV_VIEWLIM              0x5006
+#define PMERR_INV_3DCOORD              0x5007
+#define PMERR_SMB_OVFLOW               0x5008
+#define PMERR_SEG_OVFLOW               0x5009
+#define PMERR_PIC_DUP_FILENAME         0x5010
+
+#endif /* INCL_PICERRORS */
+
+#if defined (INCL_WINERRORS)
+
+#define WINDBG_HWND_NOT_DESTROYED      0x1022
+#define WINDBG_HPTR_NOT_DESTROYED      0x1023
+#define WINDBG_HACCEL_NOT_DESTROYED    0x1024
+#define WINDBG_HENUM_NOT_DESTROYED     0x1025
+#define WINDBG_VISRGN_SEM_BUSY         0x1026
+#define WINDBG_USER_SEM_BUSY           0x1027
+#define WINDBG_DC_CACHE_BUSY           0x1028
+#define WINDBG_HOOK_STILL_INSTALLED    0x1029
+#define WINDBG_WINDOW_STILL_LOCKED     0x102a
+#define WINDBG_UPDATEPS_ASSERTION_FAIL 0x102b
+#define WINDBG_SENDMSG_WITHIN_USER_SEM 0x102c
+#define WINDBG_USER_SEM_NOT_ENTERED    0x102d
+#define WINDBG_PROC_NOT_EXPORTED       0x102e
+#define WINDBG_BAD_SENDMSG_HWND                0x102f
+#define WINDBG_ABNORMAL_EXIT           0x1030
+#define WINDBG_INTERNAL_REVISION       0x1031
+#define WINDBG_INITSYSTEM_FAILED       0x1032
+#define WINDBG_HATOMTBL_NOT_DESTROYED  0x1033
+#define WINDBG_WINDOW_UNLOCK_WAIT      0x1035
+
+#endif /* INCL_WINERRORS */
+
+
+#define WRECT  RECTL
+#define PWRECT PRECTL
+
+#define WPOINT POINTL
+#define PWPOINT PPOINTL
+
+
+typedef LHANDLE HACCEL;
+
+typedef LHANDLE HRGN;
+typedef HRGN *PHRGN;
+
+typedef VOID *MRESULT;
+typedef MRESULT *PMRESULT;
+
+typedef VOID *MPARAM;
+typedef MPARAM *PMPARAM;
+
+typedef LHANDLE HPOINTER;
+
+typedef HMODULE HLIB;
+typedef HLIB *PHLIB;
+
+typedef LONG COLOR;
+typedef COLOR *PCOLOR;
+
+typedef LHANDLE HAB;
+typedef HAB *PHAB;
+
+typedef LHANDLE HPS;
+typedef HPS *PHPS;
+
+typedef LHANDLE HDC;
+typedef HDC *PHDC;
+
+typedef LHANDLE HWND;
+typedef HWND *PHWND;
+
+typedef LHANDLE HMQ;
+
+typedef LHANDLE HPAL;
+typedef HPAL *PHPAL;
+
+typedef LHANDLE HBITMAP;
+typedef HBITMAP *PHBITMAP;
+
+typedef ULONG ERRORID;
+typedef ERRORID *PERRORID;
+
+typedef MRESULT FNWP (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
+typedef FNWP *PFNWP;
+
+#define ERRORIDERROR(errid)            (LOUSHORT (errid))
+#define ERRORIDSEV(errid)              (HIUSHORT (errid))
+#define MAKEERRORID(sev,error)         (ERRORID)(MAKEULONG ((error), (sev)))
+
+typedef struct _POINTL
+{
+  LONG x;
+  LONG y;
+} POINTL;
+typedef POINTL *PPOINTL;
+
+typedef struct _POINTS
+{
+  SHORT x;
+  SHORT y;
+} POINTS;
+typedef POINTS *PPOINTS;
+
+typedef struct _RECTL
+{
+  LONG xLeft;
+  LONG yBottom;
+  LONG xRight;
+  LONG yTop;
+} RECTL;
+typedef RECTL *PRECTL;
+
+#if defined (INCL_WINMESSAGEMGR) || !defined (INCL_NOCOMMON)
+
+#define WM_NULL                                0x0000
+#define WM_CREATE                      0x0001
+#define WM_DESTROY                     0x0002
+#define WM_ENABLE                      0x0004
+#define WM_SHOW                                0x0005
+#define WM_MOVE                                0x0006
+#define WM_SIZE                                0x0007
+#define WM_ADJUSTWINDOWPOS             0x0008
+#define WM_CALCVALIDRECTS              0x0009
+#define WM_SETWINDOWPARAMS             0x000a
+#define WM_QUERYWINDOWPARAMS           0x000b
+#define WM_HITTEST                     0x000c
+#define WM_ACTIVATE                    0x000d
+#define WM_SETFOCUS                    0x000f
+#define WM_SETSELECTION                        0x0010
+#define WM_PPAINT                      0x0011
+#define WM_PSETFOCUS                   0x0012
+#define WM_PSYSCOLORCHANGE             0x0013
+#define WM_PSIZE                       0x0014
+#define WM_PACTIVATE                   0x0015
+#define WM_PCONTROL                    0x0016
+#define WM_COMMAND                     0x0020
+#define WM_SYSCOMMAND                  0x0021
+#define WM_HELP                                0x0022
+#define WM_PAINT                       0x0023
+#define WM_TIMER                       0x0024
+#define WM_SEM1                                0x0025
+#define WM_SEM2                                0x0026
+#define WM_SEM3                                0x0027
+#define WM_SEM4                                0x0028
+#define WM_CLOSE                       0x0029
+#define WM_QUIT                                0x002a
+#define WM_SYSCOLORCHANGE              0x002b
+#define WM_SYSVALUECHANGED             0x002d
+#define WM_APPTERMINATENOTIFY          0x002e
+#define WM_PRESPARAMCHANGED            0x002f
+#define WM_CONTROL                     0x0030
+#define WM_VSCROLL                     0x0031
+#define WM_HSCROLL                     0x0032
+#define WM_INITMENU                    0x0033
+#define WM_MENUSELECT                  0x0034
+#define WM_MENUEND                     0x0035
+#define WM_DRAWITEM                    0x0036
+#define WM_MEASUREITEM                 0x0037
+#define WM_CONTROLPOINTER              0x0038
+#define WM_QUERYDLGCODE                        0x003a
+#define WM_INITDLG                     0x003b
+#define WM_SUBSTITUTESTRING            0x003c
+#define WM_MATCHMNEMONIC               0x003d
+#define WM_SAVEAPPLICATION             0x003e
+
+#define WM_HELPBASE                    0x0f00
+#define WM_HELPTOP                     0x0fff
+
+#define WM_USER                                0x1000
+
+#define CMDSRC_OTHER                   0
+#define CMDSRC_PUSHBUTTON              1
+#define CMDSRC_MENU                    2
+#define CMDSRC_ACCELERATOR             3
+#define CMDSRC_FONTDLG                 4
+#define CMDSRC_FILEDLG                 5
+#define CMDSRC_PRINTDLG                        6
+#define CMDSRC_COLORDLG                        7
+
+#define PM_NOREMOVE                    0x0000
+#define PM_REMOVE                      0x0001
+
+#define RUM_IN                         1
+#define RUM_OUT                                2
+#define RUM_INOUT                      3
+
+#define SMD_DELAYED                    0x0001
+#define SMD_IMMEDIATE                  0x0002
+
+#define SSM_SYNCHRONOUS                        0x0001
+#define SSM_ASYNCHRONOUS               0x0002
+#define SSM_MIXED                      0x0003
+
+#define WLI_NOBUTTONUP                 0x0002
+
+#if defined (INCL_WINTYPES)
+
+#define DTYP_USER                      16384
+
+#define DTYP_CTL_ARRAY                 1
+#define DTYP_CTL_PARRAY                        (-1)
+#define DTYP_CTL_OFFSET                        2
+#define DTYP_CTL_LENGTH                        3
+
+#define DTYP_ACCEL                     28
+#define DTYP_ACCELTABLE                        29
+#define DTYP_ARCPARAMS                 38
+#define DTYP_AREABUNDLE                        139
+#define DTYP_ATOM                      90
+#define DTYP_BITMAPINFO                        60
+#define DTYP_BITMAPINFOHEADER          61
+#define DTYP_BITMAPINFO2               170
+#define DTYP_BITMAPINFOHEADER2         171
+#define DTYP_BIT16                     20
+#define DTYP_BIT32                     21
+#define DTYP_BIT8                      19
+#define DTYP_BOOL                      18
+#define DTYP_BTNCDATA                  35
+#define DTYP_BYTE                      13
+#define DTYP_CATCHBUF                  141
+#define DTYP_CHAR                      15
+#define DTYP_CHARBUNDLE                        135
+#define DTYP_CLASSINFO                 95
+#define DTYP_COUNT2                    93
+#define DTYP_COUNT2B                   70
+#define DTYP_COUNT2CH                  82
+#define DTYP_COUNT4                    152
+#define DTYP_COUNT4B                   42
+#define DTYP_CPID                      57
+#define DTYP_CREATESTRUCT              98
+#define DTYP_CURSORINFO                        34
+#define DTYP_DEVOPENSTRUC              124
+#define DTYP_DLGTEMPLATE               96
+#define DTYP_DLGTITEM                  97
+#define DTYP_ENTRYFDATA                        127
+#define DTYP_ERRORID                   45
+#define DTYP_FATTRS                    75
+#define DTYP_FFDESCS                   142
+#define DTYP_FIXED                     99
+#define DTYP_FONTMETRICS               74
+#define DTYP_FRAMECDATA                        144
+#define DTYP_GRADIENTL                 48
+#define DTYP_HAB                       10
+#define DTYP_HACCEL                    30
+#define DTYP_HAPP                      146
+#define DTYP_HATOMTBL                  91
+#define DTYP_HBITMAP                   62
+#define DTYP_HCINFO                    46
+#define DTYP_HDC                       132
+#define DTYP_HENUM                     117
+#define DTYP_HHEAP                     109
+#define DTYP_HINI                      53
+#define DTYP_HLIB                      147
+#define DTYP_HMF                       85
+#define DTYP_HMQ                       86
+#define DTYP_HPOINTER                  106
+#define DTYP_HPROGRAM                  131
+#define DTYP_HPS                       12
+#define DTYP_HRGN                      116
+#define DTYP_HSEM                      140
+#define DTYP_HSPL                      32
+#define DTYP_HSWITCH                   66
+#define DTYP_HVPS                      58
+#define DTYP_HWND                      11
+#define DTYP_IDENTITY                  133
+#define DTYP_IDENTITY4                 169
+#define DTYP_IMAGEBUNDLE               136
+#define DTYP_INDEX2                    81
+#define DTYP_IPT                       155
+#define DTYP_KERNINGPAIRS              118
+#define DTYP_LENGTH2                   68
+#define DTYP_LENGTH4                   69
+#define DTYP_LINEBUNDLE                        137
+#define DTYP_LONG                      25
+#define DTYP_MARKERBUNDLE              138
+#define DTYP_MATRIXLF                  113
+#define DTYP_MLECTLDATA                        161
+#define DTYP_MLEMARGSTRUCT             157
+#define DTYP_MLEOVERFLOW               158
+#define DTYP_OFFSET2B                  112
+#define DTYP_OWNERITEM                 154
+#define DTYP_PID                       92
+#define DTYP_PIX                       156
+#define DTYP_POINTERINFO               105
+#define DTYP_POINTL                    77
+#define DTYP_PROGCATEGORY              129
+#define DTYP_PROGRAMENTRY              128
+#define DTYP_PROGTYPE                  130
+#define DTYP_PROPERTY2                 88
+#define DTYP_PROPERTY4                 89
+#define DTYP_QMSG                      87
+#define DTYP_RECTL                     121
+#define DTYP_RESID                     125
+#define DTYP_RGB                       111
+#define DTYP_RGNRECT                   115
+#define DTYP_SBCDATA                   159
+#define DTYP_SEGOFF                    126
+#define DTYP_SHORT                     23
+#define DTYP_SIZEF                     101
+#define DTYP_SIZEL                     102
+#define DTYP_STRL                      17
+#define DTYP_STR16                     40
+#define DTYP_STR32                     37
+#define DTYP_STR64                     47
+#define DTYP_STR8                      33
+#define DTYP_SWBLOCK                   63
+#define DTYP_SWCNTRL                   64
+#define DTYP_SWENTRY                   65
+#define DTYP_SWP                       31
+#define DTYP_TID                       104
+#define DTYP_TIME                      107
+#define DTYP_TRACKINFO                 73
+#define DTYP_UCHAR                     22
+#define DTYP_ULONG                     26
+#define DTYP_USERBUTTON                        36
+#define DTYP_USHORT                    24
+#define DTYP_WIDTH4                    108
+#define DTYP_WNDPARAMS                 83
+#define DTYP_WNDPROC                   84
+#define DTYP_WPOINT                    59
+#define DTYP_WRECT                     55
+#define DTYP_XYWINSIZE                 52
+
+#define DTYP_PACCEL                    (-28)
+#define DTYP_PACCELTABLE               (-29)
+#define DTYP_PARCPARAMS                        (-38)
+#define DTYP_PAREABUNDLE               (-139)
+#define DTYP_PATOM                     (-90)
+#define DTYP_PBITMAPINFO               (-60)
+#define DTYP_PBITMAPINFOHEADER         (-61)
+#define DTYP_PBITMAPINFO2              (-170)
+#define DTYP_PBITMAPINFOHEADER2                (-171)
+#define DTYP_PBIT16                    (-20)
+#define DTYP_PBIT32                    (-21)
+#define DTYP_PBIT8                     (-19)
+#define DTYP_PBOOL                     (-18)
+#define DTYP_PBTNCDATA                 (-35)
+#define DTYP_PBYTE                     (-13)
+#define DTYP_PCATCHBUF                 (-141)
+#define DTYP_PCHAR                     (-15)
+#define DTYP_PCHARBUNDLE               (-135)
+#define DTYP_PCLASSINFO                        (-95)
+#define DTYP_PCOUNT2                   (-93)
+#define DTYP_PCOUNT2B                  (-70)
+#define DTYP_PCOUNT2CH                 (-82)
+#define DTYP_PCOUNT4                   (-152)
+#define DTYP_PCOUNT4B                  (-42)
+#define DTYP_PCPID                     (-57)
+#define DTYP_PCREATESTRUCT             (-98)
+#define DTYP_PCURSORINFO               (-34)
+#define DTYP_PDEVOPENSTRUC             (-124)
+#define DTYP_PDLGTEMPLATE              (-96)
+#define DTYP_PDLGTITEM                 (-97)
+#define DTYP_PENTRYFDATA               (-127)
+#define DTYP_PERRORID                  (-45)
+#define DTYP_PFATTRS                   (-75)
+#define DTYP_PFFDESCS                  (-142)
+#define DTYP_PFIXED                    (-99)
+#define DTYP_PFONTMETRICS              (-74)
+#define DTYP_PFRAMECDATA               (-144)
+#define DTYP_PGRADIENTL                        (-48)
+#define DTYP_PHAB                      (-10)
+#define DTYP_PHACCEL                   (-30)
+#define DTYP_PHAPP                     (-146)
+#define DTYP_PHATOMTBL                 (-91)
+#define DTYP_PHBITMAP                  (-62)
+#define DTYP_PHCINFO                   (-46)
+#define DTYP_PHDC                      (-132)
+#define DTYP_PHENUM                    (-117)
+#define DTYP_PHHEAP                    (-109)
+#define DTYP_PHINI                     (-53)
+#define DTYP_PHLIB                     (-147)
+#define DTYP_PHMF                      (-85)
+#define DTYP_PHMQ                      (-86)
+#define DTYP_PHPOINTER                 (-106)
+#define DTYP_PHPROGRAM                 (-131)
+#define DTYP_PHPS                      (-12)
+#define DTYP_PHRGN                     (-116)
+#define DTYP_PHSEM                     (-140)
+#define DTYP_PHSPL                     (-32)
+#define DTYP_PHSWITCH                  (-66)
+#define DTYP_PHVPS                     (-58)
+#define DTYP_PHWND                     (-11)
+#define DTYP_PIDENTITY                 (-133)
+#define DTYP_PIDENTITY4                        (-169)
+#define DTYP_PIMAGEBUNDLE              (-136)
+#define DTYP_PINDEX2                   (-81)
+#define DTYP_PIPT                      (-155)
+#define DTYP_PKERNINGPAIRS             (-118)
+#define DTYP_PLENGTH2                  (-68)
+#define DTYP_PLENGTH4                  (-69)
+#define DTYP_PLINEBUNDLE               (-137)
+#define DTYP_PLONG                     (-25)
+#define DTYP_PMARKERBUNDLE             (-138)
+#define DTYP_PMATRIXLF                 (-113)
+#define DTYP_PMLECTLDATA               (-161)
+#define DTYP_PMLEMARGSTRUCT            (-157)
+#define DTYP_PMLEOVERFLOW              (-158)
+#define DTYP_POFFSET2B                 (-112)
+#define DTYP_POWNERITEM                        (-154)
+#define DTYP_PPID                      (-92)
+#define DTYP_PPIX                      (-156)
+#define DTYP_PPOINTERINFO              (-105)
+#define DTYP_PPOINTL                   (-77)
+#define DTYP_PPROGCATEGORY             (-129)
+#define DTYP_PPROGRAMENTRY             (-128)
+#define DTYP_PPROGTYPE                 (-130)
+#define DTYP_PPROPERTY2                        (-88)
+#define DTYP_PPROPERTY4                        (-89)
+#define DTYP_PQMSG                     (-87)
+#define DTYP_PRECTL                    (-121)
+#define DTYP_PRESID                    (-125)
+#define DTYP_PRGB                      (-111)
+#define DTYP_PRGNRECT                  (-115)
+#define DTYP_PSBCDATA                  (-159)
+#define DTYP_PSEGOFF                   (-126)
+#define DTYP_PSHORT                    (-23)
+#define DTYP_PSIZEF                    (-101)
+#define DTYP_PSIZEL                    (-102)
+#define DTYP_PSTRL                     (-17)
+#define DTYP_PSTR16                    (-40)
+#define DTYP_PSTR32                    (-37)
+#define DTYP_PSTR64                    (-47)
+#define DTYP_PSTR8                     (-33)
+#define DTYP_PSWBLOCK                  (-63)
+#define DTYP_PSWCNTRL                  (-64)
+#define DTYP_PSWENTRY                  (-65)
+#define DTYP_PSWP                      (-31)
+#define DTYP_PTID                      (-104)
+#define DTYP_PTIME                     (-107)
+#define DTYP_PTRACKINFO                        (-73)
+#define DTYP_PUCHAR                    (-22)
+#define DTYP_PULONG                    (-26)
+#define DTYP_PUSERBUTTON               (-36)
+#define DTYP_PUSHORT                   (-24)
+#define DTYP_PWIDTH4                   (-108)
+#define DTYP_PWNDPARAMS                        (-83)
+#define DTYP_PWNDPROC                  (-84)
+#define DTYP_PWPOINT                   (-59)
+#define DTYP_PWRECT                    (-55)
+#define DTYP_PXYWINSIZE                        (-52)
+
+#endif /* INCL_WINTYPES */
+
+typedef struct _QMSG
+{
+  HWND  hwnd;
+  ULONG         msg;
+  MPARAM mp1;
+  MPARAM mp2;
+  ULONG         time;
+  POINTL ptl;
+  ULONG         reserved;
+} QMSG;
+typedef QMSG *PQMSG;
+
+typedef struct _COMMANDMSG
+{
+  USHORT cmd;
+  USHORT unused;
+  USHORT source;
+  USHORT fMouse;
+} CMDMSG;
+typedef CMDMSG *PCMDMSG;
+
+typedef struct _MQINFO
+{
+  ULONG cb;
+  PID  pid;
+  TID  tid;
+  ULONG cmsgs;
+  PVOID pReserved;
+} MQINFO;
+typedef MQINFO *PMQINFO;
+
+#define COMMANDMSG(pmsg)       ((PCMDMSG)((PBYTE)pmsg + sizeof (ULONG)))
+
+
+BOOL WinCancelShutdown (HMQ hmq, BOOL fCancelAlways);
+HMQ WinCreateMsgQueue (HAB hab, LONG cmsg);
+BOOL WinDestroyMsgQueue (HMQ hmq);
+MRESULT WinDispatchMsg (HAB hab, PQMSG pqmsg);
+BOOL WinGetMsg (HAB hab, PQMSG pqmsg, HWND hwndFilter, ULONG msgFilterFirst,
+    ULONG msgFilterLast);
+BOOL WinLockInput (HMQ hmq, ULONG fLock);
+BOOL WinPeekMsg (HAB hab, PQMSG pqmsg, HWND hwndFilter, ULONG msgFilterFirst,
+    ULONG msgFilterLast, ULONG fl);
+BOOL WinPostMsg (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
+HMQ WinQueueFromID (HAB hab, PID pid, TID tid);
+BOOL WinQueryQueueInfo (HMQ hmq, PMQINFO pmqi, ULONG cbCopy);
+HMQ WinQuerySendMsg (HAB hab, HMQ hmqSender, HMQ hmqReceiver, PQMSG pqmsg);
+BOOL WinRegisterUserDatatype (HAB hab, LONG datatype, LONG count, PLONG types);
+BOOL WinRegisterUserMsg (HAB hab, ULONG msgid, LONG datatype1, LONG dir1,
+    LONG datatype2, LONG dir2, LONG datatyper);
+BOOL WinReplyMsg (HAB hab, HMQ hmqSender, HMQ hmqReceiver, MRESULT mresult);
+MRESULT WinSendMsg (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
+BOOL WinSetMsgMode (HAB hab, PCSZ classname, LONG control);
+BOOL WinSetSynchroMode (HAB hab, LONG mode);
+BOOL WinThreadAssocQueue (HAB hab, HMQ hmq);
+BOOL WinWakeThread (HMQ hmq);
+
+#endif /* INCL_WINMESSAGEMGR || !INCL_NOCOMMON */
+
+typedef struct _SWP
+{
+  ULONG fl;
+  LONG cy;
+  LONG cx;
+  LONG y;
+  LONG x;
+  HWND hwndInsertBehind;
+  HWND hwnd;
+  ULONG ulReserved1;
+  ULONG ulReserved2;
+} SWP;
+typedef SWP *PSWP;
+
+typedef struct _ICONINFO
+{
+   ULONG   cb;
+   ULONG   fFormat;
+   PSZ    pszFileName;
+   HMODULE hmod;
+   ULONG   resid;
+   ULONG   cbIconData;
+   PVOID   pIconData;
+} ICONINFO;
+typedef ICONINFO *PICONINFO;
+
+
+#define MPVOID                 ((MPARAM)0)
+
+#define MPFROMP(x)             ((MPARAM)((ULONG)(x)))
+#define MPFROMHWND(x)          ((MPARAM)(HWND)(x))
+#define MPFROMCHAR(x)          ((MPARAM)(ULONG)(USHORT)(x))
+#define MPFROMSHORT(x)         ((MPARAM)(ULONG)(USHORT)(x))
+#define MPFROM2SHORT(x1,x2)    ((MPARAM)MAKELONG (x1, x2))
+#define MPFROMSH2CH(s,c1,c2)   ((MPARAM)MAKELONG (s, MAKESHORT (c1, c2)))
+#define MPFROMLONG(x)          ((MPARAM)(ULONG)(x))
+
+#define PVOIDFROMMP(mp)                ((PVOID)(mp))
+#define HWNDFROMMP(mp)         ((HWND)(mp))
+#define CHAR1FROMMP(mp)                ((UCHAR)(ULONG)(mp))
+#define CHAR2FROMMP(mp)                ((UCHAR)((ULONG)mp >> 8))
+#define CHAR3FROMMP(mp)                ((UCHAR)((ULONG)mp >> 16))
+#define CHAR4FROMMP(mp)                ((UCHAR)((ULONG)mp >> 24))
+#define SHORT1FROMMP(mp)       ((USHORT)(ULONG)(mp))
+#define SHORT2FROMMP(mp)       ((USHORT)((ULONG)mp >> 16))
+#define LONGFROMMP(mp)         ((ULONG)(mp))
+
+#define MRFROMP(x)             ((MRESULT)(PVOID)(x))
+#define MRFROMSHORT(x)         ((MRESULT)(ULONG)(USHORT)(x))
+#define MRFROM2SHORT(x1,x2)    ((MRESULT)MAKELONG (x1, x2))
+#define MRFROMLONG(x)          ((MRESULT)(ULONG)(x))
+
+#define PVOIDFROMMR(mr)                ((VOID *)(mr))
+#define SHORT1FROMMR(mr)       ((USHORT)((ULONG)mr))
+#define SHORT2FROMMR(mr)       ((USHORT)((ULONG)mr >> 16))
+#define LONGFROMMR(mr)         ((ULONG)(mr))
+
+
+HWND WinCreateWindow (HWND hwndParent, PCSZ pszClass, PCSZ pszName,
+    ULONG flStyle, LONG x, LONG y, LONG cx, LONG cy, HWND hwndOwner,
+    HWND hwndInsertBehind, ULONG id, PVOID pCtlData, PVOID pPresParams);
+BOOL WinDrawBitmap (HPS hpsDst, HBITMAP hbm, __const__ RECTL *pwrcSrc,
+    __const__ POINTL *pptlDst, LONG clrFore, LONG clrBack, ULONG fl);
+BOOL WinDrawBorder (HPS hps, __const__ RECTL *prcl, LONG cx, LONG cy,
+    LONG clrFore, LONG clrBack, ULONG flCmd);
+LONG WinDrawText (HPS hps, LONG cchText, PCCH lpchText, PRECTL prcl,
+    LONG clrFore, LONG clrBack, ULONG flCmd);
+BOOL WinEnableWindow (HWND hwnd, BOOL fEnable);
+BOOL WinEnableWindowUpdate (HWND hwnd, BOOL fEnable);
+BOOL WinInvalidateRect (HWND hwnd, __const__ RECTL *prcl,
+    BOOL fIncludeChildren);
+BOOL WinInvalidateRegion (HWND hwnd, HRGN hrgn, BOOL fIncludeChildren);
+BOOL WinInvertRect (HPS hps, __const__ RECTL *prcl);
+BOOL WinIsChild (HWND hwnd, HWND hwndParent);
+BOOL WinIsWindow (HAB hab, HWND hwnd);
+BOOL WinIsWindowEnabled (HWND hwnd);
+BOOL WinIsWindowVisible (HWND hwnd);
+LONG WinLoadMessage (HAB hab, HMODULE hmod, ULONG id, LONG cchMax,
+    PSZ pchBuffer);
+LONG WinLoadString (HAB hab, HMODULE hmod, ULONG id, LONG cchMax,
+    PSZ pchBuffer);
+LONG WinMultWindowFromIDs (HWND hwndParent, PHWND prghwnd, ULONG idFirst,
+    ULONG idLast);
+HWND WinQueryDesktopWindow (HAB hab, HDC hdc);
+HWND WinQueryObjectWindow (HWND hwndDesktop);
+HPOINTER WinQueryPointer (HWND hwndDesktop);
+HWND WinQueryWindow (HWND hwnd, LONG cmd);
+BOOL WinQueryWindowPos (HWND hwnd, PSWP pswp);
+BOOL WinQueryWindowProcess (HWND hwnd, PPID ppid, PTID ptid);
+LONG WinQueryWindowText (HWND hwnd, LONG cchBufferMax, PCH pchBuffer);
+LONG WinQueryWindowTextLength (HWND hwnd);
+BOOL WinSetMultWindowPos (HAB hab, __const__ SWP *pswp, ULONG cswp);
+BOOL WinSetOwner (HWND hwnd, HWND hwndNewOwner);
+BOOL WinSetParent (HWND hwnd, HWND hwndNewParent, BOOL fRedraw);
+BOOL WinSetWindowPos (HWND hwnd, HWND hwndInsertBehind, LONG x, LONG y,
+    LONG cx, LONG cy, ULONG fl);
+BOOL WinSetWindowText (HWND hwnd, PCSZ pszText);
+BOOL WinUpdateWindow (HWND hwnd);
+HWND WinWindowFromID (HWND hwndParent, ULONG id);
+
+
+#if defined (INCL_WINFRAMEMGR) || !defined (INCL_NOCOMMON)
+
+#define FCF_TITLEBAR                   0x00000001
+#define FCF_SYSMENU                    0x00000002
+#define FCF_MENU                       0x00000004
+#define FCF_SIZEBORDER                 0x00000008
+#define FCF_MINBUTTON                  0x00000010
+#define FCF_MAXBUTTON                  0x00000020
+#define FCF_MINMAX                     (FCF_MINBUTTON|FCF_MAXBUTTON)
+#define FCF_VERTSCROLL                 0x00000040
+#define FCF_HORZSCROLL                 0x00000080
+#define FCF_DLGBORDER                  0x00000100
+#define FCF_BORDER                     0x00000200
+#define FCF_SHELLPOSITION              0x00000400
+#define FCF_TASKLIST                   0x00000800
+#define FCF_NOBYTEALIGN                        0x00001000
+#define FCF_NOMOVEWITHOWNER            0x00002000
+#define FCF_ICON                       0x00004000
+#define FCF_ACCELTABLE                 0x00008000
+#define FCF_SYSMODAL                   0x00010000
+#define FCF_SCREENALIGN                        0x00020000
+#define FCF_MOUSEALIGN                 0x00040000
+#define FCF_PALETTE_NORMAL             0x00080000
+#define FCF_PALETTE_HELP               0x00100000
+#define FCF_PALETTE_POPUPODD           0x00200000
+#define FCF_PALETTE_POPUPEVEN          0x00400000
+#define FCF_HIDEBUTTON                 0x01000000
+#define FCF_HIDEMAX                    0x01000020
+#define FCF_AUTOICON                   0x40000000
+#if defined (INCL_NLS)
+#define FCF_DBE_APPSTAT                        0x80000000
+#endif /* INCL_NLS */
+
+#define FCF_STANDARD                   0x0000cc3f
+
+#define FF_FLASHWINDOW                 0x0001
+#define FF_ACTIVE                      0x0002
+#define FF_FLASHHILITE                 0x0004
+#define FF_OWNERHIDDEN                 0x0008
+#define FF_DLGDISMISSED                        0x0010
+#define FF_OWNERDISABLED               0x0020
+#define FF_SELECTED                    0x0040
+#define FF_NOACTIVATESWP               0x0080
+#define FF_DIALOGBOX                   0x0100
+
+#define FS_ICON                                0x00000001
+#define FS_ACCELTABLE                  0x00000002
+#define FS_SHELLPOSITION               0x00000004
+#define FS_TASKLIST                    0x00000008
+#define FS_NOBYTEALIGN                 0x00000010
+#define FS_NOMOVEWITHOWNER             0x00000020
+#define FS_SYSMODAL                    0x00000040
+#define FS_DLGBORDER                   0x00000080
+#define FS_BORDER                      0x00000100
+#define FS_SCREENALIGN                 0x00000200
+#define FS_MOUSEALIGN                  0x00000400
+#define FS_SIZEBORDER                  0x00000800
+#define FS_AUTOICON                    0x00001000
+#if defined (INCL_NLS)
+#define FS_DBE_APPSTAT                 0x00008000
+#endif /* INCL_NLS */
+
+#define FS_STANDARD                    0x0000000f
+
+typedef struct _FRAMECDATA
+{
+  USHORT cb;
+  ULONG         flCreateFlags;
+  USHORT hmodResources;
+  USHORT idResources;
+} FRAMECDATA;
+typedef FRAMECDATA *PFRAMECDATA;
+
+HWND WinCreateStdWindow (HWND hwndParent, ULONG flStyle,
+    PULONG pflCreateFlags, PCSZ pszClientClass, PCSZ pszTitle,
+    ULONG styleClient, HMODULE hmod, ULONG idResources, PHWND phwndClient);
+
+#endif /* INCL_WINFRAMEMGR || !INCL_NOCOMMON */
+
+#if defined (INCL_WINFRAMEMGR)
+
+#define WM_FLASHWINDOW                 0x0040
+#define WM_FORMATFRAME                 0x0041
+#define WM_UPDATEFRAME                 0x0042
+#define WM_FOCUSCHANGE                 0x0043
+#define WM_SETBORDERSIZE               0x0044
+#define WM_TRACKFRAME                  0x0045
+#define WM_MINMAXFRAME                 0x0046
+#define WM_SETICON                     0x0047
+#define WM_QUERYICON                   0x0048
+#define WM_SETACCELTABLE               0x0049
+#define WM_QUERYACCELTABLE             0x004a
+#define WM_TRANSLATEACCEL              0x004b
+#define WM_QUERYTRACKINFO              0x004c
+#define WM_QUERYBORDERSIZE             0x004d
+#define WM_NEXTMENU                    0x004e
+#define WM_ERASEBACKGROUND             0x004f
+#define WM_QUERYFRAMEINFO              0x0050
+#define WM_QUERYFOCUSCHAIN             0x0051
+#define WM_OWNERPOSCHANGE              0x0052
+#define WM_CALCFRAMERECT               0x0053
+#define WM_WINDOWPOSCHANGED            0x0055
+#define WM_ADJUSTFRAMEPOS              0x0056
+#define WM_QUERYFRAMECTLCOUNT          0x0059
+#define WM_QUERYHELPINFO               0x005b
+#define WM_SETHELPINFO                 0x005c
+#define WM_ERROR                       0x005d
+#define WM_REALIZEPALETTE              0x005e
+
+#define FI_FRAME                       0x00000001
+#define FI_OWNERHIDE                   0x00000002
+#define FI_ACTIVATEOK                  0x00000004
+#define FI_NOMOVEWITHOWNER             0x00000008
+
+#define FID_SYSMENU                    0x8002
+#define FID_TITLEBAR                   0x8003
+#define FID_MINMAX                     0x8004
+#define FID_MENU                       0x8005
+#define FID_VERTSCROLL                 0x8006
+#define FID_HORZSCROLL                 0x8007
+#define FID_CLIENT                     0x8008
+#define FID_DBE_APPSTAT                        0x8010
+#define FID_DBE_KBDSTAT                        0x8011
+#define FID_DBE_PECIC                  0x8012
+#define FID_DBE_KKPOPUP                        0x8013
+
+#define SC_SIZE                                0x8000
+#define SC_MOVE                                0x8001
+#define SC_MINIMIZE                    0x8002
+#define SC_MAXIMIZE                    0x8003
+#define SC_CLOSE                       0x8004
+#define SC_NEXT                                0x8005
+#define SC_APPMENU                     0x8006
+#define SC_SYSMENU                     0x8007
+#define SC_RESTORE                     0x8008
+#define SC_NEXTFRAME                   0x8009
+#define SC_NEXTWINDOW                  0x8010
+#define SC_TASKMANAGER                 0x8011
+#define SC_HELPKEYS                    0x8012
+#define SC_HELPINDEX                   0x8013
+#define SC_HELPEXTENDED                        0x8014
+#define SC_SWITCHPANELIDS              0x8015
+#define SC_DBE_FIRST                   0x8018
+#define SC_DBE_LAST                    0x801f
+#define SC_BEGINDRAG                   0x8020
+#define SC_ENDDRAG                     0x8021
+#define SC_SELECT                      0x8022
+#define SC_OPEN                                0x8023
+#define SC_CONTEXTMENU                 0x8024
+#define SC_CONTEXTHELP                 0x8025
+#define SC_TEXTEDIT                    0x8026
+#define SC_BEGINSELECT                 0x8027
+#define SC_ENDSELECT                   0x8028
+#define SC_WINDOW                      0x8029
+#define SC_HIDE                                0x802a
+
+typedef LHANDLE HSAVEWP;
+
+BOOL WinCalcFrameRect (HWND hwndFrame, PRECTL prcl, BOOL fClient);
+BOOL WinCreateFrameControls (HWND hwndFrame, PFRAMECDATA pfcdata,
+    PCSZ pszTitle);
+BOOL WinFlashWindow (HWND hwndFrame, BOOL fFlash);
+BOOL WinGetMaxPosition (HWND hwnd, PSWP pswp);
+BOOL WinGetMinPosition (HWND hwnd, PSWP pswp, __const__ POINTL *pptl);
+BOOL WinSaveWindowPos (HSAVEWP hsvwp, PSWP pswp, ULONG cswp);
+
+#endif /* INCL_WINFRAMEMGR */
+
+
+#if defined (INCL_WINWINDOWMGR) || !defined (INCL_NOCOMMON)
+
+#define PSF_LOCKWINDOWUPDATE           0x0001
+#define PSF_CLIPUPWARDS                        0x0002
+#define PSF_CLIPDOWNWARDS              0x0004
+#define PSF_CLIPSIBLINGS               0x0008
+#define PSF_CLIPCHILDREN               0x0010
+#define PSF_PARENTCLIP                 0x0020
+
+#define QV_OS2                         0x0000
+#define QV_CMS                         0x0001
+#define QV_TSO                         0x0002
+#define QV_TSOBATCH                    0x0003
+#define QV_OS400                       0x0004
+
+#define SW_SCROLLCHILDREN              0x0001
+#define SW_INVALIDATERGN               0x0002
+
+
+typedef struct _QVERSDATA
+{
+  USHORT environment;
+  USHORT version;
+} QVERSDATA;
+typedef QVERSDATA *PQVERSDATA;
+
+
+HPS WinBeginPaint (HWND hwnd, HPS hps, PRECTL prclPaint);
+MRESULT WinDefWindowProc (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
+BOOL WinDestroyWindow (HWND hwnd);
+BOOL WinEndPaint (HPS hps);
+BOOL WinFillRect (HPS hps, __const__ RECTL *prcl, LONG lColor);
+HPS WinGetClipPS (HWND hwnd, HWND hwndClip, ULONG fl);
+HPS WinGetPS (HWND hwnd);
+HAB WinInitialize (ULONG fsOptions);
+BOOL WinIsWindowShowing (HWND hwnd);
+HDC WinOpenWindowDC (HWND hwnd);
+HAB WinQueryAnchorBlock (HWND hwnd);
+ULONG WinQueryVersion (HAB hab);
+BOOL WinQueryWindowRect (HWND hwnd, PRECTL prclDest);
+BOOL WinRegisterClass (HAB hab, PCSZ pszClassName, PFNWP pfnWndProc,
+    ULONG flStyle, ULONG cbWindowData);
+BOOL WinReleasePS (HPS hps);
+LONG WinScrollWindow (HWND hwnd, LONG dx, LONG dy, __const__ RECTL *prclScroll,
+    __const__ RECTL *prclClip, HRGN hrgnUpdate, PRECTL prclUpdate,
+    ULONG rgfsw);
+BOOL WinSetActiveWindow (HWND hwndDesktop, HWND hwnd);
+BOOL WinShowWindow (HWND hwnd, BOOL fShow);
+BOOL WinTerminate (HAB hab);
+
+#endif /* INCL_WINWINDOWMGR || !INCL_NOCOMMON */
+
+#if defined (INCL_WINWINDOWMGR)
+
+#define WM_QUERYCONVERTPOS             0x00b0
+
+#define QCP_CONVERT                    0x0001
+#define QCP_NOCONVERT                  0x0000
+
+#define QWS_USER                       0
+#define QWS_ID                         (-1)
+#define QWS_MIN                                (-1)
+
+#define QWL_USER                       0
+#define QWL_STYLE                      (-2)
+#define QWP_PFNWP                      (-3)
+#define QWL_HMQ                                (-4)
+#define QWL_RESERVED                   (-5)
+#define QWL_PENDATA                    (-7)
+#define QWL_BD_ATTR                    (-9)
+#define QWL_BD_STAT                    (-10)
+#define QWL_KBDLAYER                   (-11)
+#define QWL_MIN                                (-11)
+
+#define QWL_HHEAP                      0x0004
+#define QWL_HWNDFOCUSSAVE              0x0018
+#define QWL_DEFBUTTON                  0x0040
+#define QWL_PSSCBLK                    0x0048
+#define QWL_PFEPBLK                    0x004c
+#define QWL_PSTATBLK                   0x0050
+
+#define QWS_FLAGS                      0x0008
+#define QWS_RESULT                     0x000a
+#define QWS_XRESTORE                   0x000c
+#define QWS_YRESTORE                   0x000e
+#define QWS_CXRESTORE                  0x0010
+#define QWS_CYRESTORE                  0x0012
+#define QWS_XMINIMIZE                  0x0014
+#define QWS_YMINIMIZE                  0x0016
+
+
+typedef struct _CLASSINFO
+{
+  ULONG flClassStyle;
+  PFNWP pfnWindowProc;
+  ULONG cbWindowData;
+} CLASSINFO;
+typedef CLASSINFO *PCLASSINFO;
+
+typedef struct _CREATESTRUCT
+{
+  PVOID pPresParams;
+  PVOID pCtlData;
+  ULONG id;
+  HWND hwndInsertBehind;
+  HWND hwndOwner;
+  LONG cy;
+  LONG cx;
+  LONG y;
+  LONG x;
+  ULONG flStyle;
+  PSZ  pszText;
+  PSZ  pszClass;
+  HWND hwndParent;
+} CREATESTRUCT;
+typedef CREATESTRUCT *PCREATESTRUCT;
+
+typedef LHANDLE HENUM;
+
+
+HENUM WinBeginEnumWindows (HWND hwnd);
+BOOL WinEndEnumWindows (HENUM henum);
+LONG WinExcludeUpdateRegion (HPS hps, HWND hwnd);
+HWND WinGetNextWindow (HENUM henum);
+HPS WinGetScreenPS (HWND hwndDesktop);
+BOOL WinIsThreadActive (HAB hab);
+BOOL WinLockVisRegions (HWND hwndDesktop, BOOL fLock);
+BOOL WinLockWindowUpdate (HWND hwndDesktop, HWND hwndLockUpdate);
+BOOL WinMapWindowPoints (HWND hwndFrom, HWND hwndTo, PPOINTL prgptl,
+    LONG cwpt);
+HWND WinQueryActiveWindow (HWND hwndDesktop);
+BOOL WinQueryClassInfo (HAB hab, PCSZ pszClassName, PCLASSINFO pClassInfo);
+LONG WinQueryClassName (HWND hwnd, LONG cchMax, PCH pch);
+BOOL WinQueryUpdateRect (HWND hwnd, PRECTL prcl);
+LONG WinQueryUpdateRegion (HWND hwnd, HRGN hrgn);
+HWND WinQuerySysModalWindow (HWND hwndDesktop);
+HDC WinQueryWindowDC (HWND hwnd);
+PVOID WinQueryWindowPtr (HWND hwnd, LONG index);
+ULONG WinQueryWindowULong (HWND hwnd, LONG index);
+USHORT WinQueryWindowUShort (HWND hwnd, LONG index);
+BOOL WinSetSysModalWindow (HWND hwndDesktop, HWND hwnd);
+BOOL WinSetWindowBits (HWND hwnd, LONG index, ULONG flData, ULONG flMask);
+BOOL WinSetWindowPtr (HWND hwnd, LONG index, PVOID p);
+BOOL WinSetWindowULong (HWND hwnd, LONG index, ULONG ul);
+BOOL WinSetWindowUShort (HWND hwnd, LONG index, USHORT us);
+PFNWP WinSubclassWindow (HWND hwnd, PFNWP pfnwp);
+BOOL WinValidateRect (HWND hwnd, __const__ RECTL *prcl, BOOL fIncludeChildren);
+BOOL WinValidateRegion (HWND hwnd, HRGN hrgn, BOOL fIncludeChildren);
+HWND WinWindowFromDC (HDC hdc);
+HWND WinWindowFromPoint (HWND hwnd, __const__ POINTL *pptl, BOOL fChildren);
+
+#endif /* INCL_WINWINDOWMGR */
+
+
+#if defined (INCL_WINACCELERATORS)
+
+#define AF_CHAR                                0x0001
+#define AF_VIRTUALKEY                  0x0002
+#define AF_SCANCODE                    0x0004
+#define AF_SHIFT                       0x0008
+#define AF_CONTROL                     0x0010
+#define AF_ALT                         0x0020
+#define AF_LONEKEY                     0x0040
+#define AF_SYSCOMMAND                  0x0100
+#define AF_HELP                                0x0200
+
+typedef struct _ACCEL
+{
+  USHORT fs;
+  USHORT key;
+  USHORT cmd;
+} ACCEL;
+typedef ACCEL *PACCEL;
+
+typedef struct _ACCELTABLE
+{
+  USHORT cAccel;
+  USHORT codepage;
+  ACCEL         aaccel[1];
+} ACCELTABLE;
+typedef ACCELTABLE *PACCELTABLE;
+
+ULONG WinCopyAccelTable (HACCEL haccel, PACCELTABLE pAccelTable,
+    ULONG cbCopyMax);
+HACCEL WinCreateAccelTable (HAB hab, PACCELTABLE pAccelTable);
+BOOL WinDestroyAccelTable (HACCEL haccel);
+HACCEL WinLoadAccelTable (HAB hab, HMODULE hmod, ULONG idAccelTable);
+HACCEL WinQueryAccelTable (HAB hab, HWND hwndFrame);
+BOOL WinSetAccelTable (HAB hab, HACCEL haccel, HWND hwndFrame);
+BOOL WinTranslateAccel (HAB hab, HWND hwnd, HACCEL haccel, PQMSG pqmsg);
+
+#endif /* INCL_WINACCELERATORS */
+
+
+#if defined (INCL_WINATOM)
+
+typedef LHANDLE HATOMTBL;
+typedef ULONG ATOM;
+
+#define MAKEINTATOM(x)         ((PCH)MAKEULONG (x, 0xffff))
+
+ATOM WinAddAtom (HATOMTBL hAtomTbl, PCSZ pszAtomName);
+HATOMTBL WinCreateAtomTable (ULONG cbInitial, ULONG cBuckets);
+ATOM WinDeleteAtom (HATOMTBL hAtomTbl, ATOM atom);
+HATOMTBL WinDestroyAtomTable (HATOMTBL hAtomTbl);
+ATOM WinFindAtom (HATOMTBL hAtomTbl, PCSZ pszAtomName);
+ULONG WinQueryAtomLength (HATOMTBL hAtomTbl, ATOM atom);
+ULONG WinQueryAtomName (HATOMTBL hAtomTbl, ATOM atom, PSZ pchBuffer,
+    ULONG cchBufferMax);
+ULONG WinQueryAtomUsage (HATOMTBL hAtomTbl, ATOM atom);
+HATOMTBL WinQuerySystemAtomTable (VOID);
+
+#endif /* INCL_WINATOM */
+
+
+#if defined (INCL_WINBUTTONS)
+
+#define BDS_HILITED                    0x0100
+#define BDS_DISABLED                   0x0200
+#define BDS_DEFAULT                    0x0400
+
+#define BM_CLICK                       0x0120
+#define BM_QUERYCHECKINDEX             0x0121
+#define BM_QUERYHILITE                 0x0122
+#define BM_SETHILITE                   0x0123
+#define BM_QUERYCHECK                  0x0124
+#define BM_SETCHECK                    0x0125
+#define BM_SETDEFAULT                  0x0126
+
+#define BN_CLICKED                     1
+#define BN_DBLCLICKED                  2
+#define BN_PAINT                       3
+
+#define BS_PUSHBUTTON                  0
+#define BS_CHECKBOX                    1
+#define BS_AUTOCHECKBOX                        2
+#define BS_RADIOBUTTON                 3
+#define BS_AUTORADIOBUTTON             4
+#define BS_3STATE                      5
+#define BS_AUTO3STATE                  6
+#define BS_USERBUTTON                  7
+
+#define BS_PRIMARYSTYLES               0x000f
+#define BS_TEXT                                0x0010
+#define BS_MINIICON                    0x0020
+#define BS_BITMAP                      0x0040
+#define BS_ICON                                0x0080
+#define BS_HELP                                0x0100
+#define BS_SYSCOMMAND                  0x0200
+#define BS_DEFAULT                     0x0400
+#define BS_NOPOINTERFOCUS              0x0800
+#define BS_NOBORDER                    0x1000
+#define BS_NOCURSORSELECT              0x2000
+#define BS_AUTOSIZE                    0x4000
+
+typedef struct _BTNCDATA
+{
+  USHORT  cb;
+  USHORT  fsCheckState;
+  USHORT  fsHiliteState;
+  LHANDLE hImage;
+} BTNCDATA;
+typedef BTNCDATA *PBTNCDATA;
+
+typedef struct _USERBUTTON
+{
+  HWND hwnd;
+  HPS  hps;
+  ULONG fsState;
+  ULONG fsStateOld;
+} USERBUTTON;
+typedef USERBUTTON *PUSERBUTTON;
+
+
+#endif /* INCL_WINBUTTONS */
+
+
+#if defined (INCL_WINCLIPBOARD) || defined (INCL_WINDDE)
+
+#define WM_RENDERFMT                   0x0060
+#define WM_RENDERALLFMTS               0x0061
+#define WM_DESTROYCLIPBOARD            0x0062
+#define WM_PAINTCLIPBOARD              0x0063
+#define WM_SIZECLIPBOARD               0x0064
+#define WM_HSCROLLCLIPBOARD            0x0065
+#define WM_VSCROLLCLIPBOARD            0x0066
+#define WM_DRAWCLIPBOARD               0x0067
+
+#define CF_TEXT                                1
+#define CF_BITMAP                      2
+#define CF_DSPTEXT                     3
+#define CF_DSPBITMAP                   4
+#define CF_METAFILE                    5
+#define CF_DSPMETAFILE                 6
+#define CF_PALETTE                     9
+#define CF_MMPMFIRST                   10
+#define CF_MMPMLAST                    19
+
+#define SZFMT_TEXT                     "#1"
+#define SZFMT_BITMAP                   "#2"
+#define SZFMT_DSPTEXT                  "#3"
+#define SZFMT_DSPBITMAP                        "#4"
+#define SZFMT_METAFILE                 "#5"
+#define SZFMT_DSPMETAFILE              "#6"
+#define SZFMT_PALETTE                  "#9"
+#define SZFMT_SYLK                     "Sylk"
+#define SZFMT_DIF                      "Dif"
+#define SZFMT_TIFF                     "Tiff"
+#define SZFMT_OEMTEXT                  "OemText"
+#define SZFMT_DIB                      "Dib"
+#define SZFMT_OWNERDISPLAY             "OwnerDisplay"
+#define SZFMT_LINK                     "Link"
+#define SZFMT_METAFILEPICT             "MetaFilePict"
+#define SZFMT_DSPMETAFILEPICT          "DspMetaFilePict"
+#define SZFMT_CPTEXT                   "Codepage Text"
+
+typedef struct _CPTEXT
+{
+  USHORT idCountry;
+  USHORT usCodepage;
+  USHORT usLangID;
+  USHORT usSubLangID;
+  BYTE  abText[1];
+} CPTEXT;
+typedef CPTEXT *PCPTEXT;
+
+typedef struct _MFP
+{
+  POINTL sizeBounds;
+  POINTL sizeMM;
+  ULONG         cbLength;
+  USHORT mapMode;
+  USHORT reserved;
+  BYTE  abData[1];
+} MFP;
+typedef MFP *PMFP;
+
+#endif /* INCL_WINCLIPBOARD || INCL_WINDDE */
+
+#if defined (INCL_WINCLIPBOARD)
+
+#define CFI_OWNERFREE                  0x0001
+#define CFI_OWNERDISPLAY               0x0002
+#define CFI_HANDLE                     0x0200
+#define CFI_POINTER                    0x0400
+
+BOOL WinCloseClipbrd (HAB hab);
+BOOL WinEmptyClipbrd (HAB hab);
+ULONG WinEnumClipbrdFmts (HAB hab, ULONG fmt);
+BOOL WinOpenClipbrd (HAB hab);
+ULONG WinQueryClipbrdData (HAB hab, ULONG fmt);
+BOOL WinQueryClipbrdFmtInfo (HAB hab, ULONG fmt, PULONG prgfFmtInfo);
+HWND WinQueryClipbrdOwner (HAB hab);
+HWND WinQueryClipbrdViewer (HAB hab);
+BOOL WinSetClipbrdData (HAB hab, ULONG ulData, ULONG fmt, ULONG rgfFmtInfo);
+BOOL WinSetClipbrdOwner (HAB hab, HWND hwnd);
+BOOL WinSetClipbrdViewer (HAB hab, HWND hwndNewClipViewer);
+
+#endif /* INCL_WINCLIPBOARD */
+
+
+#if defined (INCL_WINDDE)
+
+#define WM_DDE_FIRST                   0x00a0
+#define WM_DDE_INITIATE                        0x00a0
+#define WM_DDE_REQUEST                 0x00a1
+#define WM_DDE_ACK                     0x00a2
+#define WM_DDE_DATA                    0x00a3
+#define WM_DDE_ADVISE                  0x00a4
+#define WM_DDE_UNADVISE                        0x00a5
+#define WM_DDE_POKE                    0x00a6
+#define WM_DDE_EXECUTE                 0x00a7
+#define WM_DDE_TERMINATE               0x00a8
+#define WM_DDE_INITIATEACK             0x00a9
+#define WM_DDE_LAST                    0x00af
+
+#define DDE_FACK                       0x0001
+#define DDE_FBUSY                      0x0002
+#define DDE_FNODATA                    0x0004
+#define DDE_FACKREQ                    0x0008
+#define DDE_FRESPONSE                  0x0010
+#define DDE_NOTPROCESSED               0x0020
+#define DDE_FRESERVED                  0x00c0
+#define DDE_FAPPSTATUS                 0xff00
+
+#define DDECTXT_CASESENSITIVE          0x0001
+
+#define DDEFMT_TEXT                    0x0001
+
+#define DDEPM_RETRY                    0x0001
+#define DDEPM_NOFREE                   0x0002
+
+#define SZDDESYS_TOPIC                 "System"
+#define SZDDESYS_ITEM_TOPICS           "Topics"
+#define SZDDESYS_ITEM_SYSITEMS         "SysItems"
+#define SZDDESYS_ITEM_RTNMSG           "ReturnMessage"
+#define SZDDESYS_ITEM_STATUS           "Status"
+#define SZDDESYS_ITEM_FORMATS          "Formats"
+#define SZDDESYS_ITEM_SECURITY         "Security"
+#define SZDDESYS_ITEM_ITEMFORMATS      "ItemFormats"
+#define SZDDESYS_ITEM_HELP             "Help"
+#define SZDDESYS_ITEM_PROTOCOLS                "Protocols"
+#define SZDDESYS_ITEM_RESTART          "Restart"
+
+typedef struct _CONVCONTEXT
+{
+  ULONG cb;
+  ULONG fsContext;
+  ULONG idCountry;
+  ULONG usCodepage;
+  ULONG usLangID;
+  ULONG usSubLangID;
+} CONVCONTEXT;
+typedef CONVCONTEXT *PCONVCONTEXT;
+
+typedef struct _DDEINIT
+{
+  ULONG cb;
+  PSZ  pszAppName;
+  PSZ  pszTopic;
+  ULONG offConvContext;
+} DDEINIT;
+typedef DDEINIT *PDDEINIT;
+
+typedef struct _DDESTRUCT
+{
+  ULONG         cbData;
+  USHORT fsStatus;
+  USHORT usFormat;
+  USHORT offszItemName;
+  USHORT offabData;
+} DDESTRUCT;
+typedef DDESTRUCT *PDDESTRUCT;
+
+#define DDES_PSZITEMNAME(pddes) \
+    (((PSZ)pddes) + ((PDDESTRUCT)pddes)->offszItemName)
+
+#define DDES_PABDATA(pddes) \
+    (((PBYTE)pddes) + ((PDDESTRUCT)pddes)->offabData)
+
+#define DDEI_PCONVCONTEXT(pddei) \
+    ((PCONVCONTEXT)((PBYTE)pddei + pddei->offConvContext))
+
+BOOL WinDdeInitiate (HWND hwndClient, PCSZ pszAppName, PCSZ pszTopicName,
+    __const__ CONVCONTEXT *pcctxt);
+BOOL WinDdePostMsg (HWND hwndTo, HWND hwndFrom, ULONG wm,
+    __const__ DDESTRUCT *pddest, ULONG flOptions);
+MRESULT WinDdeRespond (HWND hwndClient, HWND hwndServer, PCSZ pszAppName,
+    PCSZ pszTopicName, __const__ CONVCONTEXT *pcctxt);
+
+#endif /* INCL_WINDDE */
+
+
+#if defined (INCL_WINCOUNTRY)
+
+#define WCS_ERROR                      0
+#define WCS_EQ                         1
+#define WCS_LT                         2
+#define WCS_GT                         3
+
+ULONG WinCompareStrings (HAB hab, ULONG idcp, ULONG idcc, PCSZ psz1,
+    PCSZ psz2, ULONG reserved);
+UCHAR WinCpTranslateChar (HAB hab, ULONG cpSrc, UCHAR chSrc, ULONG cpDst);
+BOOL WinCpTranslateString (HAB hab, ULONG cpSrc, PCSZ pszSrc, ULONG cpDst,
+    ULONG cchDestMax, PSZ pchDest);
+PSZ WinNextChar (HAB hab, ULONG idcp, ULONG idcc, PCSZ psz);
+PSZ WinPrevChar (HAB hab, ULONG idcp, ULONG idcc, PCSZ pszStart,
+    PCSZ psz);
+ULONG WinQueryCp (HMQ hmq);
+ULONG WinQueryCpList (HAB hab, ULONG ccpMax, PULONG prgcp);
+BOOL WinSetCp (HMQ hmq, ULONG idCodePage);
+ULONG WinUpper (HAB hab, ULONG idcp, ULONG idcc, PSZ psz);
+ULONG WinUpperChar (HAB hab, ULONG idcp, ULONG idcc, ULONG c);
+
+#endif /* INCL_WINCOUNTRY */
+
+
+#if defined (INCL_WINCURSORS) || !defined (INCL_NOCOMMON)
+
+#define CURSOR_SOLID                   0x0000
+#define CURSOR_HALFTONE                        0x0001
+#define CURSOR_FRAME                   0x0002
+#define CURSOR_FLASH                   0x0004
+#define CURSOR_BIDI_FIRST              0x0100
+#define CURSOR_BIDI_LAST               0x0200
+#define CURSOR_SETPOS                  0x8000
+
+BOOL WinCreateCursor (HWND hwnd, LONG x, LONG y, LONG cx, LONG cy,
+    ULONG fs, PRECTL prclClip);
+BOOL WinDestroyCursor (HWND hwnd);
+BOOL WinShowCursor (HWND hwnd, BOOL fShow);
+
+#endif /* INCL_WINCURSORS || !INCL_NOCOMMON */
+
+#if defined (INCL_WINCURSORS)
+
+typedef struct _CURSORINFO
+{
+  HWND hwnd;
+  LONG x;
+  LONG y;
+  LONG cx;
+  LONG cy;
+  ULONG fs;
+  RECTL rclClip;
+} CURSORINFO;
+typedef CURSORINFO *PCURSORINFO;
+
+BOOL WinQueryCursorInfo (HWND hwndDesktop, PCURSORINFO pCursorInfo);
+
+#endif /* INCL_WINCURSORS */
+
+
+#if defined (INCL_WINDESKTOP)
+
+#define SDT_DESTROY                    0x0001
+#define SDT_NOBKGND                    0x0002
+#define SDT_TILE                       0x0004
+#define SDT_SCALE                      0x0008
+#define SDT_PATTERN                    0x0010
+#define SDT_CENTER                     0x0020
+#define SDT_RETAIN                     0x0040
+#define SDT_LOADFILE                   0x0080
+
+typedef struct _DESKTOP
+{
+  ULONG          cbSize;
+  HBITMAP hbm;
+  LONG   x;
+  LONG   y;
+  ULONG          fl;
+  LONG   lTileCount;
+  CHAR   szFile[260];
+} DESKTOP;
+typedef DESKTOP *PDESKTOP;
+
+BOOL WinQueryDesktopBkgnd (HWND hwndDesktop, PDESKTOP pdsk);
+HBITMAP WinSetDesktopBkgnd (HWND hwndDesktop, __const__ DESKTOP *pdskNew);
+
+#endif /* INCL_WINDESKTOP */
+
+
+#if defined (INCL_WINDIALOGS) || !defined (INCL_NOCOMMON)
+
+#define DID_OK                         1
+#define DID_CANCEL                     2
+#define DID_ERROR                      0xffff
+
+#define MB_OK                          0x0000
+#define MB_OKCANCEL                    0x0001
+#define MB_RETRYCANCEL                 0x0002
+#define MB_ABORTRETRYIGNORE            0x0003
+#define MB_YESNO                       0x0004
+#define MB_YESNOCANCEL                 0x0005
+#define MB_CANCEL                      0x0006
+#define MB_ENTER                       0x0007
+#define MB_ENTERCANCEL                 0x0008
+
+#define MB_NOICON                      0x0000
+#define MB_CUANOTIFICATION             0x0000
+#define MB_ICONQUESTION                        0x0010
+#define MB_ICONEXCLAMATION             0x0020
+#define MB_CUAWARNING                  0x0020
+#define MB_ICONASTERISK                        0x0030
+#define MB_ICONHAND                    0x0040
+#define MB_CUACRITICAL                 0x0040
+#define MB_QUERY                       MB_ICONQUESTION
+#define MB_WARNING                     MB_CUAWARNING
+#define MB_INFORMATION                 MB_ICONASTERISK
+#define MB_CRITICAL                    MB_CUACRITICAL
+#define MB_ERROR                       MB_CRITICAL
+#define MB_CUSTOMICON                  0x0080
+
+#define MB_DEFBUTTON1                  0x0000
+#define MB_DEFBUTTON2                  0x0100
+#define MB_DEFBUTTON3                  0x0200
+
+#define MB_APPLMODAL                   0x0000
+#define MB_SYSTEMMODAL                 0x1000
+#define MB_HELP                                0x2000
+#define MB_MOVEABLE                    0x4000
+#define MB_NONMODAL                    0x8000
+
+#define MBID_OK                                1
+#define MBID_CANCEL                    2
+#define MBID_ABORT                     3
+#define MBID_RETRY                     4
+#define MBID_IGNORE                    5
+#define MBID_YES                       6
+#define MBID_NO                                7
+#define MBID_HELP                      8
+#define MBID_ENTER                     9
+#define MBID_ERROR                     0xffff
+
+#define WA_WARNING                     0
+#define WA_NOTE                                1
+#define WA_ERROR                       2
+#define WA_CDEFALARMS                  3
+
+#if 0 /* Multimedia */
+#define WA_WINDOWOPEN                  3
+#define WA_WINDOWCLOSE                 4
+#define WA_BEGINDRAG                   5
+#define WA_ENDDRAG                     6
+#define WA_STARTUP                     7
+#define WA_SHUTDOWN                    8
+#define WA_SHRED                       9
+#define WA_CWINALARMS                  13
+#endif /* 0 */
+
+#define MAX_MBDTEXT                    70
+
+typedef struct _MB2D
+{
+  CHAR achText[MAX_MBDTEXT+1];
+  CHAR _pad[1];
+  ULONG idButton;
+  LONG flStyle;
+} MB2D;
+typedef MB2D *PMB2D;
+
+typedef struct _MB2INFO
+{
+  ULONG           cb;
+  HPOINTER hIcon;
+  ULONG           cButtons;
+  ULONG           flStyle;
+  HWND    hwndNotify;
+  MB2D    mb2d[1];
+} MB2INFO;
+
+typedef MB2INFO *PMB2INFO;
+
+
+#define WinCheckButton(hwndDlg,id,usCheckState) \
+    ((ULONG)WinSendDlgItemMsg (hwndDlg, id, BM_SETCHECK, \
+                              MPFROMSHORT (usCheckState), (MPARAM)NULL))
+
+#define WinEnableControl(hwndDlg,id,fEnable) \
+    WinEnableWindow (WinWindowFromID (hwndDlg, id), fEnable)
+
+#define WinIsControlEnabled(hwndDlg,id) \
+    ((BOOL)WinIsWindowEnabled (WinWindowFromID (hwndDlg, id)))
+
+#define WinQueryButtonCheckstate(hwndDlg,id) \
+    ((ULONG)WinSendDlgItemMsg (hwndDlg, id, BM_QUERYCHECK, \
+                              (MPARAM)NULL, (MPARAM)NULL))
+
+
+BOOL WinAlarm (HWND hwndDesktop, ULONG rgfType);
+MRESULT WinDefDlgProc (HWND hwndDlg, ULONG msg, MPARAM mp1, MPARAM mp2);
+BOOL WinDismissDlg (HWND hwndDlg, ULONG usResult);
+ULONG WinDlgBox (HWND hwndParent, HWND hwndOwner, PFNWP pfnDlgProc,
+    HMODULE hmod, ULONG idDlg, PVOID pCreateParams);
+BOOL WinGetDlgMsg (HWND hwndDlg, PQMSG pqmsg);
+HWND WinLoadDlg (HWND hwndParent, HWND hwndOwner, PFNWP pfnDlgProc,
+    HMODULE hmod, ULONG idDlg, PVOID pCreateParams);
+ULONG WinMessageBox (HWND hwndParent, HWND hwndOwner, PCSZ pszText,
+    PCSZ pszCaption, ULONG idWindow, ULONG flStyle);
+ULONG WinMessageBox2 (HWND hwndParent, HWND hwndOwner, PCSZ pszText,
+    PCSZ pszCaption, ULONG idWindow, PMB2INFO pmb2info);
+BOOL WinQueryDlgItemShort (HWND hwndDlg, ULONG idItem, PSHORT pResult,
+    BOOL fSigned);
+ULONG WinQueryDlgItemText (HWND hwndDlg, ULONG idItem, LONG cchBufferMax,
+    PSZ pchBuffer);
+LONG WinQueryDlgItemTextLength (HWND hwndDlg, ULONG idItem);
+BOOL WinSetDlgItemShort (HWND hwndDlg, ULONG idItem, USHORT usValue,
+    BOOL fSigned);
+BOOL WinSetDlgItemText (HWND hwndDlg, ULONG idItem, PCSZ pszText);
+
+#endif /* INCL_WINDIALOGS || !defined (INCL_NOCOMMON) */
+
+
+#if defined (INCL_WINDIALOGS)
+
+#define DLGC_ENTRYFIELD                        0x0001
+#define DLGC_BUTTON                    0x0002
+#define DLGC_RADIOBUTTON               0x0004
+#define DLGC_STATIC                    0x0008
+#define DLGC_DEFAULT                   0x0010
+#define DLGC_PUSHBUTTON                        0x0020
+#define DLGC_CHECKBOX                  0x0040
+#define DLGC_SCROLLBAR                 0x0080
+#define DLGC_MENU                      0x0100
+#define DLGC_TABONCLICK                        0x0200
+#define DLGC_MLE                       0x0400
+
+#define EDI_FIRSTTABITEM               0
+#define EDI_LASTTABITEM                        1
+#define EDI_NEXTTABITEM                        2
+#define EDI_PREVTABITEM                        3
+#define EDI_FIRSTGROUPITEM             4
+#define EDI_LASTGROUPITEM              5
+#define EDI_NEXTGROUPITEM              6
+#define EDI_PREVGROUPITEM              7
+
+typedef struct _DLGTITEM
+{
+  USHORT fsItemStatus;
+  USHORT cChildren;
+  USHORT cchClassName;
+  USHORT offClassName;
+  USHORT cchText;
+  USHORT offText;
+  ULONG         flStyle;
+  SHORT         x;
+  SHORT         y;
+  SHORT         cx;
+  SHORT         cy;
+  USHORT id;
+  USHORT offPresParams;
+  USHORT offCtlData;
+} DLGTITEM;
+typedef DLGTITEM *PDLGTITEM;
+
+typedef struct _DLGTEMPLATE
+{
+  USHORT   cbTemplate;
+  USHORT   type;
+  USHORT   codepage;
+  USHORT   offadlgti;
+  USHORT   fsTemplateStatus;
+  USHORT   iItemFocus;
+  USHORT   coffPresParams;
+  DLGTITEM adlgti[1];
+} DLGTEMPLATE;
+typedef DLGTEMPLATE *PDLGTEMPLATE;
+
+
+HWND WinCreateDlg (HWND hwndParent, HWND hwndOwner, PFNWP pfnDlgProc,
+    PDLGTEMPLATE pdlgt, PVOID pCreateParams);
+HWND WinEnumDlgItem (HWND hwndDlg, HWND hwnd, ULONG code);
+BOOL WinMapDlgPoints (HWND hwndDlg, PPOINTL prgwptl, ULONG cwpt,
+    BOOL fCalcWindowCoords);
+ULONG WinProcessDlg (HWND hwndDlg);
+MRESULT WinSendDlgItemMsg (HWND hwndDlg, ULONG idItem, ULONG msg,
+    MPARAM mp1, MPARAM mp2);
+LONG WinSubstituteStrings (HWND hwnd, PCSZ pszSrc, LONG cchDstMax,
+    PSZ pszDst);
+
+#endif /* INCL_WINDIALOGS */
+
+
+#if defined (INCL_WINENTRYFIELDS)
+
+#define CBID_LIST                      0x029a
+#define CBID_EDIT                      0x029b
+
+#define CBM_SHOWLIST                   0x0170
+#define CBM_HILITE                     0x0171
+#define CBM_ISLISTSHOWING              0x0172
+
+#define CBN_EFCHANGE                   1
+#define CBN_EFSCROLL                   2
+#define CBN_MEMERROR                   3
+#define CBN_LBSELECT                   4
+#define CBN_LBSCROLL                   5
+#define CBN_SHOWLIST                   6
+#define CBN_ENTER                      7
+
+#define CBS_SIMPLE                     0x0001
+#define CBS_DROPDOWN                   0x0002
+#define CBS_DROPDOWNLIST               0x0004
+#define CBS_COMPATIBLE                 0x0008
+
+#define EM_QUERYCHANGED                        0x0140
+#define EM_QUERYSEL                    0x0141
+#define EM_SETSEL                      0x0142
+#define EM_SETTEXTLIMIT                        0x0143
+#define EM_CUT                         0x0144
+#define EM_COPY                                0x0145
+#define EM_CLEAR                       0x0146
+#define EM_PASTE                       0x0147
+#define EM_QUERYFIRSTCHAR              0x0148
+#define EM_SETFIRSTCHAR                        0x0149
+#define EM_QUERYREADONLY               0x014a
+#define EM_SETREADONLY                 0x014b
+#define EM_SETINSERTMODE               0x014c
+
+#define EN_SETFOCUS                    0x0001
+#define EN_KILLFOCUS                   0x0002
+#define EN_CHANGE                      0x0004
+#define EN_SCROLL                      0x0008
+#define EN_MEMERROR                    0x0010
+#define EN_OVERFLOW                    0x0020
+#define EN_INSERTMODETOGGLE            0x0040
+
+#define ES_LEFT                                0x0000
+#define ES_CENTER                      0x0001
+#define ES_RIGHT                       0x0002
+#define ES_AUTOSCROLL                  0x0004
+#define ES_MARGIN                      0x0008
+#define ES_AUTOTAB                     0x0010
+#define ES_READONLY                    0x0020
+#define ES_COMMAND                     0x0040
+#define ES_UNREADABLE                  0x0080
+#define ES_AUTOSIZE                    0x0200
+
+#if defined (INCL_NLS)
+#define ES_ANY                         0x0000
+#define ES_SBCS                                0x1000
+#define ES_DBCS                                0x2000
+#define ES_MIXED                       0x3000
+#endif /* INCL_NLS */
+
+typedef struct _COMBOCDATA
+{
+  ULONG cbSize;
+  ULONG reserved;
+  PVOID pHWXCtlData;
+} COMBOCDATA;
+typedef COMBOCDATA *PCOMBOCDATA;
+
+typedef struct _ENTRYFDATA
+{
+  USHORT cb;
+  USHORT cchEditLimit;
+  USHORT ichMinSel;
+  USHORT ichMaxSel;
+  PVOID         pHWXCtlData;
+} ENTRYFDATA;
+typedef ENTRYFDATA *PENTRYFDATA;
+
+#endif /* INCL_WINENTRYFIELDS */
+
+
+#if defined (INCL_WINERRORS)
+
+typedef struct _ERRINFO
+{
+  ULONG          cbFixedErrInfo;
+  ERRORID idError;
+  ULONG          cDetailLevel;
+  ULONG          offaoffszMsg;
+  ULONG          offBinaryData;
+} ERRINFO;
+typedef ERRINFO *PERRINFO;
+
+ERRORID WinGetLastError (HAB hab);
+BOOL WinFreeErrorInfo (PERRINFO perrinfo);
+PERRINFO WinGetErrorInfo (HAB hab);
+
+#endif /* INCL_WINERRORS */
+
+
+#if defined (INCL_WINFRAMECTLS)
+
+#define TBM_SETHILITE                  0x01e3
+#define TBM_QUERYHILITE                        0x01e4
+
+#endif /* INCL_WINFRAMECTLS */
+
+
+#if defined (INCL_WINHOOKS)
+
+#define HK_SENDMSG                     0
+#define HK_INPUT                       1
+#define HK_MSGFILTER                   2
+#define HK_JOURNALRECORD               3
+#define HK_JOURNALPLAYBACK             4
+#define HK_HELP                                5
+#define HK_LOADER                      6
+#define HK_REGISTERUSERMSG             7
+#define HK_MSGCONTROL                  8
+#define HK_PLIST_ENTRY                 9
+#define HK_PLIST_EXIT                  10
+#define HK_FINDWORD                    11
+#define HK_CODEPAGECHANGED             12
+#define HK_WINDOWDC                    15
+#define HK_DESTROYWINDOW               16
+#define HK_CHECKMSGFILTER              20
+#define HK_MSGINPUT                    21
+#define HK_ALARM                       22
+#define HK_LOCKUP                      23
+#define HK_FLUSHBUF                    24
+
+#define HLPM_FRAME                     (-1)
+#define HLPM_WINDOW                    (-2)
+#define HLPM_MENU                      (-3)
+
+#define HMQ_CURRENT            ((HMQ)1)
+
+#define LHK_DELETEPROC                 1
+#define LHK_DELETELIB                  2
+#define LHK_LOADPROC                   3
+#define LHK_LOADLIB                    4
+
+#define MCHK_MSGINTEREST               1
+#define MCHK_CLASSMSGINTEREST          2
+#define MCHK_SYNCHRONISATION           3
+#define MCHK_MSGMODE                   4
+
+#define MSGF_DIALOGBOX                 1
+#define MSGF_MESSAGEBOX                        2
+#define MSGF_DDEPOSTMSG                        3
+#define MSGF_TRACK                     8
+
+#define PM_MODEL_1X                    0
+#define PM_MODEL_2X                    1
+
+#define RUMHK_DATATYPE                 1
+#define RUMHK_MSG                      2
+
+
+typedef struct _SMHSTRUCT
+{
+  MPARAM mp2;
+  MPARAM mp1;
+  ULONG         msg;
+  HWND  hwnd;
+  ULONG         model;
+} SMHSTRUCT;
+typedef SMHSTRUCT *PSMHSTRUCT;
+
+
+BOOL WinCallMsgFilter (HAB hab, PQMSG pqmsg, ULONG msgf);
+BOOL WinReleaseHook (HAB hab, HMQ hmq, LONG iHook, PFN pfnHook, HMODULE hmod);
+BOOL WinSetHook (HAB hab, HMQ hmq, LONG iHook, PFN pfnHook, HMODULE hmod);
+
+#endif /* INCL_WINHOOKS */
+
+
+#if defined (INCL_WININPUT) || !defined (INCL_NOCOMMON)
+
+#define FC_NOSETFOCUS                  0x0001
+#define FC_NOBRINGTOTOP                        0x0001 /*!*/
+#define FC_NOLOSEFOCUS                 0x0002
+#define FC_NOBRINGTOPFIRSTWINDOW       0x0002 /*!*/
+#define FC_NOSETACTIVE                 0x0004
+#define FC_NOLOSEACTIVE                        0x0008
+#define FC_NOSETSELECTION              0x0010
+#define FC_NOLOSESELECTION             0x0020
+
+#define QFC_NEXTINCHAIN                        0x0001
+#define QFC_ACTIVE                     0x0002
+#define QFC_FRAME                      0x0003
+#define QFC_SELECTACTIVE               0x0004
+#define QFC_PARTOFCHAIN                        0x0005
+
+BOOL WinFocusChange (HWND hwndDesktop, HWND hwndSetFocus, ULONG flFocusChange);
+BOOL WinLockupSystem (HAB hab);
+BOOL WinSetFocus (HWND hwndDesktop, HWND hwndSetFocus);
+BOOL WinUnlockSystem (HAB hab, PCSZ pszPassword);
+
+#endif /* INCL_WININPUT || !INCL_NOCOMMON */
+
+
+#if defined (INCL_WININPUT)
+
+#define WM_MOUSEFIRST                  0x0070
+#define WM_MOUSEMOVE                   0x0070
+#define WM_BUTTONCLICKFIRST            0x0071
+#define WM_BUTTON1DOWN                 0x0071
+#define WM_BUTTON1UP                   0x0072
+#define WM_BUTTON1DBLCLK               0x0073
+#define WM_BUTTON2DOWN                 0x0074
+#define WM_BUTTON2UP                   0x0075
+#define WM_BUTTON2DBLCLK               0x0076
+#define WM_BUTTON3DOWN                 0x0077
+#define WM_BUTTON3UP                   0x0078
+#define WM_BUTTON3DBLCLK               0x0079
+#define WM_BUTTONCLICKLAST             0x0079
+#define WM_MOUSELAST                   0x0079
+#define WM_CHAR                                0x007a
+#define WM_VIOCHAR                     0x007b
+#define WM_JOURNALNOTIFY               0x007c
+#define WM_MOUSEMAP                    0x007d
+#define WM_VRNDISABLED                 0x007e
+#define WM_VRNENABLED                  0x007f
+
+#define WM_EXTMOUSEFIRST               0x0410
+#define WM_CHORD                       0x0410
+#define WM_BUTTON1MOTIONSTART          0x0411
+#define WM_BUTTON1MOTIONEND            0x0412
+#define WM_BUTTON1CLICK                        0x0413
+#define WM_BUTTON2MOTIONSTART          0x0414
+#define WM_BUTTON2MOTIONEND            0x0415
+#define WM_BUTTON2CLICK                        0x0416
+#define WM_BUTTON3MOTIONSTART          0x0417
+#define WM_BUTTON3MOTIONEND            0x0418
+#define WM_BUTTON3CLICK                        0x0419
+#define WM_EXTMOUSELAST                        0x0419
+
+#define WM_MOUSETRANSLATEFIRST         0x0420
+#define WM_BEGINDRAG                   0x0420
+#define WM_ENDDRAG                     0x0421
+#define WM_SINGLESELECT                        0x0422
+#define WM_OPEN                                0x0423
+#define WM_CONTEXTMENU                 0x0424
+#define WM_CONTEXTHELP                 0x0425
+#define WM_TEXTEDIT                    0x0426
+#define WM_BEGINSELECT                 0x0427
+#define WM_ENDSELECT                   0x0428
+#define WM_MOUSETRANSLATELAST          0x0428
+#define WM_PICKUP                      0x0429
+
+#define WM_PENFIRST                    0x0481
+#define WM_PENLAST                     0x049f
+
+#define WM_MMPMFIRST                   0x0500
+#define WM_MMPMLAST                    0x05ff
+
+#define WM_BIDI_FIRST                  0x0bd0
+#define WM_BIDI_LAST                   0x0bff
+
+#define INP_NONE                       0x0000
+#define INP_KBD                                0x0001
+#define INP_MULT                       0x0002
+#define INP_RES2                       0x0004
+#define INP_SHIFT                      0x0008
+#define INP_CTRL                       0x0010
+#define INP_ALT                                0x0020
+#define INP_RES3                       0x0040
+#define INP_RES4                       0x0080
+#define INP_IGNORE                     0xffff
+
+#define JRN_QUEUESTATUS                        0x0001
+#define JRN_PHYSKEYSTATE               0x0002
+
+#define KC_NONE                                0x0000
+#define KC_CHAR                                0x0001
+#define KC_VIRTUALKEY                  0x0002
+#define KC_SCANCODE                    0x0004
+#define KC_SHIFT                       0x0008
+#define KC_CTRL                                0x0010
+#define KC_ALT                         0x0020
+#define KC_KEYUP                       0x0040
+#define KC_PREVDOWN                    0x0080
+#define KC_LONEKEY                     0x0100
+#define KC_DEADKEY                     0x0200
+#define KC_COMPOSITE                   0x0400
+#define KC_INVALIDCOMP                 0x0800
+#define KC_TOGGLE                      0x1000
+#define KC_INVALIDCHAR                 0x2000
+#define KC_DBCSRSRVD1                  0x4000
+#define KC_DBCSRSRVD2                  0x8000
+
+#define VK_BUTTON1                     0x0001
+#define VK_BUTTON2                     0x0002
+#define VK_BUTTON3                     0x0003
+#define VK_BREAK                       0x0004
+#define VK_BACKSPACE                   0x0005
+#define VK_TAB                         0x0006
+#define VK_BACKTAB                     0x0007
+#define VK_NEWLINE                     0x0008
+#define VK_SHIFT                       0x0009
+#define VK_CTRL                                0x000a
+#define VK_ALT                         0x000b
+#define VK_ALTGRAF                     0x000c
+#define VK_PAUSE                       0x000d
+#define VK_CAPSLOCK                    0x000e
+#define VK_ESC                         0x000f
+#define VK_SPACE                       0x0010
+#define VK_PAGEUP                      0x0011
+#define VK_PAGEDOWN                    0x0012
+#define VK_END                         0x0013
+#define VK_HOME                                0x0014
+#define VK_LEFT                                0x0015
+#define VK_UP                          0x0016
+#define VK_RIGHT                       0x0017
+#define VK_DOWN                                0x0018
+#define VK_PRINTSCRN                   0x0019
+#define VK_INSERT                      0x001a
+#define VK_DELETE                      0x001b
+#define VK_SCRLLOCK                    0x001c
+#define VK_NUMLOCK                     0x001d
+#define VK_ENTER                       0x001e
+#define VK_SYSRQ                       0x001f
+#define VK_F1                          0x0020
+#define VK_F2                          0x0021
+#define VK_F3                          0x0022
+#define VK_F4                          0x0023
+#define VK_F5                          0x0024
+#define VK_F6                          0x0025
+#define VK_F7                          0x0026
+#define VK_F8                          0x0027
+#define VK_F9                          0x0028
+#define VK_F10                         0x0029
+#define VK_F11                         0x002a
+#define VK_F12                         0x002b
+#define VK_F13                         0x002c
+#define VK_F14                         0x002d
+#define VK_F15                         0x002e
+#define VK_F16                         0x002f
+#define VK_F17                         0x0030
+#define VK_F18                         0x0031
+#define VK_F19                         0x0032
+#define VK_F20                         0x0033
+#define VK_F21                         0x0034
+#define VK_F22                         0x0035
+#define VK_F23                         0x0036
+#define VK_F24                         0x0037
+#define VK_ENDDRAG                     0x0038
+#define VK_CLEAR                       0x0039
+#define VK_EREOF                       0x003a
+#define VK_PA1                         0x003b
+#define VK_ATTN                                0x003c
+#define VK_CRSEL                       0x003d
+#define VK_EXSEL                       0x003e
+#define VK_COPY                                0x003f
+#define VK_BLK1                                0x0040
+#define VK_BLK2                                0x0041
+
+#define VK_MENU                                VK_F10
+
+#if defined (INCL_NLS)
+#define VK_DBCSFIRST                   0x0080
+#define VK_DBCSLAST                    0x00ff
+#define VK_BIDI_FIRST                  0x00e0
+#define VK_BIDI_LAST                   0x00ff
+#endif /* INCL_NLS */
+
+#define VK_USERFIRST                   0x0100
+#define VK_USERLAST                    0x01ff
+
+typedef struct _CHARMSG
+{
+  USHORT fs;
+  UCHAR         cRepeat;
+  UCHAR         scancode;
+  USHORT chr;
+  USHORT vkey;
+} CHRMSG;
+typedef CHRMSG *PCHRMSG;
+
+typedef struct _MOUSEMSG
+{
+  SHORT         x;
+  SHORT         y;
+  USHORT codeHitTest;
+  USHORT fsInp;
+} MSEMSG;
+typedef MSEMSG *PMSEMSG;
+
+#define CHARMSG(pmsg)          ((PCHRMSG)((PBYTE)pmsg + sizeof (ULONG)))
+#define MOUSEMSG(pmsg)         ((PMSEMSG)((PBYTE)pmsg + sizeof (ULONG)))
+
+BOOL WinCheckInput (HAB hab);
+BOOL WinEnablePhysInput (HWND hwndDesktop, BOOL fEnable);
+LONG WinGetKeyState (HWND hwndDesktop, LONG vkey);
+LONG WinGetPhysKeyState (HWND hwndDesktop, LONG sc);
+BOOL WinIsPhysInputEnabled (HWND hwndDesktop);
+HWND WinQueryCapture (HWND hwndDesktop);
+HWND WinQueryFocus (HWND hwndDesktop);
+ULONG WinQueryVisibleRegion (HWND hwnd, HRGN hrgn);
+BOOL WinSetCapture (HWND hwndDesktop, HWND hwnd);
+BOOL WinSetKeyboardStateTable (HWND hwndDesktop, PBYTE pKeyStateTable,
+    BOOL fSet);
+BOOL WinSetVisibleRegionNotify (HWND hwnd, BOOL fEnable);
+
+#endif /* INCL_WININPUT */
+
+
+#if defined (INCL_WINLISTBOXES)
+
+#define LS_MULTIPLESEL                 0x0001
+#define LS_OWNERDRAW                   0x0002
+#define LS_NOADJUSTPOS                 0x0004
+#define LS_HORZSCROLL                  0x0008
+#define LS_EXTENDEDSEL                 0x0010
+
+#define LN_SELECT                      1
+#define LN_SETFOCUS                    2
+#define LN_KILLFOCUS                   3
+#define LN_SCROLL                      4
+#define LN_ENTER                       5
+
+#define LM_QUERYITEMCOUNT              0x0160
+#define LM_INSERTITEM                  0x0161
+#define LM_SETTOPINDEX                 0x0162
+#define LM_DELETEITEM                  0x0163
+#define LM_SELECTITEM                  0x0164
+#define LM_QUERYSELECTION              0x0165
+#define LM_SETITEMTEXT                 0x0166
+#define LM_QUERYITEMTEXTLENGTH         0x0167
+#define LM_QUERYITEMTEXT               0x0168
+#define LM_SETITEMHANDLE               0x0169
+#define LM_QUERYITEMHANDLE             0x016a
+#define LM_SEARCHSTRING                        0x016b
+#define LM_SETITEMHEIGHT               0x016c
+#define LM_QUERYTOPINDEX               0x016d
+#define LM_DELETEALL                   0x016e
+#define LM_INSERTMULTITEMS             0x016f
+#define LM_SETITEMWIDTH                        0x0660 /* ? */
+
+#define LIT_CURSOR                     (-4)
+#define LIT_ERROR                      (-3)
+#define LIT_MEMERROR                   (-2)
+#define LIT_NONE                       (-1)
+#define LIT_FIRST                      (-1)
+
+#define LIT_END                                (-1)
+#define LIT_SORTASCENDING              (-2)
+#define LIT_SORTDESCENDING             (-3)
+
+#define LSS_SUBSTRING                  0x0001
+#define LSS_PREFIX                     0x0002
+#define LSS_CASESENSITIVE              0x0004
+
+
+typedef struct _LBOXINFO
+{
+  LONG lItemIndex;
+  ULONG ulItemCount;
+  ULONG reserved;
+  ULONG reserved2;
+} LBOXINFO;
+typedef LBOXINFO *PLBOXINFO;
+
+
+#define WinDeleteLboxItem(hwndLbox,index) \
+    ((LONG)WinSendMsg (hwndLbox, LM_DELETEITEM, MPFROMLONG (index), \
+                      (MPARAM)NULL))
+
+#define WinInsertLboxItem(hwndLbox,index,psz) \
+    ((LONG)WinSendMsg (hwndLbox, LM_INSERTITEM, MPFROMLONG(index), \
+                      MPFROMP (psz)))
+
+#define WinQueryLboxCount(hwndLbox) \
+    ((LONG)WinSendMsg (hwndLbox, LM_QUERYITEMCOUNT, (MPARAM)NULL, \
+                      (MPARAM)NULL))
+
+#define WinQueryLboxItemText(hwndLbox,index,psz,cchMax) \
+    ((LONG)WinSendMsg (hwndLbox, LM_QUERYITEMTEXT, \
+                      MPFROM2SHORT((index), (cchMax)), MPFROMP (psz)))
+
+#define WinQueryLboxItemTextLength(hwndLbox,index) \
+    ((SHORT)WinSendMsg (hwndLbox, LM_QUERYITEMTEXTLENGTH, \
+                       MPFROMSHORT (index), (MPARAM)NULL))
+
+#define WinQueryLboxSelectedItem(hwndLbox) \
+    ((LONG)WinSendMsg (hwndLbox, LM_QUERYSELECTION, MPFROMLONG (LIT_FIRST), \
+                      (MPARAM)NULL))
+
+#define WinSetLboxItemText(hwndLbox,index,psz) \
+    ((BOOL)WinSendMsg (hwndLbox, LM_SETITEMTEXT, \
+                      MPFROMLONG (index), MPFROMP (psz)))
+
+#endif /* INCL_WINLISTBOXES */
+
+
+#if defined (INCL_WINLOAD)
+
+BOOL WinDeleteLibrary (HAB hab, HLIB libhandle);
+BOOL WinDeleteProcedure (HAB hab, PFNWP wndproc);
+HLIB WinLoadLibrary (HAB hab, PCSZ libname);
+PFNWP WinLoadProcedure (HAB hab, HLIB libhandle, PSZ procname);
+
+#endif /* INCL_WINLOAD */
+
+
+#if defined (INCL_WINMENUS)
+
+#define MIA_NODISMISS                  0x0020
+#define MIA_FRAMED                     0x1000
+#define MIA_CHECKED                    0x2000
+#define MIA_DISABLED                   0x4000
+#define MIA_HILITED                    0x8000
+
+#define MIS_TEXT                       0x0001
+#define MIS_BITMAP                     0x0002
+#define MIS_SEPARATOR                  0x0004
+#define MIS_OWNERDRAW                  0x0008
+#define MIS_SUBMENU                    0x0010
+#define MIS_MULTMENU                   0x0020
+#define MIS_SYSCOMMAND                 0x0040
+#define MIS_HELP                       0x0080
+#define MIS_STATIC                     0x0100
+#define MIS_BUTTONSEPARATOR            0x0200
+#define MIS_BREAK                      0x0400
+#define MIS_BREAKSEPARATOR             0x0800
+#define MIS_GROUP                      0x1000
+#define MIS_SINGLE                     0x2000
+
+#define MIT_END                                (-1)
+#define MIT_NONE                       (-1)
+#define MIT_MEMERROR                   (-1)
+#define MIT_ERROR                      (-1)
+#define MIT_FIRST                      (-2)
+#define MIT_LAST                       (-3)
+
+#define MM_INSERTITEM                  0x0180
+#define MM_DELETEITEM                  0x0181
+#define MM_QUERYITEM                   0x0182
+#define MM_SETITEM                     0x0183
+#define MM_QUERYITEMCOUNT              0x0184
+#define MM_STARTMENUMODE               0x0185
+#define MM_ENDMENUMODE                 0x0186
+#define MM_REMOVEITEM                  0x0188
+#define MM_SELECTITEM                  0x0189
+#define MM_QUERYSELITEMID              0x018a
+#define MM_QUERYITEMTEXT               0x018b
+#define MM_QUERYITEMTEXTLENGTH         0x018c
+#define MM_SETITEMHANDLE               0x018d
+#define MM_SETITEMTEXT                 0x018e
+#define MM_ITEMPOSITIONFROMID          0x018f
+#define MM_ITEMIDFROMPOSITION          0x0190
+#define MM_QUERYITEMATTR               0x0191
+#define MM_SETITEMATTR                 0x0192
+#define MM_ISITEMVALID                 0x0193
+#define MM_QUERYITEMRECT               0x0194
+
+#define MM_QUERYDEFAULTITEMID          0x0431
+#define MM_SETDEFAULTITEMID            0x0432
+
+#define MS_ACTIONBAR                   0x0001
+#define MS_TITLEBUTTON                 0x0002
+#define MS_VERTICALFLIP                        0x0004
+#define MS_CONDITIONALCASCADE          0x0040
+
+#define PU_POSITIONONITEM              0x0001
+#define PU_HCONSTRAIN                  0x0002
+#define PU_VCONSTRAIN                  0x0004
+#define PU_NONE                                0x0000
+#define PU_MOUSEBUTTON1DOWN            0x0008
+#define PU_MOUSEBUTTON2DOWN            0x0010
+#define PU_MOUSEBUTTON3DOWN            0x0018
+#define PU_SELECTITEM                  0x0020
+#define PU_MOUSEBUTTON1                        0x0040
+#define PU_MOUSEBUTTON2                        0x0080
+#define PU_MOUSEBUTTON3                        0x0100
+#define PU_KEYBOARD                    0x0200
+
+typedef struct _MENUITEM
+{
+  SHORT         iPosition;
+  USHORT afStyle;
+  USHORT afAttribute;
+  USHORT id;
+  HWND  hwndSubMenu;
+  ULONG         hItem;
+} MENUITEM;
+typedef MENUITEM *PMENUITEM;
+
+typedef struct _mti            /* Note 1 */
+{
+  USHORT afStyle;
+  USHORT pad;
+  USHORT idItem;
+  CHAR  c[2];
+} MTI;
+
+typedef struct _mt             /* Note 1 */
+{
+  ULONG         len;
+  USHORT codepage;
+  USHORT reserved;
+  USHORT cMti;
+  MTI   rgMti[1];
+} MT;
+typedef MT *LPMT;
+
+typedef struct _OWNERITEM
+{
+  HWND hwnd;
+  HPS  hps;
+  ULONG fsState;
+  ULONG fsAttribute;
+  ULONG fsStateOld;
+  ULONG fsAttributeOld;
+  RECTL rclItem;
+  LONG idItem;
+  ULONG hItem;
+} OWNERITEM;
+typedef OWNERITEM *POWNERITEM;
+
+
+#define WinCheckMenuItem(hwndMenu,id,fcheck) \
+    ((BOOL)WinSendMsg (hwndMenu, MM_SETITEMATTR, \
+                      MPFROM2SHORT (id, TRUE), \
+                      MPFROM2SHORT (MIA_CHECKED, \
+                                    ((USHORT)(fcheck) ? MIA_CHECKED : 0))))
+
+#define WinEnableMenuItem(hwndMenu,id,fEnable) \
+    ((BOOL)WinSendMsg (hwndMenu, MM_SETITEMATTR, MPFROM2SHORT (id, TRUE), \
+                      MPFROM2SHORT (MIA_DISABLED, \
+                                    ((USHORT)(fEnable) ? 0 : MIA_DISABLED))))
+
+#define WinIsMenuItemChecked(hwndMenu,id) \
+    ((BOOL)WinSendMsg (hwndMenu, MM_QUERYITEMATTR, \
+                      MPFROM2SHORT (id, TRUE), \
+                      MPFROMLONG (MIA_CHECKED)))
+
+#define WinIsMenuItemEnabled(hwndMenu,id)  \
+    (!(BOOL)WinSendMsg (hwndMenu, MM_QUERYITEMATTR, \
+                       MPFROM2SHORT (id, TRUE), \
+                       MPFROMLONG (MIA_DISABLED)))
+
+#define WinIsMenuItemValid(hwndMenu,id) \
+    ((BOOL)WinSendMsg (hwndMenu, MM_ISITEMVALID, \
+                      MPFROM2SHORT (id, TRUE), MPFROMLONG (FALSE)))
+
+#define WinSetMenuItemText(hwndMenu,id,psz) \
+    ((BOOL)WinSendMsg (hwndMenu, MM_SETITEMTEXT, \
+                      MPFROMLONG (id), MPFROMP (psz)))
+
+
+HWND WinCreateMenu (HWND hwndParent, CPVOID lpmt);
+HWND WinLoadMenu (HWND hwndFrame, HMODULE hmod, ULONG idMenu);
+BOOL WinPopupMenu (HWND hwndParent, HWND hwndOwner, HWND hwndMenu,
+    LONG x, LONG y, LONG idItem, ULONG fs);
+
+#endif /* INCL_WINMENUS */
+
+
+#if defined (INCL_WINMESSAGEMGR)
+
+#define BMSG_POST                      0x0000
+#define BMSG_SEND                      0x0001
+#define BMSG_POSTQUEUE                 0x0002
+#define BMSG_DESCENDANTS               0x0004
+#define BMSG_FRAMEONLY                 0x0008
+
+#define CVR_ALIGNLEFT                  0x0001
+#define CVR_ALIGNBOTTOM                        0x0002
+#define CVR_ALIGNRIGHT                 0x0004
+#define CVR_ALIGNTOP                   0x0008
+#define CVR_REDRAW                     0x0010
+
+#define HT_NORMAL                      0
+#define HT_TRANSPARENT                 (-1)
+#define HT_DISCARD                     (-2)
+#define HT_ERROR                       (-3)
+
+#define QS_KEY                         0x0001
+#define QS_MOUSEBUTTON                 0x0002
+#define QS_MOUSEMOVE                   0x0004
+#define QS_MOUSE                       0x0006
+#define QS_TIMER                       0x0008
+#define QS_PAINT                       0x0010
+#define QS_POSTMSG                     0x0020
+#define QS_SEM1                                0x0040
+#define QS_SEM2                                0x0080
+#define QS_SEM3                                0x0100
+#define QS_SEM4                                0x0200
+#define QS_SENDMSG                     0x0400
+#define QS_MSGINPUT                    0x0800
+
+#define SMIM_ALL                       0x0eff
+#define SMI_NOINTEREST                 0x0001
+#define SMI_INTEREST                   0x0002
+#define SMI_RESET                      0x0004
+#define SMI_AUTODISPATCH               0x0008
+
+#define WPM_TEXT                       0x0001
+#define WPM_CTLDATA                    0x0002
+#define WPM_PRESPARAMS                 0x0004
+#define WPM_CCHTEXT                    0x0008
+#define WPM_CBCTLDATA                  0x0010
+#define WPM_CBPRESPARAMS               0x0020
+
+
+typedef struct _WNDPARAMS
+{
+  ULONG fsStatus;
+  ULONG cchText;
+  PSZ  pszText;
+  ULONG cbPresParams;
+  PVOID pPresParams;
+  ULONG cbCtlData;
+  PVOID pCtlData;
+} WNDPARAMS;
+typedef WNDPARAMS *PWNDPARAMS;
+
+BOOL WinBroadcastMsg (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2, ULONG rgf);
+BOOL WinInSendMsg (HAB hab);
+BOOL WinPostQueueMsg (HMQ hmq, ULONG msg, MPARAM mp1, MPARAM mp2);
+BOOL WinQueryMsgPos (HAB hab, PPOINTL pptl);
+ULONG WinQueryMsgTime (HAB hab);
+ULONG WinQueryQueueStatus (HWND hwndDesktop);
+ULONG WinRequestMutexSem (HMTX hmtx, ULONG ulTimeout);
+BOOL WinSetClassMsgInterest (HAB hab, PCSZ pszClassName, ULONG msg_class,
+    LONG control);
+BOOL WinSetMsgInterest (HWND hwnd, ULONG msg_class, LONG control);
+ULONG WinWaitEventSem (HEV hev, ULONG ulTimeout);
+BOOL WinWaitMsg (HAB hab, ULONG msgFirst, ULONG msgLast);
+ULONG WinWaitMuxWaitSem (HMUX hmux, ULONG ulTimeout, PULONG pulUser);
+
+#endif /* INCL_WINMESSAGEMGR */
+
+
+#if defined (INCL_WINPALETTE)
+
+LONG WinRealizePalette (HWND hwnd, HPS hps, PULONG pcclr);
+
+#endif /* INCL_WINPALETTE */
+
+
+#if defined (INCL_WINPOINTERS)
+
+#define DP_NORMAL                      0x0000
+#define DP_HALFTONED                   0x0001
+#define DP_INVERTED                    0x0002
+#define DP_MINI                                0x0004
+
+#define SBMP_OLD_SYSMENU               1
+#define SBMP_OLD_SBUPARROW             2
+#define SBMP_OLD_SBDNARROW             3
+#define SBMP_OLD_SBRGARROW             4
+#define SBMP_OLD_SBLFARROW             5
+#define SBMP_MENUCHECK                 6
+#define SBMP_OLD_CHECKBOXES            7
+#define SBMP_BTNCORNERS                        8
+#define SBMP_OLD_MINBUTTON             9
+#define SBMP_OLD_MAXBUTTON             10
+#define SBMP_OLD_RESTOREBUTTON         11
+#define SBMP_OLD_CHILDSYSMENU          12
+#define SBMP_DRIVE                     15
+#define SBMP_FILE                      16
+#define SBMP_FOLDER                    17
+#define SBMP_TREEPLUS                  18
+#define SBMP_TREEMINUS                 19
+#define SBMP_PROGRAM                   22
+#define SBMP_MENUATTACHED              23
+#define SBMP_SIZEBOX                   24
+#define SBMP_SYSMENU                   25
+#define SBMP_MINBUTTON                 26
+#define SBMP_MAXBUTTON                 27
+#define SBMP_RESTOREBUTTON             28
+#define SBMP_CHILDSYSMENU              29
+#define SBMP_SYSMENUDEP                        30
+#define SBMP_MINBUTTONDEP              31
+#define SBMP_MAXBUTTONDEP              32
+#define SBMP_RESTOREBUTTONDEP          33
+#define SBMP_CHILDSYSMENUDEP           34
+#define SBMP_SBUPARROW                 35
+#define SBMP_SBDNARROW                 36
+#define SBMP_SBLFARROW                 37
+#define SBMP_SBRGARROW                 38
+#define SBMP_SBUPARROWDEP              39
+#define SBMP_SBDNARROWDEP              40
+#define SBMP_SBLFARROWDEP              41
+#define SBMP_SBRGARROWDEP              42
+#define SBMP_SBUPARROWDIS              43
+#define SBMP_SBDNARROWDIS              44
+#define SBMP_SBLFARROWDIS              45
+#define SBMP_SBRGARROWDIS              46
+#define SBMP_COMBODOWN                 47
+#define SBMP_CHECKBOXES                        48
+#define SBMP_HIDE                      50
+#define SBMP_HIDEDEP                   51
+#define SBMP_CLOSE                     52
+#define SBMP_CLOSEDEP                  53
+
+#define SPTR_ARROW                     1
+#define SPTR_TEXT                      2
+#define SPTR_WAIT                      3
+#define SPTR_SIZE                      4
+#define SPTR_MOVE                      5
+#define SPTR_SIZENWSE                  6
+#define SPTR_SIZENESW                  7
+#define SPTR_SIZEWE                    8
+#define SPTR_SIZENS                    9
+#define SPTR_APPICON                   10
+#define SPTR_ICONINFORMATION           11
+#define SPTR_ICONQUESTION              12
+#define SPTR_ICONERROR                 13
+#define SPTR_ICONWARNING               14
+#define SPTR_ILLEGAL                   18
+#define SPTR_FILE                      19
+#define SPTR_FOLDER                    20
+#define SPTR_MULTFILE                  21
+#define SPTR_PROGRAM                   22
+#define SPTR_DISPLAY_PTRS              22
+
+#define SPTR_PENFIRST                  23
+#define SPTR_PENLAST                   39
+#define SPTR_CPTR                      39
+
+#define SPTR_HANDICON                  SPTR_ICONERROR
+#define SPTR_QUESICON                  SPTR_ICONQUESTION
+#define SPTR_BANGICON                  SPTR_ICONWARNING
+#define SPTR_NOTEICON                  SPTR_ICONINFORMATION
+
+typedef struct _POINTERINFO
+{
+  ULONG          fPointer;
+  LONG   xHotspot;
+  LONG   yHotspot;
+  HBITMAP hbmPointer;
+  HBITMAP hbmColor;
+  HBITMAP hbmMiniPointer;
+  HBITMAP hbmMiniColor;
+} POINTERINFO;
+typedef POINTERINFO *PPOINTERINFO;
+
+
+HPOINTER WinCreatePointer (HWND hwndDesktop, HBITMAP hbmPointer, BOOL fPointer,
+    LONG xHotspot, LONG yHotspot);
+HPOINTER WinCreatePointerIndirect (HWND hwndDesktop,
+    __const__ POINTERINFO *pptri);
+BOOL WinDestroyPointer (HPOINTER hptr);
+BOOL WinDrawPointer (HPS hps, LONG x, LONG y, HPOINTER hptr, ULONG fs);
+HBITMAP WinGetSysBitmap (HWND hwndDesktop, ULONG ibm);
+HPOINTER WinLoadPointer (HWND hwndDesktop, HMODULE hmod, ULONG idres);
+BOOL WinLockPointerUpdate (HWND hwndDesktop, HPOINTER hptrNew,
+    ULONG ulTimeInterval);
+BOOL WinQueryPointerPos (HWND hwndDesktop, PPOINTL pptl);
+BOOL WinQueryPointerInfo (HPOINTER hptr, PPOINTERINFO pPointerInfo);
+HPOINTER WinQuerySysPointer (HWND hwndDesktop, LONG lId, BOOL fCopy);
+BOOL WinQuerySysPointerData (HWND hwndDesktop, ULONG ulId,
+    PICONINFO pIconInfo);
+BOOL WinSetPointer (HWND hwndDesktop, HPOINTER hptrNew);
+BOOL WinSetPointerOwner (HPOINTER hptr, PID pid, BOOL fDestroy);
+BOOL WinSetPointerPos (HWND hwndDesktop, LONG x, LONG y);
+BOOL WinSetSysPointerData (HWND hwndDesktop, ULONG ulId,
+    __const__ ICONINFO *pIconInfo);
+BOOL WinShowPointer (HWND hwndDesktop, BOOL fShow);
+
+#endif /* INCL_WINPOINTERS */
+
+
+#if defined (INCL_WINRECTANGLES)
+
+BOOL WinCopyRect (HAB hab, PRECTL prclDst, __const__ RECTL *prclSrc);
+BOOL WinEqualRect (HAB hab, __const__ RECTL *prcl1, __const__ RECTL *prcl2);
+BOOL WinInflateRect (HAB hab, PRECTL prcl, LONG cx, LONG cy);
+BOOL WinIntersectRect (HAB hab, PRECTL prclDst, __const__ RECTL *prclSrc1,
+    __const__ RECTL *prclSrc2);
+BOOL WinIsRectEmpty (HAB hab, __const__ RECTL *prcl);
+BOOL WinMakePoints (HAB hab, PPOINTL pwpt, ULONG cwpt);
+BOOL WinMakeRect (HAB hab, PRECTL pwrc);
+BOOL WinOffsetRect (HAB hab, PRECTL prcl, LONG cx, LONG cy);
+BOOL WinPtInRect (HAB hab, __const__ RECTL *prcl, __const__ POINTL *pptl);
+BOOL WinSetRect (HAB hab, PRECTL prcl, LONG xLeft, LONG yBottom, LONG xRight,
+    LONG yTop);
+BOOL WinSetRectEmpty (HAB hab, PRECTL prcl);
+BOOL WinSubtractRect (HAB hab, PRECTL prclDst, __const__ RECTL *prclSrc1,
+    __const__ RECTL *prclSrc2);
+BOOL WinUnionRect (HAB hab, PRECTL prclDst, __const__ RECTL *prclSrc1,
+    __const__ RECTL *prclSrc2);
+
+#endif /* INCL_WINRECTANGLES */
+
+
+#if defined (INCL_WINSCROLLBARS)
+
+#define SB_LINEUP                      1
+#define SB_LINEDOWN                    2
+#define SB_LINELEFT                    1
+#define SB_LINERIGHT                   2
+#define SB_PAGEUP                      3
+#define SB_PAGEDOWN                    4
+#define SB_PAGELEFT                    3
+#define SB_PAGERIGHT                   4
+#define SB_SLIDERTRACK                 5
+#define SB_SLIDERPOSITION              6
+#define SB_ENDSCROLL                   7
+
+#define SBM_SETSCROLLBAR               0x01a0
+#define SBM_SETPOS                     0x01a1
+#define SBM_QUERYPOS                   0x01a2
+#define SBM_QUERYRANGE                 0x01a3
+#define SBM_SETTHUMBSIZE               0x01a6
+
+#define SBS_HORZ                       0
+#define SBS_VERT                       1
+#define SBS_THUMBSIZE                  2
+#define SBS_AUTOTRACK                  4
+#define SBS_AUTOSIZE                   0x2000
+
+typedef struct _SBCDATA
+{
+  USHORT cb;
+  USHORT sHilite;
+  SHORT         posFirst;
+  SHORT         posLast;
+  SHORT         posThumb;
+  SHORT         cVisible;
+  SHORT         cTotal;
+} SBCDATA;
+typedef SBCDATA *PSBCDATA;
+
+#endif /* INCL_WINSCROLLBARS */
+
+
+#if defined (INCL_WINSTATICS)
+
+#define SM_SETHANDLE                   0x0100
+#define SM_QUERYHANDLE                 0x0101
+
+#define SS_TEXT                                0x0001
+#define SS_GROUPBOX                    0x0002
+#define SS_ICON                                0x0003
+#define SS_BITMAP                      0x0004
+#define SS_FGNDRECT                    0x0005
+#define SS_HALFTONERECT                        0x0006
+#define SS_BKGNDRECT                   0x0007
+#define SS_FGNDFRAME                   0x0008
+#define SS_HALFTONEFRAME               0x0009
+#define SS_BKGNDFRAME                  0x000a
+#define SS_SYSICON                     0x000b
+#define SS_AUTOSIZE                    0x0040
+
+#define WM_MSGBOXINIT                  0x010e
+#define WM_MSGBOXDISMISS               0x010f
+
+#endif /* INCL_WINSTATICS */
+
+
+#if defined (INCL_WINSYS)
+
+#define CCF_GLOBAL                     0x0000
+#define CCF_APPLICATION                        0x0001
+#define CCF_COUNTCOLORS                        0x0010
+#define CCF_ALLCOLORS                  0x0020
+
+#define CCI_FOREGROUND                 1
+#define CCI_FOREGROUNDREADONLY         2
+#define CCI_BACKGROUND                 3
+#define CCI_BACKGROUNDDIALOG           4
+#define CCI_DISABLEDFOREGROUND         5
+#define CCI_DISABLEDFOREGROUNDREADONLY 6
+#define CCI_DISABLEDBACKGROUND         7
+#define CCI_DISABLEDBACKGROUNDDIALOG   8
+#define CCI_HIGHLIGHTFOREGROUND                9
+#define CCI_HIGHLIGHTBACKGROUND                10
+#define CCI_HIGHLIGHTBACKGROUNDDIALOG  11
+#define CCI_INACTIVEFOREGROUND         12
+#define CCI_INACTIVEFOREGROUNDDIALOG   13
+#define CCI_INACTIVEBACKGROUND         14
+#define CCI_INACTIVEBACKGROUNDTEXT     15
+#define CCI_ACTIVEFOREGROUND           16
+#define CCI_ACTIVEFOREGROUNDDIALOG     17
+#define CCI_ACTIVEBACKGROUND           18
+#define CCI_ACTIVEBACKGROUNDTEXT       19
+#define CCI_PAGEBACKGROUND             20
+#define CCI_PAGEFOREGROUND             21
+#define CCI_FIELDBACKGROUND            22
+#define CCI_BORDER                     23
+#define CCI_BORDERLIGHT                        24
+#define CCI_BORDERDARK                 25
+#define CCI_BORDER2                    26
+#define CCI_BORDER2LIGHT               27
+#define CCI_BORDER2DARK                        28
+#define CCI_BORDERDEFAULT              29
+#define CCI_BUTTONBACKGROUND           30
+#define CCI_BUTTONFOREGROUND           31
+#define CCI_BUTTONBORDERLIGHT          32
+#define CCI_BUTTONBORDERDARK           33
+#define CCI_ARROW                      34
+#define CCI_DISABLEDARROW              35
+#define CCI_ARROWBORDERLIGHT           36
+#define CCI_ARROWBORDERDARK            37
+#define CCI_CHECKLIGHT                 38
+#define CCI_CHECKMIDDLE                        39
+#define CCI_CHECKDARK                  40
+#define CCI_ICONFOREGROUND             41
+#define CCI_ICONBACKGROUND             42
+#define CCI_ICONBACKGROUNDDESKTOP      43
+#define CCI_ICONHILITEFOREGROUND       44
+#define CCI_ICONHILITEBACKGROUND       45
+#define CCI_MAJORTABFOREGROUND         46
+#define CCI_MAJORTABBACKGROUND         47
+#define CCI_MINORTABFOREGROUND         48
+#define CCI_MINORTABBACKGROUND         49
+#define CCI_MAXINDEX                   49
+
+#define CCT_STATIC                     1
+#define CCT_STATICTEXT                 2
+#define CCT_GROUPBOX                   3
+#define CCT_PUSHBUTTON                 4
+#define CCT_CHECKBOX                   5
+#define CCT_RADIOBUTTON                        6
+#define CCT_ENTRYFIELD                 7
+#define CCT_LISTBOX                    8
+#define CCT_COMBOBOX                   9
+#define CCT_SCROLLBAR                  10
+#define CCT_FRAME                      11
+#define CCT_MENU                       12
+#define CCT_TITLEBAR                   13
+#define CCT_SPINBUTTON                 14
+#define CCT_SLIDER                     15
+#define CCT_CIRCULARSLIDER             16
+#define CCT_VALUESET                   17
+#define CCT_MLE                                18
+#define CCT_CONTAINER                  19
+#define CCT_NOTEBOOK                   20
+#define CCT_MAXTYPE                    20
+
+#define CCV_NOTFOUND                   (-1)
+#define CCV_IGNORE                     (-2)
+#define CCV_DEFAULT                    (-3)
+
+#define PP_FOREGROUNDCOLOR             1
+#define PP_FOREGROUNDCOLORINDEX                2
+#define PP_BACKGROUNDCOLOR             3
+#define PP_BACKGROUNDCOLORINDEX                4
+#define PP_HILITEFOREGROUNDCOLOR       5
+#define PP_HILITEFOREGROUNDCOLORINDEX  6
+#define PP_HILITEBACKGROUNDCOLOR       7
+#define PP_HILITEBACKGROUNDCOLORINDEX  8
+#define PP_DISABLEDFOREGROUNDCOLOR     9
+#define PP_DISABLEDFOREGROUNDCOLORINDEX 10
+#define PP_DISABLEDBACKGROUNDCOLOR     11
+#define PP_DISABLEDBACKGROUNDCOLORINDEX 12
+#define PP_BORDERCOLOR                 13
+#define PP_BORDERCOLORINDEX            14
+#define PP_FONTNAMESIZE                        15
+#define PP_FONTHANDLE                  16
+#define PP_RESERVED                    17
+#define PP_ACTIVECOLOR                 18
+#define PP_ACTIVECOLORINDEX            19
+#define PP_INACTIVECOLOR               20
+#define PP_INACTIVECOLORINDEX          21
+#define PP_ACTIVETEXTFGNDCOLOR         22
+#define PP_ACTIVETEXTFGNDCOLORINDEX    23
+#define PP_ACTIVETEXTBGNDCOLOR         24
+#define PP_ACTIVETEXTBGNDCOLORINDEX    25
+#define PP_INACTIVETEXTFGNDCOLOR       26
+#define PP_INACTIVETEXTFGNDCOLORINDEX  27
+#define PP_INACTIVETEXTBGNDCOLOR       28
+#define PP_INACTIVETEXTBGNDCOLORINDEX  29
+#define PP_SHADOW                      30
+#define PP_MENUFOREGROUNDCOLOR         31
+#define PP_MENUFOREGROUNDCOLORINDEX    32
+#define PP_MENUBACKGROUNDCOLOR         33
+#define PP_MENUBACKGROUNDCOLORINDEX    34
+#define PP_MENUHILITEFGNDCOLOR         35
+#define PP_MENUHILITEFGNDCOLORINDEX    36
+#define PP_MENUHILITEBGNDCOLOR         37
+#define PP_MENUHILITEBGNDCOLORINDEX    38
+#define PP_MENUDISABLEDFGNDCOLOR       39
+#define PP_MENUDISABLEDFGNDCOLORINDEX  40
+#define PP_MENUDISABLEDBGNDCOLOR       41
+#define PP_MENUDISABLEDBGNDCOLORINDEX  42
+#define PP_SHADOWTEXTCOLOR             43
+#define PP_SHADOWTEXTCOLORINDEX                44
+#define PP_SHADOWHILITEFGNDCOLOR       45
+#define PP_SHADOWHILITEFGNDCOLORINDEX  46
+#define PP_SHADOWHILITEBGNDCOLOR       47
+#define PP_SHADOWHILITEBGNDCOLORINDEX  48
+#define PP_ICONTEXTBACKGROUNDCOLOR     49
+#define PP_ICONTEXTBACKGROUNDCOLORINDEX        50
+#define PP_BORDERLIGHTCOLOR            51
+#define PP_BORDERDARKCOLOR             52
+#define PP_BORDER2COLOR                        53
+#define PP_BORDER2LIGHTCOLOR           54
+#define PP_BORDER2DARKCOLOR            55
+#define PP_BORDERDEFAULTCOLOR          56
+#define PP_FIELDBACKGROUNDCOLOR                57
+#define PP_BUTTONBACKGROUNDCOLOR       58
+#define PP_BUTTONBORDERLIGHTCOLOR      59
+#define PP_BUTTONBORDERDARKCOLOR       60
+#define PP_ARROWCOLOR                  61
+#define PP_ARROWBORDERLIGHTCOLOR       62
+#define PP_ARROWBORDERDARKCOLOR                63
+#define PP_ARROWDISABLEDCOLOR          64
+#define PP_CHECKLIGHTCOLOR             65
+#define PP_CHECKMIDDLECOLOR            66
+#define PP_CHECKDARKCOLOR              67
+#define PP_PAGEFOREGROUNDCOLOR         68
+#define PP_PAGEBACKGROUNDCOLOR         69
+#define PP_MAJORTABFOREGROUNDCOLOR     70
+#define PP_MAJORTABBACKGROUNDCOLOR     71
+#define PP_MINORTABFOREGROUNDCOLOR     72
+#define PP_MINORTABBACKGROUNDCOLOR     73
+
+#define PP_BIDI_FIRST                  0x0100
+#define PP_BIDI_LAST                   0x012f
+#define PP_USER                                0x8000
+
+#define QPF_NOINHERIT                  0x0001
+#define QPF_ID1COLORINDEX              0x0002
+#define QPF_ID2COLORINDEX              0x0004
+#define QPF_PURERGBCOLOR               0x0008
+#define QPF_VALIDFLAGS                 0x000f
+
+#define SV_SWAPBUTTON                  0
+#define SV_DBLCLKTIME                  1
+#define SV_CXDBLCLK                    2
+#define SV_CYDBLCLK                    3
+#define SV_CXSIZEBORDER                        4
+#define SV_CYSIZEBORDER                        5
+#define SV_ALARM                       6
+#define SV_CURSORRATE                  9
+#define SV_FIRSTSCROLLRATE             10
+#define SV_SCROLLRATE                  11
+#define SV_NUMBEREDLISTS               12
+#define SV_WARNINGFREQ                 13
+#define SV_NOTEFREQ                    14
+#define SV_ERRORFREQ                   15
+#define SV_WARNINGDURATION             16
+#define SV_NOTEDURATION                        17
+#define SV_ERRORDURATION               18
+#define SV_CXSCREEN                    20
+#define SV_CYSCREEN                    21
+#define SV_CXVSCROLL                   22
+#define SV_CYHSCROLL                   23
+#define SV_CYVSCROLLARROW              24
+#define SV_CXHSCROLLARROW              25
+#define SV_CXBORDER                    26
+#define SV_CYBORDER                    27
+#define SV_CXDLGFRAME                  28
+#define SV_CYDLGFRAME                  29
+#define SV_CYTITLEBAR                  30
+#define SV_CYVSLIDER                   31
+#define SV_CXHSLIDER                   32
+#define SV_CXMINMAXBUTTON              33
+#define SV_CYMINMAXBUTTON              34
+#define SV_CYMENU                      35
+#define SV_CXFULLSCREEN                        36
+#define SV_CYFULLSCREEN                        37
+#define SV_CXICON                      38
+#define SV_CYICON                      39
+#define SV_CXPOINTER                   40
+#define SV_CYPOINTER                   41
+#define SV_DEBUG                       42
+#define SV_CMOUSEBUTTONS               43
+#define SV_CPOINTERBUTTONS             43
+#define SV_POINTERLEVEL                        44
+#define SV_CURSORLEVEL                 45
+#define SV_TRACKRECTLEVEL              46
+#define SV_CTIMERS                     47
+#define SV_MOUSEPRESENT                        48
+#define SV_CXBYTEALIGN                 49
+#define SV_CXALIGN                     49
+#define SV_CYBYTEALIGN                 50
+#define SV_CYALIGN                     50
+#define SV_DESKTOPWORKAREAYTOP         51
+#define SV_DESKTOPWORKAREAYBOTTOM      52
+#define SV_DESKTOPWORKAREAXRIGHT       53
+#define SV_DESKTOPWORKAREAXLEFT                54
+#define SV_NOTRESERVED                 56
+#define SV_EXTRAKEYBEEP                        57
+#define SV_SETLIGHTS                   58
+#define SV_INSERTMODE                  59
+#define SV_MENUROLLDOWNDELAY           64
+#define SV_MENUROLLUPDELAY             65
+#define SV_ALTMNEMONIC                 66
+#define SV_TASKLISTMOUSEACCESS         67
+#define SV_CXICONTEXTWIDTH             68
+#define SV_CICONTEXTLINES              69
+#define SV_CHORDTIME                   70
+#define SV_CXCHORD                     71
+#define SV_CYCHORD                     72
+#define SV_CXMOTIONSTART               73
+#define SV_CYMOTIONSTART               74
+#define SV_BEGINDRAG                   75
+#define SV_ENDDRAG                     76
+#define SV_SINGLESELECT                        77
+#define SV_OPEN                                78
+#define SV_CONTEXTMENU                 79
+#define SV_CONTEXTHELP                 80
+#define SV_TEXTEDIT                    81
+#define SV_BEGINSELECT                 82
+#define SV_ENDSELECT                   83
+#define SV_BEGINDRAGKB                 84
+#define SV_ENDDRAGKB                   85
+#define SV_SELECTKB                    86
+#define SV_OPENKB                      87
+#define SV_CONTEXTMENUKB               88
+#define SV_CONTEXTHELPKB               89
+#define SV_TEXTEDITKB                  90
+#define SV_BEGINSELECTKB               91
+#define SV_ENDSELECTKB                 92
+#define SV_ANIMATION                   93
+#define SV_ANIMATIONSPEED              94
+#define SV_MONOICONS                   95
+#define SV_KBDALTERED                  96
+#define SV_PRINTSCREEN                 97
+#define SV_LOCKSTARTINPUT              98
+#define SV_DYNAMICDRAG                 99
+#define SV_CSYSVALUES                  100
+
+#define SYSCLR_SHADOWHILITEBGND                (-50)
+#define SYSCLR_SHADOWHILITEFGND                (-49)
+#define SYSCLR_SHADOWTEXT              (-48)
+#define SYSCLR_ENTRYFIELD              (-47)
+#define SYSCLR_MENUDISABLEDTEXT                (-46)
+#define SYSCLR_MENUHILITE              (-45)
+#define SYSCLR_MENUHILITEBGND          (-44)
+#define SYSCLR_PAGEBACKGROUND          (-43)
+#define SYSCLR_FIELDBACKGROUND         (-42)
+#define SYSCLR_BUTTONLIGHT             (-41)
+#define SYSCLR_BUTTONMIDDLE            (-40)
+#define SYSCLR_BUTTONDARK              (-39)
+#define SYSCLR_BUTTONDEFAULT           (-38)
+#define SYSCLR_TITLEBOTTOM             (-37)
+#define SYSCLR_SHADOW                  (-36)
+#define SYSCLR_ICONTEXT                        (-35)
+#define SYSCLR_DIALOGBACKGROUND                (-34)
+#define SYSCLR_HILITEFOREGROUND                (-33)
+#define SYSCLR_HILITEBACKGROUND                (-32)
+#define SYSCLR_INACTIVETITLETEXTBGND   (-31)
+#define SYSCLR_ACTIVETITLETEXTBGND     (-30)
+#define SYSCLR_INACTIVETITLETEXT       (-29)
+#define SYSCLR_ACTIVETITLETEXT         (-28)
+#define SYSCLR_OUTPUTTEXT              (-27)
+#define SYSCLR_WINDOWSTATICTEXT                (-26)
+#define SYSCLR_SCROLLBAR               (-25)
+#define SYSCLR_BACKGROUND              (-24)
+#define SYSCLR_ACTIVETITLE             (-23)
+#define SYSCLR_INACTIVETITLE           (-22)
+#define SYSCLR_MENU                    (-21)
+#define SYSCLR_WINDOW                  (-20)
+#define SYSCLR_WINDOWFRAME             (-19)
+#define SYSCLR_MENUTEXT                        (-18)
+#define SYSCLR_WINDOWTEXT              (-17)
+#define SYSCLR_TITLETEXT               (-16)
+#define SYSCLR_ACTIVEBORDER            (-15)
+#define SYSCLR_INACTIVEBORDER          (-14)
+#define SYSCLR_APPWORKSPACE            (-13)
+#define SYSCLR_HELPBACKGROUND          (-12)
+#define SYSCLR_HELPTEXT                        (-11)
+#define SYSCLR_HELPHILITE              (-10)
+
+#define SYSCLR_CSYSCOLORS              41
+
+#define WM_CTLCOLORCHANGE              0x0129
+#define WM_QUERYCTLTYPE                        0x0130 /*0x012a?*/
+
+
+typedef struct _CTLCOLOR
+{
+  LONG clrIndex;
+  LONG clrValue;
+} CTLCOLOR;
+typedef CTLCOLOR *PCTLCOLOR;
+
+typedef struct _PARAM
+{
+  ULONG id;
+  ULONG cb;
+  BYTE ab[1];
+} PARAM;
+typedef PARAM *NPPARAM;
+typedef PARAM *PPARAM;
+
+typedef struct _PRESPARAMS
+{
+  ULONG cb;
+  PARAM aparam[1];
+} PRESPARAMS;
+typedef PRESPARAMS *NPPRESPARAMS;
+typedef PRESPARAMS *PPRESPARAMS;
+
+
+LONG WinQueryControlColors (HWND hwnd, LONG clrType, ULONG flCtlColor,
+    ULONG cCtlColor, PCTLCOLOR pCtlColor);
+ULONG WinQueryPresParam (HWND hwnd, ULONG id1, ULONG id2, PULONG pulId,
+    ULONG cbBuf, PVOID pbBuf, ULONG fs);
+LONG WinQuerySysColor (HWND hwndDesktop, LONG clr, LONG lReserved);
+LONG WinQuerySysValue (HWND hwndDesktop, LONG iSysValue);
+BOOL WinRemovePresParam (HWND hwnd, ULONG id);
+LONG WinSetControlColors (HWND hwnd, LONG clrType, ULONG flCtlColor,
+    ULONG cCtlColor, PCTLCOLOR pCtlColor);
+BOOL WinSetPresParam (HWND hwnd, ULONG id, ULONG cbParam, PVOID pbParam);
+BOOL WinSetSysColors (HWND hwndDesktop, ULONG flOptions, ULONG flFormat,
+    LONG clrFirst, ULONG cclr, __const__ LONG *pclr);
+BOOL WinSetSysValue (HWND hwndDesktop, LONG iSysValue, LONG lValue);
+
+#endif /* INCL_WINSYS */
+
+
+#if defined (INCL_WINTHUNKAPI)
+
+PFN WinQueryClassThunkProc (PCSZ pszClassname);
+LONG WinQueryWindowModel (HWND hwnd);
+PFN WinQueryWindowThunkProc (HWND hwnd);
+BOOL WinSetClassThunkProc (PCSZ pszClassname, PFN pfnThunkProc);
+BOOL WinSetWindowThunkProc (HWND hwnd, PFN pfnThunkProc);
+
+#endif /* INCL_WINTHUNKAPI */
+
+
+#if defined (INCL_WINTIMER)
+
+#define TID_CURSOR                     0xffff
+#define TID_SCROLL                     0xfffe
+#define TID_FLASHWINDOW                        0xfffd
+#define TID_USERMAX                    0x7fff
+
+ULONG  WinGetCurrentTime (HAB hab);
+ULONG WinStartTimer (HAB hab, HWND hwnd, ULONG idTimer, ULONG dtTimeout);
+BOOL WinStopTimer (HAB hab, HWND hwnd, ULONG idTimer);
+
+#endif /* INCL_WINTIMER */
+
+#if defined (INCL_WINTRACKRECT)
+
+#define TF_LEFT                                0x0001
+#define TF_TOP                         0x0002
+#define TF_RIGHT                       0x0004
+#define TF_BOTTOM                      0x0008
+#define TF_SETPOINTERPOS               0x0010
+#define TF_GRID                                0x0020
+#define TF_STANDARD                    0x0040
+#define TF_ALLINBOUNDARY               0x0080
+#define TF_VALIDATETRACKRECT           0x0100
+#define TF_PARTINBOUNDARY              0x0200
+
+#define TF_MOVE                                0x000f
+
+typedef struct _TRACKINFO
+{
+  LONG  cxBorder;
+  LONG  cyBorder;
+  LONG  cxGrid;
+  LONG  cyGrid;
+  LONG  cxKeyboard;
+  LONG  cyKeyboard;
+  RECTL         rclTrack;
+  RECTL         rclBoundary;
+  POINTL ptlMinTrackSize;
+  POINTL ptlMaxTrackSize;
+  ULONG         fs;
+} TRACKINFO;
+typedef TRACKINFO *PTRACKINFO;
+
+BOOL WinShowTrackRect (HWND hwnd, BOOL fShow);
+BOOL WinTrackRect (HWND hwnd, HPS hps, PTRACKINFO pti);
+
+#endif /* INCL_WINTRACKRECT */
+
+/* -------------------- MULTIPLE LINE ENTRIES ----------------------------- */
+
+#if defined (INCL_WINMLE)
+
+#define MLS_WORDWRAP                   0x0001
+#define MLS_BORDER                     0x0002
+#define MLS_VSCROLL                    0x0004
+#define MLS_HSCROLL                    0x0008
+#define MLS_READONLY                   0x0010
+#define MLS_IGNORETAB                  0x0020
+#define MLS_DISABLEUNDO                        0x0040
+
+#define MLFFMTRECT_FORMATRECT          0x0007
+#define MLFFMTRECT_LIMITHORZ           0x0001
+#define MLFFMTRECT_LIMITVERT           0x0002
+#define MLFFMTRECT_MATCHWINDOW         0x0004
+
+#define MLFIE_CFTEXT                   0
+#define MLFIE_NOTRANS                  1
+#define MLFIE_WINFMT                   2
+#define MLFIE_RTF                      3
+
+#define MLFEFR_RESIZE                  0x0001
+#define MLFEFR_TABSTOP                 0x0002
+#define MLFEFR_FONT                    0x0004
+#define MLFEFR_TEXT                    0x0008
+#define MLFEFR_WORDWRAP                        0x0010
+#define MLFETL_TEXTBYTES               0x0020
+
+#define MLFMARGIN_LEFT                 0x0001
+#define MLFMARGIN_BOTTOM               0x0002
+#define MLFMARGIN_RIGHT                        0x0003
+#define MLFMARGIN_TOP                  0x0004
+
+#define MLFQS_MINMAXSEL                        0
+#define MLFQS_MINSEL                   1
+#define MLFQS_MAXSEL                   2
+#define MLFQS_ANCHORSEL                        3
+#define MLFQS_CURSORSEL                        4
+
+#define MLFCLPBD_TOOMUCHTEXT           0x0001
+#define MLFCLPBD_ERROR                 0x0002
+
+#define MLFSEARCH_CASESENSITIVE                0x0001
+#define MLFSEARCH_SELECTMATCH          0x0002
+#define MLFSEARCH_CHANGEALL            0x0004
+
+#define MLM_SETTEXTLIMIT               0x01b0
+#define MLM_QUERYTEXTLIMIT             0x01b1
+#define MLM_SETFORMATRECT              0x01b2
+#define MLM_QUERYFORMATRECT            0x01b3
+#define MLM_SETWRAP                    0x01b4
+#define MLM_QUERYWRAP                  0x01b5
+#define MLM_SETTABSTOP                 0x01b6
+#define MLM_QUERYTABSTOP               0x01b7
+#define MLM_SETREADONLY                        0x01b8
+#define MLM_QUERYREADONLY              0x01b9
+
+#define MLM_QUERYCHANGED               0x01ba
+#define MLM_SETCHANGED                 0x01bb
+#define MLM_QUERYLINECOUNT             0x01bc
+#define MLM_CHARFROMLINE               0x01bd
+#define MLM_LINEFROMCHAR               0x01be
+#define MLM_QUERYLINELENGTH            0x01bf
+#define MLM_QUERYTEXTLENGTH            0x01c0
+
+#define MLM_FORMAT                     0x01c1
+#define MLM_SETIMPORTEXPORT            0x01c2
+#define MLM_IMPORT                     0x01c3
+#define MLM_EXPORT                     0x01c4
+#define MLM_DELETE                     0x01c6
+#define MLM_QUERYFORMATLINELENGTH      0x01c7
+#define MLM_QUERYFORMATTEXTLENGTH      0x01c8
+#define MLM_INSERT                     0x01c9
+
+#define MLM_SETSEL                     0x01ca
+#define MLM_QUERYSEL                   0x01cb
+#define MLM_QUERYSELTEXT               0x01cc
+
+#define MLM_QUERYUNDO                  0x01cd
+#define MLM_UNDO                       0x01ce
+#define MLM_RESETUNDO                  0x01cf
+
+#define MLM_QUERYFONT                  0x01d0
+#define MLM_SETFONT                    0x01d1
+#define MLM_SETTEXTCOLOR               0x01d2
+#define MLM_QUERYTEXTCOLOR             0x01d3
+#define MLM_SETBACKCOLOR               0x01d4
+#define MLM_QUERYBACKCOLOR             0x01d5
+
+#define MLM_QUERYFIRSTCHAR             0x01d6
+#define MLM_SETFIRSTCHAR               0x01d7
+
+#define MLM_CUT                                0x01d8
+#define MLM_COPY                       0x01d9
+#define MLM_PASTE                      0x01da
+#define MLM_CLEAR                      0x01db
+
+#define MLM_ENABLEREFRESH              0x01dc
+#define MLM_DISABLEREFRESH             0x01dd
+
+#define MLM_SEARCH                     0x01de
+#define MLM_QUERYIMPORTEXPORT          0x01df
+
+#define MLN_OVERFLOW                   0x0001
+#define MLN_PIXHORZOVERFLOW            0x0002
+#define MLN_PIXVERTOVERFLOW            0x0003
+#define MLN_TEXTOVERFLOW               0x0004
+#define MLN_VSCROLL                    0x0005
+#define MLN_HSCROLL                    0x0006
+#define MLN_CHANGE                     0x0007
+#define MLN_SETFOCUS                   0x0008
+#define MLN_KILLFOCUS                  0x0009
+#define MLN_MARGIN                     0x000a
+#define MLN_SEARCHPAUSE                        0x000b
+#define MLN_MEMERROR                   0x000c
+#define MLN_UNDOOVERFLOW               0x000d
+#define MLN_CLPBDFAIL                  0x000f
+
+
+typedef LONG IPT;
+typedef IPT *PIPT;
+typedef LONG PIX;
+typedef ULONG LINE;
+
+
+typedef struct _FORMATRECT     /* Note 1 */
+{
+  LONG cxFormat;
+  LONG cyFormat;
+} MLEFORMATRECT;
+typedef MLEFORMATRECT *PFORMATRECT;
+
+typedef struct _MLECTLDATA
+{
+  USHORT cbCtlData;
+  USHORT afIEFormat;
+  ULONG         cchText;
+  IPT   iptAnchor;
+  IPT   iptCursor;
+  LONG  cxFormat;
+  LONG  cyFormat;
+  ULONG         afFormatFlags;
+  PVOID         pHWXCtlData;
+} MLECTLDATA;
+typedef MLECTLDATA *PMLECTLDATA;
+
+typedef struct _MLEOVERFLOW
+{
+  ULONG afErrInd;
+  LONG nBytesOver;
+  LONG pixHorzOver;
+  LONG pixVertOver;
+} MLEOVERFLOW;
+typedef MLEOVERFLOW *POVERFLOW;
+
+typedef struct _MLEMARGSTRUCT
+{
+  USHORT afMargins;
+  USHORT usMouMsg;
+  IPT   iptNear;
+} MLEMARGSTRUCT;
+typedef MLEMARGSTRUCT *PMARGSTRUCT;
+
+typedef struct _SEARCH         /* Note 1 */
+{
+  USHORT cb;
+  USHORT _pad;
+  PCHAR         pchFind;
+  PCHAR         pchReplace;
+  SHORT         cchFind;
+  SHORT         cchReplace;
+  IPT   iptStart;
+  IPT   iptStop;
+  USHORT cchFound;
+} MLE_SEARCHDATA;
+typedef MLE_SEARCHDATA *PMLE_SEARCHDATA;
+
+#endif /* INCL_WINMLE */
+
+/* --------------- GRAPHICS PROGRAMMING INTERFACE ------------------------- */
+
+#define GPI_ERROR                      0
+#define GPI_OK                         1
+#define GPI_ALTERROR                   (-1)
+
+#define HRGN_ERROR                     ((HRGN)(-1))
+
+#define CLR_ERROR                      (-255)
+#define CLR_NOINDEX                    (-254)
+#define CLR_FALSE                      (-5)
+#define CLR_TRUE                       (-4)
+#define CLR_DEFAULT                    (-3)
+#define CLR_WHITE                      (-2)
+#define CLR_BLACK                      (-1)
+#define CLR_BACKGROUND                 0
+#define CLR_BLUE                       1
+#define CLR_RED                                2
+#define CLR_PINK                       3
+#define CLR_GREEN                      4
+#define CLR_CYAN                       5
+#define CLR_YELLOW                     6
+#define CLR_NEUTRAL                    7
+#define CLR_DARKGRAY                   8
+#define CLR_DARKBLUE                   9
+#define CLR_DARKRED                    10
+#define CLR_DARKPINK                   11
+#define CLR_DARKGREEN                  12
+#define CLR_DARKCYAN                   13
+#define CLR_BROWN                      14
+#define CLR_PALEGRAY                   15
+
+#define RGB_ERROR                      (-255)
+#define RGB_BLACK                      0x00000000
+#define RGB_BLUE                       0x000000ff
+#define RGB_GREEN                      0x0000ff00
+#define RGB_CYAN                       0x0000ffff
+#define RGB_RED                                0x00ff0000
+#define RGB_PINK                       0x00ff00ff
+#define RGB_YELLOW                     0x00ffff00
+#define RGB_WHITE                      0x00ffffff
+
+#define PRIM_LINE                      1
+#define PRIM_CHAR                      2
+#define PRIM_MARKER                    3
+#define PRIM_AREA                      4
+#define PRIM_IMAGE                     5
+
+#define AM_ERROR                       (-1)
+#define AM_PRESERVE                    0
+#define AM_NOPRESERVE                  1
+
+#define FM_ERROR                       (-1)
+#define FM_DEFAULT                     0
+#define FM_OR                          1
+#define FM_OVERPAINT                   2
+#define FM_LEAVEALONE                  5
+
+#define FM_XOR                         4
+#define FM_AND                         6
+#define FM_SUBTRACT                    7
+#define FM_MASKSRCNOT                  8
+#define FM_ZERO                                9
+#define FM_NOTMERGESRC                 10
+#define FM_NOTXORSRC                   11
+#define FM_INVERT                      12
+#define FM_MERGESRCNOT                 13
+#define FM_NOTCOPYSRC                  14
+#define FM_MERGENOTSRC                 15
+#define FM_NOTMASKSRC                  16
+#define FM_ONE                         17
+
+#define BM_ERROR                       (-1)
+#define BM_DEFAULT                     0
+#define BM_OR                          1
+#define BM_OVERPAINT                   2
+#define BM_LEAVEALONE                  5
+
+#define BM_XOR                         4
+#define BM_AND                         6
+#define BM_SUBTRACT                    7
+#define BM_MASKSRCNOT                  8
+#define BM_ZERO                                9
+#define BM_NOTMERGESRC                 10
+#define BM_NOTXORSRC                   11
+#define BM_INVERT                      12
+#define BM_MERGESRCNOT                 13
+#define BM_NOTCOPYSRC                  14
+#define BM_MERGENOTSRC                 15
+#define BM_NOTMASKSRC                  16
+#define BM_ONE                         17
+#define BM_SRCTRANSPARENT              18
+#define BM_DESTTRANSPARENT             19
+
+#define LINETYPE_ERROR                 (-1)
+#define LINETYPE_DEFAULT               0
+#define LINETYPE_DOT                   1
+#define LINETYPE_SHORTDASH             2
+#define LINETYPE_DASHDOT               3
+#define LINETYPE_DOUBLEDOT             4
+#define LINETYPE_LONGDASH              5
+#define LINETYPE_DASHDOUBLEDOT         6
+#define LINETYPE_SOLID                 7
+#define LINETYPE_INVISIBLE             8
+#define LINETYPE_ALTERNATE             9
+
+#define LINEWIDTH_ERROR                        (-1)
+#define LINEWIDTH_DEFAULT              0L
+#define LINEWIDTH_NORMAL               0x00010000
+#define LINEWIDTH_THICK                        0x00020000
+
+#define LINEWIDTHGEOM_ERROR            (-1)
+
+#define LINEEND_ERROR                  (-1)
+#define LINEEND_DEFAULT                        0
+#define LINEEND_FLAT                   1
+#define LINEEND_SQUARE                 2
+#define LINEEND_ROUND                  3
+
+#define LINEJOIN_ERROR                 (-1)
+#define LINEJOIN_DEFAULT               0
+#define LINEJOIN_BEVEL                 1
+#define LINEJOIN_ROUND                 2
+#define LINEJOIN_MITRE                 3
+
+#define CHDIRN_ERROR                   (-1)
+#define CHDIRN_DEFAULT                 0
+#define CHDIRN_LEFTRIGHT               1
+#define CHDIRN_TOPBOTTOM               2
+#define CHDIRN_RIGHTLEFT               3
+#define CHDIRN_BOTTOMTOP               4
+
+#define TA_NORMAL_HORIZ                        0x0001
+#define TA_LEFT                                0x0002
+#define TA_CENTER                      0x0003
+#define TA_RIGHT                       0x0004
+#define TA_STANDARD_HORIZ              0x0005
+#define TA_NORMAL_VERT                 0x0100
+#define TA_TOP                         0x0200
+#define TA_HALF                                0x0300
+#define TA_BASE                                0x0400
+#define TA_BOTTOM                      0x0500
+#define TA_STANDARD_VERT               0x0600
+
+#define CM_ERROR                       (-1)
+#define CM_DEFAULT                     0
+#define CM_MODE1                       1
+#define CM_MODE2                       2
+#define CM_MODE3                       3
+
+#define MARKSYM_ERROR                  (-1)
+#define MARKSYM_DEFAULT                        0
+#define MARKSYM_CROSS                  1
+#define MARKSYM_PLUS                   2
+#define MARKSYM_DIAMOND                        3
+#define MARKSYM_SQUARE                 4
+#define MARKSYM_SIXPOINTSTAR           5
+#define MARKSYM_EIGHTPOINTSTAR         6
+#define MARKSYM_SOLIDDIAMOND           7
+#define MARKSYM_SOLIDSQUARE            8
+#define MARKSYM_DOT                    9
+#define MARKSYM_SMALLCIRCLE            10
+#define MARKSYM_BLANK                  64
+
+#define TXTBOX_TOPLEFT                 0
+#define TXTBOX_BOTTOMLEFT              1
+#define TXTBOX_TOPRIGHT                        2
+#define TXTBOX_BOTTOMRIGHT             3
+#define TXTBOX_CONCAT                  4
+#define TXTBOX_COUNT                   5
+
+#define PVIS_ERROR                     0
+#define PVIS_INVISIBLE                 1
+#define PVIS_VISIBLE                   2
+
+#define RVIS_ERROR                     0
+#define RVIS_INVISIBLE                 1
+#define RVIS_PARTIAL                   2
+#define RVIS_VISIBLE                   3
+
+#define FONT_DEFAULT                   1
+#define FONT_MATCH                     2
+
+#define LCIDT_FONT                     6
+#define LCIDT_BITMAP                   7
+
+#define LCID_ALL                       (-1)
+
+#define CHS_OPAQUE                     0x0001
+#define CHS_VECTOR                     0x0002
+#define CHS_LEAVEPOS                   0x0008
+#define CHS_CLIP                       0x0010
+#define CHS_UNDERSCORE                 0x0200
+#define CHS_STRIKEOUT                  0x0400
+
+#define FWEIGHT_DONT_CARE              0
+#define FWEIGHT_ULTRA_LIGHT            1
+#define FWEIGHT_EXTRA_LIGHT            2
+#define FWEIGHT_LIGHT                  3
+#define FWEIGHT_SEMI_LIGHT             4
+#define FWEIGHT_NORMAL                 5
+#define FWEIGHT_SEMI_BOLD              6
+#define FWEIGHT_BOLD                   7
+#define FWEIGHT_EXTRA_BOLD             8
+#define FWEIGHT_ULTRA_BOLD             9
+
+#define FWIDTH_DONT_CARE               0
+#define FWIDTH_ULTRA_CONDENSED         1
+#define FWIDTH_EXTRA_CONDENSED         2
+#define FWIDTH_CONDENSED               3
+#define FWIDTH_SEMI_CONDENSED          4
+#define FWIDTH_NORMAL                  5
+#define FWIDTH_SEMI_EXPANDED           6
+#define FWIDTH_EXPANDED                        7
+#define FWIDTH_EXTRA_EXPANDED          8
+#define FWIDTH_ULTRA_EXPANDED          9
+
+#define FTYPE_ITALIC                   0x0001
+#define FTYPE_ITALIC_DONT_CARE         0x0002
+#define FTYPE_OBLIQUE                  0x0004
+#define FTYPE_OBLIQUE_DONT_CARE                0x0008
+#define FTYPE_ROUNDED                  0x0010
+#define FTYPE_ROUNDED_DONT_CARE                0x0020
+
+#define QFA_PUBLIC                     1
+#define QFA_PRIVATE                    2
+#define QFA_ERROR                      GPI_ALTERROR
+
+#define QF_PUBLIC                      0x0001
+#define QF_PRIVATE                     0x0002
+#define QF_NO_GENERIC                  0x0004
+#define QF_NO_DEVICE                   0x0008
+
+#define QCD_LCT_FORMAT                 0
+#define QCD_LCT_LOINDEX                        1
+#define QCD_LCT_HIINDEX                        2
+#define QCD_LCT_OPTIONS                        3
+
+#define QLCT_ERROR                     (-1)
+#define QLCT_RGB                       (-2)
+
+#define QLCT_NOTLOADED                 (-1)
+
+#define PAL_ERROR                      (-1)
+
+#define PC_RESERVED                    0x01
+#define PC_EXPLICIT                    0x02
+#define PC_NOCOLLAPSE                  0x04
+
+#define SCP_ALTERNATE                  0
+#define SCP_WINDING                    2
+#define SCP_AND                                4
+#define SCP_RESET                      0
+#define SCP_INCL                       0
+#define SCP_EXCL                       8
+
+#define MPATH_STROKE                   6
+
+#define FPATH_ALTERNATE                        0
+#define FPATH_WINDING                  2
+#define FPATH_INCL                     0
+#define FPATH_EXCL                     8
+
+#define CVTC_WORLD                     1
+#define CVTC_MODEL                     2
+#define CVTC_DEFAULTPAGE               3
+#define CVTC_PAGE                      4
+#define CVTC_DEVICE                    5
+
+#define TRANSFORM_REPLACE              0
+#define TRANSFORM_ADD                  1
+#define TRANSFORM_PREEMPT              2
+
+#define SEGEM_ERROR                    0
+#define SEGEM_INSERT                   1
+#define SEGEM_REPLACE                  2
+
+#define POLYGON_NOBOUNDARY             0x0000
+#define POLYGON_BOUNDARY               0x0001
+
+#define POLYGON_ALTERNATE              0x0000
+#define POLYGON_WINDING                        0x0002
+
+#define POLYGON_INCL                   0x0000
+#define POLYGON_EXCL                   0x0008
+
+#define POLYGON_FILL                   0x0000
+#define POLYGON_NOFILL                 0x0010
+
+#define LCOL_RESET                     0x0001
+#define LCOL_REALIZABLE                        0x0002
+#define LCOL_PURECOLOR                 0x0004
+#define LCOL_OVERRIDE_DEFAULT_COLORS   0x0008
+#define LCOL_REALIZED                  0x0010
+
+#define LCOLF_DEFAULT                  0
+#define LCOLF_INDRGB                   1
+#define LCOLF_CONSECRGB                        2
+#define LCOLF_RGB                      3
+#define LCOLF_PALETTE                  4
+
+#define LCOLOPT_REALIZED               0x0001
+#define LCOLOPT_INDEX                  0x0002
+
+#define BA_NOBOUNDARY                  0
+#define BA_BOUNDARY                    0x0001
+
+#define BA_ALTERNATE                   0
+#define BA_WINDING                     0x0002
+
+#define BA_INCL                                0
+#define BA_EXCL                                8
+
+#define DRO_FILL                       1
+#define DRO_OUTLINE                    2
+#define DRO_OUTLINEFILL                        3
+
+#define PATSYM_ERROR                   (-1)
+#define PATSYM_DEFAULT                 0
+#define PATSYM_DENSE1                  1
+#define PATSYM_DENSE2                  2
+#define PATSYM_DENSE3                  3
+#define PATSYM_DENSE4                  4
+#define PATSYM_DENSE5                  5
+#define PATSYM_DENSE6                  6
+#define PATSYM_DENSE7                  7
+#define PATSYM_DENSE8                  8
+#define PATSYM_VERT                    9
+#define PATSYM_HORIZ                   10
+#define PATSYM_DIAG1                   11
+#define PATSYM_DIAG2                   12
+#define PATSYM_DIAG3                   13
+#define PATSYM_DIAG4                   14
+#define PATSYM_NOSHADE                 15
+#define PATSYM_SOLID                   16
+#define PATSYM_HALFTONE                        17
+#define PATSYM_HATCH                   18
+#define PATSYM_DIAGHATCH               19
+#define PATSYM_BLANK                   64
+
+#define LCID_ERROR                     (-1)
+#define LCID_DEFAULT                   0
+
+#define CRGN_OR                                1
+#define CRGN_COPY                      2
+#define CRGN_XOR                       4
+#define CRGN_AND                       6
+#define CRGN_DIFF                      7
+
+#define RGN_ERROR                      0
+#define RGN_NULL                       1
+#define RGN_RECT                       2
+#define RGN_COMPLEX                    3
+
+#define PRGN_ERROR                     0
+#define PRGN_OUTSIDE                   1
+#define PRGN_INSIDE                    2
+
+#define RRGN_ERROR                     0
+#define RRGN_OUTSIDE                   1
+#define RRGN_PARTIAL                   2
+#define RRGN_INSIDE                    3
+
+#define EQRGN_ERROR                    0
+#define EQRGN_NOTEQUAL                 1
+#define EQRGN_EQUAL                    2
+
+#define RECTDIR_LFRT_TOPBOT            1
+#define RECTDIR_RTLF_TOPBOT            2
+#define RECTDIR_LFRT_BOTTOP            3
+#define RECTDIR_RTLF_BOTTOP            4
+
+#define PMF_SEGBASE                    0
+#define PMF_LOADTYPE                   1
+#define PMF_RESOLVE                    2
+#define PMF_LCIDS                      3
+#define PMF_RESET                      4
+#define PMF_SUPPRESS                   5
+#define PMF_COLORTABLES                        6
+#define PMF_COLORREALIZABLE            7
+#define PMF_DEFAULTS                   8
+#define PMF_DELETEOBJECTS              9
+
+#define RS_DEFAULT                     0
+#define RS_NODISCARD                   1
+#define LC_DEFAULT                     0
+#define LC_NOLOAD                      1
+#define LC_LOADDISC                    3
+#define LT_DEFAULT                     0
+#define LT_NOMODIFY                    1
+#define LT_ORIGINALVIEW                        4
+#define RES_DEFAULT                    0
+#define RES_NORESET                    1
+#define RES_RESET                      2
+#define SUP_DEFAULT                    0
+#define SUP_NOSUPPRESS                 1
+#define SUP_SUPPRESS                   2
+#define CTAB_DEFAULT                   0
+#define CTAB_NOMODIFY                  1
+#define CTAB_REPLACE                   3
+#define CTAB_REPLACEPALETTE            4
+#define CREA_DEFAULT                   0
+#define CREA_REALIZE                   1
+#define CREA_NOREALIZE                 2
+#define CREA_DOREALIZE                 3
+
+#define DDEF_DEFAULT                   0
+#define DDEF_IGNORE                    1
+#define DDEF_LOADDISC                  3
+#define DOBJ_DEFAULT                   0
+#define DOBJ_NODELETE                  1
+#define DOBJ_DELETE                    2
+#define RSP_DEFAULT                    0
+#define RSP_NODISCARD                  1
+
+#define LBB_COLOR                      0x0001
+#define LBB_BACK_COLOR                 0x0002
+#define LBB_MIX_MODE                   0x0004
+#define LBB_BACK_MIX_MODE              0x0008
+#define LBB_WIDTH                      0x0010
+#define LBB_GEOM_WIDTH                 0x0020
+#define LBB_TYPE                       0x0040
+#define LBB_END                                0x0080
+#define LBB_JOIN                       0x0100
+
+#define CBB_COLOR                      0x0001
+#define CBB_BACK_COLOR                 0x0002
+#define CBB_MIX_MODE                   0x0004
+#define CBB_BACK_MIX_MODE              0x0008
+#define CBB_SET                                0x0010
+#define CBB_MODE                       0x0020
+#define CBB_BOX                                0x0040
+#define CBB_ANGLE                      0x0080
+#define CBB_SHEAR                      0x0100
+#define CBB_DIRECTION                  0x0200
+#define CBB_TEXT_ALIGN                 0x0400
+#define CBB_EXTRA                      0x0800
+#define CBB_BREAK_EXTRA                        0x1000
+
+#define MBB_COLOR                      0x0001
+#define MBB_BACK_COLOR                 0x0002
+#define MBB_MIX_MODE                   0x0004
+#define MBB_BACK_MIX_MODE              0x0008
+#define MBB_SET                                0x0010
+#define MBB_SYMBOL                     0x0020
+#define MBB_BOX                                0x0040
+
+#define ABB_COLOR                      0x0001
+#define ABB_BACK_COLOR                 0x0002
+#define ABB_MIX_MODE                   0x0004
+#define ABB_BACK_MIX_MODE              0x0008
+#define ABB_SET                                0x0010
+#define ABB_SYMBOL                     0x0020
+#define ABB_REF_POINT                  0x0040
+
+#define IBB_COLOR                      0x0001
+#define IBB_BACK_COLOR                 0x0002
+#define IBB_MIX_MODE                   0x0004
+#define IBB_BACK_MIX_MODE              0x0008
+
+
+typedef PVOID PBUNDLE;
+
+typedef LONG FIXED;
+typedef FIXED *PFIXED;
+
+typedef LHANDLE HMF;
+typedef HMF *PHMF;
+
+
+typedef struct _SIZEL
+{
+  LONG cx;
+  LONG cy;
+} SIZEL;
+typedef SIZEL *PSIZEL;
+
+typedef struct _RGNRECT
+{
+  ULONG ircStart;
+  ULONG crc;
+  ULONG crcReturned;
+  ULONG ulDirection;
+} RGNRECT;
+typedef RGNRECT *PRGNRECT;
+
+typedef struct _MATRIXLF
+{
+  FIXED fxM11;
+  FIXED fxM12;
+  LONG lM13;
+  FIXED fxM21;
+  FIXED fxM22;
+  LONG lM23;
+  LONG lM31;
+  LONG lM32;
+  LONG lM33;
+} MATRIXLF;
+typedef MATRIXLF *PMATRIXLF;
+
+typedef struct _ARCPARAMS
+{
+  LONG lP;
+  LONG lQ;
+  LONG lR;
+  LONG lS;
+} ARCPARAMS;
+typedef ARCPARAMS *PARCPARAMS;
+
+typedef struct _SIZEF
+{
+  FIXED cx;
+  FIXED cy;
+} SIZEF;
+typedef SIZEF *PSIZEF;
+
+typedef struct _POLYGON
+{
+  ULONG          ulPoints;
+  PPOINTL aPointl;
+} POLYGON;
+typedef POLYGON *PPOLYGON;
+
+typedef struct _POLYSET
+{
+  ULONG          ulPolys;
+  POLYGON aPolygon[1];
+} POLYSET;
+typedef POLYSET *PPOLYSET;
+
+typedef struct _GRADIENTL
+{
+  LONG x;
+  LONG y;
+} GRADIENTL;
+typedef GRADIENTL *PGRADIENTL;
+
+typedef struct _KERNINGPAIRS
+{
+  SHORT sFirstChar;
+  SHORT sSecondChar;
+  LONG lKerningAmount;
+} KERNINGPAIRS;
+typedef KERNINGPAIRS *PKERNINGPAIRS;
+
+typedef struct _FACENAMEDESC
+{
+  USHORT usSize;
+  USHORT usWeightClass;
+  USHORT usWidthClass;
+  USHORT usReserved;
+  ULONG         flOptions;
+} FACENAMEDESC;
+typedef FACENAMEDESC *PFACENAMEDESC;
+
+typedef CHAR FFDESCS[2][FACESIZE];
+typedef FFDESCS *PFFDESCS;
+
+typedef struct _FFDESCS2
+{
+  ULONG cbLength;
+  ULONG cbFacenameOffset;
+  BYTE abFamilyName[1];
+} FFDESCS2;
+typedef FFDESCS2 *PFFDESCS2;
+
+
+typedef struct _LINEBUNDLE
+{
+  LONG  lColor;
+  LONG  lBackColor;
+  USHORT usMixMode;
+  USHORT usBackMixMode;
+  FIXED         fxWidth;
+  LONG  lGeomWidth;
+  USHORT usType;
+  USHORT usEnd;
+  USHORT usJoin;
+  USHORT usReserved;
+} LINEBUNDLE;
+typedef LINEBUNDLE *PLINEBUNDLE;
+
+typedef struct _CHARBUNDLE
+{
+  LONG  lColor;
+  LONG  lBackColor;
+  USHORT usMixMode;
+  USHORT usBackMixMode;
+  USHORT usSet;
+  USHORT usPrecision;
+  SIZEF         sizfxCell;
+  POINTL ptlAngle;
+  POINTL ptlShear;
+  USHORT usDirection;
+  USHORT usTextAlign;
+  FIXED         fxExtra;
+  FIXED         fxBreakExtra;
+} CHARBUNDLE;
+typedef CHARBUNDLE *PCHARBUNDLE;
+
+typedef struct _MARKERBUNDLE
+{
+  LONG  lColor;
+  LONG  lBackColor;
+  USHORT usMixMode;
+  USHORT usBackMixMode;
+  USHORT usSet;
+  USHORT usSymbol;
+  SIZEF         sizfxCell;
+} MARKERBUNDLE;
+typedef MARKERBUNDLE *PMARKERBUNDLE;
+
+typedef struct _AREABUNDLE
+{
+  LONG  lColor;
+  LONG  lBackColor;
+  USHORT usMixMode;
+  USHORT usBackMixMode;
+  USHORT usSet;
+  USHORT usSymbol;
+  POINTL ptlRefPoint;
+} AREABUNDLE;
+typedef AREABUNDLE *PAREABUNDLE;
+
+typedef struct _IMAGEBUNDLE
+{
+  LONG  lColor;
+  LONG  lBackColor;
+  USHORT usMixMode;
+  USHORT usBackMixMode;
+} IMAGEBUNDLE;
+typedef IMAGEBUNDLE *PIMAGEBUNDLE;
+
+
+#define MAKEFIXED(i,f) MAKELONG(f,i)
+#define FIXEDFRAC(fx)  (LOUSHORT(fx))
+#define FIXEDINT(fx)   ((SHORT)HIUSHORT(fx))
+
+
+LONG GpiAnimatePalette (HPAL hpal, ULONG ulFormat, ULONG ulStart,
+    ULONG ulCount, __const__ ULONG *aulTable);
+BOOL GpiBeginArea (HPS hps, ULONG flOptions);
+BOOL GpiBeginElement (HPS hps, LONG lType, PCSZ pszDesc);
+BOOL GpiBeginPath (HPS hps, LONG lPath);
+LONG GpiBox (HPS hps, LONG lControl, __const__ POINTL *pptlPoint, LONG lHRound,
+    LONG lVRound);
+LONG GpiCallSegmentMatrix (HPS hps, LONG lSegment, LONG lCount,
+    __const__ MATRIXLF *pmatlfArray, LONG lOptions);
+LONG GpiCharString (HPS hps, LONG lCount, PCCH pchString);
+LONG GpiCharStringAt (HPS hps, __const__ POINTL *pptlPoint, LONG lCount,
+     PCCH pchString);
+LONG GpiCharStringPos (HPS hps, __const__ RECTL *prclRect, ULONG flOptions,
+    LONG lCount, PCCH pchString, __const__ LONG *alAdx);
+LONG  GpiCharStringPosAt (HPS hps, __const__ POINTL *pptlStart,
+    __const__ RECTL *prclRect, ULONG flOptions, LONG lCount, PCCH pchString,
+    __const__ LONG *alAdx);
+BOOL GpiCloseFigure (HPS hps);
+LONG GpiCombineRegion (HPS hps, HRGN hrgnDest, HRGN hrgnSrc1, HRGN hrgnSrc2,
+    LONG lMode);
+BOOL GpiComment (HPS hps, LONG lLength, __const__ BYTE *pbData);
+BOOL GpiConvert (HPS hps, LONG lSrc, LONG lTarg, LONG lCount,
+    PPOINTL aptlPoints);
+BOOL GpiConvertWithMatrix (HPS hps, LONG lCountp, PPOINTL aptlPoints,
+    LONG lCount, __const__ MATRIXLF *pmatlfArray);
+HMF GpiCopyMetaFile (HMF hmf);
+BOOL GpiCreateLogColorTable (HPS hps, ULONG flOptions, LONG lFormat,
+    LONG lStart, LONG lCount, __const__ LONG *alTable);
+LONG GpiCreateLogFont (HPS hps, __const__ STR8 *pName, LONG lLcid,
+    __const__ FATTRS *pfatAttrs);
+HPAL GpiCreatePalette (HAB hab, ULONG flOptions, ULONG ulFormat,
+    ULONG ulCount, __const__ ULONG *aulTable);
+HRGN GpiCreateRegion (HPS hps, LONG lCount, __const__ RECTL *arclRectangles);
+BOOL GpiDeleteElement (HPS hps);
+BOOL GpiDeleteElementRange (HPS hps, LONG lFirstElement, LONG lLastElement);
+BOOL GpiDeleteElementsBetweenLabels (HPS hps, LONG lFirstLabel,
+    LONG lLastLabel);
+BOOL GpiDeleteMetaFile (HMF hmf);
+BOOL GpiDeletePalette (HPAL hpal);
+BOOL GpiDeleteSetId (HPS hps, LONG lLcid);
+BOOL GpiDestroyRegion (HPS hps, HRGN hrgn);
+LONG GpiElement (HPS hps, LONG lType, PCSZ pszDesc, LONG lLength,
+    __const__ BYTE *pbData);
+LONG GpiEndArea (HPS hps);
+BOOL GpiEndElement (HPS hps);
+BOOL GpiEndPath (HPS hps);
+LONG GpiEqualRegion (HPS hps, HRGN hrgnSrc1, HRGN hrgnSrc2);
+LONG GpiExcludeClipRectangle (HPS hps, __const__ RECTL *prclRectangle);
+LONG GpiFillPath (HPS hps, LONG lPath, LONG lOptions);
+LONG GpiFrameRegion (HPS hps, HRGN hrgn, __const__ SIZEL *thickness);
+LONG GpiFullArc (HPS hps, LONG lControl, FIXED fxMultiplier);
+LONG GpiImage (HPS hps, LONG lFormat, __const__ SIZEL *psizlImageSize,
+    LONG lLength, __const__ BYTE *pbData);
+LONG GpiIntersectClipRectangle (HPS hps, __const__ RECTL *prclRectangle);
+BOOL GpiLabel (HPS hps, LONG lLabel);
+LONG GpiLine (HPS hps, __const__ POINTL *pptlEndPoint);
+BOOL GpiLoadFonts (HAB hab, PCSZ pszFilename);
+HMF GpiLoadMetaFile (HAB hab, PCSZ pszFilename);
+BOOL GpiLoadPublicFonts (HAB hab, PCSZ pszFileName);
+LONG GpiMarker (HPS hps, __const__ POINTL *pptlPoint);
+BOOL GpiModifyPath (HPS hps, LONG lPath, LONG lMode);
+BOOL GpiMove (HPS hps, __const__ POINTL *pptlPoint);
+LONG GpiOffsetClipRegion (HPS hps, __const__ POINTL *pptlPoint);
+BOOL GpiOffsetElementPointer (HPS hps, LONG loffset);
+BOOL GpiOffsetRegion (HPS hps, HRGN Hrgn, __const__ POINTL *pptlOffset);
+LONG GpiOutlinePath (HPS hps, LONG lPath, LONG lOptions);
+LONG GpiPaintRegion (HPS hps, HRGN hrgn);
+LONG GpiPartialArc (HPS hps, __const__ POINTL *pptlCenter, FIXED fxMultiplier,
+    FIXED fxStartAngle, FIXED fxSweepAngle);
+HRGN GpiPathToRegion (HPS GpiH, LONG lPath, LONG lOptions);
+LONG GpiPlayMetaFile (HPS hps, HMF hmf, LONG lCount1,
+    __const__ LONG *alOptarray, PLONG plSegCount, LONG lCount2, PSZ pszDesc);
+LONG GpiPointArc (HPS hps, __const__ POINTL *pptl2);
+LONG GpiPolyFillet (HPS hps, LONG lCount, __const__ POINTL *aptlPoints);
+LONG GpiPolyFilletSharp (HPS hps, LONG lCount, __const__ POINTL *aptlPoints,
+    __const__ FIXED *afxPoints);
+LONG GpiPolygons (HPS hps, ULONG ulCount, __const__ POLYGON *paplgn,
+    ULONG flOptions, ULONG flModel);
+LONG GpiPolyLine (HPS hps, LONG lCount, __const__ POINTL *aptlPoints);
+LONG GpiPolyLineDisjoint (HPS hps, LONG lCount, __const__ POINTL *aptlPoints);
+LONG GpiPolyMarker (HPS hps, LONG lCount, __const__ POINTL *aptlPoints);
+LONG GpiPolySpline (HPS hps, LONG lCount, __const__ POINTL *aptlPoints);
+BOOL GpiPop (HPS hps, LONG lCount);
+LONG GpiPtInRegion (HPS hps, HRGN hrgn, __const__ POINTL *pptlPoint);
+LONG GpiPtVisible (HPS hps, __const__ POINTL *pptlPoint);
+BOOL GpiQueryArcParams (HPS hps, PARCPARAMS parcpArcParams);
+LONG GpiQueryAttrMode (HPS hps);
+LONG GpiQueryAttrs (HPS hps, LONG lPrimType, ULONG flAttrMask,
+    PBUNDLE ppbunAttrs);
+LONG GpiQueryBackColor (HPS hps);
+LONG GpiQueryBackMix (HPS hps);
+BOOL GpiQueryCharAngle (HPS hps, PGRADIENTL pgradlAngle);
+BOOL GpiQueryCharBox (HPS hps, PSIZEF psizfxSize);
+BOOL GpiQueryCharBreakExtra (HPS hps, PFIXED BreakExtra);
+LONG GpiQueryCharDirection (HPS hps);
+BOOL GpiQueryCharExtra (HPS hps, PFIXED Extra);
+LONG GpiQueryCharMode (HPS hps);
+LONG GpiQueryCharSet (HPS hps);
+BOOL GpiQueryCharShear (HPS hps, PPOINTL pptlShear);
+BOOL GpiQueryCharStringPos (HPS hps, ULONG flOptions, LONG lCount,
+    PCCH pchString, PLONG alXincrements, PPOINTL aptlPositions);
+BOOL GpiQueryCharStringPosAt (HPS hps, PPOINTL pptlStart, ULONG flOptions,
+    LONG lCount, PCCH pchString, PLONG alXincrements, PPOINTL aptlPositions);
+LONG GpiQueryClipBox (HPS hps, PRECTL prclBound);
+HRGN GpiQueryClipRegion (HPS hps);
+LONG GpiQueryColor (HPS hps);
+BOOL GpiQueryColorData (HPS hps, LONG lCount, PLONG alArray);
+LONG GpiQueryColorIndex (HPS hps, ULONG flOptions, LONG lRgbColor);
+ULONG GpiQueryCp (HPS hps);
+BOOL GpiQueryCurrentPosition (HPS hps, PPOINTL pptlPoint);
+BOOL GpiQueryDefArcParams (HPS hps, PARCPARAMS parcpArcParams);
+BOOL GpiQueryDefAttrs (HPS hps, LONG lPrimType, ULONG flAttrMask,
+    PBUNDLE ppbunAttrs);
+BOOL GpiQueryDefCharBox (HPS hps, PSIZEL psizlSize);
+BOOL GpiQueryDefTag (HPS hps, PLONG plTag);
+BOOL GpiQueryDefViewingLimits (HPS hps, PRECTL prclLimits);
+BOOL GpiQueryDefaultViewMatrix (HPS hps, LONG lCount, PMATRIXLF pmatlfArray);
+LONG GpiQueryEditMode (HPS hps);
+LONG GpiQueryElement (HPS hps, LONG lOff, LONG lMaxLength, PBYTE pbData);
+LONG GpiQueryElementPointer (HPS hps);
+LONG GpiQueryElementType (HPS hps, PLONG plType, LONG lLength, PSZ pszData);
+ULONG GpiQueryFaceString (HPS PS, PCSZ FamilyName, PFACENAMEDESC attrs,
+    LONG length, PSZ CompoundFaceName);
+ULONG GpiQueryFontAction (HAB anchor, ULONG options);
+LONG GpiQueryFontFileDescriptions (HAB hab, PCSZ pszFilename, PLONG plCount,
+    PFFDESCS affdescsNames);
+BOOL GpiQueryFontMetrics (HPS hps, LONG lMetricsLength,
+    PFONTMETRICS pfmMetrics);
+LONG GpiQueryFonts (HPS hps, ULONG flOptions, PCSZ pszFacename,
+    PLONG plReqFonts, LONG lMetricsLength, PFONTMETRICS afmMetrics);
+LONG GpiQueryFullFontFileDescs (HAB hab, PCSZ pszFilename, PLONG plCount,
+    PVOID pNames, PLONG plNamesBuffLength);
+BOOL GpiQueryGraphicsField (HPS hps, PRECTL prclField);
+LONG GpiQueryKerningPairs (HPS hps, LONG lCount, PKERNINGPAIRS akrnprData);
+LONG GpiQueryLineEnd (HPS hps);
+LONG GpiQueryLineJoin (HPS hps);
+LONG GpiQueryLineType (HPS hps);
+FIXED GpiQueryLineWidth (HPS hps);
+LONG GpiQueryLineWidthGeom (HPS hps);
+LONG GpiQueryLogColorTable (HPS hps, ULONG flOptions, LONG lStart, LONG lCount,
+    PLONG alArray);
+BOOL GpiQueryLogicalFont (HPS PS, LONG lcid, PSTR8 name, PFATTRS attrs,
+    LONG length);
+LONG GpiQueryMarker (HPS hps);
+BOOL GpiQueryMarkerBox (HPS hps, PSIZEF psizfxSize);
+LONG GpiQueryMarkerSet (HPS hps);
+BOOL GpiQueryMetaFileBits (HMF hmf, LONG lOffset, LONG lLength, PBYTE pbData);
+LONG GpiQueryMetaFileLength (HMF hmf);
+LONG GpiQueryMix (HPS hps);
+BOOL GpiQueryModelTransformMatrix (HPS hps, LONG lCount,
+    PMATRIXLF pmatlfArray);
+LONG GpiQueryNearestColor (HPS hps, ULONG flOptions, LONG lRgbIn);
+LONG GpiQueryNumberSetIds (HPS hps);
+BOOL GpiQueryPageViewport (HPS hps, PRECTL prclViewport);
+HPAL GpiQueryPalette (HPS hps);
+LONG GpiQueryPaletteInfo (HPAL hpal, HPS  hps, ULONG flOptions,
+    ULONG ulStart, ULONG ulCount, PULONG aulArray);
+LONG GpiQueryPattern (HPS hps);
+BOOL GpiQueryPatternRefPoint (HPS hps, PPOINTL pptlRefPoint);
+LONG GpiQueryPatternSet (HPS hps);
+LONG GpiQueryRealColors (HPS hps, ULONG flOptions, LONG lStart, LONG lCount,
+    PLONG alColors);
+LONG GpiQueryRegionBox (HPS hps, HRGN hrgn, PRECTL prclBound);
+BOOL GpiQueryRegionRects (HPS hps, HRGN hrgn, PRECTL prclBound,
+    PRGNRECT prgnrcControl, PRECTL prclRect);
+LONG GpiQueryRGBColor (HPS hps, ULONG flOptions, LONG lColorIndex);
+BOOL GpiQuerySegmentTransformMatrix (HPS hps, LONG lSegid, LONG lCount,
+    PMATRIXLF pmatlfArray);
+BOOL GpiQuerySetIds (HPS hps, LONG lCount, PLONG alTypes, PSTR8 aNames,
+    PLONG allcids);
+BOOL GpiQueryTextAlignment (HPS hps, PLONG plHoriz, PLONG plVert);
+BOOL GpiQueryTextBox (HPS hps, LONG lCount1, PCH pchString, LONG lCount2,
+    PPOINTL aptlPoints);
+BOOL GpiQueryViewingLimits (HPS hps, PRECTL prclLimits);
+BOOL GpiQueryViewingTransformMatrix (HPS hps, LONG lCount,
+    PMATRIXLF pmatlfArray);
+BOOL GpiQueryWidthTable (HPS hps, LONG lFirstChar, LONG lCount, PLONG alData);
+LONG GpiRectInRegion (HPS hps, HRGN hrgn, __const__ RECTL *prclRect);
+LONG GpiRectVisible (HPS hps, __const__ RECTL *prclRectangle);
+BOOL GpiRotate (HPS hps, PMATRIXLF pmatlfArray, LONG lOptions, FIXED fxAngle,
+    __const__ POINTL *pptlCenter);
+BOOL GpiSaveMetaFile (HMF hmf, PCSZ pszFilename);
+BOOL GpiScale (HPS hps, PMATRIXLF pmfatlfArray, LONG lOptions,
+    __const__ FIXED *afxScale, __const__ POINTL *pptlCenter);
+HPAL GpiSelectPalette (HPS hps, HPAL hpal);
+BOOL GpiSetArcParams (HPS hps, __const__ ARCPARAMS *parcpArcParams);
+BOOL GpiSetAttrMode (HPS hps, LONG lMode);
+BOOL GpiSetAttrs (HPS hps, LONG lPrimType, ULONG flAttrMask, ULONG flDefMask,
+    __const__ VOID *ppbunAttrs);
+BOOL GpiSetBackColor (HPS hps, LONG lColor);
+BOOL GpiSetBackMix (HPS hps, LONG lMixMode);
+BOOL GpiSetCharAngle (HPS hps, __const__ GRADIENTL *pgradlAngle);
+BOOL GpiSetCharBox (HPS hps, __const__ SIZEF *psizfxBox);
+BOOL GpiSetCharBreakExtra (HPS hps, FIXED BreakExtra);
+BOOL GpiSetCharDirection (HPS hps, LONG lDirection);
+BOOL GpiSetCharExtra (HPS hps, FIXED  Extra);
+BOOL GpiSetCharMode (HPS hps, LONG lMode);
+BOOL GpiSetCharSet (HPS hps, LONG llcid);
+BOOL GpiSetCharShear (HPS hps, __const__ POINTL *pptlAngle);
+BOOL GpiSetClipPath (HPS hps, LONG lPath, LONG lOptions);
+LONG GpiSetClipRegion (HPS hps, HRGN hrgn, PHRGN phrgnOld);
+BOOL GpiSetColor (HPS hps, LONG lColor);
+BOOL GpiSetCp (HPS hps, ULONG ulCodePage);
+BOOL GpiSetCurrentPosition (HPS hps, __const__ POINTL *pptlPoint);
+BOOL GpiSetDefArcParams (HPS hps, __const__ ARCPARAMS *parcpArcParams);
+BOOL GpiSetDefAttrs (HPS hps, LONG lPrimType, ULONG flAttrMask,
+    __const__ VOID *ppbunAttrs);
+BOOL GpiSetDefaultViewMatrix (HPS hps, LONG lCount,
+    __const__ MATRIXLF *pmatlfarray, LONG lOptions);
+BOOL GpiSetDefTag (HPS hps, LONG lTag);
+BOOL GpiSetDefViewingLimits (HPS hps, __const__ RECTL *prclLimits);
+BOOL GpiSetEditMode (HPS hps, LONG lMode);
+BOOL GpiSetElementPointer (HPS hps, LONG lElement);
+BOOL GpiSetElementPointerAtLabel (HPS hps, LONG lLabel);
+BOOL GpiSetGraphicsField (HPS hps, __const__ RECTL *prclField);
+BOOL GpiSetLineEnd (HPS hps, LONG lLineEnd);
+BOOL GpiSetLineJoin (HPS hps, LONG lLineJoin);
+BOOL GpiSetLineType (HPS hps, LONG lLineType);
+BOOL GpiSetLineWidth (HPS hps, FIXED fxLineWidth);
+BOOL GpiSetLineWidthGeom (HPS hps, LONG lLineWidth);
+BOOL GpiSetMarker (HPS hps, LONG lSymbol);
+BOOL GpiSetMarkerBox (HPS hps, __const__ SIZEF *psizfxSize);
+BOOL GpiSetMarkerSet (HPS hps, LONG lSet);
+BOOL GpiSetMetaFileBits (HMF hmf, LONG lOffset, LONG lLength,
+    __const__ BYTE *pbBuffer);
+BOOL GpiSetMix (HPS hps, LONG lMixMode);
+BOOL GpiSetModelTransformMatrix (HPS hps, LONG lCount,
+    __const__ MATRIXLF *pmatlfArray, LONG lOptions);
+BOOL GpiSetPageViewport (HPS hps, __const__ RECTL *prclViewport);
+BOOL GpiSetPaletteEntries (HPAL hpal, ULONG ulFormat, ULONG ulStart,
+    ULONG ulCount, __const__ ULONG *aulTable);
+BOOL GpiSetPattern (HPS hps, LONG lPatternSymbol);
+BOOL GpiSetPatternRefPoint (HPS hps, __const__ POINTL *pptlRefPoint);
+BOOL GpiSetPatternSet (HPS hps, LONG lSet);
+BOOL GpiSetRegion (HPS hps, HRGN hrgn, LONG lcount,
+    __const__ RECTL *arclRectangles);
+BOOL GpiSetSegmentTransformMatrix (HPS hps, LONG lSegid, LONG lCount,
+    __const__ MATRIXLF *pmatlfarray, LONG lOptions);
+BOOL GpiSetTextAlignment (HPS hps, LONG lHoriz, LONG lVert);
+BOOL GpiSetViewingLimits (HPS hps, __const__ RECTL *prclLimits);
+BOOL GpiSetViewingTransformMatrix (HPS hps, LONG lCount,
+    __const__ MATRIXLF *pmatlfArray, LONG lOptions);
+LONG GpiStrokePath (HPS hps, LONG lPath, ULONG flOptions);
+BOOL GpiTranslate (HPS hps, PMATRIXLF pmatlfArray, LONG lOptions,
+    __const__ POINTL *pptlTranslation);
+BOOL GpiUnloadFonts (HAB hab, PCSZ pszFilename);
+BOOL GpiUnloadPublicFonts (HAB hab, PCSZ pszFilename);
+
+
+#if defined (INCL_GPIBITMAPS) || !defined (INCL_NOCOMMON)
+
+#define ROP_SRCCOPY                    0x00cc
+#define ROP_SRCPAINT                   0x00ee
+#define ROP_SRCAND                     0x0088
+#define ROP_SRCINVERT                  0x0066
+#define ROP_SRCERASE                   0x0044
+#define ROP_NOTSRCCOPY                 0x0033
+#define ROP_NOTSRCERASE                        0x0011
+#define ROP_MERGECOPY                  0x00c0
+#define ROP_MERGEPAINT                 0x00bb
+#define ROP_PATCOPY                    0x00f0
+#define ROP_PATPAINT                   0x00fb
+#define ROP_PATINVERT                  0x005a
+#define ROP_DSTINVERT                  0x0055
+#define ROP_ZERO                       0x0000
+#define ROP_ONE                                0x00ff
+
+#define BBO_OR                         0
+#define BBO_AND                                1
+#define BBO_IGNORE                     2
+#define BBO_PAL_COLORS                 4
+#define BBO_NO_COLOR_INFO              8
+
+#define FF_BOUNDARY                    0
+#define FF_SURFACE                     1
+
+#define HBM_ERROR                      ((HBITMAP)(-1))
+
+
+LONG GpiBitBlt (HPS hpsTarget, HPS hpsSource, LONG lCount,
+    __const__ POINTL *aptlPoints, LONG lRop, ULONG flOptions);
+BOOL GpiDeleteBitmap (HBITMAP hbm);
+HBITMAP GpiLoadBitmap (HPS hps, HMODULE Resource, ULONG idBitmap,
+    LONG lWidth, LONG lHeight);
+HBITMAP GpiSetBitmap (HPS hps, HBITMAP hbm);
+LONG GpiWCBitBlt (HPS hpsTarget, HBITMAP hbmSource, LONG lCount,
+    __const__ POINTL *aptlPoints, LONG lRop, ULONG flOptions);
+
+#endif /* INCL_GPIBITMAPS */
+
+
+#if defined (INCL_GPIBITMAPS)
+
+#define BFT_ICON                       0x4349
+#define BFT_BMAP                       0x4d42
+#define BFT_POINTER                    0x5450
+#define BFT_COLORICON                  0x4943
+#define BFT_COLORPOINTER               0x5043
+#define BFT_BITMAPARRAY                        0x4142
+
+#define CBD_BITS                       0
+#define CBD_COMPRESSION                        1
+#define CBD_DECOMPRESSION              2
+
+#define CBD_COLOR_CONVERSION           0x0001
+
+#define CBM_INIT                       0x0004
+
+#define BCA_UNCOMP                     0
+#define BCA_RLE8                       1
+#define BCA_RLE4                       2
+#define BCA_HUFFMAN1D                  3
+#define BCA_RLE24                      4
+
+#define BMB_ERROR                      (-1)
+
+#define BRU_METRIC                     0
+
+#define BRA_BOTTOMUP                   0
+
+#define BRH_NOTHALFTONED               0
+#define BRH_ERRORDIFFUSION             1
+#define BRH_PANDA                      2
+#define BRH_SUPERCIRCLE                        3
+
+#define BCE_PALETTE                    (-1)
+#define BCE_RGB                                0
+
+
+typedef struct _RGB
+{
+  BYTE bBlue;
+  BYTE bGreen;
+  BYTE bRed;
+} RGB;
+
+typedef struct _RGB2
+{
+  BYTE bBlue;
+  BYTE bGreen;
+  BYTE bRed;
+  BYTE fcOptions;
+} RGB2;
+typedef RGB2 *PRGB2;
+
+typedef struct _BITMAPINFOHEADER
+{
+  ULONG         cbFix;
+  USHORT cx;
+  USHORT cy;
+  USHORT cPlanes;
+  USHORT cBitCount;
+} BITMAPINFOHEADER;
+typedef BITMAPINFOHEADER *PBITMAPINFOHEADER;
+
+typedef struct _BITMAPINFO
+{
+  ULONG         cbFix;
+  USHORT cx;
+  USHORT cy;
+  USHORT cPlanes;
+  USHORT cBitCount;
+  RGB   argbColor[1];
+} BITMAPINFO;
+typedef BITMAPINFO *PBITMAPINFO;
+
+typedef struct _BITMAPINFO2
+{
+  ULONG         cbFix;
+  ULONG         cx;
+  ULONG         cy;
+  USHORT cPlanes;
+  USHORT cBitCount;
+  ULONG         ulCompression;
+  ULONG         cbImage;
+  ULONG         cxResolution;
+  ULONG         cyResolution;
+  ULONG         cclrUsed;
+  ULONG         cclrImportant;
+  USHORT usUnits;
+  USHORT usReserved;
+  USHORT usRecording;
+  USHORT usRendering;
+  ULONG         cSize1;
+  ULONG         cSize2;
+  ULONG         ulColorEncoding;
+  ULONG         ulIdentifier;
+  RGB2  argbColor[1];
+} BITMAPINFO2;
+typedef BITMAPINFO2 *PBITMAPINFO2;
+
+typedef struct _BITMAPINFOHEADER2
+{
+  ULONG         cbFix;
+  ULONG         cx;
+  ULONG         cy;
+  USHORT cPlanes;
+  USHORT cBitCount;
+  ULONG         ulCompression;
+  ULONG         cbImage;
+  ULONG         cxResolution;
+  ULONG         cyResolution;
+  ULONG         cclrUsed;
+  ULONG         cclrImportant;
+  USHORT usUnits;
+  USHORT usReserved;
+  USHORT usRecording;
+  USHORT usRendering;
+  ULONG         cSize1;
+  ULONG         cSize2;
+  ULONG         ulColorEncoding;
+  ULONG         ulIdentifier;
+} BITMAPINFOHEADER2;
+typedef BITMAPINFOHEADER2 *PBITMAPINFOHEADER2;
+
+typedef struct _BITMAPFILEHEADER
+{
+  USHORT          usType;
+  ULONG                   cbSize;
+  SHORT                   xHotspot;
+  SHORT                   yHotspot;
+  ULONG                   offBits;
+  BITMAPINFOHEADER bmp;
+} BITMAPFILEHEADER;
+typedef BITMAPFILEHEADER *PBITMAPFILEHEADER;
+
+typedef struct _BITMAPARRAYFILEHEADER
+{
+  USHORT          usType;
+  ULONG                   cbSize;
+  ULONG                   offNext;
+  USHORT          cxDisplay;
+  USHORT          cyDisplay;
+  BITMAPFILEHEADER bfh;
+} BITMAPARRAYFILEHEADER;
+typedef BITMAPARRAYFILEHEADER *PBITMAPARRAYFILEHEADER;
+
+typedef struct _BITMAPFILEHEADER2
+{
+  USHORT           usType;
+  ULONG                    cbSize;
+  SHORT                    xHotspot;
+  SHORT                    yHotspot;
+  ULONG                    offBits;
+  BITMAPINFOHEADER2 bmp2;
+} BITMAPFILEHEADER2;
+typedef BITMAPFILEHEADER2 *PBITMAPFILEHEADER2;
+
+typedef struct _BITMAPARRAYFILEHEADER2
+{
+  USHORT           usType;
+  ULONG                    cbSize;
+  ULONG                    offNext;
+  USHORT           cxDisplay;
+  USHORT           cyDisplay;
+  BITMAPFILEHEADER2 bfh2;
+} BITMAPARRAYFILEHEADER2;
+typedef BITMAPARRAYFILEHEADER2 *PBITMAPARRAYFILEHEADER2;
+
+
+HBITMAP GpiCreateBitmap (HPS hps, __const__ BITMAPINFOHEADER2 *pbmpNew,
+    ULONG flOptions, __const__ BYTE *pbInitData,
+    __const__ BITMAPINFO2 *pbmiInfoTable);
+LONG GpiDrawBits (HPS hps, __const__ VOID *pBits,
+    __const__ BITMAPINFO2 *pbmiInfoTable, LONG lCount,
+    __const__ POINTL *aptlPoints, LONG lRop, ULONG flOptions);
+LONG GpiFloodFill (HPS hps, LONG lOptions, LONG lColor);
+LONG GpiQueryBitmapBits (HPS hps, LONG lScanStart, LONG lScans, PBYTE pbBuffer,
+    PBITMAPINFO2 pbmiInfoTable);
+BOOL GpiQueryBitmapDimension (HBITMAP hbm, PSIZEL psizlBitmapDimension);
+HBITMAP GpiQueryBitmapHandle (HPS hps, LONG lLcid);
+BOOL GpiQueryBitmapInfoHeader (HBITMAP hbm, PBITMAPINFOHEADER2 pbmpData);
+BOOL GpiQueryBitmapParameters (HBITMAP hbm, PBITMAPINFOHEADER pbmpData);
+BOOL GpiQueryDeviceBitmapFormats (HPS hps, LONG lCount, PLONG alArray);
+LONG  GpiSetBitmapBits (HPS hps, LONG lScanStart, LONG lScans,
+    __const__ BYTE *pbBuffer, __const__ BITMAPINFO2 *pbmiInfoTable);
+LONG GpiQueryPel (HPS hps, PPOINTL pptlPoint);
+BOOL GpiSetBitmapDimension (HBITMAP hbm,
+    __const__ SIZEL *psizlBitmapDimension);
+BOOL GpiSetBitmapId (HPS hps, HBITMAP hbm, LONG lLcid);
+LONG GpiSetPel (HPS hps, __const__ POINTL *pptlPoint);
+
+
+#endif /* INCL_GPIBITMAPS */
+
+
+#if defined (INCL_GPICONTROL) || !defined (INCL_NOCOMMON)
+
+#define GPIA_NOASSOC                   0x0000
+#define GPIA_ASSOC                     0x4000
+
+#define GPIF_DEFAULT                   0x0000
+#define GPIF_SHORT                     0x0100
+#define GPIF_LONG                      0x0200
+
+#define GPIM_AREAEXCL                  0x8000
+
+#define GPIT_NORMAL                    0x0000
+#define GPIT_MICRO                     0x1000
+#define GPIT_INK                       0x2000
+
+#define HDC_ERROR                      ((HDC)(-1))
+
+#define PU_ARBITRARY                   0x0004
+#define PU_PELS                                0x0008
+#define PU_LOMETRIC                    0x000c
+#define PU_HIMETRIC                    0x0010
+#define PU_LOENGLISH                   0x0014
+#define PU_HIENGLISH                   0x0018
+#define PU_TWIPS                       0x001c
+
+
+BOOL GpiAssociate (HPS hps, HDC hdc);
+HPS GpiCreatePS (HAB hab, HDC hdc, PSIZEL psizlSize, ULONG flOptions);
+BOOL GpiDestroyPS (HPS hps);
+BOOL GpiErase (HPS hps);
+HDC GpiQueryDevice (HPS hps);
+BOOL GpiRestorePS (HPS hps, LONG lPSid);
+LONG GpiSavePS (HPS hps);
+
+#endif /* INCL_GPICONTROL */
+
+
+#if defined (INCL_GPICONTROL)
+
+#define DCTL_ERASE                     1
+#define DCTL_DISPLAY                   2
+#define DCTL_BOUNDARY                  3
+#define DCTL_DYNAMIC                   4
+#define DCTL_CORRELATE                 5
+
+#define DCTL_ERROR                     (-1)
+#define DCTL_OFF                       0
+#define DCTL_ON                                1
+
+#define DM_ERROR                       0
+#define DM_DRAW                                1
+#define DM_RETAIN                      2
+#define DM_DRAWANDRETAIN               3
+
+#define GPIE_SEGMENT                   0
+#define GPIE_ELEMENT                   1
+#define GPIE_DATA                      2
+
+#define GRES_ATTRS                     0x0001
+#define GRES_SEGMENTS                  0x0002
+#define GRES_ALL                       0x0004
+
+#define PS_UNITS                       0x00fc
+#define PS_FORMAT                      0x0f00
+#define PS_TYPE                                0x1000
+#define PS_MODE                                0x2000
+#define PS_ASSOCIATE                   0x4000
+#define PS_NORESET                     0x8000
+
+#define SDW_ERROR                      (-1)
+#define SDW_OFF                                0
+#define SDW_ON                         1
+
+
+LONG GpiErrorSegmentData (HPS hps, PLONG plSegment, PLONG plContext);
+LONG GpiQueryDrawControl (HPS hps, LONG lControl);
+LONG GpiQueryDrawingMode (HPS hps);
+ULONG GpiQueryPS (HPS hps, PSIZEL psizlSize);
+BOOL GpiResetPS (HPS hps, ULONG flOptions);
+LONG GpiQueryStopDraw (HPS hps);
+BOOL GpiSetDrawControl (HPS hps, LONG lControl, LONG lValue);
+BOOL GpiSetDrawingMode (HPS hps, LONG lMode);
+BOOL GpiSetPS (HPS hps, __const__ SIZEL *psizlsize, ULONG flOptions);
+BOOL GpiSetStopDraw (HPS hps, LONG lValue);
+
+#endif /* INCL_GPICONTROL */
+
+
+#if defined (INCL_GPICORRELATION)
+
+#define GPI_HITS                       2
+
+#define PICKAP_DEFAULT                 0
+#define PICKAP_REC                     2
+
+#define PICKSEL_VISIBLE                        0
+#define PICKSEL_ALL                    1
+
+
+LONG GpiCorrelateChain (HPS hps, LONG lType, __const__ POINTL *pptlPick,
+    LONG lMaxHits, LONG lMaxDepth, PLONG pl2);
+LONG GpiCorrelateFrom (HPS hps, LONG lFirstSegment, LONG lLastSegment,
+    LONG lType, __const__ POINTL *pptlPick, LONG lMaxHits, LONG lMaxDepth,
+    PLONG plSegTag);
+LONG GpiCorrelateSegment (HPS hps, LONG lSegment, LONG lType,
+    __const__ POINTL *pptlPick, LONG lMaxHits, LONG lMaxDepth, PLONG alSegTag);
+BOOL GpiQueryBoundaryData (HPS hps, PRECTL prclBoundary);
+BOOL GpiQueryPickAperturePosition (HPS hps, PPOINTL pptlPoint);
+BOOL GpiQueryPickApertureSize (HPS hps, PSIZEL psizlSize);
+BOOL GpiQueryTag (HPS hps, PLONG plTag);
+BOOL GpiResetBoundaryData (HPS hps);
+BOOL GpiSetPickAperturePosition (HPS hps, __const__ POINTL *pptlPick);
+BOOL GpiSetPickApertureSize (HPS hps, LONG lOptions,
+    __const__ SIZEL *psizlSize);
+BOOL GpiSetTag (HPS hps, LONG lTag);
+
+#endif /* INCL_GPICORRELATION */
+
+
+#if defined (INCL_GPIINK)
+
+#define PPE_KEEPPATH                   0
+#define PPE_ERASEPATH                  1
+
+#define PPS_INKMOVE                    0
+#define PPS_INKDOWN                    1
+#define PPS_INKUP                      2
+
+
+BOOL GpiBeginInkPath (HPS hps, LONG lPath, ULONG flOptions);
+BOOL GpiEndInkPath (HPS hps, ULONG flOptions);
+LONG GpiStrokeInkPath (HPS hps, LONG lPath, LONG lCount,
+    __const__ POINTL *aptlPoints, ULONG flOptions);
+
+#endif /* INCL_GPIINK */
+
+
+#if defined (INCL_GPISEGMENTS)
+
+#define DFORM_NOCONV                   0
+
+#define DFORM_S370SHORT                        1
+#define DFORM_PCSHORT                  2
+#define DFORM_PCLONG                   4
+
+#define ATTR_ERROR                     (-1)
+#define ATTR_DETECTABLE                        1
+#define ATTR_VISIBLE                   2
+#define ATTR_CHAINED                   6
+#define ATTR_DYNAMIC                   8
+#define ATTR_FASTCHAIN                 9
+#define ATTR_PROP_DETECTABLE           10
+#define ATTR_PROP_VISIBLE              11
+
+#define ATTR_OFF                       0
+#define ATTR_ON                                1
+
+#define LOWER_PRI                      (-1)
+#define HIGHER_PRI                     1
+
+
+BOOL GpiCloseSegment (HPS hps);
+BOOL GpiDeleteSegment (HPS hps, LONG lSegid);
+BOOL GpiDeleteSegments (HPS hps, LONG lFirstSegment, LONG lLastSegment);
+BOOL GpiDrawChain (HPS hps);
+BOOL GpiDrawDynamics (HPS hps);
+BOOL GpiDrawFrom (HPS hps, LONG lFirstSegment, LONG lLastSegment);
+BOOL GpiDrawSegment (HPS hps, LONG lSegment);
+LONG GpiGetData (HPS hps, LONG lSegid, PLONG plOffset, LONG lFormat,
+    LONG lLength, PBYTE pbData);
+BOOL GpiOpenSegment (HPS hps, LONG lSegment);
+LONG GpiPutData (HPS hps, LONG lFormat, PLONG plCount, __const__ BYTE *pbData);
+LONG GpiQueryInitialSegmentAttrs (HPS hps, LONG lAttribute);
+LONG GpiQuerySegmentAttrs (HPS hps, LONG lSegid, LONG lAttribute);
+LONG GpiQuerySegmentNames (HPS hps, LONG lFirstSegid, LONG lLastSegid,
+    LONG lMax, PLONG alSegids);
+LONG GpiQuerySegmentPriority (HPS hps, LONG lRefSegid, LONG lOrder);
+BOOL GpiRemoveDynamics (HPS hps, LONG lFirstSegid, LONG lLastSegid);
+BOOL GpiSetInitialSegmentAttrs (HPS hps, LONG lAttribute, LONG lValue);
+BOOL GpiSetSegmentAttrs (HPS hps, LONG lSegid, LONG lAttribute, LONG lValue);
+BOOL GpiSetSegmentPriority (HPS hps, LONG lSegid, LONG lRefSegid, LONG lOrder);
+
+#endif /* INCL_GPISEGMENTS */
+
+
+/* ---------------------- DEVICE CONTEXTS --------------------------------- */
+
+#define DEV_ERROR                      0
+#define DEV_OK                         1
+#define DEV_BAD_PARAMETERS             2
+#define DEV_WARNING                    3
+#define DEV_PROP_BUF_TOO_SMALL         4
+#define DEV_ITEM_BUF_TOO_SMALL         5
+#define DEV_INV_INP_JOBPROPERTIES      6
+
+#define ADDRESS                                0
+#define DRIVER_NAME                    1
+#define DRIVER_DATA                    2
+#define DATA_TYPE                      3
+#define COMMENT                                4
+#define PROC_NAME                      5
+#define PROC_PARAMS                    6
+#define SPL_PARAMS                     7
+#define NETWORK_PARAMS                 8
+
+#define OD_SCREEN                      0
+#define OD_QUEUED                      2
+#define OD_DIRECT                      5
+#define OD_INFO                                6
+#define OD_METAFILE                    7
+#define OD_MEMORY                      8
+#define OD_METAFILE_NOQUERY            9
+
+#define CAPS_FAMILY                    0
+#define CAPS_IO_CAPS                   1
+#define CAPS_TECHNOLOGY                        2
+#define CAPS_DRIVER_VERSION            3
+#define CAPS_WIDTH                     4
+#define CAPS_HEIGHT                    5
+#define CAPS_WIDTH_IN_CHARS            6
+#define CAPS_HEIGHT_IN_CHARS           7
+#define CAPS_HORIZONTAL_RESOLUTION     8
+#define CAPS_VERTICAL_RESOLUTION       9
+#define CAPS_CHAR_WIDTH                        10
+#define CAPS_CHAR_HEIGHT               11
+#define CAPS_SMALL_CHAR_WIDTH          12
+#define CAPS_SMALL_CHAR_HEIGHT         13
+#define CAPS_COLORS                    14
+#define CAPS_COLOR_PLANES              15
+#define CAPS_COLOR_BITCOUNT            16
+#define CAPS_COLOR_TABLE_SUPPORT       17
+#define CAPS_MOUSE_BUTTONS             18
+#define CAPS_FOREGROUND_MIX_SUPPORT    19
+#define CAPS_BACKGROUND_MIX_SUPPORT    20
+#define CAPS_DEVICE_WINDOWING          31
+#define CAPS_ADDITIONAL_GRAPHICS       32
+#define CAPS_VIO_LOADABLE_FONTS                21
+#define CAPS_WINDOW_BYTE_ALIGNMENT     22
+#define CAPS_BITMAP_FORMATS            23
+#define CAPS_RASTER_CAPS               24
+#define CAPS_MARKER_HEIGHT             25
+#define CAPS_MARKER_WIDTH              26
+#define CAPS_DEVICE_FONTS              27
+#define CAPS_GRAPHICS_SUBSET           28
+#define CAPS_GRAPHICS_VERSION          29
+#define CAPS_GRAPHICS_VECTOR_SUBSET    30
+#define CAPS_PHYS_COLORS               33
+#define CAPS_COLOR_INDEX               34
+#define CAPS_GRAPHICS_CHAR_WIDTH       35
+#define CAPS_GRAPHICS_CHAR_HEIGHT      36
+#define CAPS_HORIZONTAL_FONT_RES       37
+#define CAPS_VERTICAL_FONT_RES         38
+#define CAPS_DEVICE_FONT_SIM           39
+#define CAPS_LINEWIDTH_THICK           40
+#define CAPS_DEVICE_POLYSET_POINTS     41
+
+#define CAPS_IO_DUMMY                  1
+#define CAPS_IO_SUPPORTS_OP            2
+#define CAPS_IO_SUPPORTS_IP            3
+#define CAPS_IO_SUPPORTS_IO            4
+
+#define CAPS_TECH_UNKNOWN              0
+#define CAPS_TECH_VECTOR_PLOTTER       1
+#define CAPS_TECH_RASTER_DISPLAY       2
+#define CAPS_TECH_RASTER_PRINTER       3
+#define CAPS_TECH_RASTER_CAMERA                4
+#define CAPS_TECH_POSTSCRIPT           5
+
+#define CAPS_COLTABL_RGB_8             0x0001
+#define CAPS_COLTABL_RGB_8_PLUS                0x0002
+#define CAPS_COLTABL_TRUE_MIX          0x0004
+#define CAPS_COLTABL_REALIZE           0x0008
+
+#define CAPS_FM_OR                     0x0001
+#define CAPS_FM_OVERPAINT              0x0002
+#define CAPS_FM_XOR                    0x0008
+#define CAPS_FM_LEAVEALONE             0x0010
+#define CAPS_FM_AND                    0x0020
+#define CAPS_FM_GENERAL_BOOLEAN                0x0040
+
+#define CAPS_BM_OR                     0x0001
+#define CAPS_BM_OVERPAINT              0x0002
+#define CAPS_BM_XOR                    0x0008
+#define CAPS_BM_LEAVEALONE             0x0010
+#define CAPS_BM_AND                    0x0020
+#define CAPS_BM_GENERAL_BOOLEAN                0x0040
+#define CAPS_BM_SRCTRANSPARENT         0x0080
+#define CAPS_BM_DESTTRANSPARENT                0x0100
+
+#define CAPS_DEV_WINDOWING_SUPPORT     0x0001
+
+#define CAPS_DEV_FONT_SIM_BOLD         0x0001
+#define CAPS_DEV_FONT_SIM_ITALIC       0x0002
+#define CAPS_DEV_FONT_SIM_UNDERSCORE   0x0004
+#define CAPS_DEV_FONT_SIM_STRIKEOUT    0x0008
+
+#define CAPS_VDD_DDB_TRANSFER          0x0001
+#define CAPS_GRAPHICS_KERNING_SUPPORT  0x0002
+#define CAPS_FONT_OUTLINE_DEFAULT      0x0004
+#define CAPS_FONT_IMAGE_DEFAULT                0x0008
+#define CAPS_SCALED_DEFAULT_MARKERS    0x0040
+#define CAPS_COLOR_CURSOR_SUPPORT      0x0080
+#define CAPS_PALETTE_MANAGER           0x0100
+#define CAPS_COSMETIC_WIDELINE_SUPPORT 0x0200
+#define CAPS_DIRECT_FILL               0x0400
+#define CAPS_REBUILD_FILLS             0x0800
+#define CAPS_CLIP_FILLS                        0x1000
+#define CAPS_ENHANCED_FONTMETRICS      0x2000
+#define CAPS_TRANSFORM_SUPPORT         0x4000
+#define CAPS_EXTERNAL_16_BITCOUNT      0x8000
+
+#define CAPS_BYTE_ALIGN_REQUIRED       0
+#define CAPS_BYTE_ALIGN_RECOMMENDED    1
+#define CAPS_BYTE_ALIGN_NOT_REQUIRED   2
+
+#define CAPS_RASTER_BITBLT             0x0001
+#define CAPS_RASTER_BANDING            0x0002
+#define CAPS_RASTER_BITBLT_SCALING     0x0004
+#define CAPS_RASTER_SET_PEL            0x0010
+#define CAPS_RASTER_FONTS              0x0020
+#define CAPS_RASTER_FLOOD_FILL         0x0040
+
+#define DEVESC_ERROR                   (-1)
+#define DEVESC_NOTIMPLEMENTED          0
+
+#define DEVESC_QUERYESCSUPPORT         0
+#define DEVESC_GETSCALINGFACTOR                1
+#define DEVESC_QUERYVIOCELLSIZES       2
+#define DEVESC_GETCP                   8000
+#define DEVESC_STARTDOC                        8150
+#define DEVESC_ENDDOC                  8151
+#define DEVESC_NEXTBAND                        8152
+#define DEVESC_ABORTDOC                        8153
+#define DEVESC_GETJOBID                        8160
+#define DEVESC_QUERY_RASTER            8161
+#define DEVESC_QUERYSIZE               8162
+#define DEVESC_QUERYJOBPROPERTIES      8163
+#define DEVESC_SETJOBPROPERTIES                8164
+#define DEVESC_DEFAULTJOBPROPERTIES    8165
+#define DEVESC_CHANGEOUTPUTPORT                8166
+#define DEVESC_NEWFRAME                        16300
+#define DEVESC_DRAFTMODE               16301
+#define DEVESC_FLUSHOUTPUT             16302
+#define DEVESC_RAWDATA                 16303
+#define DEVESC_SETMODE                 16304
+#define DEVESC_SEP                     16305
+#define DEVESC_MACRO                   16307
+#define DEVESC_BEGIN_BITBLT            16309
+#define DEVESC_END_BITBLT              16310
+#define DEVESC_SEND_COMPDATA           16311
+#define DEVESC_DBE_FIRST               24450
+#define DEVESC_DBE_LAST                        24455
+#define DEVESC_CHAR_EXTRA              16998
+#define DEVESC_BREAK_EXTRA             16999
+#define DEVESC_STD_JOURNAL             32600
+#define DEVESC_STARTDOC_WPROP          49150
+#define DEVESC_NEWFRAME_WPROP          49151
+
+#define DPDM_ERROR                     (-1)
+#define DPDM_NONE                      0
+
+#define DPDM_POSTJOBPROP               0
+#define DPDM_CHANGEPROP                        1
+#define DPDM_QUERYJOBPROP              2
+
+#define DQHC_ERROR                     (-1)
+
+#define HCAPS_CURRENT                  1
+#define HCAPS_SELECTABLE               2
+
+
+typedef PSZ *PDEVOPENDATA;
+
+
+typedef struct _DRIVDATA
+{
+  LONG cb;
+  LONG lVersion;
+  CHAR szDeviceName[32];
+  CHAR abGeneralData[1];
+} DRIVDATA;
+typedef DRIVDATA *PDRIVDATA;
+
+typedef struct _DEVOPENSTRUC
+{
+  PSZ      pszLogAddress;
+  PSZ      pszDriverName;
+  PDRIVDATA pdriv;
+  PSZ      pszDataType;
+  PSZ      pszComment;
+  PSZ      pszQueueProcName;
+  PSZ      pszQueueProcParams;
+  PSZ      pszSpoolerParams;
+  PSZ      pszNetworkParams;
+} DEVOPENSTRUC;
+typedef DEVOPENSTRUC *PDEVOPENSTRUC;
+
+typedef struct _ESCMODE
+{
+  ULONG mode;
+  BYTE modedata[1];
+} ESCMODE;
+typedef ESCMODE *PESCMODE;
+
+typedef struct _VIOSIZECOUNT
+{
+  LONG maxcount;
+  LONG count;
+} VIOSIZECOUNT;
+typedef VIOSIZECOUNT *PVIOSIZECOUNT;
+
+typedef struct _VIOFONTCELLSIZE
+{
+  LONG cx;
+  LONG cy;
+} VIOFONTCELLSIZE;
+typedef VIOFONTCELLSIZE *PVIOFONTCELLSIZE;
+
+typedef struct _SFACTORS
+{
+  LONG x;
+  LONG y;
+} SFACTORS;
+typedef SFACTORS *PSFACTORS;
+
+typedef struct _BANDRECT
+{
+  LONG xleft;
+  LONG ybottom;
+  LONG xright;
+  LONG ytop;
+} BANDRECT;
+typedef BANDRECT *PBANDRECT;
+
+typedef struct _HCINFO
+{
+  CHAR szFormname[32];
+  LONG cx;
+  LONG cy;
+  LONG xLeftClip;
+  LONG yBottomClip;
+  LONG xRightClip;
+  LONG yTopClip;
+  LONG xPels;
+  LONG yPels;
+  LONG flAttributes;
+} HCINFO;
+typedef HCINFO *PHCINFO;
+
+HMF DevCloseDC (HDC hdc);
+LONG DevEscape (HDC hdc, LONG lCode, LONG lInCount, PBYTE pbInData,
+    PLONG plOutCount, PBYTE pbOutData);
+HDC DevOpenDC (HAB hab, LONG lType, PCSZ pszToken, LONG lCount,
+    PDEVOPENDATA pdopData, HDC hdcComp);
+LONG DevPostDeviceModes (HAB hab, PDRIVDATA pdrivDriverData ,
+    PCSZ pszDriverName, PCSZ pszDeviceName, PCSZ pszName, ULONG flOptions);
+BOOL DevQueryCaps (HDC hdc, LONG lStart, LONG lCount, PLONG alArray);
+BOOL DevQueryDeviceNames (HAB hab, PCSZ pszDriverName, PLONG pldn,
+    PSTR32 aDeviceName, PSTR64 aDeviceDesc, PLONG pldt, PSTR16 aDataType);
+LONG DevQueryHardcopyCaps (HDC hdc, LONG lStartForm, LONG lForms,
+    PHCINFO phciHcInfo);
+
+/* ------------------ PRESENTATION MANAGER SHELL -------------------------- */
+
+#define MAXNAMEL                       60
+
+#define HINI_PROFILE                   (HINI)0
+#define HINI_USERPROFILE               (HINI)(-1)
+#define HINI_SYSTEMPROFILE             (HINI)(-2)
+#define HINI_USER                      HINI_USERPROFILE
+#define HINI_SYSTEM                    HINI_SYSTEMPROFILE
+
+typedef LHANDLE HSWITCH;
+typedef HSWITCH *PHSWITCH;
+
+typedef LHANDLE HPROGRAM;
+typedef HPROGRAM *PHPROGRAM;
+
+typedef LHANDLE HINI;
+typedef HINI *PHINI;
+
+typedef LHANDLE HAPP;
+
+
+typedef struct _PRFPROFILE
+{
+  ULONG cchUserName;
+  PSZ  pszUserName;
+  ULONG cchSysName;
+  PSZ  pszSysName;
+} PRFPROFILE;
+typedef PRFPROFILE *PPRFPROFILE;
+
+
+#if defined (INCL_WINPROGRAMLIST)
+
+#define MAXPATHL                       128
+#define SGH_ROOT                       (HPROGRAM)(-1L)
+
+#define PROG_DEFAULT                   0
+#define PROG_FULLSCREEN                        1
+#define PROG_WINDOWABLEVIO             2
+#define PROG_PM                                3
+#define PROG_GROUP                     5
+#define PROG_REAL                      4
+#define PROG_VDM                       4
+#define PROG_WINDOWEDVDM               7
+#define PROG_DLL                       6
+#define PROG_PDD                       8
+#define PROG_VDD                       9
+#define PROG_WINDOW_REAL               10
+#define PROG_WINDOW_PROT               11
+#define PROG_WINDOW_AUTO               12
+#define PROG_SEAMLESSVDM               13
+#define PROG_SEAMLESSCOMMON            14
+#define PROG_30_STDSEAMLESSCOMMON      14
+#define PROG_31_STDSEAMLESSVDM         15
+#define PROG_31_STDSEAMLESSCOMMON      16
+#define PROG_31_ENHSEAMLESSVDM         17
+#define PROG_31_ENHSEAMLESSCOMMON      18
+#define PROG_31_ENH                    19
+#define PROG_31_STD                    20
+#define PROG_DOS_GAME                  21
+#define PROG_WIN_GAME                  22
+#define PROG_DOS_MODE                  23
+#define PROG_RESERVED                  255
+
+#define SAF_VALIDFLAGS                 0x001f
+
+#define SAF_INSTALLEDCMDLINE           0x0001
+#define SAF_STARTCHILDAPP              0x0002
+#define SAF_MAXIMIZED                  0x0004
+#define SAF_MINIMIZED                  0x0008
+#define SAF_BACKGROUND                 0x0010
+
+#define SHE_VISIBLE                    0x00
+#define SHE_INVISIBLE                  0x01
+#define SHE_RESERVED                   0xff
+
+#define SHE_UNPROTECTED                        0x00
+#define SHE_PROTECTED                  0x02
+
+
+typedef ULONG PROGCATEGORY;
+typedef PROGCATEGORY *PPROGCATEGORY;
+
+typedef struct _HPROGARRAY
+{
+  HPROGRAM ahprog[1];
+} HPROGARRAY;
+typedef HPROGARRAY *PHPROGARRAY;
+
+typedef struct _PROGTYPE
+{
+  PROGCATEGORY progc;
+  ULONG               fbVisible;
+} PROGTYPE;
+typedef PROGTYPE *PPROGTYPE;
+
+typedef struct _PROGTITLE
+{
+  HPROGRAM hprog;
+  PROGTYPE progt;
+  PSZ     pszTitle;
+} PROGTITLE;
+typedef PROGTITLE *PPROGTITLE;
+
+typedef struct _PROGDETAILS
+{
+  ULONG           Length;
+  PROGTYPE progt;
+  PSZ     pszTitle;
+  PSZ     pszExecutable;
+  PSZ     pszParameters;
+  PSZ     pszStartupDir;
+  PSZ     pszIcon;
+  PSZ     pszEnvironment;
+  SWP     swpInitial;
+} PROGDETAILS;
+typedef PROGDETAILS *PPROGDETAILS;
+
+
+HPROGRAM PrfAddProgram (HINI hini, PPROGDETAILS pDetails, HPROGRAM hprogGroup);
+BOOL PrfChangeProgram (HINI hini, HPROGRAM hprog, PPROGDETAILS pDetails);
+HPROGRAM PrfCreateGroup (HINI hini, PCSZ pszTitle, UCHAR chVisibility);
+BOOL PrfDestroyGroup (HINI hini, HPROGRAM hprogGroup);
+PROGCATEGORY PrfQueryProgramCategory (HINI hini, PCSZ pszExe);
+ULONG PrfQueryProgramHandle (HINI hini, PCSZ pszExe,
+    PHPROGARRAY phprogArray, ULONG cchBufferMax, PULONG pulCount);
+ULONG PrfQueryProgramTitles (HINI hini, HPROGRAM hprogGroup,
+    PPROGTITLE pTitles, ULONG ulBufferLength, PULONG pulCount);
+ULONG PrfQueryDefinition (HINI hini, HPROGRAM hprog, PPROGDETAILS pDetails,
+    ULONG ulBufferLength);
+BOOL PrfRemoveProgram (HINI hini, HPROGRAM hprog);
+
+HAPP WinStartApp (HWND hwndNotify, PPROGDETAILS pDetails,
+    PCSZ pszParams, PVOID Reserved, ULONG fbOptions);
+BOOL WinTerminateApp (HAPP happ);
+
+#endif /* INCL_WINPROGRAMLIST */
+
+
+#if defined (INCL_WINSWITCHLIST) || !defined (INCL_NOCOMMON)
+
+#define SWL_INVISIBLE                  0x01
+#define SWL_GRAYED                     0x02
+#define SWL_VISIBLE                    0x04
+
+#define SWL_NOTJUMPABLE                        0x01
+#define SWL_JUMPABLE                   0x02
+
+typedef struct _SWCNTRL
+{
+  HWND    hwnd;
+  HWND    hwndIcon;
+  HPROGRAM hprog;
+  PID     idProcess;
+  ULONG           idSession;
+  ULONG           uchVisibility;
+  ULONG           fbJump;
+  CHAR    szSwtitle[MAXNAMEL+4];
+  ULONG           bProgType;
+} SWCNTRL;
+typedef SWCNTRL *PSWCNTRL;
+
+HSWITCH WinAddSwitchEntry (__const__ SWCNTRL *pswctl);
+ULONG WinRemoveSwitchEntry (HSWITCH hsw);
+
+#endif /* INCL_WINSWITCHLIST || !INCL_NOCOMMON */
+
+#if defined (INCL_WINSWITCHLIST)
+
+typedef struct _SWENTRY
+{
+  HSWITCH hswitch;
+  SWCNTRL swctl;
+} SWENTRY;
+typedef SWENTRY *PSWENTRY;
+
+typedef struct _SWBLOCK
+{
+  ULONG          cswentry;
+  SWENTRY aswentry[1];
+} SWBLOCK;
+typedef SWBLOCK *PSWBLOCK;
+
+
+ULONG WinChangeSwitchEntry (HSWITCH hsw, __const__ SWCNTRL *pswctl);
+HSWITCH WinCreateSwitchEntry (HAB hab, __const__ SWCNTRL *pswctl);
+ULONG WinQuerySessionTitle (HAB hab, ULONG usSession, PSZ pszTitle,
+    ULONG usTitlelen);
+ULONG WinQuerySwitchEntry (HSWITCH hsw, PSWCNTRL pswctl);
+HSWITCH WinQuerySwitchHandle (HWND hwnd, PID pid);
+ULONG WinQuerySwitchList (HAB hab, PSWBLOCK pswblk, ULONG usDataLength);
+ULONG WinQueryTaskSizePos (HAB hab, ULONG usScreenGroup, PSWP pswp);
+ULONG WinQueryTaskTitle (ULONG usSession, PSZ pszTitle, ULONG usTitlelen);
+ULONG WinSwitchToProgram (HSWITCH hsw);
+
+#endif /* INCL_WINSWITCHLIST */
+
+
+#if defined (INCL_WINSHELLDATA)
+
+#define PL_ALTERED                     0x008e
+
+BOOL PrfCloseProfile (HINI hini);
+HINI PrfOpenProfile (HAB hab, PCSZ pszFileName);
+BOOL PrfQueryProfile (HAB hab, PPRFPROFILE pPrfProfile);
+BOOL PrfQueryProfileData (HINI hini, PCSZ pszApp, PCSZ pszKey, PVOID pBuffer,
+    PULONG pulBufferLength);
+LONG PrfQueryProfileInt (HINI hini, PCSZ pszApp, PCSZ pszKey, LONG  sDefault);
+BOOL PrfQueryProfileSize (HINI hini, PCSZ pszApp, PCSZ pszKey,
+    PULONG pulReqLen);
+ULONG PrfQueryProfileString (HINI hini, PCSZ pszApp, PCSZ pszKey,
+    PCSZ pszDefault, PVOID pBuffer, ULONG ulBufferLength);
+BOOL PrfReset (HAB hab, __const__ PRFPROFILE *pPrfProfile);
+BOOL PrfWriteProfileData (HINI hini, PCSZ pszApp, PCSZ pszKey,
+    CPVOID pData, ULONG ulDataLength);
+BOOL PrfWriteProfileString (HINI hini, PCSZ pszApp, PCSZ pszKey,
+    PCSZ pszData);
+
+#endif /* INCL_WINSHELLDATA */
+
+/* ------------------ STANDARD DIALOGS: FILE ------------------------------ */
+
+#if defined (INCL_WINSTDFILE)
+
+#define FDM_FILTER                     (WM_USER+40)
+#define FDM_VALIDATE                   (WM_USER+41)
+#define FDM_ERROR                      (WM_USER+42)
+
+#define DID_FILE_DIALOG                        256
+#define DID_FILENAME_TXT               257
+#define DID_FILENAME_ED                        258
+#define DID_DRIVE_TXT                  259
+#define DID_DRIVE_CB                   260
+#define DID_FILTER_TXT                 261
+#define DID_FILTER_CB                  262
+#define DID_DIRECTORY_TXT              263
+#define DID_DIRECTORY_LB               264
+#define DID_FILES_TXT                  265
+#define DID_FILES_LB                   266
+#define DID_HELP_PB                    267
+#define DID_APPLY_PB                   268
+#define DID_READ_ONLY                  269
+#define DID_DIRECTORY_SELECTED         270
+#define DID_OK_PB                      DID_OK
+#define DID_CANCEL_PB                  DID_CANCEL
+
+#define FDS_CENTER                     0x00000001
+#define FDS_CUSTOM                     0x00000002
+#define FDS_FILTERUNION                        0x00000004
+#define FDS_HELPBUTTON                 0x00000008
+#define FDS_APPLYBUTTON                        0x00000010
+#define FDS_PRELOAD_VOLINFO            0x00000020
+#define FDS_MODELESS                   0x00000040
+#define FDS_INCLUDE_EAS                        0x00000080
+#define FDS_OPEN_DIALOG                        0x00000100
+#define FDS_SAVEAS_DIALOG              0x00000200
+#define FDS_MULTIPLESEL                        0x00000400
+#define FDS_ENABLEFILELB               0x00000800
+#define FDS_NATIONAL_LANGUAGE          0x80000000
+
+#define FDS_EFSELECTION                        0
+#define FDS_LBSELECTION                        1
+
+#define FDS_SUCCESSFUL                 0
+#define FDS_ERR_DEALLOCATE_MEMORY      1
+#define FDS_ERR_FILTER_TRUNC           2
+#define FDS_ERR_INVALID_DIALOG         3
+#define FDS_ERR_INVALID_DRIVE          4
+#define FDS_ERR_INVALID_FILTER         5
+#define FDS_ERR_INVALID_PATHFILE       6
+#define FDS_ERR_OUT_OF_MEMORY          7
+#define FDS_ERR_PATH_TOO_LONG          8
+#define FDS_ERR_TOO_MANY_FILE_TYPES    9
+#define FDS_ERR_INVALID_VERSION                10
+#define FDS_ERR_INVALID_CUSTOM_HANDLE  11
+#define FDS_ERR_DIALOG_LOAD_ERROR      12
+#define FDS_ERR_DRIVE_ERROR            13
+
+#define IDS_FILE_ALL_FILES_SELECTOR    1000
+#define IDS_FILE_BACK_CUR_PATH         1001
+#define IDS_FILE_BACK_PREV_PATH                1002
+#define IDS_FILE_BACK_SLASH            1003
+#define IDS_FILE_BASE_FILTER           1004
+#define IDS_FILE_BLANK                 1005
+#define IDS_FILE_COLON                 1006
+#define IDS_FILE_DOT                   1007
+#define IDS_FILE_DRIVE_LETTERS         1008
+#define IDS_FILE_FWD_CUR_PATH          1009
+#define IDS_FILE_FWD_PREV_PATH         1010
+#define IDS_FILE_FORWARD_SLASH         1011
+#define IDS_FILE_PARENT_DIR            1012
+#define IDS_FILE_Q_MARK                        1013
+#define IDS_FILE_SPLAT                 1014
+#define IDS_FILE_SPLAT_DOT             1015
+#define IDS_FILE_SAVEAS_TITLE          1016
+#define IDS_FILE_SAVEAS_FILTER_TXT     1017
+#define IDS_FILE_SAVEAS_FILENM_TXT     1018
+#define IDS_FILE_DUMMY_FILE_NAME       1019
+#define IDS_FILE_DUMMY_FILE_EXT                1020
+#define IDS_FILE_DUMMY_DRIVE           1021
+#define IDS_FILE_DUMMY_ROOT_DIR                1022
+#define IDS_FILE_PATH_PTR              1023
+#define IDS_FILE_VOLUME_PREFIX         1024
+#define IDS_FILE_VOLUME_SUFFIX         1025
+#define IDS_FILE_PATH_PTR2             1026
+#define IDS_FILE_INVALID_CHARS         1027
+#define IDS_FILE_ETC_BACK_SLASH                1028
+#define IDS_FILE_OPEN_PARENTHESIS      1029
+#define IDS_FILE_CLOSE_PARENTHESIS     1030
+#define IDS_FILE_SEMICOLON             1031
+#define IDS_FILE_BAD_DRIVE_NAME                1100
+#define IDS_FILE_BAD_DRIVE_OR_PATH_NAME 1101
+#define IDS_FILE_BAD_FILE_NAME         1102
+#define IDS_FILE_BAD_FQF               1103
+#define IDS_FILE_BAD_NETWORK_NAME      1104
+#define IDS_FILE_BAD_SUB_DIR_NAME      1105
+#define IDS_FILE_DRIVE_NOT_AVAILABLE   1106
+#define IDS_FILE_FQFNAME_TOO_LONG      1107
+#define IDS_FILE_OPEN_DIALOG_NOTE      1108
+#define IDS_FILE_PATH_TOO_LONG         1109
+#define IDS_FILE_SAVEAS_DIALOG_NOTE    1110
+#define IDS_FILE_DRIVE_DISK_CHANGE     1120
+#define IDS_FILE_DRIVE_NOT_READY       1122
+#define IDS_FILE_DRIVE_LOCKED          1123
+#define IDS_FILE_DRIVE_NO_SECTOR       1124
+#define IDS_FILE_DRIVE_SOME_ERROR      1125
+#define IDS_FILE_DRIVE_INVALID         1126
+#define IDS_FILE_INSERT_DISK_NOTE      1127
+#define IDS_FILE_OK_WHEN_READY         1128
+
+typedef PSZ APSZ[1];
+typedef APSZ *PAPSZ;
+
+typedef struct _FILEDLG
+{
+  ULONG          cbSize;
+  ULONG          fl;
+  ULONG          ulUser;
+  LONG   lReturn;
+  LONG   lSRC;
+  PSZ    pszTitle;
+  PSZ    pszOKButton;
+  PFNWP          pfnDlgProc;
+  PSZ    pszIType;
+  PAPSZ          papszITypeList;
+  PSZ    pszIDrive;
+  PAPSZ          papszIDriveList;
+  HMODULE hMod;
+  CHAR   szFullFile[CCHMAXPATH];
+  PAPSZ          papszFQFilename;
+  ULONG          ulFQFCount;
+  USHORT  usDlgId;
+  SHORT          x;
+  SHORT          y;
+  SHORT          sEAType;
+} FILEDLG;
+typedef FILEDLG *PFILEDLG;
+
+
+MRESULT WinDefFileDlgProc (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
+HWND WinFileDlg (HWND hwndP, HWND hwndO, PFILEDLG pfild);
+BOOL WinFreeFileDlgList (PAPSZ papszFQFilename);
+
+#endif /* INCL_WINSTDFILE */
+
+/* ------------------ STANDARD DIALOGS: FONT ------------------------------ */
+
+#if defined (INCL_WINSTDFONT)
+
+#define FNTM_FACENAMECHANGED           (WM_USER+50)
+#define FNTM_POINTSIZECHANGED          (WM_USER+51)
+#define FNTM_STYLECHANGED              (WM_USER+52)
+#define FNTM_COLORCHANGED              (WM_USER+53)
+#define FNTM_UPDATEPREVIEW             (WM_USER+54)
+#define FNTM_FILTERLIST                        (WM_USER+55)
+
+#define FNTS_CENTER                    0x00000001
+#define FNTS_CUSTOM                    0x00000002
+#define FNTS_OWNERDRAWPREVIEW          0x00000004
+#define FNTS_HELPBUTTON                        0x00000008
+#define FNTS_APPLYBUTTON               0x00000010
+#define FNTS_RESETBUTTON               0x00000020
+#define FNTS_MODELESS                  0x00000040
+#define FNTS_INITFROMFATTRS            0x00000080
+#define FNTS_BITMAPONLY                        0x00000100
+#define FNTS_VECTORONLY                        0x00000200
+#define FNTS_FIXEDWIDTHONLY            0x00000400
+#define FNTS_PROPORTIONALONLY          0x00000800
+#define FNTS_NOSYNTHESIZEDFONTS                0x00001000
+#define FNTS_NATIONAL_LANGUAGE         0x80000000
+
+#define FNTF_NOVIEWSCREENFONTS         0x0001
+#define FNTF_NOVIEWPRINTERFONTS                0x0002
+#define FNTF_SCREENFONTSELECTED                0x0004
+#define FNTF_PRINTERFONTSELECTED       0x0008
+
+#define CLRC_FOREGROUND                        1
+#define CLRC_BACKGROUND                        2
+
+#define FNTI_BITMAPFONT                        0x0001
+#define FNTI_VECTORFONT                        0x0002
+#define FNTI_FIXEDWIDTHFONT            0x0004
+#define FNTI_PROPORTIONALFONT          0x0008
+#define FNTI_SYNTHESIZED               0x0010
+#define FNTI_DEFAULTLIST               0x0020
+#define FNTI_FAMILYNAME                        0x0100
+#define FNTI_STYLENAME                 0x0200
+#define FNTI_POINTSIZE                 0x0400
+
+#define FNTS_SUCCESSFUL                        0
+#define FNTS_ERR_INVALID_DIALOG                3
+#define FNTS_ERR_ALLOC_SHARED_MEM      4
+#define FNTS_ERR_INVALID_PARM          5
+#define FNTS_ERR_OUT_OF_MEMORY         7
+#define FNTS_ERR_INVALID_VERSION       10
+#define FNTS_ERR_DIALOG_LOAD_ERROR     12
+
+#define DID_FONT_DIALOG                        300
+#define DID_NAME                       301
+#define DID_STYLE                      302
+#define DID_DISPLAY_FILTER             303
+#define DID_PRINTER_FILTER             304
+#define DID_SIZE                       305
+#define DID_SAMPLE                     306
+#define DID_OUTLINE                    307
+#define DID_UNDERSCORE                 308
+#define DID_STRIKEOUT                  309
+#define DID_HELP_BUTTON                        310
+#define DID_APPLY_BUTTON               311
+#define DID_RESET_BUTTON               312
+#define DID_OK_BUTTON                  DID_OK
+#define DID_CANCEL_BUTTON              DID_CANCEL
+#define DID_NAME_PREFIX                        313
+#define DID_STYLE_PREFIX               314
+#define DID_SIZE_PREFIX                        315
+#define DID_SAMPLE_GROUPBOX            316
+#define DID_EMPHASIS_GROUPBOX          317
+#define DID_FONT_ISO_SUPPORT           318
+#define DID_FONT_ISO_UNTESTED          319
+
+#define IDS_FONT_SAMPLE                        350
+#define IDS_FONT_BLANK                 351
+#define IDS_FONT_KEY_0                 352
+#define IDS_FONT_KEY_9                 353
+#define IDS_FONT_KEY_SEP               354
+#define IDS_FONT_DISP_ONLY             355
+#define IDS_FONT_PRINTER_ONLY          356
+#define IDS_FONT_COMBINED              357
+#define IDS_FONT_WEIGHT1               358
+#define IDS_FONT_WEIGHT2               359
+#define IDS_FONT_WEIGHT3               360
+#define IDS_FONT_WEIGHT4               361
+#define IDS_FONT_WEIGHT5               362
+#define IDS_FONT_WEIGHT6               363
+#define IDS_FONT_WEIGHT7               364
+#define IDS_FONT_WEIGHT8               365
+#define IDS_FONT_WEIGHT9               366
+#define IDS_FONT_WIDTH1                        367
+#define IDS_FONT_WIDTH2                        368
+#define IDS_FONT_WIDTH3                        369
+#define IDS_FONT_WIDTH4                        370
+#define IDS_FONT_WIDTH5                        371
+#define IDS_FONT_WIDTH6                        372
+#define IDS_FONT_WIDTH7                        373
+#define IDS_FONT_WIDTH8                        374
+#define IDS_FONT_WIDTH9                        375
+#define IDS_FONT_OPTION0               376
+#define IDS_FONT_OPTION1               377
+#define IDS_FONT_OPTION2               378
+#define IDS_FONT_OPTION3               379
+#define IDS_FONT_POINT_SIZE_LIST       380
+
+typedef struct _FONTDLG
+{
+  ULONG          cbSize;
+  HPS    hpsScreen;
+  HPS    hpsPrinter;
+  PSZ    pszTitle;
+  PSZ    pszPreview;
+  PSZ    pszPtSizeList;
+  PFNWP          pfnDlgProc;
+  PSZ    pszFamilyname;
+  FIXED          fxPointSize;
+  ULONG          fl;
+  ULONG          flFlags;
+  ULONG          flType;
+  ULONG          flTypeMask;
+  ULONG          flStyle;
+  ULONG          flStyleMask;
+  LONG   clrFore;
+  LONG   clrBack;
+  ULONG          ulUser;
+  LONG   lReturn;
+  LONG   lSRC;
+  LONG   lEmHeight;
+  LONG   lXHeight;
+  LONG   lExternalLeading;
+  HMODULE hMod;
+  FATTRS  fAttrs;
+  SHORT          sNominalPointSize;
+  USHORT  usWeight;
+  USHORT  usWidth;
+  SHORT          x;
+  SHORT          y;
+  USHORT  usDlgId;
+  USHORT  usFamilyBufLen;
+  USHORT  usReserved;
+} FONTDLG;
+typedef FONTDLG *PFONTDLG;
+
+typedef struct _STYLECHANGE
+{
+  USHORT usWeight;
+  USHORT usWeightOld;
+  USHORT usWidth;
+  USHORT usWidthOld;
+  ULONG         flType;
+  ULONG         flTypeOld;
+  ULONG         flTypeMask;
+  ULONG         flTypeMaskOld;
+  ULONG         flStyle;
+  ULONG         flStyleOld;
+  ULONG         flStyleMask;
+  ULONG         flStyleMaskOld;
+} STYLECHANGE;
+typedef STYLECHANGE *PSTYLECHANGE;
+
+HWND WinFontDlg (HWND hwndP, HWND hwndO, PFONTDLG pfntd);
+MRESULT WinDefFontDlgProc (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
+
+#endif /* INCL_WINSTDFONT */
+
+/* -------------------------- SPIN BUTTON --------------------------------- */
+
+#if defined (INCL_WINSTDSPIN)
+
+#define SPBS_ALLCHARACTERS             0x0000
+#define SPBS_NUMERICONLY               0x0001
+#define SPBS_READONLY                  0x0002
+#define SPBS_SERVANT                   0x0000
+#define SPBS_MASTER                    0x0010
+#define SPBS_JUSTDEFAULT               0x0000
+#define SPBS_JUSTRIGHT                 0x0004
+#define SPBS_JUSTLEFT                  0x0008
+#define SPBS_JUSTCENTER                        0x000c
+#define SPBS_NOBORDER                  0x0020
+#define SPBS_PADWITHZEROS              0x0080
+#define SPBS_FASTSPIN                  0x0100
+
+#define SPBM_OVERRIDESETLIMITS         0x0200
+#define SPBM_QUERYLIMITS               0x0201
+#define SPBM_SETTEXTLIMIT              0x0202
+#define SPBM_SPINUP                    0x0203
+#define SPBM_SPINDOWN                  0x0204
+#define SPBM_QUERYVALUE                        0x0205
+#define SPBM_SETARRAY                  0x0206
+#define SPBM_SETLIMITS                 0x0207
+#define SPBM_SETCURRENTVALUE           0x0208
+#define SPBM_SETMASTER                 0x0209
+
+#define SPBN_UPARROW                   0x020a
+#define SPBN_DOWNARROW                 0x020b
+#define SPBN_ENDSPIN                   0x020c
+#define SPBN_CHANGE                    0x020d
+#define SPBN_SETFOCUS                  0x020e
+#define SPBN_KILLFOCUS                 0x020f
+
+#define SPBQ_UPDATEIFVALID             0
+#define SPBQ_ALWAYSUPDATE              1
+#define SPBQ_DONOTUPDATE               3
+
+#endif /* INCL_WINSTDSPIN */
+
+/* ----------------------------- SLIDER ----------------------------------- */
+
+#if defined (INCL_WINSTDSLIDER)
+
+#define SLM_ADDDETENT                  0x0369
+#define SLM_QUERYDETENTPOS             0x036a
+#define SLM_QUERYSCALETEXT             0x036b
+#define SLM_QUERYSLIDERINFO            0x036c
+#define SLM_QUERYTICKPOS               0x036d
+#define SLM_QUERYTICKSIZE              0x036e
+#define SLM_REMOVEDETENT               0x036f
+#define SLM_SETSCALETEXT               0x0370
+#define SLM_SETSLIDERINFO              0x0371
+#define SLM_SETTICKSIZE                        0x0372
+
+#define SLN_CHANGE                     1
+#define SLN_SLIDERTRACK                        2
+#define SLN_SETFOCUS                   3
+#define SLN_KILLFOCUS                  4
+
+#define SLS_HORIZONTAL                 0x0000
+#define SLS_VERTICAL                   0x0001
+#define SLS_CENTER                     0x0000
+#define SLS_BOTTOM                     0x0002
+#define SLS_TOP                                0x0004
+#define SLS_LEFT                       0x0002
+#define SLS_RIGHT                      0x0004
+#define SLS_SNAPTOINCREMENT            0x0008
+#define SLS_BUTTONSBOTTOM              0x0010
+#define SLS_BUTTONSTOP                 0x0020
+#define SLS_BUTTONSLEFT                        0x0010
+#define SLS_BUTTONSRIGHT               0x0020
+#define SLS_OWNERDRAW                  0x0040
+#define SLS_READONLY                   0x0080
+#define SLS_RIBBONSTRIP                        0x0100
+#define SLS_HOMEBOTTOM                 0x0000
+#define SLS_HOMETOP                    0x0200
+#define SLS_HOMELEFT                   0x0000
+#define SLS_HOMERIGHT                  0x0200
+#define SLS_PRIMARYSCALE1              0x0000
+#define SLS_PRIMARYSCALE2              0x0400
+
+#define SMA_SCALE1                     0x0001
+#define SMA_SCALE2                     0x0002
+#define SMA_SHAFTDIMENSIONS            0x0000
+#define SMA_SHAFTPOSITION              0x0001
+#define SMA_SLIDERARMDIMENSIONS                0x0002
+#define SMA_SLIDERARMPOSITION          0x0003
+#define SMA_RANGEVALUE                 0x0000
+#define SMA_INCREMENTVALUE             0x0001
+#define SMA_SETALLTICKS                        0xffff
+
+#define SDA_RIBBONSTRIP                        1
+#define SDA_SLIDERSHAFT                        2
+#define SDA_BACKGROUND                 3
+#define SDA_SLIDERARM                  4
+
+#define PMERR_UPDATE_IN_PROGRESS       0x1f06
+#define SLDERR_INVALID_PARAMETERS      (-1)
+
+
+typedef struct _SLDCDATA
+{
+  ULONG         cbSize;
+  USHORT usScale1Increments;
+  USHORT usScale1Spacing;
+  USHORT usScale2Increments;
+  USHORT usScale2Spacing;
+} SLDCDATA;
+typedef SLDCDATA *PSLDCDATA;
+
+#endif /* INCL_WINSTDSLIDER */
+
+/* ------------------------- CIRCULAR SLIDER ------------------------------ */
+
+#if defined (INCL_WINCIRCULARSLIDER)
+
+#define CSM_QUERYRANGE                 0x053d
+#define CSM_SETRANGE                   0x053e
+#define CSM_QUERYVALUE                 0x053f
+#define CSM_SETVALUE                   0x0540
+#define CSM_QUERYRADIUS                        0x0541
+#define CSM_SETINCREMENT               0x0542
+#define CSM_QUERYINCREMENT             0x0543
+#define CSM_SETBITMAPDATA              0x0544
+#define CSN_SETFOCUS                   0x0548
+#define CSN_CHANGED                    0x0549
+#define CSN_TRACKING                   0x054a
+#define CSN_QUERYBACKGROUNDCOLOR       0x054b
+
+#define CSS_NOBUTTON                   0x0001
+#define CSS_NOTEXT                     0x0002
+#define CSS_NONUMBER                   0x0004
+#define CSS_POINTSELECT                        0x0008
+#define CSS_360                                0x0010
+#define CSS_MIDPOINT                   0x0020
+#define CSS_PROPORTIONALTICKS          0x0040
+#define CSS_NOTICKS                    0x0080
+#define CSS_CIRCULARVALUE              0x0100
+
+typedef struct _CSBITMAPDATA
+{
+  HBITMAP hbmLeftUp;
+  HBITMAP hbmLeftDown;
+  HBITMAP hbmRightUp;
+  HBITMAP hbmRightDown;
+} CSBITMAPDATA;
+typedef CSBITMAPDATA *PCSBITMAPDATA;
+
+#endif /* INCL_WINCIRCULARSLIDER */
+
+/* ---------------------------- NOTEBOOK ---------------------------------- */
+
+#if defined (INCL_WINSTDBOOK)
+
+#define BFA_PAGEDATA                   0x0001
+#define BFA_PAGEFROMHWND               0x0002
+#define BFA_PAGEFROMDLGTEMPLATE                0x0004
+#define BFA_PAGEFROMDLGRES             0x0008
+#define BFA_STATUSLINE                 0x0010
+#define BFA_MAJORTABBITMAP             0x0020
+#define BFA_MINORTABBITMAP             0x0040
+#define BFA_MAJORTABTEXT               0x0080
+#define BFA_MINORTABTEXT               0x0100
+#define BFA_BIDIINFO                   0x0200
+
+#define BKM_CALCPAGERECT               0x0353
+#define BKM_DELETEPAGE                 0x0354
+#define BKM_INSERTPAGE                 0x0355
+#define BKM_INVALIDATETABS             0x0356
+#define BKM_TURNTOPAGE                 0x0357
+#define BKM_QUERYPAGECOUNT             0x0358
+#define BKM_QUERYPAGEID                        0x0359
+#define BKM_QUERYPAGEDATA              0x035a
+#define BKM_QUERYPAGEWINDOWHWND                0x035b
+#define BKM_QUERYTABBITMAP             0x035c
+#define BKM_QUERYTABTEXT               0x035d
+#define BKM_SETDIMENSIONS              0x035e
+#define BKM_SETPAGEDATA                        0x035f
+#define BKM_SETPAGEWINDOWHWND          0x0360
+#define BKM_SETSTATUSLINETEXT          0x0361
+#define BKM_SETTABBITMAP               0x0362
+#define BKM_SETTABTEXT                 0x0363
+#define BKM_SETNOTEBOOKCOLORS          0x0364
+#define BKM_QUERYPAGESTYLE             0x0365
+#define BKM_QUERYSTATUSLINETEXT                0x0366
+#define BKM_SETPAGEINFO                        0x0367
+#define BKM_QUERYPAGEINFO              0x0368
+#define BKM_SETTABCOLOR                        0x0374
+#define BKM_SETNOTEBOOKBUTTONS         0x0375
+
+#define BKN_PAGESELECTED               0x0082
+#define BKN_NEWPAGESIZE                        0x0083
+#define BKN_HELP                       0x0084
+#define BKN_PAGEDELETED                        0x0085
+#define BKN_PAGESELECTEDPENDING                0x0086
+
+#define BKA_ALL                                0x0001
+#define BKA_SINGLE                     0x0002
+#define BKA_TAB                                0x0004
+
+#define BKA_LAST                       0x0002
+#define BKA_FIRST                      0x0004
+#define BKA_NEXT                       0x0008
+#define BKA_PREV                       0x0010
+#define BKA_TOP                                0x0020
+
+#define BKA_MAJORTAB                   0x0001
+#define BKA_MINORTAB                   0x0002
+#define BKA_PAGEBUTTON                 0x0100
+
+#define BKA_STATUSTEXTON               0x0001
+#define BKA_MAJOR                      0x0040
+#define BKA_MINOR                      0x0080
+#define BKA_AUTOPAGESIZE               0x0100
+#define BKA_END                                0x0200
+
+#define BKA_TEXT                       0x0400
+#define BKA_BITMAP                     0x0800
+
+#define BKA_AUTOCOLOR                  (-1)
+#define BKA_MAXBUTTONID                        7999
+
+#define BKS_BACKPAGESBR                        0x0001
+#define BKS_BACKPAGESBL                        0x0002
+#define BKS_BACKPAGESTR                        0x0004
+#define BKS_BACKPAGESTL                        0x0008
+
+#define BKS_MAJORTABRIGHT              0x0010
+#define BKS_MAJORTABLEFT               0x0020
+#define BKS_MAJORTABTOP                        0x0040
+#define BKS_MAJORTABBOTTOM             0x0080
+
+#define BKS_SQUARETABS                 0x0000
+#define BKS_ROUNDEDTABS                        0x0100
+#define BKS_POLYGONTABS                        0x0200
+
+#define BKS_SOLIDBIND                  0x0000
+#define BKS_SPIRALBIND                 0x0400
+
+#define BKS_STATUSTEXTLEFT             0x0000
+#define BKS_STATUSTEXTRIGHT            0x1000
+#define BKS_STATUSTEXTCENTER           0x2000
+
+#define BKS_TABTEXTLEFT                        0x0000
+#define BKS_TABTEXTRIGHT               0x4000
+#define BKS_TABTEXTCENTER              0x8000
+
+#define BKS_BUTTONAREA                 0x0200
+#define BKS_TABBEDDIALOG               0x0800
+
+#define BKA_BACKGROUNDPAGECOLORINDEX   0x0001
+#define BKA_BACKGROUNDPAGECOLOR                0x0002
+#define BKA_BACKGROUNDMAJORCOLORINDEX  0x0003
+#define BKA_BACKGROUNDMAJORCOLOR       0x0004
+#define BKA_BACKGROUNDMINORCOLORINDEX  0x0005
+#define BKA_BACKGROUNDMINORCOLOR       0x0006
+#define BKA_FOREGROUNDMAJORCOLORINDEX  0x0007
+#define BKA_FOREGROUNDMAJORCOLOR       0x0008
+#define BKA_FOREGROUNDMINORCOLORINDEX  0x0009
+#define BKA_FOREGROUNDMINORCOLOR       0x000a
+
+#define BOOKERR_INVALID_PARAMETERS     (-1)
+
+
+typedef struct _BOOKTEXT
+{
+  PSZ  pString;
+  ULONG textLen;
+} BOOKTEXT;
+typedef BOOKTEXT *PBOOKTEXT;
+
+typedef struct _NOTEBOOKBUTTON
+{
+  PSZ    pszText;
+  ULONG          idButton;
+  LHANDLE hImage;
+  LONG   flStyle;
+} NOTEBOOKBUTTON;
+typedef NOTEBOOKBUTTON *PNOTEBOOKBUTTON;
+
+typedef struct _DELETENOTIFY
+{
+  HWND   hwndBook;
+  HWND   hwndPage;
+  ULONG          ulAppPageData;
+  HBITMAP hbmTab;
+} DELETENOTIFY;
+typedef DELETENOTIFY *PDELETENOTIFY;
+
+typedef struct _PAGESELECTNOTIFY
+{
+  HWND hwndBook;
+  ULONG ulPageIdCur;
+  ULONG ulPageIdNew;
+} PAGESELECTNOTIFY;
+typedef PAGESELECTNOTIFY *PPAGESELECTNOTIFY;
+
+typedef struct _BOOKPAGEINFO
+{
+  ULONG               cb;
+  ULONG               fl;
+  BOOL        bLoadDlg;
+  ULONG               ulPageData;
+  HWND        hwndPage;
+  PFN         pfnPageDlgProc;
+  ULONG               idPageDlg;
+  HMODULE      hmodPageDlg;
+  PVOID               pPageDlgCreateParams;
+  PDLGTEMPLATE pdlgtPage;
+  ULONG               cbStatusLine;
+  PSZ         pszStatusLine;
+  HBITMAP      hbmMajorTab;
+  HBITMAP      hbmMinorTab;
+  ULONG               cbMajorTab;
+  PSZ         pszMajorTab;
+  ULONG               cbMinorTab;
+  PSZ         pszMinorTab;
+  PVOID               pBidiInfo;
+} BOOKPAGEINFO;
+typedef BOOKPAGEINFO *PBOOKPAGEINFO;
+
+#endif /* INCL_WINSTDBOOK */
+
+/* -------------------------- DRAG AND DROP ------------------------------- */
+
+#if defined (INCL_WINSTDDRAG)
+
+#define PMERR_NOT_DRAGGING             0x1f00
+#define PMERR_ALREADY_DRAGGING         0x1f01
+
+#define WM_DRAGFIRST                   0x0310
+#define WM_DRAGLAST                    0x032f
+
+#define DM_DROP                                0x032f
+#define DM_DRAGOVER                    0x032e
+#define DM_DRAGLEAVE                   0x032d
+#define DM_DROPHELP                    0x032c
+#define DM_ENDCONVERSATION             0x032b
+#define DM_PRINT                       0x032a
+#define DM_RENDER                      0x0329
+#define DM_RENDERCOMPLETE              0x0328
+#define DM_RENDERPREPARE               0x0327
+#define DM_DRAGFILECOMPLETE            0x0326
+#define DM_EMPHASIZETARGET             0x0325
+#define DM_DRAGERROR                   0x0324
+#define DM_FILERENDERED                        0x0323
+#define DM_RENDERFILE                  0x0322
+#define DM_DRAGOVERNOTIFY              0x0321
+#define DM_PRINTOBJECT                 0x0320
+#define DM_DISCARDOBJECT               0x031f
+#define DM_DROPNOTIFY                  0x031e
+
+#define MSGF_DRAG                      0x0010
+
+#define DC_OPEN                                0x0001
+#define DC_REF                         0x0002
+#define DC_GROUP                       0x0004
+#define DC_CONTAINER                   0x0008
+#define DC_PREPARE                     0x0010
+#define DC_REMOVEABLEMEDIA             0x0020
+
+#define DF_MOVE                                0x0001
+#define DF_SOURCE                      0x0002
+#define DF_SUCCESSFUL                  0x0004
+
+#define DFF_MOVE                       1
+#define DFF_COPY                       2
+#define DFF_DELETE                     3
+
+#define DGS_DRAGINPROGRESS             0x0001
+#define DGS_LAZYDRAGINPROGRESS         0x0002
+
+#define DME_IGNOREABORT                        1
+#define DME_IGNORECONTINUE             2
+#define DME_REPLACE                    3
+#define DME_RETRY                      4
+
+#define DMFL_TARGETSUCCESSFUL          0x0001
+#define DMFL_TARGETFAIL                        0x0002
+#define DMFL_NATIVERENDER              0x0004
+#define DMFL_RENDERRETRY               0x0008
+#define DMFL_RENDEROK                  0x0010
+#define DMFL_RENDERFAIL                        0x0020
+
+#define DO_DEFAULT                     0xbffe
+#define DO_UNKNOWN                     0xbfff
+#define DO_COPYABLE                    0x0001
+#define DO_MOVEABLE                    0x0002
+#define DO_LINKABLE                    0x0004
+#define DO_CREATEABLE                  0x0008
+#define DO_CREATEPROGRAMOBJECTABLE     0x0010
+
+#define DO_COPY                                0x0010
+#define DO_MOVE                                0x0020
+#define DO_LINK                                0x0018
+#define DO_CREATE                      0x0040
+#define DO_CREATEPROGRAMOBJECT         0x0080
+
+#define DOR_NODROP                     0x0000
+#define DOR_DROP                       0x0001
+#define DOR_NODROPOP                   0x0002
+#define DOR_NEVERDROP                  0x0003
+
+#define DRG_ICON                       0x0001
+#define DRG_BITMAP                     0x0002
+#define DRG_POLYGON                    0x0004
+#define DRG_STRETCH                    0x0008
+#define DRG_TRANSPARENT                        0x0010
+#define DRG_CLOSED                     0x0020
+#define DRG_MINIBITMAP                 0x0040
+
+#define DRR_SOURCE                     1
+#define DRR_TARGET                     2
+#define DRR_ABORT                      3
+
+#define DRT_ASM                                "Assembler Code"
+#define DRT_BASIC                      "BASIC Code"
+#define DRT_BINDATA                    "Binary Data"
+#define DRT_BITMAP                     "Bitmap"
+#define DRT_C                          "C Code"
+#define DRT_COBOL                      "COBOL Code"
+#define DRT_DLL                                "Dynamic Link Library"
+#define DRT_DOSCMD                     "DOS Command File"
+#define DRT_EXE                                "Executable"
+#define DRT_FORTRAN                    "FORTRAN Code"
+#define DRT_ICON                       "Icon"
+#define DRT_LIB                                "Library"
+#define DRT_METAFILE                   "Metafile"
+#define DRT_OS2CMD                     "OS/2 Command File"
+#define DRT_PASCAL                     "Pascal Code"
+#define DRT_RESOURCE                   "Resource File"
+#define DRT_TEXT                       "Plain Text"
+#define DRT_UNKNOWN                    "Unknown"
+
+typedef LHANDLE HSTR;
+
+typedef struct _DRAGIMAGE
+{
+  USHORT  cb;
+  USHORT  cptl;
+  LHANDLE hImage;
+  SIZEL          sizlStretch;
+  ULONG          fl;
+  SHORT          cxOffset;
+  SHORT          cyOffset;
+} DRAGIMAGE;
+typedef DRAGIMAGE *PDRAGIMAGE;
+
+typedef struct _DRAGINFO
+{
+  ULONG         cbDraginfo;
+  USHORT cbDragitem;
+  USHORT usOperation;
+  HWND  hwndSource;
+  SHORT         xDrop;
+  SHORT         yDrop;
+  USHORT cditem;
+  USHORT usReserved;
+} DRAGINFO;
+typedef DRAGINFO *PDRAGINFO;
+
+typedef struct _DRAGITEM
+{
+  HWND  hwndItem;
+  ULONG         ulItemID;
+  HSTR  hstrType;
+  HSTR  hstrRMF;
+  HSTR  hstrContainerName;
+  HSTR  hstrSourceName;
+  HSTR  hstrTargetName;
+  SHORT         cxOffset;
+  SHORT         cyOffset;
+  USHORT fsControl;
+  USHORT fsSupportedOps;
+} DRAGITEM;
+typedef DRAGITEM *PDRAGITEM;
+
+typedef struct _DRAGTRANSFER
+{
+  ULONG            cb;
+  HWND     hwndClient;
+  PDRAGITEM pditem;
+  HSTR     hstrSelectedRMF;
+  HSTR     hstrRenderToName;
+  ULONG            ulTargetInfo;
+  USHORT    usOperation;
+  USHORT    fsReply;
+} DRAGTRANSFER;
+typedef DRAGTRANSFER *PDRAGTRANSFER;
+
+typedef struct _RENDERFILE
+{
+  HWND  hwndDragFiles;
+  HSTR  hstrSource;
+  HSTR  hstrTarget;
+  USHORT fMove;
+  USHORT usRsvd;
+} RENDERFILE;
+typedef RENDERFILE *PRENDERFILE;
+
+
+BOOL DrgAcceptDroppedFiles (HWND hwnd, PCSZ pszPath, PCSZ pszTypes,
+    ULONG ulDefaultOp, ULONG ulReserved);
+BOOL DrgAccessDraginfo (PDRAGINFO pdinfo);
+HSTR DrgAddStrHandle (PCSZ psz);
+PDRAGINFO DrgAllocDraginfo (ULONG cDitem);
+PDRAGTRANSFER DrgAllocDragtransfer (ULONG cdxfer);
+BOOL DrgCancelLazyDrag (VOID);
+BOOL DrgDeleteDraginfoStrHandles (PDRAGINFO pdinfo);
+BOOL DrgDeleteStrHandle (HSTR hstr);
+HWND DrgDrag (HWND hwndSource, PDRAGINFO pdinfo, PDRAGIMAGE pdimg,
+    ULONG cdimg, LONG vkTerminate, PVOID pReserved);
+BOOL DrgDragFiles (HWND hwnd, PSZ *apszFiles, PSZ *apszTypes, PSZ *apszTargets,
+    ULONG cFiles, HPOINTER hptrDrag, ULONG vkTerm, BOOL fSourceRender,
+    ULONG ulReserved);
+BOOL DrgFreeDraginfo (PDRAGINFO pdinfo);
+BOOL DrgFreeDragtransfer (PDRAGTRANSFER pdxfer);
+HPS DrgGetPS (HWND hwnd);
+BOOL DrgLazyDrag (HWND hwndSource, PDRAGINFO pDraginfo, PDRAGIMAGE pdimg,
+    ULONG cdimg, PVOID pReserved);
+BOOL DrgLazyDrop (HWND hwndTarget, ULONG ulOperation, PPOINTL pptlDrop);
+BOOL DrgPostTransferMsg (HWND hwnd, ULONG msg, PDRAGTRANSFER pdxfer, ULONG fl,
+    ULONG ulReserved, BOOL fRetry);
+BOOL DrgPushDraginfo (PDRAGINFO pdinfo, HWND hwndDest);
+PDRAGINFO DrgQueryDraginfoPtr (PDRAGINFO pReserved);
+PDRAGINFO DrgQueryDraginfoPtrFromHwnd (HWND hwndSource);
+PDRAGINFO DrgQueryDraginfoPtrFromDragitem (__const__ DRAGITEM *pDragitem);
+BOOL DrgQueryDragitem (PDRAGINFO pdinfo, ULONG cbBuffer, PDRAGITEM pditem,
+    ULONG iItem);
+ULONG DrgQueryDragitemCount (PDRAGINFO pdinfo);
+PDRAGITEM DrgQueryDragitemPtr (PDRAGINFO pdinfo, ULONG ulIndex);
+ULONG DrgQueryDragStatus (VOID);
+BOOL DrgQueryNativeRMF (PDRAGITEM pditem, ULONG cbBuffer, PCHAR pBuffer);
+ULONG DrgQueryNativeRMFLen (PDRAGITEM pditem);
+ULONG DrgQueryStrName (HSTR hstr, ULONG cbBuffer, PSZ pBuffer);
+ULONG DrgQueryStrNameLen (HSTR hstr);
+BOOL DrgQueryTrueType (PDRAGITEM pditem, ULONG cbBuffer, PSZ pBuffer);
+ULONG DrgQueryTrueTypeLen (PDRAGITEM pditem);
+PDRAGINFO DrgReallocDraginfo (PDRAGINFO pDraginfoOld, ULONG cditem);
+BOOL DrgReleasePS (HPS hps);
+MRESULT DrgSendTransferMsg (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
+BOOL DrgSetDragImage (PDRAGINFO pdinfo, PDRAGIMAGE pdimg, ULONG cdimg,
+    PVOID pReserved);
+BOOL DrgSetDragitem (PDRAGINFO pdinfo, PDRAGITEM pditem, ULONG cbBuffer,
+    ULONG iItem);
+BOOL DrgSetDragPointer (PDRAGINFO pdinfo, HPOINTER hptr);
+BOOL DrgVerifyNativeRMF (PDRAGITEM pditem, PCSZ pszRMF);
+BOOL DrgVerifyRMF (PDRAGITEM pditem, PCSZ pszMech, PCSZ pszFmt);
+BOOL DrgVerifyTrueType (PDRAGITEM pditem, PCSZ pszType);
+BOOL DrgVerifyType (PDRAGITEM pditem, PCSZ pszType);
+BOOL DrgVerifyTypeSet (PDRAGITEM pditem, PCSZ pszType, ULONG cbMatch,
+    PSZ pszMatch);
+
+#endif /* INCL_WINSTDDRAG */
+
+/* -------------------------- VALUE SET ----------------------------------- */
+
+#if defined (INCL_WINSTDVALSET)
+
+#define VDA_ITEM                       0x0001
+#define VDA_ITEMBACKGROUND             0x0002
+#define VDA_SURROUNDING                        0x0003
+#define VDA_BACKGROUND                 0x0004
+
+#define VIA_BITMAP                     0x0001
+#define VIA_ICON                       0x0002
+#define VIA_TEXT                       0x0004
+#define VIA_RGB                                0x0008
+#define VIA_COLORINDEX                 0x0010
+#define VIA_OWNERDRAW                  0x0020
+#define VIA_DISABLED                   0x0040
+#define VIA_DRAGGABLE                  0x0080
+#define VIA_DROPONABLE                 0x0100
+
+#define VM_QUERYITEM                   0x0375
+#define VM_QUERYITEMATTR               0x0376
+#define VM_QUERYMETRICS                        0x0377
+#define VM_QUERYSELECTEDITEM           0x0378
+#define VM_SELECTITEM                  0x0379
+#define VM_SETITEM                     0x037a
+#define VM_SETITEMATTR                 0x037b
+#define VM_SETMETRICS                  0x037c
+
+#define VMA_ITEMSIZE                   0x0001
+#define VMA_ITEMSPACING                        0x0002
+
+#define VN_SELECT                      0x0078
+#define VN_ENTER                       0x0079
+#define VN_DRAGLEAVE                   0x007a
+#define VN_DRAGOVER                    0x007b
+#define VN_DROP                                0x007c
+#define VN_DROPHELP                    0x007d
+#define VN_INITDRAG                    0x007e
+#define VN_SETFOCUS                    0x007f
+#define VN_KILLFOCUS                   0x0080
+#define VN_HELP                                0x0081
+
+#define VS_BITMAP                      0x0001
+#define VS_ICON                                0x0002
+#define VS_TEXT                                0x0004
+#define VS_RGB                         0x0008
+#define VS_COLORINDEX                  0x0010
+#define VS_BORDER                      0x0020
+#define VS_ITEMBORDER                  0x0040
+#define VS_SCALEBITMAPS                        0x0080
+#define VS_RIGHTTOLEFT                 0x0100
+#define VS_OWNERDRAW                   0x0200
+
+#define VSERR_INVALID_PARAMETERS       (-1)
+
+
+typedef struct _VSCDATA
+{
+  ULONG         cbSize;
+  USHORT usRowCount;
+  USHORT usColumnCount;
+} VSCDATA;
+typedef VSCDATA *PVSCDATA;
+
+typedef struct _VSDRAGINIT
+{
+  HWND  hwnd;
+  LONG  x;
+  LONG  y;
+  LONG  cx;
+  LONG  cy;
+  USHORT usRow;
+  USHORT usColumn;
+} VSDRAGINIT;
+typedef VSDRAGINIT *PVSDRAGINIT;
+
+typedef struct _VSDRAGINFO
+{
+  PDRAGINFO pDragInfo;
+  USHORT    usRow;
+  USHORT    usColumn;
+} VSDRAGINFO;
+typedef VSDRAGINFO *PVSDRAGINFO;
+
+typedef struct _VSTEXT
+{
+  PSZ  pszItemText;
+  ULONG ulBufLen;
+} VSTEXT;
+typedef VSTEXT *PVSTEXT;
+
+#endif /* INCL_WINSTDVALSET */
+
+/* ---------------------------- CONTAINER --------------------------------- */
+
+#if defined (INCL_WINSTDCNR)
+
+#define CA_CONTAINERTITLE              0x00000200
+#define CA_TITLESEPARATOR              0x00000400
+#define CA_TITLELEFT                   0x00000800
+#define CA_TITLERIGHT                  0x00001000
+#define CA_TITLECENTER                 0x00002000
+#define CA_OWNERDRAW                   0x00004000
+#define CA_DETAILSVIEWTITLES           0x00008000
+#define CA_ORDEREDTARGETEMPH           0x00010000
+#define CA_DRAWBITMAP                  0x00020000
+#define CA_DRAWICON                    0x00040000
+#define CA_TITLEREADONLY               0x00080000
+#define CA_OWNERPAINTBACKGROUND                0x00100000
+#define CA_MIXEDTARGETEMPH             0x00200000
+#define CA_TREELINE                    0x00400000
+
+#define CCS_EXTENDSEL                  0x0001
+#define CCS_MULTIPLESEL                        0x0002
+#define CCS_SINGLESEL                  0x0004
+#define CCS_AUTOPOSITION               0x0008
+#define CCS_VERIFYPOINTERS             0x0010
+#define CCS_READONLY                   0x0020
+#define CCS_MINIRECORDCORE             0x0040
+#define CCS_MINIICONS                  0x0800
+#define CCS_NOCONTROLPTR               0x1000
+
+#define CFA_LEFT                       0x00000001
+#define CFA_RIGHT                      0x00000002
+#define CFA_CENTER                     0x00000004
+#define CFA_TOP                                0x00000008
+#define CFA_VCENTER                    0x00000010
+#define CFA_BOTTOM                     0x00000020
+#define CFA_INVISIBLE                  0x00000040
+#define CFA_BITMAPORICON               0x00000100
+#define CFA_SEPARATOR                  0x00000200
+#define CFA_HORZSEPARATOR              0x00000400
+#define CFA_STRING                     0x00000800
+#define CFA_OWNER                      0x00001000
+#define CFA_DATE                       0x00002000
+#define CFA_TIME                       0x00004000
+#define CFA_FIREADONLY                 0x00008000
+#define CFA_FITITLEREADONLY            0x00010000
+#define CFA_ULONG                      0x00020000
+#define CFA_RANGE                      0x00040000
+#define CFA_NEWCOMP                    0x00080000
+#define CFA_OBJECT                     0x00100000
+#define CFA_LIST                       0x00200000
+#define CFA_CLASS                      0x00400000
+#define CFA_IGNORE                     0x80000000
+
+#define CID_LEFTCOLTITLEWND            0x7ff0
+#define CID_RIGHTCOLTITLEWND           0x7ff1
+#define CID_BLANKBOX                   0x7ff2
+#define CID_HSCROLL                    0x7ff3
+#define CID_RIGHTHSCROLL               0x7ff4
+#define CID_CNRTITLEWND                        0x7ff5
+#define CID_LEFTDVWND                  0x7ff7
+#define CID_RIGHTDVWND                 0x7ff8
+#define CID_VSCROLL                    0x7ff9
+#define CID_MLE                                0x7ffa
+
+#define CM_ALLOCDETAILFIELDINFO                0x0330
+#define CM_ALLOCRECORD                 0x0331
+#define CM_ARRANGE                     0x0332
+#define CM_ERASERECORD                 0x0333
+#define CM_FILTER                      0x0334
+#define CM_FREEDETAILFIELDINFO         0x0335
+#define CM_FREERECORD                  0x0336
+#define CM_HORZSCROLLSPLITWINDOW       0x0337
+#define CM_INSERTDETAILFIELDINFO       0x0338
+#define CM_INSERTRECORD                        0x0339
+#define CM_INVALIDATEDETAILFIELDINFO   0x033a
+#define CM_INVALIDATERECORD            0x033b
+#define CM_PAINTBACKGROUND             0x033c
+#define CM_QUERYCNRINFO                        0x033d
+#define CM_QUERYDETAILFIELDINFO                0x033e
+#define CM_QUERYDRAGIMAGE              0x033f
+#define CM_QUERYRECORD                 0x0340
+#define CM_QUERYRECORDEMPHASIS         0x0341
+#define CM_QUERYRECORDFROMRECT         0x0342
+#define CM_QUERYRECORDRECT             0x0343
+#define CM_QUERYVIEWPORTRECT           0x0344
+#define CM_REMOVEDETAILFIELDINFO       0x0345
+#define CM_REMOVERECORD                        0x0346
+#define CM_SCROLLWINDOW                        0x0347
+#define CM_SEARCHSTRING                        0x0348
+#define CM_SETCNRINFO                  0x0349
+#define CM_SETRECORDEMPHASIS           0x034a
+#define CM_SORTRECORD                  0x034b
+#define CM_OPENEDIT                    0x034c
+#define CM_CLOSEEDIT                   0x034d
+#define CM_COLLAPSETREE                        0x034e
+#define CM_EXPANDTREE                  0x034f
+#define CM_QUERYRECORDINFO             0x0350
+#define CM_INSERTRECORDARRAY           0x0351
+#define CM_MOVETREE                    0x0352
+#define CM_SETTEXTVISIBILITY           0x0353
+#define CM_SETGRIDINFO                 0x0354
+#define CM_QUERYGRIDINFO               0x0355
+#define CM_SNAPTOGRID                  0x0356
+
+#define CMA_TOP                                0x0001
+#define CMA_BOTTOM                     0x0002
+#define CMA_LEFT                       0x0004
+#define CMA_RIGHT                      0x0008
+#define CMA_PERIMETER                  0x0010
+#define CMA_USER                       0x0020
+
+#define CMA_FIRST                      0x0010
+#define CMA_LAST                       0x0020
+#define CMA_END                                0x0040
+#define CMA_PREV                       0x0080
+#define CMA_NEXT                       0x0100
+
+#define CMA_HORIZONTAL                 0x0200
+#define CMA_VERTICAL                   0x0400
+#define CMA_ICON                       0x0800
+#define CMA_TEXT                       0x1000
+#define CMA_PARTIAL                    0x2000
+#define CMA_COMPLETE                   0x4000
+
+#define CMA_PARENT                     0x0001
+#define CMA_FIRSTCHILD                 0x0002
+#define CMA_LASTCHILD                  0x0004
+
+#define CMA_CNRTITLE                   0x0001
+#define CMA_DELTA                      0x0002
+#define CMA_FLWINDOWATTR               0x0004
+#define CMA_LINESPACING                        0x0008
+#define CMA_PFIELDINFOLAST             0x0010
+
+#define CMA_PSORTRECORD                        0x0020
+#define CMA_PTLORIGIN                  0x0040
+#define CMA_SLBITMAPORICON             0x0080
+#define CMA_XVERTSPLITBAR              0x0100
+#define CMA_PFIELDINFOOBJECT           0x0200
+
+#define CMA_TREEICON                   0x0400
+#define CMA_TREEBITMAP                 0x0800
+#define CMA_CXTREEINDENT               0x1000
+#define CMA_CXTREELINE                 0x2000
+#define CMA_SLTREEBITMAPORICON         0x4000
+
+#define CMA_ITEMORDER                  0x0001
+#define CMA_WINDOW                     0x0002
+#define CMA_WORKSPACE                  0x0004
+#define CMA_ZORDER                     0x0008
+
+#define CMA_DELTATOP                   0x0001
+#define CMA_DELTABOT                   0x0002
+#define CMA_DELTAHOME                  0x0004
+#define CMA_DELTAEND                   0x0008
+
+#define CMA_NOREPOSITION               0x0001
+#define CMA_REPOSITION                 0x0002
+#define CMA_TEXTCHANGED                        0x0004
+#define CMA_ERASE                      0x0008
+#define CMA_NOTEXTCHANGED              0x0010
+#define CMA_FILTER                     0x1000
+
+#define CMA_FREE                       0x0001
+#define CMA_INVALIDATE                 0x0002
+
+#define CMA_ARRANGESTANDARD            0x0000
+#define CMA_ARRANGEGRID                        0x0001
+#define CMA_ARRANGESELECTED            0x0002
+
+#define CMA_AVAIL                      0x0001
+#define CMA_UNAVAIL                    0x0002
+
+#define CN_DRAGAFTER                   0x0065
+#define CN_DRAGLEAVE                   0x0066
+#define CN_DRAGOVER                    0x0067
+#define CN_DROP                                0x0068
+#define CN_DROPHELP                    0x0069
+#define CN_ENTER                       0x006a
+#define CN_INITDRAG                    0x006b
+#define CN_EMPHASIS                    0x006c
+#define CN_KILLFOCUS                   0x006d
+#define CN_SCROLL                      0x006e
+#define CN_QUERYDELTA                  0x006f
+#define CN_SETFOCUS                    0x0070
+#define CN_REALLOCPSZ                  0x0071
+#define CN_BEGINEDIT                   0x0072
+#define CN_ENDEDIT                     0x0073
+#define CN_COLLAPSETREE                        0x0074
+#define CN_EXPANDTREE                  0x0075
+#define CN_HELP                                0x0076
+#define CN_CONTEXTMENU                 0x0077
+#define CN_VERIFYEDIT                  0x0086
+#define CN_PICKUP                      0x0087
+#define CN_DROPNOTIFY                  0x0088
+#define CN_GRIDRESIZED                 0x0089
+
+#define CRA_SELECTED                   0x00000001
+#define CRA_TARGET                     0x00000002
+#define CRA_CURSORED                   0x00000004
+#define CRA_INUSE                      0x00000008
+#define CRA_FILTERED                   0x00000010
+#define CRA_DROPONABLE                 0x00000020
+#define CRA_RECORDREADONLY             0x00000040
+#define CRA_EXPANDED                   0x00000080
+#define CRA_COLLAPSED                  0x00000100
+#define CRA_PICKED                     0x00000200
+#define CRA_LOCKED                     0x00000400
+#define CRA_DISABLED                   0x00001000
+#define CRA_SOURCE                     0x00004000
+#define CRA_IGNORE                     0x00008000
+#define CRA_OWNERFREE                  0x00010000
+#define CRA_OWNERDRAW                  0x00020000
+
+#define CV_TEXT                                0x00000001
+#define CV_NAME                                0x00000002
+#define CV_ICON                                0x00000004
+#define CV_DETAIL                      0x00000008
+#define CV_FLOW                                0x00000010
+#define CV_MINI                                0x00000020
+#define CV_TREE                                0x00000040
+#define CV_GRID                                0x00000080
+#define CV_EXACTLENGTH                 0x10000000
+
+#define PMERR_NOFILTERED_ITEMS         0x1f02
+#define PMERR_COMPARISON_FAILED                0x1f03
+#define PMERR_RECORD_CURRENTLY_INSERTED 0x1f04
+#define PMERR_FI_CURRENTLY_INSERTED    0x1f05
+
+
+typedef struct _TREEITEMDESC
+{
+  HBITMAP  hbmExpanded;
+  HBITMAP  hbmCollapsed;
+  HPOINTER hptrExpanded;
+  HPOINTER hptrCollapsed;
+} TREEITEMDESC;
+typedef TREEITEMDESC *PTREEITEMDESC;
+
+typedef struct _FIELDINFO
+{
+  ULONG                    cb;
+  ULONG                    flData;
+  ULONG                    flTitle;
+  PVOID                    pTitleData;
+  ULONG                    offStruct;
+  PVOID                    pUserData;
+  struct _FIELDINFO *pNextFieldInfo;
+  ULONG                    cxWidth;
+} FIELDINFO;
+typedef FIELDINFO *PFIELDINFO;
+
+typedef struct _RECORDCORE
+{
+  ULONG                     cb;
+  ULONG                     flRecordAttr;
+  POINTL            ptlIcon;
+  struct _RECORDCORE *preccNextRecord;
+  PSZ               pszIcon;
+  HPOINTER          hptrIcon;
+  HPOINTER          hptrMiniIcon;
+  HBITMAP           hbmBitmap;
+  HBITMAP           hbmMiniBitmap;
+  PTREEITEMDESC             pTreeItemDesc;
+  PSZ               pszText;
+  PSZ               pszName;
+  PSZ               pszTree;
+} RECORDCORE;
+typedef RECORDCORE *PRECORDCORE;
+
+typedef struct _MINIRECORDCORE
+{
+  ULONG                         cb;
+  ULONG                         flRecordAttr;
+  POINTL                ptlIcon;
+  struct _MINIRECORDCORE *preccNextRecord;
+  PSZ                   pszIcon;
+  HPOINTER              hptrIcon;
+} MINIRECORDCORE;
+typedef MINIRECORDCORE *PMINIRECORDCORE;
+
+typedef struct _TREEMOVE
+{
+  PRECORDCORE preccMove;
+  PRECORDCORE preccNewParent;
+  PRECORDCORE pRecordOrder;
+  BOOL       flMoveSiblings;
+} TREEMOVE;
+typedef TREEMOVE *PTREEMOVE;
+
+typedef struct _CNRINFO
+{
+  ULONG             cb;
+  PVOID             pSortRecord;
+  PFIELDINFO pFieldInfoLast;
+  PFIELDINFO pFieldInfoObject;
+  PSZ       pszCnrTitle;
+  ULONG             flWindowAttr;
+  POINTL     ptlOrigin;
+  ULONG             cDelta;
+  ULONG             cRecords;
+  SIZEL             slBitmapOrIcon;
+  SIZEL             slTreeBitmapOrIcon;
+  HBITMAP    hbmExpanded;
+  HBITMAP    hbmCollapsed;
+  HPOINTER   hptrExpanded;
+  HPOINTER   hptrCollapsed;
+  LONG      cyLineSpacing;
+  LONG      cxTreeIndent;
+  LONG      cxTreeLine;
+  ULONG             cFields;
+  LONG      xVertSplitbar;
+} CNRINFO;
+typedef CNRINFO *PCNRINFO;
+
+typedef struct _GRIDSQUARE
+{
+  ULONG ulNumber;
+  ULONG ulState;
+  RECTL rctlSquare;
+} GRIDSQUARE;
+typedef GRIDSQUARE *PGRIDSQUARE;
+
+typedef struct _GRIDINFO
+{
+  ULONG cb;
+  SHORT cxGrid;
+  SHORT cyGrid;
+  SHORT sGridRows;
+  SHORT sGridCols;
+  LONG cGridSquares;
+  PGRIDSQUARE pGrid;
+} GRIDINFO;
+typedef GRIDINFO *PGRIDINFO;
+
+typedef struct _CDATE
+{
+  UCHAR         day;
+  UCHAR         month;
+  USHORT year;
+} CDATE;
+typedef CDATE *PCDATE;
+
+typedef struct _CTIME
+{
+  UCHAR hours;
+  UCHAR minutes;
+  UCHAR seconds;
+  UCHAR ucReserved;
+} CTIME;
+typedef CTIME *PCTIME;
+
+typedef struct _CNRDRAGINIT
+{
+  HWND       hwndCnr;
+  PRECORDCORE pRecord;
+  LONG       x;
+  LONG       y;
+  LONG       cx;
+  LONG       cy;
+} CNRDRAGINIT;
+typedef CNRDRAGINIT *PCNRDRAGINIT;
+
+typedef struct _FIELDINFOINSERT
+{
+  ULONG             cb;
+  PFIELDINFO pFieldInfoOrder;
+  ULONG             fInvalidateFieldInfo;
+  ULONG             cFieldInfoInsert;
+} FIELDINFOINSERT;
+typedef FIELDINFOINSERT *PFIELDINFOINSERT;
+
+typedef struct _RECORDINSERT
+{
+  ULONG              cb;
+  PRECORDCORE pRecordOrder;
+  PRECORDCORE pRecordParent;
+  ULONG              fInvalidateRecord;
+  ULONG              zOrder;
+  ULONG              cRecordsInsert;
+} RECORDINSERT;
+typedef RECORDINSERT *PRECORDINSERT;
+
+typedef struct _QUERYRECFROMRECT
+{
+  ULONG cb;
+  RECTL rect;
+  ULONG fsSearch;
+} QUERYRECFROMRECT;
+typedef QUERYRECFROMRECT *PQUERYRECFROMRECT;
+
+typedef struct _QUERYRECORDRECT
+{
+  ULONG              cb;
+  PRECORDCORE pRecord;
+  ULONG              fRightSplitWindow;
+  ULONG              fsExtent;
+} QUERYRECORDRECT;
+typedef QUERYRECORDRECT *PQUERYRECORDRECT;
+
+typedef struct _SEARCHSTRING
+{
+  ULONG cb;
+  PSZ  pszSearch;
+  ULONG fsPrefix;
+  ULONG fsCaseSensitive;
+  ULONG usView;
+} SEARCHSTRING;
+typedef SEARCHSTRING *PSEARCHSTRING;
+
+typedef struct _CNRDRAGINFO
+{
+  PDRAGINFO   pDragInfo;
+  PRECORDCORE pRecord;
+} CNRDRAGINFO;
+typedef CNRDRAGINFO *PCNRDRAGINFO;
+
+typedef struct _CNRLAZYDRAGINFO
+{
+  PDRAGINFO   pDragInfo;
+  PRECORDCORE pRecord;
+  HWND       hwndTarget;
+} CNRLAZYDRAGINFO;
+typedef CNRLAZYDRAGINFO *PCNRLAZYDRAGINFO;
+
+typedef struct _NOTIFYRECORDEMPHASIS
+{
+  HWND       hwndCnr;
+  PRECORDCORE pRecord;
+  ULONG              fEmphasisMask;
+} NOTIFYRECORDEMPHASIS;
+typedef NOTIFYRECORDEMPHASIS *PNOTIFYRECORDEMPHASIS;
+
+typedef struct _NOTIFYRECORDENTER
+{
+  HWND       hwndCnr;
+  ULONG              fKey;
+  PRECORDCORE pRecord;
+} NOTIFYRECORDENTER;
+typedef NOTIFYRECORDENTER *PNOTIFYRECORDENTER;
+
+typedef struct _NOTIFYDELTA
+{
+  HWND hwndCnr;
+  ULONG fDelta;
+} NOTIFYDELTA;
+typedef NOTIFYDELTA *PNOTIFYDELTA;
+
+typedef struct _NOTIFYSCROLL
+{
+  HWND hwndCnr;
+  LONG lScrollInc;
+  ULONG fScroll;
+} NOTIFYSCROLL;
+typedef NOTIFYSCROLL *PNOTIFYSCROLL;
+
+typedef struct _CNREDITDATA
+{
+  ULONG              cb;
+  HWND       hwndCnr;
+  PRECORDCORE pRecord;
+  PFIELDINFO  pFieldInfo;
+  PSZ        *ppszText;
+  ULONG              cbText;
+  ULONG              id;
+} CNREDITDATA;
+typedef CNREDITDATA *PCNREDITDATA;
+
+typedef struct _OWNERBACKGROUND
+{
+  HWND hwnd;
+  HPS  hps;
+  RECTL rclBackground;
+  LONG idWindow;
+} OWNERBACKGROUND;
+typedef OWNERBACKGROUND *POWNERBACKGROUND;
+
+typedef struct _CNRDRAWITEMINFO
+{
+  PRECORDCORE pRecord;
+  PFIELDINFO  pFieldInfo;
+} CNRDRAWITEMINFO;
+typedef CNRDRAWITEMINFO *PCNRDRAWITEMINFO;
+
+#endif /* INCL_WINSTDCNR */
+
+/* ------------------------- WORKPLACE SHELL ------------------------------ */
+
+#if defined (INCL_WPCLASS) || !defined (INCL_NOCOMMON)
+
+#define CCHMAXCLASS                    3
+
+#define QC_First                       0
+#define QC_Next                                1
+#define QC_Last                                2
+#define QC_FIRST                       QC_First
+#define QC_NEXT                                QC_Next
+#define QC_LAST                                QC_Last
+
+#define CO_FAILIFEXISTS                        0
+#define CO_REPLACEIFEXISTS             1
+#define CO_UPDATEIFEXISTS              2
+
+#if !defined (LOCATION_DESKTOP)
+#define LOCATION_DESKTOP               ((PSZ)0xffff0001)
+#endif
+
+typedef struct _OBJCLASS
+{
+  struct _OBJCLASS *pNext;
+  PSZ              pszClassName;
+  PSZ              pszModName;
+} OBJCLASS;
+typedef OBJCLASS *POBJCLASS;
+
+HOBJECT WinCopyObject (HOBJECT hObjectofObject, HOBJECT hObjectofDest,
+    ULONG ulReserved);
+HOBJECT WinCreateObject (PCSZ pszClassName, PCSZ pszTitle, PCSZ pszSetupString,
+    PCSZ pszLocation, ULONG ulFlags);
+HOBJECT WinCreateShadow (HOBJECT hObjectofObject, HOBJECT hObjectofDest,
+    ULONG ulReserved);
+BOOL WinDeregisterObjectClass (PCSZ pszClassName);
+BOOL WinDestroyObject (HOBJECT hObject);
+BOOL WinEnumObjectClasses (POBJCLASS pObjClass, PULONG pulSize);
+BOOL WinIsSOMDDReady (VOID);
+BOOL WinIsWPDServerReady (VOID);
+HOBJECT WinMoveObject (HOBJECT hObjectofObject, HOBJECT hObjectofDest,
+    ULONG ulReserved);
+BOOL WinOpenObject (HOBJECT hObject, ULONG ulView, BOOL fFlag);
+BOOL WinQueryActiveDesktopPathname (PSZ pszPathName, ULONG ulSize);
+HOBJECT WinQueryObject (PCSZ pszObjectID);
+BOOL WinQueryObjectPath (HOBJECT hobject, PSZ pszPathName, ULONG ulSize);
+BOOL WinRegisterObjectClass (PCSZ pszClassName, PCSZ pszModName);
+BOOL WinReplaceObjectClass (PCSZ pszOldClassName, PCSZ pszNewClassName,
+    BOOL fReplace);
+ULONG WinRestartSOMDD (BOOL fState);
+ULONG WinRestartWPDServer (BOOL fState);
+BOOL WinSaveObject (HOBJECT hObject, BOOL fAsync);
+BOOL WinSetObjectData (HOBJECT hObject, PCSZ pszSetupString);
+
+#endif /* INCL_WPCLASS || !INCL_NOCOMMON */
+
+#if !defined (INCL_NOCOMMON)
+
+BOOL WinFreeFileIcon (HPOINTER hptr);
+HPOINTER WinLoadFileIcon (PCSZ pszFileName, BOOL fPrivate);
+BOOL WinRestoreWindowPos (PCSZ pszAppName, PCSZ pszKeyName, HWND hwnd);
+#if defined (INCL_WINPOINTERS)
+BOOL WinSetFileIcon (PCSZ pszFileName, __const__ ICONINFO *pIconInfo);
+#endif
+BOOL WinShutdownSystem (HAB hab, HMQ hmq);
+BOOL WinStoreWindowPos (PCSZ pszAppName, PCSZ pszKeyName, HWND hwnd);
+
+#endif /* !INCL_NOCOMMON */
+
+/* ---------------------------- SPOOLER ----------------------------------- */
+
+#if defined (INCL_SPL)
+
+#define SPL_ERROR                      0
+#define SPL_OK                         1
+
+#define SPL_INI_SPOOLER                        "PM_SPOOLER"
+#define SPL_INI_QUEUE                  "PM_SPOOLER_QUEUE"
+#define SPL_INI_PRINTER                        "PM_SPOOLER_PRINTER"
+#define SPL_INI_PRINTERDESCR           "PM_SPOOLER_PRINTER_DESCR"
+#define SPL_INI_QUEUEDESCR             "PM_SPOOLER_QUEUE_DESCR"
+#define SPL_INI_QUEUEDD                        "PM_SPOOLER_QUEUE_DD"
+#define SPL_INI_QUEUEDDDATA            "PM_SPOOLER_QUEUE_DDDATA"
+
+#define SPLC_ABORT                     1
+#define SPLC_PAUSE                     2
+#define SPLC_CONTINUE                  3
+
+#define SPLDATA_PRINTERJAM             0x0001
+#define SPLDATA_FORMCHGREQD            0x0002
+#define SPLDATA_CARTCHGREQD            0x0004
+#define SPLDATA_PENCHGREQD             0x0008
+#define SPLDATA_DATAERROR              0x0010
+#define SPLDATA_UNEXPECTERROR          0x0020
+#define SPLDATA_OTHER                  0x8000
+
+#define SPLINFO_QPERROR                        0x0001
+#define SPLINFO_DDERROR                        0x0002
+#define SPLINFO_SPLERROR               0x0004
+#define SPLINFO_OTHERERROR             0x0080
+#define SPLINFO_INFORMATION            0x0100
+#define SPLINFO_WARNING                        0x0200
+#define SPLINFO_ERROR                  0x0400
+#define SPLINFO_SEVERE                 0x0800
+#define SPLINFO_USERINTREQD            0x1000
+
+#define SPLPORT_VERSION_REGULAR                0
+#define SPLPORT_VERSION_VIRTUAL                1
+
+#define SSQL_ERROR                     (-1)
+
+#define QP_RAWDATA_BYPASS              0x0001
+#define QP_PRINT_SEPARATOR_PAGE                0x0002
+
+#define QPDAT_ADDRESS                  0
+#define QPDAT_DRIVER_NAME              1
+#define QPDAT_DRIVER_DATA              2
+#define QPDAT_DATA_TYPE                        3
+#define QPDAT_COMMENT                  4
+#define QPDAT_PROC_PARAMS              5
+#define QPDAT_SPL_PARAMS               6
+#define QPDAT_NET_PARAMS               7
+#define QPDAT_DOC_NAME                 8
+#define QPDAT_QUEUE_NAME               9
+#define QPDAT_TOKEN                    10
+#define QPDAT_JOBID                    11
+
+typedef LHANDLE HSPL;
+typedef LHANDLE HSTD;
+typedef HSTD *PHSTD;
+typedef PSZ *PQMOPENDATA;
+typedef unsigned long SPLERR;
+
+typedef struct _SQPOPENDATA
+{
+  PSZ      pszLogAddress;
+  PSZ      pszDriverName;
+  PDRIVDATA pdriv;
+  PSZ      pszDataType;
+  PSZ      pszComment;
+  PSZ      pszProcParams;
+  PSZ      pszSpoolParams;
+  PSZ      pszNetworkParams;
+  PSZ      pszDocName;
+  PSZ      pszQueueName;
+  PSZ      pszToken;
+  USHORT    idJobId;
+} SQPOPENDATA;
+typedef SQPOPENDATA *PSQPOPENDATA;
+
+
+BOOL SplStdClose (HDC hdc);
+BOOL SplStdDelete (HSTD hMetaFile);
+BOOL SplStdGetBits (HSTD hMetaFile, LONG offData, LONG cbData, PCH pchData);
+BOOL SplStdOpen (HDC hdc);
+LONG SplStdQueryLength (HSTD hMetaFile);
+BOOL SplStdStart (HDC hdc);
+HSTD SplStdStop (HDC hdc);
+
+SPLERR SplControlDevice (PSZ pszComputerName, PSZ pszPortName,
+    ULONG ulControl);
+SPLERR SplCopyJob (PCSZ pszSrcComputerName, PCSZ pszSrcQueueName,
+    ULONG ulSrcJob, PCSZ pszTrgComputerName, PCSZ pszTrgQueueName,
+    PULONG pulTrgJob);
+SPLERR SplCreateDevice (PSZ pszComputerName, ULONG ulLevel, PVOID pBuf,
+    ULONG cbBuf);
+SPLERR SplCreatePort (PCSZ pszComputerName, PCSZ pszPortName,
+    PCSZ pszPortDriver, ULONG ulVersion, PVOID pBuf, ULONG cbBuf);
+SPLERR SplCreateQueue (PSZ pszComputerName, ULONG ulLevel, PVOID pBuf,
+    ULONG cbBuf);
+SPLERR SplDeleteDevice (PSZ pszComputerName, PSZ pszPrintDeviceName);
+SPLERR SplDeleteJob (PSZ pszComputerName, PSZ pszQueueName, ULONG ulJob);
+SPLERR SplDeletePort (PCSZ pszComputerName, PCSZ pszPortName);
+SPLERR SplDeleteQueue (PSZ pszComputerName, PSZ pszQueueName);
+SPLERR SplEnumDevice (PSZ pszComputerName, ULONG ulLevel, PVOID pBuf,
+    ULONG cbBuf, PULONG pcReturned, PULONG pcTotal, PULONG pcbNeeded,
+    PVOID pReserved);
+SPLERR SplEnumDriver (PSZ pszComputerName, ULONG ulLevel, PVOID pBuf,
+    ULONG cbBuf, PULONG pcReturned, PULONG pcTotal, PULONG pcbNeeded,
+    PVOID pReserved);
+SPLERR SplEnumJob (PSZ pszComputerName, PSZ pszQueueName, ULONG ulLevel,
+    PVOID pBuf, ULONG cbBuf, PULONG pcReturned, PULONG pcTotal,
+    PULONG pcbNeeded, PVOID pReserved);
+SPLERR SplEnumPort (PCSZ pszComputerName, ULONG ulLevel, PVOID pBuf,
+    ULONG cbBuf, PULONG pcReturned, PULONG pcTotal, PULONG pcbNeeded,
+    PVOID pReserved);
+SPLERR SplEnumPrinter (PSZ pszComputerName, ULONG uLevel, ULONG flType,
+    PVOID pBuf, ULONG cbbuf, PULONG pcReturned, PULONG pcTotal,
+    PULONG pcbNeeded, PVOID pReserved);
+SPLERR SplEnumQueue (PSZ pszComputerName, ULONG ulLevel, PVOID pBuf,
+    ULONG cbBuf, PULONG pcReturned, PULONG pcTotal, PULONG pcbNeeded,
+    PVOID pReserved);
+SPLERR SplEnumQueueProcessor (PSZ pszComputerName, ULONG ulLevel, PVOID pBuf,
+    ULONG cbBuf, PULONG pcReturned, PULONG pcTotal, PULONG pcbNeeded,
+    PVOID pReserved);
+SPLERR SplHoldJob (PCSZ pszComputerName, PCSZ pszQueueName, ULONG ulJob);
+SPLERR SplHoldQueue (PSZ pszComputerName, PSZ pszQueueName);
+SPLERR SplPurgeQueue (PSZ pszComputerName, PSZ pszQueueName);
+SPLERR SplQueryDevice (PSZ pszComputerName, PSZ pszPrintDeviceName,
+    ULONG ulLevel, PVOID pBuf, ULONG cbBuf, PULONG pcbNeeded);
+SPLERR SplQueryDriver (PCSZ pszComputerName, PCSZ pszDriverName,
+    PCSZ pszPrinterName, ULONG ulLevel, PVOID pBuf, ULONG cbBuf,
+    PULONG pcbNeeded);
+SPLERR SplQueryJob (PSZ pszComputerName, PSZ pszQueueName, ULONG ulJob,
+    ULONG ulLevel, PVOID pBuf, ULONG cbBuf, PULONG pcbNeeded);
+SPLERR SplQueryPort (PCSZ pszComputerName, PCSZ pszPortName, ULONG ulLevel,
+    PVOID pBuf, ULONG cbBuf, PULONG pcbNeeded);
+SPLERR SplQueryQueue (PSZ pszComputerName, PSZ pszQueueName, ULONG ulLevel,
+    PVOID pBuf, ULONG cbBuf, PULONG pcbNeeded);
+SPLERR SplReleaseJob (PCSZ pszComputerName, PCSZ pszQueueName, ULONG ulJob);
+SPLERR SplReleaseQueue (PSZ pszComputerName, PSZ pszQueueName);
+SPLERR SplSetDevice (PSZ pszComputerName, PSZ pszPrintDeviceName,
+    ULONG ulLevel, PVOID pBuf, ULONG cbBuf, ULONG ulParmNum);
+SPLERR SplSetDriver (PCSZ pszComputerName, PCSZ pszDriverName,
+    PCSZ pszPrinterName, ULONG ulLevel, PVOID pBuf, ULONG cbBuf,
+    ULONG ulParmNum);
+SPLERR SplSetJob (PSZ pszComputerName, PSZ pszQueueName, ULONG ulJob,
+    ULONG ulLevel, PVOID pBuf, ULONG cbBuf, ULONG ulParmNum);
+SPLERR SplSetPort (PCSZ pszComputerName, PCSZ pszPortName, ULONG ulLevel,
+    PVOID pBuf, ULONG cbBuf, ULONG ulParmNum);
+SPLERR SplSetQueue (PSZ pszComputerName, PSZ pszQueueName, ULONG ulLevel,
+    PVOID pBuf, ULONG cbBuf, ULONG ulParmNum);
+
+ULONG SplMessageBox (PSZ pszLogAddr, ULONG fErrInfo, ULONG fErrData,
+    PSZ pszText, PSZ pszCaption, ULONG idWindow, ULONG fStyle);
+BOOL SplQmAbort (HSPL hspl);
+BOOL SplQmAbortDoc (HSPL hspl);
+BOOL SplQmClose (HSPL hspl);
+BOOL SplQmEndDoc (HSPL hspl);
+ULONG SplQmGetJobID (HSPL hspl, ULONG ulLevel, PVOID pBuf, ULONG cbBuf,
+    PULONG pcbNeeded);
+BOOL SplQmNewPage (HSPL hspl, ULONG ulPageNumber);
+HSPL SplQmOpen (PSZ pszToken, LONG lCount, PQMOPENDATA pqmdopData);
+BOOL SplQmStartDoc (HSPL hspl, PSZ pszDocName);
+BOOL SplQmWrite (HSPL hspl, LONG lCount, PVOID pData);
+
+#if defined (INCL_SPLDOSPRINT)
+
+#define CNLEN                          15
+#define DTLEN                          9
+#define PDLEN                          8
+#define QNLEN                          12
+#define UNLEN                          20
+
+#define DRIV_DEVICENAME_SIZE           31
+#define DRIV_NAME_SIZE                 8
+#define FORMNAME_SIZE                  31
+#define MAXCOMMENTSZ                   48
+#define PRINTERNAME_SIZE               32
+#define QP_DATATYPE_SIZE               15
+
+#define PRD_STATUS_MASK                        0x0003
+#define PRD_DEVSTATUS                  0x0ffc
+
+#define PRD_ACTIVE                     0
+#define PRD_PAUSED                     1
+
+#define PRD_DELETE                     0
+#define PRD_PAUSE                      1
+#define PRD_CONT                       2
+#define PRD_RESTART                    3
+
+#define PRD_LOGADDR_PARMNUM            3
+#define PRD_COMMENT_PARMNUM            7
+#define PRD_DRIVERS_PARMNUM            8
+#define PRD_TIMEOUT_PARMNUM            10
+
+#define PRJ_NOTIFYNAME_PARMNUM         3
+#define PRJ_DATATYPE_PARMNUM           4
+#define PRJ_PARMS_PARMNUM              5
+#define PRJ_POSITION_PARMNUM           6
+#define PRJ_JOBFILEINUSE_PARMNUM       7
+#define PRJ_COMMENT_PARMNUM            11
+#define PRJ_DOCUMENT_PARMNUM           12
+#define PRJ_STATUSCOMMENT_PARMNUM      13
+#define PRJ_PRIORITY_PARMNUM           14
+#define PRJ_PROCPARMS_PARMNUM          16
+#define PRJ_DRIVERDATA_PARMNUM         18
+#define PRJ_SPOOLFILENAME_PARMNUM      19
+#define PRJ_PAGESSPOOLED_PARMNUM       20
+#define PRJ_PAGESSENT_PARMNUM          21
+#define PRJ_PAGESPRINTED_PARMNUM       22
+#define PRJ_TIMEPRINTED_PARMNUM                23
+#define PRJ_EXTENDSTATUS_PARMNUM       24
+#define PRJ_STARTPAGE_PARMNUM          25
+#define PRJ_ENDPAGE_PARMNUM            26
+#define PRJ_MAXPARMNUM                 26
+
+#define PRJ_QSTATUS                    0x0003
+#define PRJ_DEVSTATUS                  0x0ffc
+
+#define PRJ_COMPLETE                   0x0004
+#define PRJ_INTERV                     0x0008
+#define PRJ_ERROR                      0x0010
+#define PRJ_DESTOFFLINE                        0x0020
+#define PRJ_DESTPAUSED                 0x0040
+#define PRJ_NOTIFY                     0x0080
+#define PRJ_DESTNOPAPER                        0x0100
+#define PRJ_DESTFORMCHG                        0x0200
+#define PRJ_DESTCRTCHG                 0x0400
+#define PRJ_DESTPENCHG                 0x0800
+#define PRJ_JOBFILEINUSE               0x4000
+#define PRJ_DELETED                    0x8000
+
+#define PRJ_QS_QUEUED                  0
+#define PRJ_QS_PAUSED                  1
+#define PRJ_QS_SPOOLING                        2
+#define PRJ_QS_PRINTING                        3
+
+#define PRJ_MAX_PRIORITY               99
+#define PRJ_MIN_PRIORITY               1
+#define PRJ_NO_PRIORITY                        0
+
+#define PRJ4_INPRINTER                 0x0001
+#define PRJ4_STACKED                   0x0002
+#define PRJ4_HELDINPRINTER             0x0004
+#define PRJ4_JOBSTARTED                        0x0008
+
+#define PRPO_PORT_DRIVER               1
+#define PRPO_PROTOCOL_CNV              2
+#define PRPO_MODE                      3
+#define PRPO_PRIORITY                  4
+
+#define PRPORT_AUTODETECT              1
+#define PRPORT_DISABLE_BIDI            2
+#define PRPORT_ENABLE_BIDI             3
+
+#define PRQ_PRIORITY_PARMNUM           2
+#define PRQ_STARTTIME_PARMNUM          3
+#define PRQ_UNTILTIME_PARMNUM          4
+#define PRQ_SEPARATOR_PARMNUM          5
+#define PRQ_PROCESSOR_PARMNUM          6
+#define PRQ_DESTINATIONS_PARMNUM       7
+#define PRQ_PARMS_PARMNUM              8
+#define PRQ_COMMENT_PARMNUM            9
+#define PRQ_TYPE_PARMNUM               10
+#define PRQ_PRINTERS_PARMNUM           12
+#define PRQ_DRIVERNAME_PARMNUM         13
+#define PRQ_DRIVERDATA_PARMNUM         14
+#define PRQ_REMOTE_COMPUTER_PARMNUM    15
+#define PRQ_REMOTE_QUEUE_PARMNUM       16
+#define PRQ_MAXPARMNUM                 16
+
+#define PRQ_MAX_PRIORITY               1
+#define PRQ_DEF_PRIORITY               5
+#define PRQ_MIN_PRIORITY               9
+#define PRQ_NO_PRIORITY                        0
+
+#define PRQ_STATUS_MASK                        3
+#define PRQ_ACTIVE                     0
+#define PRQ_PAUSED                     1
+#define PRQ_ERROR                      2
+#define PRQ_PENDING                    3
+
+#define PRQ3_PAUSED                    0x0001
+#define PRQ3_PENDING                   0x0002
+
+#define PRQ3_TYPE_RAW                  0x0001
+#define PRQ3_TYPE_BYPASS               0x0002
+#define PRQ3_TYPE_APPDEFAULT           0x0004
+
+#define SPL_PR_QUEUE                   0x0001
+#define SPL_PR_DIRECT_DEVICE           0x0002
+#define SPL_PR_QUEUED_DEVICE           0x0004
+#define SPL_PR_LOCAL_ONLY              0x0100
+
+typedef struct _DRIVPROPS
+{
+  PSZ  pszKeyName;
+  ULONG cbBuf;
+  PVOID pBuf;
+} DRIVPROPS;
+typedef DRIVPROPS *PDRIVPROPS;
+
+typedef struct _PRINTERINFO
+{
+  ULONG flType;
+  PSZ  pszComputerName;
+  PSZ  pszPrintDestinationName;
+  PSZ  pszDescription;
+  PSZ  pszLocalName;
+} PRINTERINFO;
+typedef PRINTERINFO *PPRINTERINFO;
+
+typedef struct _PRJINFO
+{
+  USHORT uJobId;
+  CHAR  szUserName[UNLEN+1];
+  CHAR  pad_1;
+  CHAR  szNotifyName[CNLEN+1];
+  CHAR  szDataType[DTLEN+1];
+  PSZ   pszParms;
+  USHORT uPosition;
+  USHORT fsStatus;
+  PSZ   pszStatus;
+  ULONG         ulSubmitted;
+  ULONG         ulSize;
+  PSZ   pszComment;
+} PRJINFO;
+typedef PRJINFO *PPRJINFO;
+
+typedef struct _PRJINFO2
+{
+  USHORT uJobId;
+  USHORT uPriority;
+  PSZ   pszUserName;
+  USHORT uPosition;
+  USHORT fsStatus;
+  ULONG         ulSubmitted;
+  ULONG         ulSize;
+  PSZ   pszComment;
+  PSZ   pszDocument;
+} PRJINFO2;
+typedef PRJINFO2 *PPRJINFO2;
+
+typedef struct _PRJINFO3
+{
+  USHORT    uJobId;
+  USHORT    uPriority;
+  PSZ      pszUserName;
+  USHORT    uPosition;
+  USHORT    fsStatus;
+  ULONG            ulSubmitted;
+  ULONG            ulSize;
+  PSZ      pszComment;
+  PSZ      pszDocument;
+  PSZ      pszNotifyName;
+  PSZ      pszDataType;
+  PSZ      pszParms;
+  PSZ      pszStatus;
+  PSZ      pszQueue;
+  PSZ      pszQProcName;
+  PSZ      pszQProcParms;
+  PSZ      pszDriverName;
+  PDRIVDATA pDriverData;
+  PSZ      pszPrinterName;
+} PRJINFO3;
+typedef PRJINFO3 *PPRJINFO3;
+
+typedef struct _PRJINFO4
+{
+  USHORT uJobId;
+  USHORT uPriority;
+  PSZ   pszUserName;
+  USHORT uPosition;
+  USHORT fsStatus;
+  ULONG         ulSubmitted;
+  ULONG         ulSize;
+  PSZ   pszComment;
+  PSZ   pszDocument;
+  PSZ   pszSpoolFileName;
+  PSZ   pszPortName;
+  PSZ   pszStatus;
+  ULONG         ulPagesSpooled;
+  ULONG         ulPagesSent;
+  ULONG         ulPagesPrinted;
+  ULONG         ulTimePrinted;
+  ULONG         ulExtendJobStatus;
+  ULONG         ulStartPage;
+  ULONG         ulEndPage;
+} PRJINFO4;
+typedef PRJINFO4 *PPRJINFO4;
+
+typedef struct _PRDINFO
+{
+  CHAR   szName[PDLEN+1];
+  CHAR   szUserName[UNLEN+1];
+  USHORT  uJobId;
+  USHORT  fsStatus;
+  PSZ    pszStatus;
+  USHORT  time;
+} PRDINFO;
+typedef PRDINFO *PPRDINFO;
+
+typedef struct _PRDINFO3
+{
+  PSZ   pszPrinterName;
+  PSZ   pszUserName;
+  PSZ   pszLogAddr;
+  USHORT uJobId;
+  USHORT fsStatus;
+  PSZ   pszStatus;
+  PSZ   pszComment;
+  PSZ   pszDrivers;
+  USHORT time;
+  USHORT usTimeOut;
+} PRDINFO3;
+typedef PRDINFO3 *PPRDINFO3;
+
+typedef struct _PRQINFO
+{
+  CHAR  szName[QNLEN+1];
+  CHAR  pad_1;
+  USHORT uPriority;
+  USHORT uStartTime;
+  USHORT uUntilTime;
+  PSZ   pszSepFile;
+  PSZ   pszPrProc;
+  PSZ   pszDestinations;
+  PSZ   pszParms;
+  PSZ   pszComment;
+  USHORT fsStatus;
+  USHORT cJobs;
+} PRQINFO;
+typedef PRQINFO *PPRQINFO;
+
+typedef struct _PRQINFO3
+{
+  PSZ      pszName;
+  USHORT    uPriority;
+  USHORT    uStartTime;
+  USHORT    uUntilTime;
+  USHORT    fsType;
+  PSZ      pszSepFile;
+  PSZ      pszPrProc;
+  PSZ      pszParms;
+  PSZ      pszComment;
+  USHORT    fsStatus;
+  USHORT    cJobs;
+  PSZ      pszPrinters;
+  PSZ      pszDriverName;
+  PDRIVDATA pDriverData;
+} PRQINFO3;
+typedef PRQINFO3 *PPRQINFO3;
+
+typedef struct _PRQINFO6
+{
+  PSZ      pszName;
+  USHORT    uPriority;
+  USHORT    uStartTime;
+  USHORT    uUntilTime;
+  USHORT    fsType;
+  PSZ      pszSepFile;
+  PSZ      pszPrProc;
+  PSZ      pszParms;
+  PSZ      pszComment;
+  USHORT    fsStatus;
+  USHORT    cJobs;
+  PSZ      pszPrinters;
+  PSZ      pszDriverName;
+  PDRIVDATA pDriverData;
+  PSZ      pszRemoteComputerName;
+  PSZ      pszRemoteQueueName;
+} PRQINFO6;
+typedef PRQINFO6 *PPRQINFO6;
+
+typedef struct _PRIDINFO
+{
+  USHORT uJobId;
+  CHAR  szComputerName[CNLEN+1];
+  CHAR  szQueueName[QNLEN+1];
+  CHAR  pad_1;
+} PRIDINFO;
+typedef PRIDINFO *PPRIDINFO;
+
+typedef struct _PRDRIVINFO
+{
+  CHAR szDrivName[DRIV_NAME_SIZE+1+DRIV_DEVICENAME_SIZE+1];
+} PRDRIVINFO;
+typedef PRDRIVINFO *PPRDRIVINFO;
+
+typedef struct _PRDRIVINFO2
+{
+  PSZ   pszPrinterName;
+  PSZ   pszDriverName;
+  USHORT usFlags;
+  USHORT cDriverProps;
+} PRDRIVINFO2;
+typedef PRDRIVINFO2 *PPRDRIVINFO2;
+
+typedef struct _PRQPROCINFO
+{
+  CHAR szQProcName[QNLEN+1];
+} PRQPROCINFO;
+typedef PRQPROCINFO *PPRQPROCINFO;
+
+typedef struct _PRPORTINFO
+{
+  CHAR szPortName[PDLEN+1];
+} PRPORTINFO;
+typedef PRPORTINFO *PPRPORTINFO;
+
+typedef struct _PRPORTINFO1
+{
+  PSZ pszPortName;
+  PSZ pszPortDriverName;
+  PSZ pszPortDriverPathName;
+} PRPORTINFO1;
+typedef PRPORTINFO1 *PPRPORTINFO1;
+
+typedef struct _PRPORTINFO2
+{
+  PSZ  pszPortName;
+  PSZ  pszPortDriver;
+  PSZ  pszProtocolConverter;
+  ULONG ulReserved;
+  ULONG ulMode;
+  ULONG ulPriority;
+} PRPORTINFO2;
+typedef PRPORTINFO2 *PPRPORTINFO2;
+
+typedef struct _QMJOBINFO
+{
+  ULONG ulJobID;
+  PSZ  pszComputerName;
+  PSZ  pszQueueName;
+} QMJOBINFO;
+typedef QMJOBINFO *PQMJOBINFO;
+
+#endif /* INCL_SPLDOSPRINT */
+#endif /* INCL_SPL */
+
+/* -------------------------- HELP MANAGER -------------------------------- */
+
+#if defined (INCL_WINHELP)
+
+#define CMIC_HIDE_PANEL_ID             0x0000
+#define CMIC_SHOW_PANEL_ID             0x0001
+#define CMIC_TOGGLE_PANEL_ID           0x0002
+
+#define CTRL_PREVIOUS_ID               ((USHORT)0x0001)
+#define CTRL_SEARCH_ID                 ((USHORT)0x0002)
+#define CTRL_PRINT_ID                  ((USHORT)0x0003)
+#define CTRL_INDEX_ID                  ((USHORT)0x0004)
+#define CTRL_CONTENTS_ID               ((USHORT)0x0005)
+#define CTRL_BACK_ID                   ((USHORT)0x0006)
+#define CTRL_FORWARD_ID                        ((USHORT)0x0007)
+#define CTRL_TUTORIAL_ID               ((USHORT)0x00ff)
+#define CTRL_USER_ID_BASE              ((USHORT)0x0101)
+
+#define HM_MSG_BASE                    0x0220
+#define HM_DISMISS_WINDOW              0x0221
+#define HM_DISPLAY_HELP                        0x0222
+#define HM_EXT_HELP                    0x0223
+#define HM_GENERAL_HELP                        0x0223 /*!*/
+#define HM_SET_ACTIVE_WINDOW           0x0224
+#define HM_LOAD_HELP_TABLE             0x0225
+#define HM_CREATE_HELP_TABLE           0x0226
+#define HM_SET_HELP_WINDOW_TITLE       0x0227
+#define HM_SET_SHOW_PANEL_ID           0x0228
+#define HM_REPLACE_HELP_FOR_HELP       0x0229
+#define HM_REPLACE_USING_HELP          0x0229 /*!*/
+#define HM_HELP_INDEX                  0x022a
+#define HM_HELP_CONTENTS               0x022b
+#define HM_KEYS_HELP                   0x022c
+#define HM_SET_HELP_LIBRARY_NAME       0x022d
+#define HM_ERROR                       0x022e
+#define HM_HELPSUBITEM_NOT_FOUND       0x022f
+#define HM_QUERY_KEYS_HELP             0x0230
+#define HM_TUTORIAL                    0x0231
+#define HM_EXT_HELP_UNDEFINED          0x0232
+#define HM_GENERAL_HELP_UNDEFINED      0x0232 /*!*/
+#define HM_ACTIONBAR_COMMAND           0x0233
+#define HM_INFORM                      0x0234
+#define HM_SET_OBJCOM_WINDOW           0x0238
+#define HM_UPDATE_OBJCOM_WINDOW_CHAIN  0x0239
+#define HM_QUERY_DDF_DATA              0x023a
+#define HM_INVALIDATE_DDF_DATA         0x023b
+#define HM_QUERY                       0x023c
+#define HM_SET_COVERPAGE_SIZE          0x023d
+#define HM_NOTIFY                      0x0242
+#define HM_SET_USERDATA                        0x0243
+#define HM_CONTROL                     0x0244
+
+#define HM_RESOURCEID                  0
+#define HM_PANELNAME                   1
+
+#define HMERR_NO_FRAME_WND_IN_CHAIN    0x1001
+#define HMERR_INVALID_ASSOC_APP_WND    0x1002
+#define HMERR_INVALID_ASSOC_HELP_INST  0x1003
+#define HMERR_INVALID_DESTROY_HELP_INST 0x1004
+#define HMERR_NO_HELP_INST_IN_CHAIN    0x1005
+#define HMERR_INVALID_HELP_INSTANCE_HDL 0x1006
+#define HMERR_INVALID_QUERY_APP_WND    0x1007
+#define HMERR_HELP_INST_CALLED_INVALID 0x1008
+#define HMERR_HELPTABLE_UNDEFINE       0x1009
+#define HMERR_HELP_INSTANCE_UNDEFINE   0x100a
+#define HMERR_HELPITEM_NOT_FOUND       0x100b
+#define HMERR_INVALID_HELPSUBITEM_SIZE 0x100c
+#define HMERR_HELPSUBITEM_NOT_FOUND    0x100d
+
+#define HMERR_INDEX_NOT_FOUND          0x2001
+#define HMERR_CONTENT_NOT_FOUND                0x2002
+#define HMERR_OPEN_LIB_FILE            0x2003
+#define HMERR_READ_LIB_FILE            0x2004
+#define HMERR_CLOSE_LIB_FILE           0x2005
+#define HMERR_INVALID_LIB_FILE         0x2006
+#define HMERR_NO_MEMORY                        0x2007
+#define HMERR_ALLOCATE_SEGMENT         0x2008
+#define HMERR_FREE_MEMORY              0x2009
+#define HMERR_PANEL_NOT_FOUND          0x2010
+#define HMERR_DATABASE_NOT_OPEN                0x2011
+#define HMERR_LOAD_DLL                 0x2013
+
+#define HMPANELTYPE_NUMBER             0
+#define HMPANELTYPE_NAME               1
+
+#define HMQVP_NUMBER                   0x0001
+#define HMQVP_NAME                     0x0002
+#define HMQVP_GROUP                    0x0003
+
+#define HMQW_COVERPAGE                 0x0001
+#define HMQW_INDEX                     0x0002
+#define HMQW_TOC                       0x0003
+#define HMQW_SEARCH                    0x0004
+#define HMQW_VIEWPAGES                 0x0005
+#define HMQW_LIBRARY                   0x0006
+#define HMQW_VIEWPORT                  0x0007
+#define HMQW_OBJCOM_WINDOW             0x0008
+#define HMQW_INSTANCE                  0x0009
+#define HMQW_ACTIVEVIEWPORT            0x000a
+#define CONTROL_SELECTED               0x000b
+
+#define HMQW_GROUP_VIEWPORT            0x00f1
+#define HMQW_RES_VIEWPORT              0x00f2
+#define USERDATA                       0x00f3
+
+#define HWND_PARENT                    (HWND)NULL
+
+#define OPEN_COVERPAGE                 0x0001
+#define OPEN_PAGE                      0x0002
+#define SWAP_PAGE                      0x0003
+#define OPEN_TOC                       0x0004
+#define OPEN_INDEX                     0x0005
+#define OPEN_HISTORY                   0x0006
+#define OPEN_SEARCH_HIT_LIST           0x0007
+#define OPEN_LIBRARY                   0x0008
+
+
+typedef USHORT HELPSUBTABLE;
+typedef HELPSUBTABLE *PHELPSUBTABLE;
+
+
+typedef struct _ACVP
+{
+  ULONG cb;
+  HAB  hAB;
+  HMQ  hmq;
+  ULONG ObjectID;
+  HWND hWndParent;
+  HWND hWndOwner;
+  HWND hWndACVP;
+} ACVP;
+typedef ACVP *PACVP;
+
+typedef struct _HELPTABLE
+{
+  USHORT       idAppWindow;
+  PHELPSUBTABLE phstHelpSubTable;
+  USHORT       idExtPanel;
+} HELPTABLE;
+typedef HELPTABLE *PHELPTABLE;
+
+typedef struct _HELPINIT
+{
+  ULONG             cb;
+  ULONG             ulReturnCode;
+  PSZ       pszTutorialName;
+  PHELPTABLE phtHelpTable;
+  HMODULE    hmodHelpTableModule;
+  HMODULE    hmodAccelActionBarModule;
+  ULONG             idAccelTable;
+  ULONG             idActionBar;
+  PSZ       pszHelpWindowTitle;
+  ULONG             fShowPanelId;
+  PSZ       pszHelpLibraryName;
+} HELPINIT;
+typedef HELPINIT *PHELPINIT;
+
+BOOL WinAssociateHelpInstance (HWND hwndHelpInstance, HWND hwndApp);
+HWND WinCreateHelpInstance (HAB hab, PHELPINIT phinitHMInitStructure);
+BOOL WinCreateHelpTable (HWND hwndHelpInstance,
+    __const__ HELPTABLE *phtHelpTable);
+BOOL WinDestroyHelpInstance (HWND hwndHelpInstance);
+BOOL WinLoadHelpTable (HWND hwndHelpInstance, ULONG idHelpTable,
+    HMODULE Module);
+HWND WinQueryHelpInstance (HWND hwndApp);
+
+#endif /* INCL_WINHELP */
+
+
+#if defined (INCL_DDF)
+
+#define ART_RUNIN                      0x0010
+#define ART_LEFT                       0x0001
+#define ART_RIGHT                      0x0002
+#define ART_CENTER                     0x0004
+
+#define CLR_UNCHANGED                  (-6)
+
+#define HMBT_NONE                      1
+#define HMBT_ALL                       2
+#define HMBT_FIT                       3
+
+#define HMERR_DDF_MEMORY               0x3001
+#define HMERR_DDF_ALIGN_TYPE           0x3002
+#define HMERR_DDF_BACKCOLOR            0x3003
+#define HMERR_DDF_FORECOLOR            0x3004
+#define HMERR_DDF_FONTSTYLE            0x3005
+#define HMERR_DDF_REFTYPE              0x3006
+#define HMERR_DDF_LIST_UNCLOSED                0x3007
+#define HMERR_DDF_LIST_UNINITIALIZED   0x3008
+#define HMERR_DDF_LIST_BREAKTYPE       0x3009
+#define HMERR_DDF_LIST_SPACING         0x300A
+#define HMERR_DDF_HINSTANCE            0x300B
+#define HMERR_DDF_EXCEED_MAX_LENGTH    0x300C
+#define HMERR_DDF_EXCEED_MAX_INC       0x300D
+#define HMERR_DDF_INVALID_DDF          0x300E
+#define HMERR_DDF_FORMAT_TYPE          0x300F
+#define HMERR_DDF_INVALID_PARM         0x3010
+#define HMERR_DDF_INVALID_FONT         0x3011
+#define HMERR_DDF_SEVERE               0x3012
+
+#define HMLS_SINGLELINE                        1
+#define HMLS_DOUBLELINE                        2
+
+#define REFERENCE_BY_ID                        0
+#define REFERENCE_BY_RES               1
+
+typedef VOID *HDDF;
+
+BOOL DdfBeginList (HDDF hddf, ULONG ulWidthDT, ULONG fBreakType,
+    ULONG fSpacing);
+BOOL DdfBitmap (HDDF hddf, HBITMAP hbm, ULONG fAlign);
+BOOL DdfEndList (HDDF hddf);
+BOOL DdfHyperText (HDDF hddf, PCSZ pszText, PCSZ pszReference,
+    ULONG fReferenceType);
+BOOL DdfInform (HDDF hddf, PCSZ pszText, ULONG resInformNumber);
+HDDF DdfInitialize (HWND hwndHelpInstance, ULONG cbBuffer, ULONG ulIncrement);
+BOOL DdfListItem (HDDF hddf, PCSZ pszTerm, PCSZ pszDescription);
+BOOL DdfMetafile (HDDF hddf, HMF hmf, __const__ RECTL *prclRect);
+BOOL DdfPara (HDDF hddf);
+BOOL DdfSetColor (HDDF hddf, COLOR fBackColor, COLOR fForColor);
+BOOL DdfSetFont (HDDF hddf, PCSZ pszFaceName, ULONG ulWidth, ULONG ulHeight);
+BOOL DdfSetFontStyle (HDDF hddf, ULONG fFontStyle);
+BOOL DdfSetFormat (HDDF hddf, ULONG fFormatType);
+BOOL DdfSetTextAlign (HDDF hddf, ULONG fAlign);
+BOOL DdfText (HDDF hddf, PCSZ pszText);
+
+#endif /* INCL_DDF */
+
+/* ---------------------- Advanced Video ---------------------------------- */
+
+#if defined (INCL_FONTFILEFORMAT)
+
+#define FONTDEFFONT1                   0x0047
+#define FONTDEFFONT2                   0x0042
+#define FONTDEFFONT3                   0x0042
+#define FONTDEFCHAR1                   0x0081
+#define FONTDEFCHAR2                   0x0081
+#define FONTDEFCHAR3                   0x00b8
+#define FONTDEFDEVFONT                 0x2000
+#define FONTDEFFOCA32                  0x4000
+#define SPACE_UNDEF                    0x8000
+
+#define FONT_SIGNATURE                 0xfffffffe
+#define FONT_METRICS                   0x00000001
+#define FONT_DEFINITION                        0x00000002
+#define FONT_KERNPAIRS                 0x00000003
+#define FONT_ADDITIONALMETRICS         0x00000004
+#define FONT_ENDRECORD                 0xffffffff
+
+#define QUERY_PUBLIC_FONTS             0x0001
+#define QUERY_PRIVATE_FONTS            0x0002
+
+#define CDEF_GENERIC                   0x0001
+#define CDEF_BOLD                      0x0002
+#define CDEF_ITALIC                    0x0004
+#define CDEF_UNDERSCORE                        0x0008
+#define CDEF_STRIKEOUT                 0x0010
+#define CDEF_OUTLINE                   0x0020
+
+typedef struct _FOCAMETRICS
+{
+  ULONG         ulIdentity;
+  ULONG         ulSize;
+  CHAR  szFamilyname[32];
+  CHAR  szFacename[32];
+  SHORT         usRegistryId;
+  SHORT         usCodePage;
+  SHORT         yEmHeight;
+  SHORT         yXHeight;
+  SHORT         yMaxAscender;
+  SHORT         yMaxDescender;
+  SHORT         yLowerCaseAscent;
+  SHORT         yLowerCaseDescent;
+  SHORT         yInternalLeading;
+  SHORT         yExternalLeading;
+  SHORT         xAveCharWidth;
+  SHORT         xMaxCharInc;
+  SHORT         xEmInc;
+  SHORT         yMaxBaselineExt;
+  SHORT         sCharSlope;
+  SHORT         sInlineDir;
+  SHORT         sCharRot;
+  USHORT usWeightClass;
+  USHORT usWidthClass;
+  SHORT         xDeviceRes;
+  SHORT         yDeviceRes;
+  SHORT         usFirstChar;
+  SHORT         usLastChar;
+  SHORT         usDefaultChar;
+  SHORT         usBreakChar;
+  SHORT         usNominalPointSize;
+  SHORT         usMinimumPointSize;
+  SHORT         usMaximumPointSize;
+  SHORT         fsTypeFlags;
+  SHORT         fsDefn;
+  SHORT         fsSelectionFlags;
+  SHORT         fsCapabilities;
+  SHORT         ySubscriptXSize;
+  SHORT         ySubscriptYSize;
+  SHORT         ySubscriptXOffset;
+  SHORT         ySubscriptYOffset;
+  SHORT         ySuperscriptXSize;
+  SHORT         ySuperscriptYSize;
+  SHORT         ySuperscriptXOffset;
+  SHORT         ySuperscriptYOffset;
+  SHORT         yUnderscoreSize;
+  SHORT         yUnderscorePosition;
+  SHORT         yStrikeoutSize;
+  SHORT         yStrikeoutPosition;
+  SHORT         usKerningPairs;
+  SHORT         sFamilyClass;
+  PSZ   pszDeviceNameOffset;
+} FOCAMETRICS;
+typedef FOCAMETRICS *PFOCAMETRICS;
+
+typedef struct _FONTFILEMETRICS
+{
+  ULONG         ulIdentity;
+  ULONG         ulSize;
+  CHAR  szFamilyname[32];
+  CHAR  szFacename[32];
+  SHORT         usRegistryId;
+  SHORT         usCodePage;
+  SHORT         yEmHeight;
+  SHORT         yXHeight;
+  SHORT         yMaxAscender;
+  SHORT         yMaxDescender;
+  SHORT         yLowerCaseAscent;
+  SHORT         yLowerCaseDescent;
+  SHORT         yInternalLeading;
+  SHORT         yExternalLeading;
+  SHORT         xAveCharWidth;
+  SHORT         xMaxCharInc;
+  SHORT         xEmInc;
+  SHORT         yMaxBaselineExt;
+  SHORT         sCharSlope;
+  SHORT         sInlineDir;
+  SHORT         sCharRot;
+  USHORT usWeightClass;
+  USHORT usWidthClass;
+  SHORT         xDeviceRes;
+  SHORT         yDeviceRes;
+  SHORT         usFirstChar;
+  SHORT         usLastChar;
+  SHORT         usDefaultChar;
+  SHORT         usBreakChar;
+  SHORT         usNominalPointSize;
+  SHORT         usMinimumPointSize;
+  SHORT         usMaximumPointSize;
+  SHORT         fsTypeFlags;
+  SHORT         fsDefn;
+  SHORT         fsSelectionFlags;
+  SHORT         fsCapabilities;
+  SHORT         ySubscriptXSize;
+  SHORT         ySubscriptYSize;
+  SHORT         ySubscriptXOffset;
+  SHORT         ySubscriptYOffset;
+  SHORT         ySuperscriptXSize;
+  SHORT         ySuperscriptYSize;
+  SHORT         ySuperscriptXOffset;
+  SHORT         ySuperscriptYOffset;
+  SHORT         yUnderscoreSize;
+  SHORT         yUnderscorePosition;
+  SHORT         yStrikeoutSize;
+  SHORT         yStrikeoutPosition;
+  SHORT         usKerningPairs;
+  SHORT         sFamilyClass;
+  ULONG         ulReserved;
+  PANOSE panose;
+} FONTFILEMETRICS;
+typedef FONTFILEMETRICS *PFONTFILEMETRICS;
+
+typedef struct _FONTDEFINITIONHEADER
+{
+  ULONG ulIdentity;
+  ULONG ulSize;
+  SHORT fsFontdef;
+  SHORT fsChardef;
+  SHORT usCellSize;
+  SHORT xCellWidth;
+  SHORT yCellHeight;
+  SHORT xCellIncrement;
+  SHORT xCellA;
+  SHORT xCellB;
+  SHORT xCellC;
+  SHORT pCellBaseOffset;
+} FONTDEFINITIONHEADER;
+typedef FONTDEFINITIONHEADER *PFONTDEFINITIONHEADER;
+
+typedef struct _FONTSIGNATURE
+{
+  ULONG ulIdentity;
+  ULONG ulSize;
+  CHAR achSignature[12];
+} FONTSIGNATURE;
+typedef FONTSIGNATURE *PFONTSIGNATURE;
+
+typedef struct _ADDITIONALMETRICS
+{
+  ULONG         ulIdentity;
+  ULONG         ulSize;
+  PANOSE panose;
+} ADDITIONALMETRICS;
+typedef ADDITIONALMETRICS *PADDITIONALMETRICS;
+
+typedef struct _FOCAFONT
+{
+  FONTSIGNATURE               fsSignature;
+  FOCAMETRICS         fmMetrics;
+  FONTDEFINITIONHEADER fdDefinitions;
+} FOCAFONT;
+typedef FOCAFONT *PFOCAFONT;
+
+typedef FOCAFONT FOCAFONT32;
+typedef FOCAFONT32 *PFOCAFONT32;
+
+#endif /* INCL_FONTFILEFORMAT */
+
+/* ---------------------- Advanced Video ---------------------------------- */
+
+#if defined (INCL_AVIO)
+
+#define FORMAT_CGA                     0x0001
+#define FORMAT_4BYTE                   0x0003
+
+#define VQF_PUBLIC                     0x0001
+#define VQF_PRIVATE                    0x0002
+
+typedef USHORT HVPS;
+typedef HVPS *PHVPS;
+
+USHORT VioAssociate (HDC hdc, HVPS hvps);
+USHORT VioCreateLogFont (PFATTRS pfatattrs, LONG llcid, PSTR8 pName,
+    HVPS hvps);
+USHORT VioCreatePS (PHVPS phvps, SHORT sDepth, SHORT sWidth, SHORT sFormat,
+    SHORT sAttrs, HVPS hvpsReserved);
+USHORT VioDeleteSetId (LONG llcid, HVPS hvps);
+USHORT VioDestroyPS (HVPS hvps);
+USHORT VioGetDeviceCellSize (PSHORT psHeight, PSHORT psWidth, HVPS hvps);
+USHORT VioGetOrg (PSHORT psRow, PSHORT psColumn, HVPS hvps);
+USHORT VioQueryFonts (PLONG plRemfonts, PFONTMETRICS afmMetrics,
+    LONG lMetricsLength, PLONG plFonts, PSZ pszFacename, ULONG flOptions,
+    HVPS hvps);
+USHORT VioQuerySetIds (PLONG allcids, PSTR8 pNames, PLONG alTypes, LONG lcount,
+    HVPS hvps);
+USHORT VioSetDeviceCellSize (SHORT sHeight, SHORT sWidth, HVPS hvps);
+USHORT VioSetOrg (SHORT sRow, SHORT sColumn, HVPS hvps);
+USHORT VioShowPS (SHORT sDepth, SHORT sWidth, SHORT soffCell, HVPS hvps);
+
+MRESULT WinDefAVioWindowProc (HWND hwnd, USHORT msg, ULONG mp1, ULONG mp2);
+
+#endif /* INCL_AVIO */
+
+/* --------------------------- MONITORS ----------------------------------- */
+
+#if defined (INCL_DOSMONITORS)
+
+#define MONITOR_DEFAULT                0x0000
+#define MONITOR_BEGIN          0x0001
+#define MONITOR_END            0x0002
+
+typedef SHANDLE HMONITOR;
+typedef HMONITOR *PHMONITOR;
+
+typedef struct _MONIN
+{
+  USHORT cb;
+  BYTE  abReserved[18];
+  BYTE  abBuffer[108];
+} MONIN;
+typedef MONIN *PMONIN;
+
+typedef struct _MONOUT
+{
+  USHORT cb;
+  UCHAR         buffer[18];
+  BYTE  abBuf[108];
+} MONOUT;
+typedef MONOUT *PMONOUT;
+
+USHORT DosMonOpen (PSZ pszDevName, PHMONITOR phmon);
+USHORT DosMonClose (HMONITOR hmon);
+USHORT DosMonReg (HMONITOR hmon, PBYTE pbInBuf, PBYTE pbOutBuf,
+    USHORT fPosition, USHORT usIndex);
+USHORT DosMonRead (PBYTE pbInBuf, USHORT fWait, PBYTE pbDataBuf,
+    PUSHORT pcbData);
+USHORT DosMonWrite (PBYTE pbOutBuf, PBYTE pbDataBuf, USHORT cbData);
+
+#endif /* INCL_DOSMONITORS */
+
+/* -------------------------- SUBSYSTEMS ---------------------------------- */
+
+#if defined (INCL_KBD)
+
+#define IO_WAIT                                0
+#define IO_NOWAIT                      1
+
+#define KBDSTF_RIGHTSHIFT              0x0001
+#define KBDSTF_LEFTSHIFT               0x0002
+#define KBDSTF_CONTROL                 0x0004
+#define KBDSTF_ALT                     0x0008
+#define KBDSTF_SCROLLLOCK_ON           0x0010
+#define KBDSTF_NUMLOCK_ON              0x0020
+#define KBDSTF_CAPSLOCK_ON             0x0040
+#define KBDSTF_INSERT_ON               0x0080
+#define KBDSTF_LEFTCONTROL             0x0100
+#define KBDSTF_LEFTALT                 0x0200
+#define KBDSTF_RIGHTCONTROL            0x0400
+#define KBDSTF_RIGHTALT                        0x0800
+#define KBDSTF_SCROLLLOCK              0x1000
+#define KBDSTF_NUMLOCK                 0x2000
+#define KBDSTF_CAPSLOCK                        0x4000
+#define KBDSTF_SYSREQ                  0x8000
+
+#define KBDTRF_SHIFT_KEY_IN            0x01
+#define KBDTRF_EXTENDED_CODE           0x02
+#define KBDTRF_CONVERSION_REQUEST      0x20
+#define KBDTRF_FINAL_CHAR_IN           0x40
+#define KBDTRF_INTERIM_CHAR_IN         0x80
+
+#define KEYBOARD_ECHO_ON               0x0001
+#define KEYBOARD_ECHO_OFF              0x0002
+#define KEYBOARD_BINARY_MODE           0x0004
+#define KEYBOARD_ASCII_MODE            0x0008
+#define KEYBOARD_MODIFY_STATE          0x0010
+#define KEYBOARD_MODIFY_INTERIM                0x0020
+#define KEYBOARD_MODIFY_TURNAROUND     0x0040
+#define KEYBOARD_2B_TURNAROUND         0x0080
+#define KEYBOARD_SHIFT_REPORT          0x0100
+
+#define KR_KBDCHARIN                   0x00000001
+#define KR_KBDPEEK                     0x00000002
+#define KR_KBDFLUSHBUFFER              0x00000004
+#define KR_KBDGETSTATUS                        0x00000008
+#define KR_KBDSETSTATUS                        0x00000010
+#define KR_KBDSTRINGIN                 0x00000020
+#define KR_KBDOPEN                     0x00000040
+#define KR_KBDCLOSE                    0x00000080
+#define KR_KBDGETFOCUS                 0x00000100
+#define KR_KBDFREEFOCUS                        0x00000200
+#define KR_KBDGETCP                    0x00000400
+#define KR_KBDSETCP                    0x00000800
+#define KR_KBDXLATE                    0x00001000
+#define KR_KBDSETCUSTXT                        0x00002000
+
+typedef USHORT HKBD;
+typedef HKBD *PHKBD;
+
+typedef struct _KBDKEYINFO
+{
+  UCHAR         chChar;
+  UCHAR         chScan;
+  UCHAR         fbStatus;
+  UCHAR         bNlsShift;
+  USHORT fsState;
+  ULONG         time;
+} KBDKEYINFO;
+typedef KBDKEYINFO *PKBDKEYINFO;
+
+typedef struct _KBDINFO
+{
+  USHORT cb;
+  USHORT fsMask;
+  USHORT chTurnAround;
+  USHORT fsInterim;
+  USHORT fsState;
+} KBDINFO;
+typedef KBDINFO *PKBDINFO;
+
+typedef struct _KBDHWID
+{
+  USHORT cb;
+  USHORT idKbd;
+  USHORT usReserved1;
+  USHORT usReserved2;
+} KBDHWID;
+typedef KBDHWID *PKBDHWID;
+
+typedef struct _KBDTRANS
+{
+  UCHAR         chChar;
+  UCHAR         chScan;
+  UCHAR         fbStatus;
+  UCHAR         bNlsShift;
+  USHORT fsState;
+  ULONG         time;
+  USHORT fsDD;
+  USHORT fsXlate;
+  USHORT fsShift;
+  USHORT sZero;
+} KBDTRANS;
+typedef KBDTRANS *PKBDTRANS;
+
+typedef struct _STRINGINBUF
+{
+  USHORT cb;
+  USHORT cchIn;
+} STRINGINBUF;
+typedef STRINGINBUF *PSTRINGINBUF;
+
+USHORT KbdCharIn (PKBDKEYINFO pkbci, USHORT fWait, HKBD hkbd);
+USHORT KbdClose (HKBD hkbd);
+USHORT KbdDeRegister (VOID);
+USHORT KbdFlushBuffer (HKBD hkbd);
+USHORT KbdFreeFocus (HKBD hkbd);
+USHORT KbdGetCp (ULONG ulReserved, PUSHORT pidCP, HKBD hkbd);
+USHORT KbdGetFocus (USHORT fWait, HKBD hkbd);
+USHORT KbdGetHWID (PKBDHWID pkbdhwid, HKBD hkbd);
+USHORT KbdGetStatus (PKBDINFO pkbdinfo, HKBD hkbd);
+USHORT KbdOpen (PHKBD phkbd);
+USHORT KbdPeek (PKBDKEYINFO pkbci, HKBD hkbd);
+USHORT KbdRegister (PCSZ pszModName, PCSZ pszEntryName, ULONG ulFunMask);
+USHORT KbdSetCp (USHORT usReserved, USHORT idCP, HKBD hkbd);
+USHORT KbdSetCustXt (PUSHORT pusCodePage, HKBD hkbd);
+USHORT KbdSetFgnd (VOID);
+USHORT KbdSetHWID (PKBDHWID pkbdhwid, HKBD hkbd);
+USHORT KbdSetStatus (PKBDINFO pkbdinfo, HKBD hkbd);
+USHORT KbdStringIn (PCH pch, PSTRINGINBUF pchIn, USHORT fWait, HKBD hkbd);
+USHORT KbdSynch (USHORT fWait);
+USHORT KbdXlate (PKBDTRANS pkbdtrans, HKBD hkbd);
+
+#endif /* INCL_KBD */
+
+#if defined (INCL_VIO)
+
+#define ANSI_OFF                       0
+#define ANSI_ON                                1
+
+#define COLORS_2                       0x01
+#define COLORS_4                       0x02
+#define COLORS_16                      0x04
+
+#define VGMT_OTHER                     0x01
+#define VGMT_GRAPHICS                  0x02
+#define VGMT_DISABLEBURST              0x04
+
+#define VP_NOWAIT                      0x0000
+#define VP_WAIT                                0x0001
+#define VP_OPAQUE                      0x0000
+#define VP_TRANSPARENT                 0x0002
+
+#define VMWR_POPUP                     0
+#define VMWN_POPUP                     0
+
+#define VSRWI_SAVEANDREDRAW            0
+#define VSRWI_REDRAW                   1
+
+#define VSRWN_SAVE                     0
+#define VSRWN_REDRAW                   1
+
+#define UNDOI_GETOWNER                 0
+#define UNDOI_RELEASEOWNER             1
+
+#define UNDOK_ERRORCODE                        0
+#define UNDOK_TERMINATE                        1
+
+#define LOCKIO_NOWAIT                  0
+#define LOCKIO_WAIT                    1
+
+#define LOCK_SUCCESS                   0
+#define LOCK_FAIL                      1
+
+#define VCC_SBCSCHAR                   0
+#define VCC_DBCSFULLCHAR               1
+#define VCC_DBCS1STHALF                        2
+#define VCC_DBCS2NDHALF                        3
+
+#define VGFI_GETCURFONT                        0
+#define VGFI_GETROMFONT                        1
+
+#define VIO_CONFIG_CURRENT             0
+#define VIO_CONFIG_PRIMARY             1
+#define VIO_CONFIG_SECONDARY           2
+
+#define DISPLAY_MONOCHROME             0
+#define DISPLAY_CGA                    1
+#define DISPLAY_EGA                    2
+#define DISPLAY_VGA                    3
+#define DISPLAY_8514A                  7
+#define DISPLAY_IMAGEADAPTER           8
+#define DISPLAY_XGA                    9
+
+#define MONITOR_MONOCHROME             0x0000
+#define MONITOR_COLOR                  0x0001
+#define MONITOR_ENHANCED               0x0002
+#define MONITOR_8503                   0x0003
+#define MONITOR_851X_COLOR             0x0004
+#define MONITOR_8514                   0x0009
+#define MONITOR_FLATPANEL              0x000a
+#define MONITOR_8507_8604              0x000b
+#define MONITOR_8515                   0x000c
+#define MONITOR_9515                   0x000f
+#define MONITOR_9517                   0x0011
+#define MONITOR_9518                   0x0012
+
+#define VR_VIOGETCURPOS                        0x00000001
+#define VR_VIOGETCURTYPE               0x00000002
+#define VR_VIOGETMODE                  0x00000004
+#define VR_VIOGETBUF                   0x00000008
+#define VR_VIOGETPHYSBUF               0x00000010
+#define VR_VIOSETCURPOS                        0x00000020
+#define VR_VIOSETCURTYPE               0x00000040
+#define VR_VIOSETMODE                  0x00000080
+#define VR_VIOSHOWBUF                  0x00000100
+#define VR_VIOREADCHARSTR              0x00000200
+#define VR_VIOREADCELLSTR              0x00000400
+#define VR_VIOWRTNCHAR                 0x00000800
+#define VR_VIOWRTNATTR                 0x00001000
+#define VR_VIOWRTNCELL                 0x00002000
+#define VR_VIOWRTTTY                   0x00004000
+#define VR_VIOWRTCHARSTR               0x00008000
+#define VR_VIOWRTCHARSTRATT            0x00010000
+#define VR_VIOWRTCELLSTR               0x00020000
+#define VR_VIOSCROLLUP                 0x00040000
+#define VR_VIOSCROLLDN                 0x00080000
+#define VR_VIOSCROLLLF                 0x00100000
+#define VR_VIOSCROLLRT                 0x00200000
+#define VR_VIOSETANSI                  0x00400000
+#define VR_VIOGETANSI                  0x00800000
+#define VR_VIOPRTSC                    0x01000000
+#define VR_VIOSCRLOCK                  0x02000000
+#define VR_VIOSCRUNLOCK                        0x04000000
+#define VR_VIOSAVREDRAWWAIT            0x08000000
+#define VR_VIOSAVREDRAWUNDO            0x10000000
+#define VR_VIOPOPUP                    0x20000000
+#define VR_VIOENDPOPUP                 0x40000000
+#define VR_VIOPRTSCTOGGLE              0x80000000
+
+#define VR_VIOMODEWAIT                 0x00000001
+#define VR_VIOMODEUNDO                 0x00000002
+#define VR_VIOGETFONT                  0x00000004
+#define VR_VIOGETCONFIG                        0x00000008
+#define VR_VIOSETCP                    0x00000010
+#define VR_VIOGETCP                    0x00000020
+#define VR_VIOSETFONT                  0x00000040
+#define VR_VIOGETSTATE                 0x00000080
+#define VR_VIOSETSTATE                 0x00000100
+
+
+typedef USHORT HVIO;
+typedef HVIO *PHVIO;
+
+
+typedef struct _VIOMODEINFO
+{
+  USHORT cb;
+  UCHAR         fbType;
+  UCHAR         color;
+  USHORT col;
+  USHORT row;
+  USHORT hres;
+  USHORT vres;
+  UCHAR         fmt_ID;
+  UCHAR         attrib;
+  ULONG         buf_addr;
+  ULONG         buf_length;
+  ULONG         full_length;
+  ULONG         partial_length;
+  PCH   ext_data_addr;
+} VIOMODEINFO;
+typedef VIOMODEINFO *PVIOMODEINFO;
+
+typedef struct _VIOCONFIGINFO
+{
+  USHORT cb;
+  USHORT adapter;
+  USHORT display;
+  ULONG         cbMemory;
+  USHORT Configuration;
+  USHORT VDHVersion;
+  USHORT Flags;
+  ULONG         HWBufferSize;
+  ULONG         FullSaveSize;
+  ULONG         PartSaveSize;
+  USHORT EMAdaptersOFF;
+  USHORT EMDisplaysOFF;
+} VIOCONFIGINFO;
+typedef VIOCONFIGINFO *PVIOCONFIGINFO;
+
+typedef struct _VIOPHYSBUF
+{
+  PBYTE pBuf;
+  ULONG cb;
+  SEL  asel[1];
+} VIOPHYSBUF;
+typedef VIOPHYSBUF *PVIOPHYSBUF;
+
+typedef struct _VIOPALSTATE
+{
+  USHORT cb;
+  USHORT type;
+  USHORT iFirst;
+  USHORT acolor[1];
+} VIOPALSTATE;
+typedef VIOPALSTATE *PVIOPALSTATE;
+
+typedef struct _VIOOVERSCAN
+{
+  USHORT cb;
+  USHORT type;
+  USHORT color;
+} VIOOVERSCAN;
+typedef VIOOVERSCAN *PVIOOVERSCAN;
+
+typedef struct _VIOINTENSITY
+{
+  USHORT cb;
+  USHORT type;
+  USHORT fs;
+} VIOINTENSITY;
+typedef VIOINTENSITY *PVIOINTENSITY;
+
+typedef struct _VIOCOLORREG
+{
+  USHORT cb;
+  USHORT type;
+  USHORT firstcolorreg;
+  USHORT numcolorregs;
+  PCH   colorregaddr;
+} VIOCOLORREG;
+typedef VIOCOLORREG *PVIOCOLORREG;
+
+typedef struct _VIOSETULINELOC
+{
+  USHORT cb;
+  USHORT type;
+  USHORT scanline;
+} VIOSETULINELOC;
+typedef VIOSETULINELOC *PVIOSETULINELOC;
+
+typedef struct _VIOSETTARGET
+{
+  USHORT cb;
+  USHORT type;
+  USHORT defaultalgorithm;
+} VIOSETTARGET;
+typedef VIOSETTARGET *PVIOSETTARGET;
+
+typedef struct _VIOCURSORINFO
+{
+  USHORT yStart;
+  USHORT cEnd;
+  USHORT cx;
+  USHORT attr;
+} VIOCURSORINFO;
+typedef VIOCURSORINFO *PVIOCURSORINFO;
+
+typedef struct _VIOFONTINFO
+{
+  USHORT cb;
+  USHORT type;
+  USHORT cxCell;
+  USHORT cyCell;
+  ULONG         pbData;                /* PVOID16 / _far16ptr */
+  USHORT cbData;
+} VIOFONTINFO;
+typedef VIOFONTINFO *PVIOFONTINFO;
+
+
+USHORT VioCheckCharType (PUSHORT pType, USHORT usRow, USHORT usColumn,
+    HVIO hvio);
+USHORT VioDeRegister (VOID);
+USHORT VioEndPopUp (HVIO hvio);
+USHORT VioGetAnsi (PUSHORT pfAnsi, HVIO hvio);
+USHORT VioGetBuf (PULONG pLVB, PUSHORT pcbLVB, HVIO hvio);
+USHORT VioGetConfig (USHORT usConfigId, PVIOCONFIGINFO pvioin, HVIO hvio);
+USHORT VioGetCp (USHORT usReserved, PUSHORT pusCodePage, HVIO hvio);
+USHORT VioGetCurPos (PUSHORT pusRow, PUSHORT pusColumn, HVIO hvio);
+USHORT VioGetCurType (PVIOCURSORINFO pvioCursorInfo, HVIO hvio);
+USHORT VioGetFont (PVIOFONTINFO pviofi, HVIO hvio);
+USHORT VioGetMode (PVIOMODEINFO pvioModeInfo, HVIO hvio);
+USHORT VioGetPhysBuf (PVIOPHYSBUF pvioPhysBuf, USHORT usReserved);
+USHORT VioGetState (PVOID pState, HVIO hvio);
+USHORT VioGlobalReg (PCSZ pszModName, PCSZ pszEntryName, ULONG ulFunMask1,
+    ULONG ulFunMask2, USHORT usReturn);
+USHORT VioModeUndo (USHORT usOwnerInd, USHORT usKillInd, USHORT usReserved);
+USHORT VioModeWait (USHORT usReqType, PUSHORT pNotifyType, USHORT usReserved);
+USHORT VioPopUp (PUSHORT pfWait, HVIO hvio);
+USHORT VioPrtSc (HVIO hvio);
+USHORT VioPrtScToggle (HVIO hvio);
+USHORT VioReadCellStr (PCH pchCellStr, PUSHORT pcb, USHORT usRow,
+    USHORT usColumn, HVIO hvio);
+USHORT VioReadCharStr (PCH pch, PUSHORT pcb, USHORT usRow, USHORT usColumn,
+    HVIO hvio);
+USHORT VioRegister (PCSZ pszModName, PCSZ pszEntryName, ULONG ulFunMask1,
+    ULONG ulFunMask2);
+USHORT VioSavRedrawUndo (USHORT usOwnerInd, USHORT usKillInd,
+    USHORT usReserved);
+USHORT VioSavRedrawWait (USHORT usRedrawInd, PUSHORT pusNotifyType,
+    USHORT usReserved);
+USHORT VioScrLock (USHORT fWait, PUCHAR pfNotLocked, HVIO hvio);
+USHORT VioScrollDn (USHORT usTopRow, USHORT usLeftCol, USHORT usBotRow,
+    USHORT usRightCol, USHORT cbLines, PBYTE pCell, HVIO hvio);
+USHORT VioScrollLf (USHORT usTopRow, USHORT usLeftCol, USHORT usBotRow,
+    USHORT usRightCol, USHORT cbCol, PBYTE pCell, HVIO hvio);
+USHORT VioScrollRt (USHORT usTopRow, USHORT usLeftCol, USHORT usBotRow,
+    USHORT usRightCol, USHORT cbCol, PBYTE pCell, HVIO hvio);
+USHORT VioScrollUp (USHORT usTopRow, USHORT usLeftCol, USHORT usBotRow,
+    USHORT usRightCol, USHORT cbLines, PBYTE pCell, HVIO hvio);
+USHORT VioScrUnLock (HVIO hvio);
+USHORT VioSetAnsi (USHORT fAnsi, HVIO hvio);
+USHORT VioSetCp (USHORT usReserved, USHORT usCodePage, HVIO hvio);
+USHORT VioSetCurPos (USHORT usRow, USHORT usColumn, HVIO hvio);
+USHORT VioSetCurType (PVIOCURSORINFO pvioCursorInfo, HVIO hvio);
+USHORT VioSetFont (PVIOFONTINFO pviofi, HVIO hvio);
+USHORT VioSetMode (PVIOMODEINFO pvioModeInfo, HVIO hvio);
+USHORT VioSetState (CPVOID pState, HVIO hvio);
+USHORT VioShowBuf (USHORT offLVB, USHORT cb, HVIO hvio);
+USHORT VioWrtCellStr (PCCH pchCellStr, USHORT cb, USHORT usRow,
+    USHORT usColumn, HVIO hvio);
+USHORT VioWrtCharStr (PCCH pch, USHORT cb, USHORT usRow, USHORT usColumn,
+    HVIO hvio);
+USHORT VioWrtCharStrAtt (PCCH pch, USHORT cb, USHORT usRow, USHORT usColumn,
+    PBYTE pAttr, HVIO hvio);
+USHORT VioWrtNAttr (__const__ BYTE *pAttr, USHORT cb, USHORT usRow,
+    USHORT usColumn, HVIO hvio);
+USHORT VioWrtNCell (__const__ BYTE *pCell, USHORT cb, USHORT usRow,
+    USHORT usColumn, HVIO hvio);
+USHORT VioWrtNChar (PCCH pch, USHORT cb, USHORT usRow, USHORT usColumn,
+    HVIO hvio);
+USHORT VioWrtTTY (PCCH pch, USHORT cb, HVIO hvio);
+
+#endif /* INCL_VIO */
+
+#if defined (INCL_MOU)
+
+#define MHK_BUTTON1                    0x0001
+#define MHK_BUTTON2                    0x0002
+#define MHK_BUTTON3                    0x0004
+
+#define MOU_NOWAIT                     0x0000
+#define MOU_WAIT                       0x0001
+
+#define MOUSE_MOTION                   0x0001
+#define MOUSE_MOTION_WITH_BN1_DOWN     0x0002
+#define MOUSE_BN1_DOWN                 0x0004
+#define MOUSE_MOTION_WITH_BN2_DOWN     0x0008
+#define MOUSE_BN2_DOWN                 0x0010
+#define MOUSE_MOTION_WITH_BN3_DOWN     0x0020
+#define MOUSE_BN3_DOWN                 0x0040
+
+#define MOUSE_QUEUEBUSY                        0x0001
+#define MOUSE_BLOCKREAD                        0x0002
+#define MOUSE_FLUSH                    0x0004
+#define MOUSE_UNSUPPORTED_MODE         0x0008
+#define MOUSE_DISABLED                 0x0100
+#define MOUSE_MICKEYS                  0x0200
+
+#define MOU_NODRAW                     0x0001
+#define MOU_DRAW                       0x0000
+#define MOU_MICKEYS                    0x0002
+#define MOU_PELS                       0x0000
+
+#define MR_MOUGETNUMBUTTONS            0x00000001
+#define MR_MOUGETNUMMICKEYS            0x00000002
+#define MR_MOUGETDEVSTATUS             0x00000004
+#define MR_MOUGETNUMQUEEL              0x00000008
+#define MR_MOUREADEVENTQUE             0x00000010
+#define MR_MOUGETSCALEFACT             0x00000020
+#define MR_MOUGETEVENTMASK             0x00000040
+#define MR_MOUSETSCALEFACT             0x00000080
+#define MR_MOUSETEVENTMASK             0x00000100
+#define MR_MOUOPEN                     0x00000800
+#define MR_MOUCLOSE                    0x00001000
+#define MR_MOUGETPTRSHAPE              0x00002000
+#define MR_MOUSETPTRSHAPE              0x00004000
+#define MR_MOUDRAWPTR                  0x00008000
+#define MR_MOUREMOVEPTR                        0x00010000
+#define MR_MOUGETPTRPOS                        0x00020000
+#define MR_MOUSETPTRPOS                        0x00040000
+#define MR_MOUINITREAL                 0x00080000
+#define MR_MOUSETDEVSTATUS             0x00100000
+
+
+typedef USHORT HMOU;
+typedef HMOU *PHMOU;
+
+
+typedef struct _MOUEVENTINFO
+{
+  USHORT fs;
+  ULONG         time;
+  SHORT         row;
+  SHORT         col;
+} MOUEVENTINFO;
+typedef MOUEVENTINFO *PMOUEVENTINFO;
+
+typedef struct _MOUQUEINFO
+{
+  USHORT cEvents;
+  USHORT cmaxEvents;
+} MOUQUEINFO;
+typedef MOUQUEINFO *PMOUQUEINFO;
+
+typedef struct _PTRLOC
+{
+  USHORT row;
+  USHORT col;
+} PTRLOC;
+typedef PTRLOC *PPTRLOC;
+
+typedef struct _NOPTRRECT
+{
+  USHORT row;
+  USHORT col;
+  USHORT cRow;
+  USHORT cCol;
+} NOPTRRECT;
+typedef NOPTRRECT *PNOPTRRECT;
+
+typedef struct _PTRSHAPE
+{
+  USHORT cb;
+  USHORT col;
+  USHORT row;
+  USHORT colHot;
+  USHORT rowHot;
+} PTRSHAPE;
+typedef PTRSHAPE *PPTRSHAPE;
+
+typedef struct _SCALEFACT
+{
+  USHORT rowScale;
+  USHORT colScale;
+} SCALEFACT;
+typedef SCALEFACT *PSCALEFACT;
+
+typedef struct _THRESHOLD
+{
+  USHORT Length;
+  USHORT Level1;
+  USHORT Lev1Mult;
+  USHORT Level2;
+  USHORT lev2Mult;
+} THRESHOLD;
+typedef THRESHOLD *PTHRESHOLD;
+
+
+USHORT MouClose (HMOU hmou);
+USHORT MouDeRegister (VOID);
+USHORT MouDrawPtr (HMOU hmou);
+USHORT MouFlushQue (HMOU hmou);
+USHORT MouGetDevStatus (PUSHORT pfsDevStatus, HMOU hmou);
+USHORT MouGetEventMask (PUSHORT pfsEvents, HMOU hmou);
+USHORT MouGetNumButtons (PUSHORT pcButtons, HMOU hmou);
+USHORT MouGetNumMickeys (PUSHORT pcMickeys, HMOU hmou);
+USHORT MouGetNumQueEl (PMOUQUEINFO qmouqi, HMOU hmou);
+USHORT MouGetPtrPos (PPTRLOC pmouLoc, HMOU hmou);
+USHORT MouGetPtrShape (PBYTE pBuf, PPTRSHAPE pmoupsInfo, HMOU hmou);
+USHORT MouGetScaleFact (PSCALEFACT pmouscFactors, HMOU hmou);
+USHORT MouGetThreshold (PTHRESHOLD pthreshold, HMOU hmou);
+USHORT MouInitReal (PCSZ pszDriverName);
+USHORT MouOpen (PCSZ pszDvrName, PHMOU phmou);
+USHORT MouReadEventQue (PMOUEVENTINFO pmouevEvent, PUSHORT pfWait, HMOU hmou);
+USHORT MouRegister (PCSZ pszModName, PCSZ pszEntryName, ULONG ulFunMask);
+USHORT MouRemovePtr (PNOPTRRECT pmourtRect, HMOU hmou);
+USHORT MouSetDevStatus (PUSHORT pfsDevStatus, HMOU hmou);
+USHORT MouSetEventMask (PUSHORT pfsEvents, HMOU hmou);
+USHORT MouSetPtrPos (PPTRLOC pmouLoc, HMOU hmou);
+USHORT MouSetPtrShape (PBYTE pBuf, PPTRSHAPE pmoupsInfo, HMOU hmou);
+USHORT MouSetScaleFact (PSCALEFACT pmouscFactors, HMOU hmou);
+USHORT MouSetThreshold (PTHRESHOLD pthreshold, HMOU hmou);
+USHORT MouSynch (USHORT fWait);
+
+#endif /* INCL_MOU */
+
+/* ------------------------------ THE END --------------------------------- */
+
+#pragma pack(4)
+
+#endif /* not _OS2EMX_H */
+
+/* Note 1:
+
+   There are some inconsistencies in the structure names defined in
+   the header files of the IBM Developer's Toolkit for OS/2.  To make
+   C++ modules compiled with those headers linkable with C++ modules
+   compiled with this header, we have to use the same (questionable)
+   structure names. */
+
+/*
+ * Local variables:
+ * indent-tabs-mode: t
+ * end:
+ */