WINDOWS.H
Upload User: qiye66666
Upload Date: 2007-01-03
Package Size: 202k
Code Size: 117k
Category:

TCP/IP Stack

Development Platform:

Visual C++

  1. #if !defined( __WINDOWS_H )
  2. #define __WINDOWS_H
  3. /****************************************************************************/
  4. /*                                                                          */
  5. /*  WINDOWS.H -                                                             */
  6. /*                                                                          */
  7. /*      Include file for Windows 3.0 applications                           */
  8. /*                                                                          */
  9. /****************************************************************************/
  10. #ifndef RC_INVOKED
  11. #pragma option -a-
  12. #pragma warn -bbf
  13. #endif
  14. #if defined( __cplusplus )
  15. extern "C" {
  16. #endif  /* __cplusplus */
  17. /*  If defined, the following flags inhibit definition
  18.  *     of the indicated items.
  19.  *
  20.  *  NOGDICAPMASKS     - CC_*, LC_*, PC_*, CP_*, TC_*, RC_
  21.  *  NOVIRTUALKEYCODES - VK_*
  22.  *  NOWINMESSAGES     - WM_*, EM_*, LB_*, CB_*
  23.  *  NOWINSTYLES       - WS_*, CS_*, ES_*, LBS_*, SBS_*, CBS_*
  24.  *  NOSYSMETRICS      - SM_*
  25.  *  NOMENUS           - MF_*
  26.  *  NOICONS           - IDI_*
  27.  *  NOKEYSTATES       - MK_*
  28.  *  NOSYSCOMMANDS     - SC_*
  29.  *  NORASTEROPS       - Binary and Tertiary raster ops
  30.  *  NOSHOWWINDOW      - SW_*
  31.  *  OEMRESOURCE       - OEM Resource values
  32.  *  NOATOM            - Atom Manager routines
  33.  *  NOCLIPBOARD       - Clipboard routines
  34.  *  NOCOLOR           - Screen colors
  35.  *  NOCTLMGR          - Control and Dialog routines
  36.  *  NODRAWTEXT        - DrawText() and DT_*
  37.  *  NOGDI             - All GDI defines and routines
  38.  *  NOKERNEL          - All KERNEL defines and routines
  39.  *  NOUSER            - All USER defines and routines
  40.  *  NOMB              - MB_* and MessageBox()
  41.  *  NOMEMMGR          - GMEM_*, LMEM_*, GHND, LHND, associated routines
  42.  *  NOMETAFILE        - typedef METAFILEPICT
  43.  *  NOMINMAX          - Macros min(a,b) and max(a,b)
  44.  *  NOMSG             - typedef MSG and associated routines
  45.  *  NOOPENFILE        - OpenFile(), OemToAnsi, AnsiToOem, and OF_*
  46.  *  NOSCROLL          - SB_* and scrolling routines
  47.  *  NOSOUND           - Sound driver routines
  48.  *  NOTEXTMETRIC      - typedef TEXTMETRIC and associated routines
  49.  *  NOWH              - SetWindowsHook and WH_*
  50.  *  NOWINOFFSETS      - GWL_*, GCL_*, associated routines
  51.  *  NOCOMM            - COMM driver routines
  52.  *  NOKANJI           - Kanji support stuff.
  53.  *  NOHELP            - Help engine interface.
  54.  *  NOPROFILER        - Profiler interface.
  55.  *  NODEFERWINDOWPOS  - DeferWindowPos routines
  56.  */
  57. #ifdef RC_INVOKED
  58. /* Turn off a bunch of stuff to ensure that RC files compile OK. */
  59. #define NOATOM
  60. #define NOGDI
  61. #define NOGDICAPMASKS
  62. #define NOMETAFILE
  63. #define NOMINMAX
  64. #define NOMSG
  65. #define NOOPENFILE
  66. #define NORASTEROPS
  67. #define NOSCROLL
  68. #define NOSOUND
  69. #define NOSYSMETRICS
  70. #define NOTEXTMETRIC
  71. #define NOWH
  72. #define NOCOMM
  73. #define NOKANJI
  74. #endif /* RC_INVOKED */
  75. /*--------------------------------------------------------------------------*/
  76. /*  General Purpose Defines                                                 */
  77. /*--------------------------------------------------------------------------*/
  78. #ifndef NULL
  79. #if defined(__TINY__) || defined(__SMALL__) || defined(__MEDIUM__)
  80. #define NULL  0
  81. #else
  82. #define NULL  0L
  83. #endif
  84. #endif
  85. #define FALSE               0
  86. #define TRUE                1
  87. #define FAR                 far
  88. #define NEAR                near
  89. #define LONG                long
  90. #define VOID                void
  91. #define PASCAL              pascal
  92. #if !defined( NOMINMAX ) && !defined( __cplusplus )
  93. #ifndef max
  94. #define max(a,b)            (((a) > (b)) ? (a) : (b))
  95. #endif
  96. #ifndef min
  97. #define min(a,b)            (((a) < (b)) ? (a) : (b))
  98. #endif
  99. #endif  /* NOMINMAX */
  100. #define MAKELONG(a, b)      ((LONG)(((WORD)(a)) | (((DWORD)((WORD)(b))) << 16)))
  101. #define LOWORD(l)           ((WORD)(l))
  102. #define HIWORD(l)           ((WORD)((DWORD)(l) >> 16))
  103. #define LOBYTE(w)           ((BYTE)(w))
  104. #define HIBYTE(w)           ((BYTE)((WORD)(w) >> 8))
  105. typedef int                 BOOL;
  106. typedef unsigned char       BYTE;
  107. typedef unsigned int        WORD;
  108. typedef unsigned long       DWORD;
  109. typedef char near           *PSTR;
  110. typedef char near           *NPSTR;
  111. typedef char far            *LPSTR;
  112. typedef BYTE near           *PBYTE;
  113. typedef BYTE far            *LPBYTE;
  114. typedef int near            *PINT;
  115. typedef int far             *LPINT;
  116. typedef WORD near           *PWORD;
  117. typedef WORD far            *LPWORD;
  118. typedef long near           *PLONG;
  119. typedef long far            *LPLONG;
  120. typedef DWORD near          *PDWORD;
  121. typedef DWORD far           *LPDWORD;
  122. typedef void far            *LPVOID;
  123. #ifndef WIN_INTERNAL
  124. typedef WORD                HANDLE;
  125. typedef HANDLE              HWND;
  126. #endif
  127. typedef HANDLE              *PHANDLE;
  128. typedef HANDLE NEAR         *SPHANDLE;
  129. typedef HANDLE FAR          *LPHANDLE;
  130. typedef HANDLE              GLOBALHANDLE;
  131. typedef HANDLE              LOCALHANDLE;
  132. typedef int (FAR PASCAL *FARPROC)();
  133. typedef int (NEAR PASCAL *NEARPROC)();
  134. typedef HANDLE              HSTR;
  135. typedef HANDLE              HICON;
  136. typedef HANDLE              HDC;
  137. typedef HANDLE              HMENU;
  138. typedef HANDLE              HPEN;
  139. typedef HANDLE              HFONT;
  140. typedef HANDLE              HBRUSH;
  141. typedef HANDLE              HBITMAP;
  142. typedef HANDLE              HCURSOR;
  143. typedef HANDLE              HRGN;
  144. typedef HANDLE              HPALETTE;
  145. typedef DWORD               COLORREF;
  146. #ifndef WIN_INTERNAL
  147. typedef struct tagRECT
  148.   {
  149.     int         left;
  150.     int         top;
  151.     int         right;
  152.     int         bottom;
  153.   } RECT;
  154. #endif
  155. typedef RECT                *PRECT;
  156. typedef RECT NEAR           *NPRECT;
  157. typedef RECT FAR            *LPRECT;
  158. typedef struct tagPOINT
  159.   {
  160.     int         x;
  161.     int         y;
  162.   } POINT;
  163. typedef POINT               *PPOINT;
  164. typedef POINT NEAR          *NPPOINT;
  165. typedef POINT FAR           *LPPOINT;
  166. /*--------------------------------------------------------------------------*/
  167. /*  KERNEL Section                                                          */
  168. /*--------------------------------------------------------------------------*/
  169. #ifndef NOKERNEL
  170. /* Loader Routines */
  171. WORD    FAR PASCAL GetVersion(void);
  172. WORD    FAR PASCAL GetNumTasks(void);
  173. HANDLE  FAR PASCAL GetCodeHandle(FARPROC);
  174. void    FAR PASCAL GetCodeInfo(FARPROC lpProc, LPVOID lpSegInfo);
  175. HANDLE  FAR PASCAL GetModuleHandle(LPSTR);
  176. int     FAR PASCAL GetModuleUsage(HANDLE);
  177. int     FAR PASCAL GetModuleFileName(HANDLE, LPSTR, int);
  178. int     FAR PASCAL GetInstanceData(HANDLE, NPSTR, int);
  179. FARPROC FAR PASCAL GetProcAddress(HANDLE, LPSTR);
  180. FARPROC FAR PASCAL MakeProcInstance(FARPROC, HANDLE);
  181. void    FAR PASCAL FreeProcInstance(FARPROC);
  182. HANDLE  FAR PASCAL LoadLibrary(LPSTR);
  183. HANDLE  FAR PASCAL LoadModule(LPSTR, LPVOID);
  184. BOOL    FAR PASCAL FreeModule(HANDLE);
  185. void    FAR PASCAL FreeLibrary(HANDLE);
  186. DWORD   FAR PASCAL GetFreeSpace(WORD);
  187. WORD    FAR PASCAL WinExec(LPSTR, WORD);
  188. void    FAR PASCAL DebugBreak(void);
  189. void    FAR PASCAL OutputDebugString(LPSTR);
  190. void    FAR PASCAL SwitchStackBack(void);
  191. void    FAR PASCAL SwitchStackTo(WORD, WORD, WORD);
  192. WORD    FAR PASCAL GetCurrentPDB(void);
  193. #ifndef NOOPENFILE
  194. /* OpenFile() Structure */
  195. typedef struct tagOFSTRUCT
  196.   {
  197.     BYTE        cBytes;
  198.     BYTE        fFixedDisk;
  199.     WORD        nErrCode;
  200.     BYTE        reserved[4];
  201.     BYTE        szPathName[128];
  202.   } OFSTRUCT;
  203. typedef OFSTRUCT            *POFSTRUCT;
  204. typedef OFSTRUCT NEAR       *NPOFSTRUCT;
  205. typedef OFSTRUCT FAR        *LPOFSTRUCT;
  206. /* OpenFile() Flags */
  207. #define OF_READ             0x0000
  208. #define OF_WRITE            0x0001
  209. #define OF_READWRITE        0x0002
  210. #define OF_SHARE_COMPAT     0x0000
  211. #define OF_SHARE_EXCLUSIVE  0x0010
  212. #define OF_SHARE_DENY_WRITE 0x0020
  213. #define OF_SHARE_DENY_READ  0x0030
  214. #define OF_SHARE_DENY_NONE  0x0040
  215. #define OF_PARSE            0x0100
  216. #define OF_DELETE           0x0200
  217. #define OF_VERIFY           0x0400
  218. #define OF_CANCEL           0x0800
  219. #define OF_CREATE           0x1000
  220. #define OF_PROMPT           0x2000
  221. #define OF_EXIST            0x4000
  222. #define OF_REOPEN           0x8000
  223. int  FAR PASCAL OpenFile(LPSTR, LPOFSTRUCT, WORD);
  224. /* GetTempFileName() Flags */
  225. #define TF_FORCEDRIVE       (BYTE)0x80
  226. BYTE FAR PASCAL GetTempDrive(BYTE);
  227. int  FAR PASCAL GetTempFileName(BYTE, LPSTR, WORD, LPSTR);
  228. WORD FAR PASCAL SetHandleCount(WORD);
  229. WORD FAR PASCAL GetDriveType(int);
  230. /* GetDriveType return values */
  231. #define DRIVE_REMOVABLE 2
  232. #define DRIVE_FIXED     3
  233. #define DRIVE_REMOTE    4
  234. #endif /* NOOPENFILE */
  235. #ifndef NOMEMMGR
  236. /* Global Memory Flags */
  237. #define GMEM_FIXED          0x0000
  238. #define GMEM_MOVEABLE       0x0002
  239. #define GMEM_NOCOMPACT      0x0010
  240. #define GMEM_NODISCARD      0x0020
  241. #define GMEM_ZEROINIT       0x0040
  242. #define GMEM_MODIFY         0x0080
  243. #define GMEM_DISCARDABLE    0x0100
  244. #define GMEM_NOT_BANKED     0x1000
  245. #define GMEM_SHARE          0x2000
  246. #define GMEM_DDESHARE       0x2000
  247. #define GMEM_NOTIFY         0x4000
  248. #define GMEM_LOWER          GMEM_NOT_BANKED
  249. #define GHND                (GMEM_MOVEABLE | GMEM_ZEROINIT)
  250. #define GPTR                (GMEM_FIXED | GMEM_ZEROINIT)
  251. #define GlobalDiscard(h) GlobalReAlloc(h, 0L, GMEM_MOVEABLE)
  252. HANDLE FAR PASCAL GlobalAlloc(WORD, DWORD);
  253. DWORD  FAR PASCAL GlobalCompact(DWORD);
  254. HANDLE FAR PASCAL GlobalFree(HANDLE);
  255. DWORD  FAR PASCAL GlobalHandle(WORD);
  256. LPSTR  FAR PASCAL GlobalLock(HANDLE);
  257. HANDLE FAR PASCAL GlobalReAlloc(HANDLE, DWORD, WORD);
  258. DWORD  FAR PASCAL GlobalSize(HANDLE);
  259. BOOL   FAR PASCAL GlobalUnlock(HANDLE);
  260. WORD   FAR PASCAL GlobalFlags(HANDLE);
  261. LPSTR  FAR PASCAL GlobalWire(HANDLE);
  262. BOOL   FAR PASCAL GlobalUnWire(HANDLE);
  263. BOOL   FAR PASCAL GlobalUnlock(HANDLE);
  264. HANDLE FAR PASCAL GlobalLRUNewest(HANDLE);
  265. HANDLE FAR PASCAL GlobalLRUOldest(HANDLE);
  266. VOID   FAR PASCAL GlobalNotify(FARPROC);
  267. WORD   FAR PASCAL GlobalPageLock(HANDLE);
  268. WORD   FAR PASCAL GlobalPageUnlock(HANDLE);
  269. VOID   FAR PASCAL GlobalFix(HANDLE);
  270. BOOL   FAR PASCAL GlobalUnfix(HANDLE);
  271. DWORD  FAR PASCAL GlobalDosAlloc(DWORD);
  272. WORD   FAR PASCAL GlobalDosFree(WORD);
  273. /* Flags returned by GlobalFlags (in addition to GMEM_DISCARDABLE) */
  274. #define GMEM_DISCARDED      0x4000
  275. #define GMEM_LOCKCOUNT      0x00FF
  276. #define LockData(dummy)     LockSegment(0xFFFF)
  277. #define UnlockData(dummy)   UnlockSegment(0xFFFF)
  278. HANDLE FAR PASCAL LockSegment(WORD);
  279. HANDLE FAR PASCAL UnlockSegment(WORD);
  280. /* Local Memory Flags */
  281. #define LMEM_FIXED          0x0000
  282. #define LMEM_MOVEABLE       0x0002
  283. #define LMEM_NOCOMPACT      0x0010
  284. #define LMEM_NODISCARD      0x0020
  285. #define LMEM_ZEROINIT       0x0040
  286. #define LMEM_MODIFY         0x0080
  287. #define LMEM_DISCARDABLE    0x0F00
  288. #define LHND                (LMEM_MOVEABLE | LMEM_ZEROINIT)
  289. #define LPTR                (LMEM_FIXED | LMEM_ZEROINIT)
  290. #define NONZEROLHND         (LMEM_MOVEABLE)
  291. #define NONZEROLPTR         (LMEM_FIXED)
  292. #define LNOTIFY_OUTOFMEM    0
  293. #define LNOTIFY_MOVE        1
  294. #define LNOTIFY_DISCARD     2
  295. #define LocalDiscard(h)     LocalReAlloc(h, 0, LMEM_MOVEABLE)
  296. HANDLE  FAR PASCAL LocalAlloc(WORD, WORD);
  297. WORD    FAR PASCAL LocalCompact(WORD);
  298. HANDLE  FAR PASCAL LocalFree(HANDLE);
  299. HANDLE  FAR PASCAL LocalHandle(WORD);
  300. BOOL    FAR PASCAL LocalInit( WORD, WORD, WORD);
  301. char NEAR * FAR PASCAL LocalLock(HANDLE);
  302. FARPROC FAR PASCAL LocalNotify(FARPROC);
  303. HANDLE  FAR PASCAL LocalReAlloc(HANDLE, WORD, WORD);
  304. WORD    FAR PASCAL LocalSize(HANDLE);
  305. BOOL    FAR PASCAL LocalUnlock(HANDLE);
  306. WORD    FAR PASCAL LocalFlags(HANDLE);
  307. WORD    FAR PASCAL LocalShrink(HANDLE, WORD);
  308. /* Flags returned by LocalFlags (in addition to LMEM_DISCARDABLE) */
  309. #define LMEM_DISCARDED      0x4000
  310. #define LMEM_LOCKCOUNT      0x00FF
  311. #endif /* NOMEMMGR */
  312. LONG   FAR PASCAL SetSwapAreaSize(WORD);
  313. LPSTR  FAR PASCAL ValidateFreeSpaces(void);
  314. VOID   FAR PASCAL LimitEmsPages(DWORD);
  315. BOOL   FAR PASCAL SetErrorMode(WORD);
  316. VOID   FAR PASCAL ValidateCodeSegments(void);
  317. LPSTR  FAR PASCAL GetDOSEnvironment(void);
  318. WORD   FAR PASCAL AllocDStoCSAlias(WORD);
  319. WORD   FAR PASCAL AllocSelector(WORD);
  320. WORD   FAR PASCAL ChangeSelector(WORD, WORD);
  321. WORD   FAR PASCAL FreeSelector(WORD);
  322. #define UnlockResource(h)   GlobalUnlock(h)
  323. HANDLE FAR PASCAL FindResource(HANDLE, LPSTR, LPSTR);
  324. HANDLE FAR PASCAL LoadResource(HANDLE, HANDLE);
  325. BOOL   FAR PASCAL FreeResource(HANDLE);
  326. LPSTR  FAR PASCAL LockResource(HANDLE);
  327. FARPROC FAR PASCAL SetResourceHandler(HANDLE, LPSTR, FARPROC);
  328. HANDLE FAR PASCAL AllocResource(HANDLE, HANDLE, DWORD);
  329. WORD   FAR PASCAL SizeofResource(HANDLE, HANDLE);
  330. int    FAR PASCAL AccessResource(HANDLE, HANDLE);
  331. #define MAKEINTRESOURCE(i)  (LPSTR)((DWORD)((WORD)(i)))
  332. #ifndef NORESOURCE
  333. /* Predefined Resource Types */
  334. #define RT_CURSOR           MAKEINTRESOURCE(1)
  335. #define RT_BITMAP           MAKEINTRESOURCE(2)
  336. #define RT_ICON             MAKEINTRESOURCE(3)
  337. #define RT_MENU             MAKEINTRESOURCE(4)
  338. #define RT_DIALOG           MAKEINTRESOURCE(5)
  339. #define RT_STRING           MAKEINTRESOURCE(6)
  340. #define RT_FONTDIR          MAKEINTRESOURCE(7)
  341. #define RT_FONT             MAKEINTRESOURCE(8)
  342. #define RT_ACCELERATOR      MAKEINTRESOURCE(9)
  343. #define RT_RCDATA           MAKEINTRESOURCE(10)
  344. #endif /* NORESOURCE */
  345. void   FAR PASCAL Yield(void);
  346. HANDLE FAR PASCAL GetCurrentTask(void);
  347. #ifndef NOATOM
  348. typedef WORD                ATOM;
  349. #define MAKEINTATOM(i)      (LPSTR)((DWORD)((WORD)(i)))
  350. BOOL   FAR PASCAL InitAtomTable(int);
  351. ATOM   FAR PASCAL AddAtom(LPSTR);
  352. ATOM   FAR PASCAL DeleteAtom(ATOM);
  353. ATOM   FAR PASCAL FindAtom(LPSTR);
  354. WORD   FAR PASCAL GetAtomName(ATOM, LPSTR, int);
  355. ATOM   FAR PASCAL GlobalAddAtom(LPSTR);
  356. ATOM   FAR PASCAL GlobalDeleteAtom(ATOM);
  357. ATOM   FAR PASCAL GlobalFindAtom(LPSTR);
  358. WORD   FAR PASCAL GlobalGetAtomName(ATOM, LPSTR, int);
  359. HANDLE FAR PASCAL GetAtomHandle(ATOM);
  360. #endif /* NOATOM */
  361. /* User Profile Routines */
  362. WORD FAR PASCAL GetProfileInt(LPSTR, LPSTR, int);
  363. int  FAR PASCAL GetProfileString(LPSTR, LPSTR, LPSTR, LPSTR, int);
  364. BOOL FAR PASCAL WriteProfileString(LPSTR, LPSTR, LPSTR);
  365. WORD FAR PASCAL GetPrivateProfileInt(LPSTR, LPSTR, int, LPSTR);
  366. int  FAR PASCAL GetPrivateProfileString(LPSTR, LPSTR, LPSTR, LPSTR, int, LPSTR);
  367. BOOL FAR PASCAL WritePrivateProfileString(LPSTR, LPSTR, LPSTR, LPSTR);
  368. WORD FAR PASCAL GetWindowsDirectory(LPSTR,WORD);
  369. WORD FAR PASCAL GetSystemDirectory(LPSTR,WORD);
  370. /* Catch() and Throw() */
  371. typedef int                 CATCHBUF[9];
  372. typedef int FAR             *LPCATCHBUF;
  373. int  FAR PASCAL Catch(LPCATCHBUF);
  374. void FAR PASCAL Throw(LPCATCHBUF, int);
  375. void FAR PASCAL FatalAppExit(int, LPSTR);
  376. void FAR PASCAL FatalExit(int);
  377. void FAR PASCAL SwapRecording(WORD);
  378. /* Character Translation Routines */
  379. int   FAR PASCAL AnsiToOem(LPSTR, LPSTR);
  380. BOOL  FAR PASCAL OemToAnsi(LPSTR, LPSTR);
  381. void  FAR PASCAL AnsiToOemBuff(LPSTR, LPSTR, int);
  382. void  FAR PASCAL OemToAnsiBuff(LPSTR, LPSTR, int);
  383. LPSTR FAR PASCAL AnsiUpper(LPSTR);
  384. WORD  FAR PASCAL AnsiUpperBuff(LPSTR, WORD);
  385. LPSTR FAR PASCAL AnsiLower(LPSTR);
  386. WORD  FAR PASCAL AnsiLowerBuff(LPSTR, WORD);
  387. LPSTR FAR PASCAL AnsiNext(LPSTR);
  388. LPSTR FAR PASCAL AnsiPrev(LPSTR, LPSTR);
  389. /* Keyboard Information Routines */
  390. #ifndef NOKEYBOARDINFO
  391. DWORD FAR PASCAL OemKeyScan(WORD);
  392. WORD  FAR PASCAL VkKeyScan(WORD);
  393. int   FAR PASCAL GetKeyboardType(int);
  394. WORD  FAR PASCAL MapVirtualKey(WORD, WORD);
  395. int   FAR PASCAL GetKBCodePage();
  396. int   FAR PASCAL GetKeyNameText(LONG, LPSTR, int);
  397. int   FAR PASCAL ToAscii(WORD wVirtKey, WORD wScanCode, LPSTR lpKeyState, LPVOID lpChar, WORD wFlags);
  398. #endif
  399. #ifndef  NOLANGUAGE
  400. /* Language dependent Routines */
  401. BOOL  FAR  PASCAL IsCharAlpha(char);
  402. BOOL  FAR  PASCAL IsCharAlphaNumeric(char);
  403. BOOL  FAR  PASCAL IsCharUpper(char);
  404. BOOL  FAR  PASCAL IsCharLower(char);
  405. #endif
  406. LONG FAR PASCAL GetWinFlags(void);
  407. #define WF_PMODE        0x0001
  408. #define WF_CPU286       0x0002
  409. #define WF_CPU386       0x0004
  410. #define WF_CPU486       0x0008
  411. #define WF_STANDARD     0x0010
  412. #define WF_WIN286       0x0010
  413. #define WF_ENHANCED     0x0020
  414. #define WF_WIN386       0x0020
  415. #define WF_CPU086       0x0040
  416. #define WF_CPU186       0x0080
  417. #define WF_LARGEFRAME   0x0100
  418. #define WF_SMALLFRAME   0x0200
  419. #define WF_80x87        0x0400
  420. /* WEP fSystemExit flag values */
  421. #define WEP_SYSTEM_EXIT 1
  422. #define WEP_FREE_DLL    0
  423. #ifdef OEMRESOURCE
  424. /* OEM Resource Ordinal Numbers */
  425. #define OBM_CLOSE           32754
  426. #define OBM_UPARROW         32753
  427. #define OBM_DNARROW         32752
  428. #define OBM_RGARROW         32751
  429. #define OBM_LFARROW         32750
  430. #define OBM_REDUCE          32749
  431. #define OBM_ZOOM            32748
  432. #define OBM_RESTORE         32747
  433. #define OBM_REDUCED         32746
  434. #define OBM_ZOOMD           32745
  435. #define OBM_RESTORED        32744
  436. #define OBM_UPARROWD        32743
  437. #define OBM_DNARROWD        32742
  438. #define OBM_RGARROWD        32741
  439. #define OBM_LFARROWD        32740
  440. #define OBM_MNARROW         32739
  441. #define OBM_COMBO           32738
  442. #define OBM_OLD_CLOSE       32767
  443. #define OBM_SIZE            32766
  444. #define OBM_OLD_UPARROW     32765
  445. #define OBM_OLD_DNARROW     32764
  446. #define OBM_OLD_RGARROW     32763
  447. #define OBM_OLD_LFARROW     32762
  448. #define OBM_BTSIZE          32761
  449. #define OBM_CHECK           32760
  450. #define OBM_CHECKBOXES      32759
  451. #define OBM_BTNCORNERS      32758
  452. #define OBM_OLD_REDUCE      32757
  453. #define OBM_OLD_ZOOM        32756
  454. #define OBM_OLD_RESTORE     32755
  455. #define OCR_NORMAL          32512
  456. #define OCR_IBEAM           32513
  457. #define OCR_WAIT            32514
  458. #define OCR_CROSS           32515
  459. #define OCR_UP              32516
  460. #define OCR_SIZE            32640
  461. #define OCR_ICON            32641
  462. #define OCR_SIZENWSE        32642
  463. #define OCR_SIZENESW        32643
  464. #define OCR_SIZEWE          32644
  465. #define OCR_SIZENS          32645
  466. #define OCR_SIZEALL         32646
  467. #define OCR_ICOCUR          32647
  468. #define OIC_SAMPLE          32512
  469. #define OIC_HAND            32513
  470. #define OIC_QUES            32514
  471. #define OIC_BANG            32515
  472. #define OIC_NOTE            32516
  473. #endif /* OEMRESOURCE */
  474. #endif /* NOKERNEL */
  475. /*--------------------------------------------------------------------------*/
  476. /*  GDI Section                                                             */
  477. /*--------------------------------------------------------------------------*/
  478. #ifndef NOGDI
  479. #ifndef NORASTEROPS
  480. /* Binary raster ops */
  481. #define R2_BLACK            1   /*  0       */
  482. #define R2_NOTMERGEPEN      2   /* DPon     */
  483. #define R2_MASKNOTPEN       3   /* DPna     */
  484. #define R2_NOTCOPYPEN       4   /* PN       */
  485. #define R2_MASKPENNOT       5   /* PDna     */
  486. #define R2_NOT              6   /* Dn       */
  487. #define R2_XORPEN           7   /* DPx      */
  488. #define R2_NOTMASKPEN       8   /* DPan     */
  489. #define R2_MASKPEN          9   /* DPa      */
  490. #define R2_NOTXORPEN        10  /* DPxn     */
  491. #define R2_NOP              11  /* D        */
  492. #define R2_MERGENOTPEN      12  /* DPno     */
  493. #define R2_COPYPEN          13  /* P        */
  494. #define R2_MERGEPENNOT      14  /* PDno     */
  495. #define R2_MERGEPEN         15  /* DPo      */
  496. #define R2_WHITE            16  /*  1       */
  497. /*  Ternary raster operations */
  498. #define SRCCOPY             (DWORD)0x00CC0020UL /* dest = source                   */
  499. #define SRCPAINT            (DWORD)0x00EE0086UL /* dest = source OR dest           */
  500. #define SRCAND              (DWORD)0x008800C6UL /* dest = source AND dest          */
  501. #define SRCINVERT           (DWORD)0x00660046UL /* dest = source XOR dest          */
  502. #define SRCERASE            (DWORD)0x00440328UL /* dest = source AND (NOT dest )   */
  503. #define NOTSRCCOPY          (DWORD)0x00330008UL /* dest = (NOT source)             */
  504. #define NOTSRCERASE         (DWORD)0x001100A6UL /* dest = (NOT src) AND (NOT dest) */
  505. #define MERGECOPY           (DWORD)0x00C000CAUL /* dest = (source AND pattern)     */
  506. #define MERGEPAINT          (DWORD)0x00BB0226UL /* dest = (NOT source) OR dest     */
  507. #define PATCOPY             (DWORD)0x00F00021UL /* dest = pattern                  */
  508. #define PATPAINT            (DWORD)0x00FB0A09UL /* dest = DPSnoo                   */
  509. #define PATINVERT           (DWORD)0x005A0049UL /* dest = pattern XOR dest         */
  510. #define DSTINVERT           (DWORD)0x00550009UL /* dest = (NOT dest)               */
  511. #define BLACKNESS           (DWORD)0x00000042UL /* dest = BLACK                    */
  512. #define WHITENESS           (DWORD)0x00FF0062UL /* dest = WHITE                    */
  513. #endif /* NORASTEROPS */
  514. /* StretchBlt() Modes */
  515. #define BLACKONWHITE                 1
  516. #define WHITEONBLACK                 2
  517. #define COLORONCOLOR                 3
  518. /* PolyFill() Modes */
  519. #define ALTERNATE                    1
  520. #define WINDING                      2
  521. /* Text Alignment Options */
  522. #define TA_NOUPDATECP                0
  523. #define TA_UPDATECP                  1
  524. #define TA_LEFT                      0
  525. #define TA_RIGHT                     2
  526. #define TA_CENTER                    6
  527. #define TA_TOP                       0
  528. #define TA_BOTTOM                    8
  529. #define TA_BASELINE                  24
  530. #define ETO_GRAYED                   1
  531. #define ETO_OPAQUE                   2
  532. #define ETO_CLIPPED                  4
  533. #define ASPECT_FILTERING             0x0001
  534. #ifndef NOMETAFILE
  535. /* Metafile Functions */
  536. #define META_SETBKCOLOR              0x0201
  537. #define META_SETBKMODE               0x0102
  538. #define META_SETMAPMODE              0x0103
  539. #define META_SETROP2                 0x0104
  540. #define META_SETRELABS               0x0105
  541. #define META_SETPOLYFILLMODE         0x0106
  542. #define META_SETSTRETCHBLTMODE       0x0107
  543. #define META_SETTEXTCHAREXTRA        0x0108
  544. #define META_SETTEXTCOLOR            0x0209
  545. #define META_SETTEXTJUSTIFICATION    0x020A
  546. #define META_SETWINDOWORG            0x020B
  547. #define META_SETWINDOWEXT            0x020C
  548. #define META_SETVIEWPORTORG          0x020D
  549. #define META_SETVIEWPORTEXT          0x020E
  550. #define META_OFFSETWINDOWORG         0x020F
  551. #define META_SCALEWINDOWEXT          0x0400
  552. #define META_OFFSETVIEWPORTORG       0x0211
  553. #define META_SCALEVIEWPORTEXT        0x0412
  554. #define META_LINETO                  0x0213
  555. #define META_MOVETO                  0x0214
  556. #define META_EXCLUDECLIPRECT         0x0415
  557. #define META_INTERSECTCLIPRECT       0x0416
  558. #define META_ARC                     0x0817
  559. #define META_ELLIPSE                 0x0418
  560. #define META_FLOODFILL               0x0419
  561. #define META_PIE                     0x081A
  562. #define META_RECTANGLE               0x041B
  563. #define META_ROUNDRECT               0x061C
  564. #define META_PATBLT                  0x061D
  565. #define META_SAVEDC                  0x001E
  566. #define META_SETPIXEL                0x041F
  567. #define META_OFFSETCLIPRGN           0x0220
  568. #define META_TEXTOUT                 0x0521
  569. #define META_BITBLT                  0x0922
  570. #define META_STRETCHBLT              0x0B23
  571. #define META_POLYGON                 0x0324
  572. #define META_POLYLINE                0x0325
  573. #define META_ESCAPE                  0x0626
  574. #define META_RESTOREDC               0x0127
  575. #define META_FILLREGION              0x0228
  576. #define META_FRAMEREGION             0x0429
  577. #define META_INVERTREGION            0x012A
  578. #define META_PAINTREGION             0x012B
  579. #define META_SELECTCLIPREGION        0x012C
  580. #define META_SELECTOBJECT            0x012D
  581. #define META_SETTEXTALIGN            0x012E
  582. #define META_DRAWTEXT                0x062F
  583. #define META_CHORD                   0x0830
  584. #define META_SETMAPPERFLAGS          0x0231
  585. #define META_EXTTEXTOUT              0x0a32 
  586. #define META_SETDIBTODEV             0x0d33
  587. #define META_SELECTPALETTE           0x0234
  588. #define META_REALIZEPALETTE          0x0035
  589. #define META_ANIMATEPALETTE          0x0436
  590. #define META_SETPALENTRIES           0x0037
  591. #define META_POLYPOLYGON             0x0538
  592. #define META_RESIZEPALETTE           0x0139
  593. #define META_DIBBITBLT               0x0940
  594. #define META_DIBSTRETCHBLT           0x0b41
  595. #define META_DIBCREATEPATTERNBRUSH   0x0142
  596. #define META_STRETCHDIB              0x0f43
  597. #define META_DELETEOBJECT            0x01f0
  598. #define META_CREATEPALETTE           0x00f7
  599. #define META_CREATEBRUSH             0x00F8
  600. #define META_CREATEPATTERNBRUSH      0x01F9
  601. #define META_CREATEPENINDIRECT       0x02FA
  602. #define META_CREATEFONTINDIRECT      0x02FB
  603. #define META_CREATEBRUSHINDIRECT     0x02FC
  604. #define META_CREATEBITMAPINDIRECT    0x02FD
  605. #define META_CREATEBITMAP            0x06FE
  606. #define META_CREATEREGION            0x06FF
  607. #endif /* NOMETAFILE */
  608. /* GDI Escapes */
  609. #define NEWFRAME                     1
  610. #define ABORTDOC                     2
  611. #define NEXTBAND                     3
  612. #define SETCOLORTABLE                4
  613. #define GETCOLORTABLE                5
  614. #define FLUSHOUTPUT                  6
  615. #define DRAFTMODE                    7
  616. #define QUERYESCSUPPORT              8
  617. #define SETABORTPROC                 9
  618. #define STARTDOC                     10
  619. #define ENDDOC                       11
  620. #define GETPHYSPAGESIZE              12
  621. #define GETPRINTINGOFFSET            13
  622. #define GETSCALINGFACTOR             14
  623. #define MFCOMMENT                    15
  624. #define GETPENWIDTH                  16
  625. #define SETCOPYCOUNT                 17
  626. #define SELECTPAPERSOURCE            18
  627. #define DEVICEDATA                   19
  628. #define PASSTHROUGH                  19
  629. #define GETTECHNOLGY                 20
  630. #define GETTECHNOLOGY                20
  631. #define SETENDCAP                    21
  632. #define SETLINEJOIN                  22
  633. #define SETMITERLIMIT                23
  634. #define BANDINFO                     24
  635. #define DRAWPATTERNRECT              25
  636. #define GETVECTORPENSIZE             26
  637. #define GETVECTORBRUSHSIZE           27
  638. #define ENABLEDUPLEX                 28
  639. #define GETSETPAPERBINS              29
  640. #define GETSETPRINTORIENT            30
  641. #define ENUMPAPERBINS                31
  642. #define SETDIBSCALING                32
  643. #define EPSPRINTING                  33
  644. #define ENUMPAPERMETRICS             34
  645. #define GETSETPAPERMETRICS           35
  646. #define POSTSCRIPT_DATA              37
  647. #define POSTSCRIPT_IGNORE            38
  648. #define GETEXTENDEDTEXTMETRICS       256
  649. #define GETEXTENTTABLE               257
  650. #define GETPAIRKERNTABLE             258
  651. #define GETTRACKKERNTABLE            259
  652. #define EXTTEXTOUT                   512
  653. #define ENABLERELATIVEWIDTHS         768
  654. #define ENABLEPAIRKERNING            769
  655. #define SETKERNTRACK                 770
  656. #define SETALLJUSTVALUES             771
  657. #define SETCHARSET                   772
  658. #define STRETCHBLT                   2048
  659. #define BEGIN_PATH                   4096
  660. #define CLIP_TO_PATH                 4097
  661. #define END_PATH                     4098
  662. #define EXT_DEVICE_CAPS              4099
  663. #define RESTORE_CTM                  4100
  664. #define SAVE_CTM                     4101
  665. #define SET_ARC_DIRECTION            4102
  666. #define SET_BACKGROUND_COLOR         4103
  667. #define SET_POLY_MODE                4104
  668. #define SET_SCREEN_ANGLE             4105
  669. #define SET_SPREAD                   4106
  670. #define TRANSFORM_CTM                4107
  671. #define SET_CLIP_BOX                 4108
  672. #define SET_BOUNDS                   4109
  673. #define SET_MIRROR_MODE              4110
  674. /* Spooler Error Codes */
  675. #define SP_NOTREPORTED               0x4000
  676. #define SP_ERROR                     (-1)
  677. #define SP_APPABORT                  (-2)
  678. #define SP_USERABORT                 (-3)
  679. #define SP_OUTOFDISK                 (-4)
  680. #define SP_OUTOFMEMORY               (-5)
  681. #define PR_JOBSTATUS                 0x0000
  682. /* Object Definitions for EnumObjects() */
  683. #define OBJ_PEN                      1
  684. #define OBJ_BRUSH                    2
  685. /* Bitmap Header Definition */
  686. typedef struct tagBITMAP
  687.   {
  688.     int         bmType;
  689.     int         bmWidth;
  690.     int         bmHeight;
  691.     int         bmWidthBytes;
  692.     BYTE        bmPlanes;
  693.     BYTE        bmBitsPixel;
  694.     LPSTR       bmBits;
  695.   } BITMAP;
  696. typedef BITMAP              *PBITMAP;
  697. typedef BITMAP NEAR         *NPBITMAP;
  698. typedef BITMAP FAR          *LPBITMAP;
  699. typedef struct tagRGBTRIPLE {
  700.         BYTE    rgbtBlue;
  701.         BYTE    rgbtGreen;
  702.         BYTE    rgbtRed;
  703. } RGBTRIPLE;
  704. typedef struct tagRGBQUAD {
  705.         BYTE    rgbBlue;
  706.         BYTE    rgbGreen;
  707.         BYTE    rgbRed;
  708.         BYTE    rgbReserved;
  709. } RGBQUAD;
  710. /* structures for defining DIBs */
  711. typedef struct tagBITMAPCOREHEADER {
  712.         DWORD   bcSize;                 /* used to get to color table */
  713.         WORD    bcWidth;
  714.         WORD    bcHeight;
  715.         WORD    bcPlanes;
  716.         WORD    bcBitCount;
  717. } BITMAPCOREHEADER;
  718. typedef BITMAPCOREHEADER FAR *LPBITMAPCOREHEADER;
  719. typedef BITMAPCOREHEADER *PBITMAPCOREHEADER;
  720. typedef struct tagBITMAPINFOHEADER{
  721.         DWORD      biSize;
  722.         DWORD      biWidth;
  723.         DWORD      biHeight;
  724.         WORD       biPlanes;
  725.         WORD       biBitCount;
  726.         DWORD      biCompression;
  727.         DWORD      biSizeImage;
  728.         DWORD      biXPelsPerMeter;
  729.         DWORD      biYPelsPerMeter;
  730.         DWORD      biClrUsed;
  731.         DWORD      biClrImportant;
  732. } BITMAPINFOHEADER;
  733. typedef BITMAPINFOHEADER FAR *LPBITMAPINFOHEADER;
  734. typedef BITMAPINFOHEADER *PBITMAPINFOHEADER;
  735. /* constants for the biCompression field */
  736. #define BI_RGB      0L
  737. #define BI_RLE8     1L
  738. #define BI_RLE4     2L
  739. typedef struct tagBITMAPINFO { 
  740.     BITMAPINFOHEADER    bmiHeader;
  741.     RGBQUAD             bmiColors[1];
  742. } BITMAPINFO;
  743. typedef BITMAPINFO FAR *LPBITMAPINFO;
  744. typedef BITMAPINFO *PBITMAPINFO;
  745. typedef struct tagBITMAPCOREINFO { 
  746.     BITMAPCOREHEADER    bmciHeader;
  747.     RGBTRIPLE           bmciColors[1];
  748. } BITMAPCOREINFO;
  749. typedef BITMAPCOREINFO FAR *LPBITMAPCOREINFO;
  750. typedef BITMAPCOREINFO *PBITMAPCOREINFO;
  751. typedef struct tagBITMAPFILEHEADER {
  752.         WORD    bfType;
  753.         DWORD   bfSize;
  754.         WORD    bfReserved1;
  755.         WORD    bfReserved2;
  756.         DWORD   bfOffBits;
  757. } BITMAPFILEHEADER;
  758. typedef BITMAPFILEHEADER FAR *LPBITMAPFILEHEADER;
  759. typedef BITMAPFILEHEADER *PBITMAPFILEHEADER;
  760. #define MAKEPOINT(l)        (*((POINT FAR *)&(l)))
  761. #ifndef NOMETAFILE
  762. /* Clipboard Metafile Picture Structure */
  763. typedef struct tagHANDLETABLE
  764.   {
  765.     HANDLE      objectHandle[1];
  766.   } HANDLETABLE;
  767. typedef HANDLETABLE         *PHANDLETABLE;
  768. typedef HANDLETABLE FAR     *LPHANDLETABLE;
  769. typedef struct tagMETARECORD
  770.   {
  771.     DWORD       rdSize;
  772.     WORD        rdFunction;
  773.     WORD        rdParm[1];
  774.   } METARECORD;
  775. typedef METARECORD          *PMETARECORD;
  776. typedef METARECORD FAR      *LPMETARECORD;
  777. typedef struct tagMETAFILEPICT
  778.   {
  779.     int         mm;
  780.     int         xExt;
  781.     int         yExt;
  782.     HANDLE      hMF;
  783.   } METAFILEPICT;
  784. typedef METAFILEPICT FAR    *LPMETAFILEPICT;
  785. typedef struct tagMETAHEADER
  786. {
  787.     WORD        mtType;
  788.     WORD        mtHeaderSize;
  789.     WORD        mtVersion;
  790.     DWORD       mtSize;
  791.     WORD        mtNoObjects;
  792.     DWORD       mtMaxRecord;
  793.     WORD        mtNoParameters;
  794. } METAHEADER;
  795. #endif /* NOMETAFILE */
  796. #ifndef NOTEXTMETRIC
  797. typedef struct tagTEXTMETRIC
  798.   {
  799.     int         tmHeight;
  800.     int         tmAscent;
  801.     int         tmDescent;
  802.     int         tmInternalLeading;
  803.     int         tmExternalLeading;
  804.     int         tmAveCharWidth;
  805.     int         tmMaxCharWidth;
  806.     int         tmWeight;
  807.     BYTE        tmItalic;
  808.     BYTE        tmUnderlined;
  809.     BYTE        tmStruckOut;
  810.     BYTE        tmFirstChar;
  811.     BYTE        tmLastChar;
  812.     BYTE        tmDefaultChar;
  813.     BYTE        tmBreakChar;
  814.     BYTE        tmPitchAndFamily;
  815.     BYTE        tmCharSet;
  816.     int         tmOverhang;
  817.     int         tmDigitizedAspectX;
  818.     int         tmDigitizedAspectY;
  819.   } TEXTMETRIC;
  820. typedef TEXTMETRIC          *PTEXTMETRIC;
  821. typedef TEXTMETRIC NEAR     *NPTEXTMETRIC;
  822. typedef TEXTMETRIC FAR      *LPTEXTMETRIC;
  823. #endif /* NOTEXTMETRIC */
  824. /* GDI Logical Objects: */
  825. /* Pel Array */
  826. typedef struct tagPELARRAY
  827.   {
  828.     int         paXCount;
  829.     int         paYCount;
  830.     int         paXExt;
  831.     int         paYExt;
  832.     BYTE        paRGBs;
  833.   } PELARRAY;
  834. typedef PELARRAY            *PPELARRAY;
  835. typedef PELARRAY NEAR       *NPPELARRAY;
  836. typedef PELARRAY FAR        *LPPELARRAY;
  837. /* Logical Brush (or Pattern) */
  838. typedef struct tagLOGBRUSH
  839.   {
  840.     WORD        lbStyle;
  841.     DWORD       lbColor;
  842.     int       lbHatch;
  843.   } LOGBRUSH;
  844. typedef LOGBRUSH            *PLOGBRUSH;
  845. typedef LOGBRUSH NEAR       *NPLOGBRUSH;
  846. typedef LOGBRUSH FAR        *LPLOGBRUSH;
  847. typedef LOGBRUSH            PATTERN;
  848. typedef PATTERN             *PPATTERN;
  849. typedef PATTERN NEAR        *NPPATTERN;
  850. typedef PATTERN FAR         *LPPATTERN;
  851. /* Logical Pen */
  852. typedef struct tagLOGPEN
  853.   {
  854.     WORD        lopnStyle;
  855.     POINT       lopnWidth;
  856.     DWORD       lopnColor;
  857.   } LOGPEN;
  858. typedef LOGPEN              *PLOGPEN;
  859. typedef LOGPEN NEAR         *NPLOGPEN;
  860. typedef LOGPEN FAR          *LPLOGPEN;
  861. typedef struct tagPALETTEENTRY {
  862.     BYTE        peRed;
  863.     BYTE        peGreen;
  864.     BYTE        peBlue;
  865.     BYTE        peFlags;
  866. } PALETTEENTRY;
  867. typedef PALETTEENTRY FAR  *LPPALETTEENTRY;
  868. /* Logical Palette */
  869. typedef struct tagLOGPALETTE {
  870.     WORD        palVersion;
  871.     WORD        palNumEntries;
  872.     PALETTEENTRY        palPalEntry[1];
  873. } LOGPALETTE;
  874. typedef LOGPALETTE          *PLOGPALETTE;
  875. typedef LOGPALETTE NEAR     *NPLOGPALETTE;
  876. typedef LOGPALETTE FAR      *LPLOGPALETTE;
  877. /* Logical Font */
  878. #define LF_FACESIZE         32
  879. typedef struct tagLOGFONT
  880.   {
  881.     int       lfHeight;
  882.     int       lfWidth;
  883.     int       lfEscapement;
  884.     int       lfOrientation;
  885.     int       lfWeight;
  886.     BYTE      lfItalic;
  887.     BYTE      lfUnderline;
  888.     BYTE      lfStrikeOut;
  889.     BYTE      lfCharSet;
  890.     BYTE      lfOutPrecision;
  891.     BYTE      lfClipPrecision;
  892.     BYTE      lfQuality;
  893.     BYTE      lfPitchAndFamily;
  894.     BYTE      lfFaceName[LF_FACESIZE];
  895.   } LOGFONT;
  896. typedef LOGFONT             *PLOGFONT;
  897. typedef LOGFONT NEAR        *NPLOGFONT;
  898. typedef LOGFONT FAR         *LPLOGFONT;
  899. #define OUT_DEFAULT_PRECIS      0
  900. #define OUT_STRING_PRECIS       1
  901. #define OUT_CHARACTER_PRECIS    2
  902. #define OUT_STROKE_PRECIS       3
  903. #define CLIP_DEFAULT_PRECIS     0
  904. #define CLIP_CHARACTER_PRECIS   1
  905. #define CLIP_STROKE_PRECIS      2
  906. #define DEFAULT_QUALITY         0
  907. #define DRAFT_QUALITY           1
  908. #define PROOF_QUALITY           2
  909. #define DEFAULT_PITCH           0
  910. #define FIXED_PITCH             1
  911. #define VARIABLE_PITCH          2
  912. #define ANSI_CHARSET            0
  913. #define SYMBOL_CHARSET          2
  914. #define SHIFTJIS_CHARSET        128
  915. #define OEM_CHARSET             255
  916. /* Font Families */
  917. #define FF_DONTCARE         (0<<4)  /* Don't care or don't know. */
  918. #define FF_ROMAN            (1<<4)  /* Variable stroke width, serifed. */
  919.                                     /* Times Roman, Century Schoolbook, etc. */
  920. #define FF_SWISS            (2<<4)  /* Variable stroke width, sans-serifed. */
  921.                                     /* Helvetica, Swiss, etc. */
  922. #define FF_MODERN           (3<<4)  /* Constant stroke width, serifed or sans-serifed. */
  923.                                     /* Pica, Elite, Courier, etc. */
  924. #define FF_SCRIPT           (4<<4)  /* Cursive, etc. */
  925. #define FF_DECORATIVE       (5<<4)  /* Old English, etc. */
  926. /* Font Weights */
  927. #define FW_DONTCARE         0
  928. #define FW_THIN             100
  929. #define FW_EXTRALIGHT       200
  930. #define FW_LIGHT            300
  931. #define FW_NORMAL           400
  932. #define FW_MEDIUM           500
  933. #define FW_SEMIBOLD         600
  934. #define FW_BOLD             700
  935. #define FW_EXTRABOLD        800
  936. #define FW_HEAVY            900
  937. #define FW_ULTRALIGHT       FW_EXTRALIGHT
  938. #define FW_REGULAR          FW_NORMAL
  939. #define FW_DEMIBOLD         FW_SEMIBOLD
  940. #define FW_ULTRABOLD        FW_EXTRABOLD
  941. #define FW_BLACK            FW_HEAVY
  942. /* EnumFonts Masks */
  943. #define RASTER_FONTTYPE     0x0001
  944. #define DEVICE_FONTTYPE     0X0002
  945. #define RGB(r,g,b)          ((DWORD)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16)))
  946. #define PALETTERGB(r,g,b)   (0x02000000UL | RGB(r,g,b))
  947. #define PALETTEINDEX(i)     ((DWORD)(0x01000000UL | (WORD)(i)))
  948. #define GetRValue(rgb)      ((BYTE)(rgb))
  949. #define GetGValue(rgb)      ((BYTE)(((WORD)(rgb)) >> 8))
  950. #define GetBValue(rgb)      ((BYTE)((rgb)>>16))
  951. /* Background Modes */
  952. #define TRANSPARENT         1
  953. #define OPAQUE              2
  954. /* Mapping Modes */
  955. #define MM_TEXT             1
  956. #define MM_LOMETRIC         2
  957. #define MM_HIMETRIC         3
  958. #define MM_LOENGLISH        4
  959. #define MM_HIENGLISH        5
  960. #define MM_TWIPS            6
  961. #define MM_ISOTROPIC        7
  962. #define MM_ANISOTROPIC      8
  963. /* Coordinate Modes */
  964. #define ABSOLUTE            1
  965. #define RELATIVE            2
  966. /* Stock Logical Objects */
  967. #define WHITE_BRUSH         0
  968. #define LTGRAY_BRUSH        1
  969. #define GRAY_BRUSH          2
  970. #define DKGRAY_BRUSH        3
  971. #define BLACK_BRUSH         4
  972. #define NULL_BRUSH          5
  973. #define HOLLOW_BRUSH        NULL_BRUSH
  974. #define WHITE_PEN           6
  975. #define BLACK_PEN           7
  976. #define NULL_PEN            8
  977. #define OEM_FIXED_FONT      10
  978. #define ANSI_FIXED_FONT     11
  979. #define ANSI_VAR_FONT       12
  980. #define SYSTEM_FONT         13
  981. #define DEVICE_DEFAULT_FONT 14
  982. #define DEFAULT_PALETTE     15
  983. #define SYSTEM_FIXED_FONT   16
  984. /* Brush Styles */
  985. #define BS_SOLID            0
  986. #define BS_NULL             1
  987. #define BS_HOLLOW           BS_NULL
  988. #define BS_HATCHED          2
  989. #define BS_PATTERN          3
  990. #define BS_INDEXED          4
  991. #define BS_DIBPATTERN       5
  992. /* Hatch Styles */
  993. #define HS_HORIZONTAL       0       /* ----- */
  994. #define HS_VERTICAL         1       /* ||||| */
  995. #define HS_FDIAGONAL        2       /* \\ */
  996. #define HS_BDIAGONAL        3       /* ///// */
  997. #define HS_CROSS            4       /* +++++ */
  998. #define HS_DIAGCROSS        5       /* xxxxx */
  999. /* Pen Styles */
  1000. #define PS_SOLID            0
  1001. #define PS_DASH             1       /* -------  */
  1002. #define PS_DOT              2       /* .......  */
  1003. #define PS_DASHDOT          3       /* _._._._  */
  1004. #define PS_DASHDOTDOT       4       /* _.._.._  */
  1005. #define PS_NULL             5
  1006. #define PS_INSIDEFRAME      6
  1007. /* Device Parameters for GetDeviceCaps() */
  1008. #define DRIVERVERSION 0     /* Device driver version                    */
  1009. #define TECHNOLOGY    2     /* Device classification                    */
  1010. #define HORZSIZE      4     /* Horizontal size in millimeters           */
  1011. #define VERTSIZE      6     /* Vertical size in millimeters             */
  1012. #define HORZRES       8     /* Horizontal width in pixels               */
  1013. #define VERTRES       10    /* Vertical width in pixels                 */
  1014. #define BITSPIXEL     12    /* Number of bits per pixel                 */
  1015. #define PLANES        14    /* Number of planes                         */
  1016. #define NUMBRUSHES    16    /* Number of brushes the device has         */
  1017. #define NUMPENS       18    /* Number of pens the device has            */
  1018. #define NUMMARKERS    20    /* Number of markers the device has         */
  1019. #define NUMFONTS      22    /* Number of fonts the device has           */
  1020. #define NUMCOLORS     24    /* Number of colors the device supports     */
  1021. #define PDEVICESIZE   26    /* Size required for device descriptor      */
  1022. #define CURVECAPS     28    /* Curve capabilities                       */
  1023. #define LINECAPS      30    /* Line capabilities                        */
  1024. #define POLYGONALCAPS 32    /* Polygonal capabilities                   */
  1025. #define TEXTCAPS      34    /* Text capabilities                        */
  1026. #define CLIPCAPS      36    /* Clipping capabilities                    */
  1027. #define RASTERCAPS    38    /* Bitblt capabilities                      */
  1028. #define ASPECTX       40    /* Length of the X leg                      */
  1029. #define ASPECTY       42    /* Length of the Y leg                      */
  1030. #define ASPECTXY      44    /* Length of the hypotenuse                 */
  1031. #define LOGPIXELSX    88    /* Logical pixels/inch in X                 */
  1032. #define LOGPIXELSY    90    /* Logical pixels/inch in Y                 */
  1033. #define SIZEPALETTE  104    /* Number of entries in physical palette    */
  1034. #define NUMRESERVED  106    /* Number of reserved entries in palette    */
  1035. #define COLORRES     108    /* Actual color resolution                  */
  1036. #ifndef NOGDICAPMASKS
  1037. /* Device Capability Masks: */
  1038. /* Device Technologies */
  1039. #define DT_PLOTTER          0   /* Vector plotter                   */
  1040. #define DT_RASDISPLAY       1   /* Raster display                   */
  1041. #define DT_RASPRINTER       2   /* Raster printer                   */
  1042. #define DT_RASCAMERA        3   /* Raster camera                    */
  1043. #define DT_CHARSTREAM       4   /* Character-stream, PLP            */
  1044. #define DT_METAFILE         5   /* Metafile, VDM                    */
  1045. #define DT_DISPFILE         6   /* Display-file                     */
  1046. /* Curve Capabilities */
  1047. #define CC_NONE             0   /* Curves not supported             */
  1048. #define CC_CIRCLES          1   /* Can do circles                   */
  1049. #define CC_PIE              2   /* Can do pie wedges                */
  1050. #define CC_CHORD            4   /* Can do chord arcs                */
  1051. #define CC_ELLIPSES         8   /* Can do ellipese                  */
  1052. #define CC_WIDE             16  /* Can do wide lines                */
  1053. #define CC_STYLED           32  /* Can do styled lines              */
  1054. #define CC_WIDESTYLED       64  /* Can do wide styled lines         */
  1055. #define CC_INTERIORS        128 /* Can do interiors                 */
  1056. /* Line Capabilities */
  1057. #define LC_NONE             0   /* Lines not supported              */
  1058. #define LC_POLYLINE         2   /* Can do polylines                 */
  1059. #define LC_MARKER           4   /* Can do markers                   */
  1060. #define LC_POLYMARKER       8   /* Can do polymarkers               */
  1061. #define LC_WIDE             16  /* Can do wide lines                */
  1062. #define LC_STYLED           32  /* Can do styled lines              */
  1063. #define LC_WIDESTYLED       64  /* Can do wide styled lines         */
  1064. #define LC_INTERIORS        128 /* Can do interiors                 */
  1065. /* Polygonal Capabilities */
  1066. #define PC_NONE             0   /* Polygonals not supported         */
  1067. #define PC_POLYGON          1   /* Can do polygons                  */
  1068. #define PC_RECTANGLE        2   /* Can do rectangles                */
  1069. #define PC_WINDPOLYGON      4   /* Can do winding polygons          */
  1070. #define PC_TRAPEZOID        4   /* Can do trapezoids                */
  1071. #define PC_SCANLINE         8   /* Can do scanlines                 */
  1072. #define PC_WIDE             16  /* Can do wide borders              */
  1073. #define PC_STYLED           32  /* Can do styled borders            */
  1074. #define PC_WIDESTYLED       64  /* Can do wide styled borders       */
  1075. #define PC_INTERIORS        128 /* Can do interiors                 */
  1076. /* Polygonal Capabilities */
  1077. #define CP_NONE             0   /* No clipping of output            */
  1078. #define CP_RECTANGLE        1   /* Output clipped to rects          */
  1079. /* Text Capabilities */
  1080. #define TC_OP_CHARACTER     0x0001  /* Can do OutputPrecision   CHARACTER      */
  1081. #define TC_OP_STROKE        0x0002  /* Can do OutputPrecision   STROKE         */
  1082. #define TC_CP_STROKE        0x0004  /* Can do ClipPrecision     STROKE         */
  1083. #define TC_CR_90            0x0008  /* Can do CharRotAbility    90             */
  1084. #define TC_CR_ANY           0x0010  /* Can do CharRotAbility    ANY            */
  1085. #define TC_SF_X_YINDEP      0x0020  /* Can do ScaleFreedom      X_YINDEPENDENT */
  1086. #define TC_SA_DOUBLE        0x0040  /* Can do ScaleAbility      DOUBLE         */
  1087. #define TC_SA_INTEGER       0x0080  /* Can do ScaleAbility      INTEGER        */
  1088. #define TC_SA_CONTIN        0x0100  /* Can do ScaleAbility      CONTINUOUS     */
  1089. #define TC_EA_DOUBLE        0x0200  /* Can do EmboldenAbility   DOUBLE         */
  1090. #define TC_IA_ABLE          0x0400  /* Can do ItalisizeAbility  ABLE           */
  1091. #define TC_UA_ABLE          0x0800  /* Can do UnderlineAbility  ABLE           */
  1092. #define TC_SO_ABLE          0x1000  /* Can do StrikeOutAbility  ABLE           */
  1093. #define TC_RA_ABLE          0x2000  /* Can do RasterFontAble    ABLE           */
  1094. #define TC_VA_ABLE          0x4000  /* Can do VectorFontAble    ABLE           */
  1095. #define TC_RESERVED         0x8000
  1096. #endif /* NOGDICAPMASKS */
  1097. /* Raster Capabilities */
  1098. #define RC_BITBLT           1       /* Can do standard BLT.             */
  1099. #define RC_BANDING          2       /* Device requires banding support  */
  1100. #define RC_SCALING          4       /* Device requires scaling support  */
  1101. #define RC_BITMAP64         8       /* Device can support >64K bitmap   */
  1102. #define RC_GDI20_OUTPUT     0x0010      /* has 2.0 output calls         */
  1103. #define RC_DI_BITMAP        0x0080      /* supports DIB to memory       */
  1104. #define RC_PALETTE          0x0100      /* supports a palette           */
  1105. #define RC_DIBTODEV         0x0200      /* supports DIBitsToDevice      */
  1106. #define RC_BIGFONT          0x0400      /* supports >64K fonts          */
  1107. #define RC_STRETCHBLT       0x0800      /* supports StretchBlt          */
  1108. #define RC_FLOODFILL        0x1000      /* supports FloodFill           */
  1109. #define RC_STRETCHDIB       0x2000      /* supports StretchDIBits       */
  1110. /* palette entry flags */
  1111. #define PC_RESERVED     0x01    /* palette index used for animation */
  1112. #define PC_EXPLICIT     0x02    /* palette index is explicit to device */
  1113. #define PC_NOCOLLAPSE   0x04    /* do not match color to system palette */
  1114. /* DIB color table identifiers */
  1115. #define DIB_RGB_COLORS  0       /* color table in RGBTriples */
  1116. #define DIB_PAL_COLORS  1       /* color table in palette indices */
  1117. /* constants for Get/SetSystemPaletteUse() */
  1118. #define SYSPAL_STATIC   1
  1119. #define SYSPAL_NOSTATIC 2
  1120. /* constants for CreateDIBitmap */
  1121. #define CBM_INIT        0x04L   /* initialize bitmap */
  1122. #ifndef NODRAWTEXT
  1123. /* DrawText() Format Flags */
  1124. #define DT_TOP              0x0000
  1125. #define DT_LEFT             0x0000
  1126. #define DT_CENTER           0x0001
  1127. #define DT_RIGHT            0x0002
  1128. #define DT_VCENTER          0x0004
  1129. #define DT_BOTTOM           0x0008
  1130. #define DT_WORDBREAK        0x0010
  1131. #define DT_SINGLELINE       0x0020
  1132. #define DT_EXPANDTABS       0x0040
  1133. #define DT_TABSTOP          0x0080
  1134. #define DT_NOCLIP           0x0100
  1135. #define DT_EXTERNALLEADING  0x0200
  1136. #define DT_CALCRECT         0x0400
  1137. #define DT_NOPREFIX         0x0800
  1138. #define DT_INTERNAL         0x1000
  1139. int  FAR PASCAL DrawText(HDC, LPSTR, int, LPRECT, WORD);
  1140. BOOL FAR PASCAL DrawIcon(HDC, int, int, HICON);
  1141. #endif /* NODRAWTEXT */
  1142. /* ExtFloodFill style flags */
  1143. #define  FLOODFILLBORDER   0
  1144. #define  FLOODFILLSURFACE  1
  1145. HDC   FAR PASCAL GetWindowDC(HWND);
  1146. HDC   FAR PASCAL GetDC(HWND);
  1147. int   FAR PASCAL ReleaseDC(HWND, HDC);
  1148. HDC   FAR PASCAL CreateDC(LPSTR, LPSTR, LPSTR, LPSTR);
  1149. HDC   FAR PASCAL CreateIC(LPSTR, LPSTR, LPSTR, LPSTR);
  1150. HDC   FAR PASCAL CreateCompatibleDC(HDC);
  1151. BOOL  FAR PASCAL DeleteDC(HDC);
  1152. int   FAR PASCAL SaveDC(HDC);
  1153. BOOL  FAR PASCAL RestoreDC(HDC, int);
  1154. DWORD FAR PASCAL MoveTo(HDC, int, int);
  1155. DWORD FAR PASCAL GetCurrentPosition(HDC);
  1156. BOOL  FAR PASCAL LineTo(HDC, int, int);
  1157. DWORD FAR PASCAL GetDCOrg(HDC);
  1158. int   FAR PASCAL MulDiv(int, int, int);
  1159. BOOL FAR PASCAL ExtTextOut(HDC, int, int, WORD, LPRECT, LPSTR, WORD, LPINT);
  1160. BOOL FAR PASCAL Polyline(HDC, LPPOINT, int);
  1161. BOOL FAR PASCAL Polygon(HDC, LPPOINT, int);
  1162. BOOL FAR PASCAL PolyPolygon(HDC, LPPOINT, LPINT, int);
  1163. BOOL  FAR PASCAL Rectangle(HDC, int, int, int, int);
  1164. BOOL  FAR PASCAL RoundRect(HDC, int, int, int, int, int, int);
  1165. BOOL  FAR PASCAL Ellipse(HDC, int, int, int, int);
  1166. BOOL  FAR PASCAL Arc(HDC, int, int, int, int, int, int, int, int);
  1167. BOOL  FAR PASCAL Chord(HDC, int, int, int, int, int, int, int, int);
  1168. BOOL  FAR PASCAL Pie(HDC, int, int, int, int, int, int, int, int);
  1169. BOOL  FAR PASCAL PatBlt(HDC, int, int, int, int, DWORD);
  1170. BOOL  FAR PASCAL BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD);
  1171. BOOL  FAR PASCAL StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD);
  1172. BOOL  FAR PASCAL TextOut(HDC, int, int, LPSTR, int);
  1173. LONG  FAR PASCAL TabbedTextOut(HDC, int, int, LPSTR, int, int, LPINT, int);
  1174. BOOL  FAR PASCAL GetCharWidth(HDC, WORD, WORD, LPINT);
  1175. DWORD FAR PASCAL SetPixel( HDC, int, int, DWORD);
  1176. DWORD FAR PASCAL GetPixel( HDC, int, int);
  1177. BOOL  FAR PASCAL FloodFill( HDC, int, int, DWORD);
  1178. BOOL  FAR PASCAL ExtFloodFill(HDC, int, int, DWORD, WORD);
  1179. void  FAR PASCAL LineDDA(int, int, int, int, FARPROC, LPSTR);
  1180. HANDLE FAR PASCAL GetStockObject(int);
  1181. HPEN FAR PASCAL CreatePen(int, int, DWORD);
  1182. HPEN FAR PASCAL CreatePenIndirect(LOGPEN FAR *);
  1183. HBRUSH FAR PASCAL CreateSolidBrush(DWORD);
  1184. HBRUSH FAR PASCAL CreateHatchBrush(int,DWORD);
  1185. DWORD  FAR PASCAL SetBrushOrg(HDC, int, int);
  1186. DWORD  FAR PASCAL GetBrushOrg(HDC);
  1187. HBRUSH FAR PASCAL CreatePatternBrush(HBITMAP);
  1188. HBRUSH FAR PASCAL CreateBrushIndirect(LOGBRUSH FAR *);
  1189. HBITMAP FAR PASCAL CreateBitmap(int, int, BYTE, BYTE, LPSTR);
  1190. HBITMAP FAR PASCAL CreateBitmapIndirect(BITMAP FAR *);
  1191. HBITMAP FAR PASCAL CreateCompatibleBitmap(HDC, int, int);
  1192. HBITMAP FAR PASCAL CreateDiscardableBitmap(HDC, int, int);
  1193. LONG  FAR PASCAL SetBitmapBits(HBITMAP, DWORD, LPSTR);
  1194. LONG  FAR PASCAL GetBitmapBits(HBITMAP, LONG, LPSTR);
  1195. DWORD FAR PASCAL SetBitmapDimension(HBITMAP, int, int);
  1196. DWORD FAR PASCAL GetBitmapDimension(HBITMAP);
  1197. HFONT FAR PASCAL CreateFont(int, int, int, int, int, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, LPSTR);
  1198. HFONT FAR PASCAL CreateFontIndirect(LOGFONT FAR *);
  1199. int  FAR PASCAL SelectClipRgn(HDC, HRGN);
  1200. HRGN FAR PASCAL CreateRectRgn(int, int, int, int);
  1201. void FAR PASCAL SetRectRgn(HRGN, int, int, int, int);
  1202. HRGN FAR PASCAL CreateRectRgnIndirect(LPRECT);
  1203. HRGN FAR PASCAL CreateEllipticRgnIndirect(LPRECT);
  1204. HRGN FAR PASCAL CreateEllipticRgn(int, int, int, int);
  1205. HRGN FAR PASCAL CreatePolygonRgn(LPPOINT, int, int);
  1206. HRGN FAR PASCAL CreatePolyPolygonRgn(LPPOINT, LPINT, int, int);
  1207. HRGN FAR PASCAL CreateRoundRectRgn(int, int, int, int, int, int);
  1208. int    FAR PASCAL GetObject(HANDLE, int, LPSTR);
  1209. BOOL   FAR PASCAL DeleteObject(HANDLE);
  1210. HANDLE FAR PASCAL SelectObject(HDC, HANDLE);
  1211. BOOL   FAR PASCAL UnrealizeObject(HBRUSH);
  1212. DWORD FAR PASCAL SetBkColor(HDC, DWORD);
  1213. DWORD FAR PASCAL GetBkColor(HDC);
  1214. int   FAR PASCAL SetBkMode(HDC, int);
  1215. int   FAR PASCAL GetBkMode(HDC);
  1216. DWORD FAR PASCAL SetTextColor(HDC, DWORD);
  1217. DWORD FAR PASCAL GetTextColor(HDC);
  1218. WORD  FAR PASCAL SetTextAlign(HDC, WORD);
  1219. WORD  FAR PASCAL GetTextAlign(HDC);
  1220. DWORD FAR PASCAL SetMapperFlags(HDC, DWORD);
  1221. DWORD FAR PASCAL GetAspectRatioFilter(HDC);
  1222. DWORD FAR PASCAL GetNearestColor(HDC, DWORD);
  1223. int   FAR PASCAL SetROP2(HDC, int);
  1224. int   FAR PASCAL GetROP2(HDC);
  1225. int   FAR PASCAL SetStretchBltMode(HDC, int);
  1226. int   FAR PASCAL GetStretchBltMode(HDC);
  1227. int   FAR PASCAL SetPolyFillMode(HDC, int);
  1228. int   FAR PASCAL GetPolyFillMode(HDC);
  1229. int   FAR PASCAL SetMapMode(HDC, int);
  1230. int   FAR PASCAL GetMapMode(HDC);
  1231. DWORD FAR PASCAL SetWindowOrg(HDC, int, int);
  1232. DWORD FAR PASCAL GetWindowOrg(HDC);
  1233. DWORD FAR PASCAL SetWindowExt(HDC, int, int);
  1234. DWORD FAR PASCAL GetWindowExt(HDC);
  1235. DWORD FAR PASCAL SetViewportOrg(HDC, int, int);
  1236. DWORD FAR PASCAL GetViewportOrg(HDC);
  1237. DWORD FAR PASCAL SetViewportExt(HDC, int, int);
  1238. DWORD FAR PASCAL GetViewportExt(HDC);
  1239. DWORD FAR PASCAL OffsetViewportOrg(HDC, int, int);
  1240. DWORD FAR PASCAL ScaleViewportExt(HDC, int, int, int, int);
  1241. DWORD FAR PASCAL OffsetWindowOrg(HDC, int, int);
  1242. DWORD FAR PASCAL ScaleWindowExt(HDC, int, int, int, int);
  1243. int  FAR PASCAL GetClipBox(HDC, LPRECT);
  1244. int  FAR PASCAL IntersectClipRect(HDC, int, int, int, int);
  1245. int  FAR PASCAL OffsetClipRgn(HDC, int, int);
  1246. int  FAR PASCAL ExcludeClipRect(HDC, int, int, int, int);
  1247. BOOL FAR PASCAL PtVisible(HDC, int, int);
  1248. int  FAR PASCAL CombineRgn(HRGN, HRGN, HRGN, int);
  1249. BOOL FAR PASCAL EqualRgn(HRGN, HRGN);
  1250. int  FAR PASCAL OffsetRgn(HRGN, int, int);
  1251. int  FAR PASCAL GetRgnBox(HRGN, LPRECT);
  1252. int   FAR PASCAL SetTextJustification(HDC, int, int);
  1253. DWORD FAR PASCAL GetTextExtent(HDC, LPSTR, int);
  1254. DWORD FAR PASCAL GetTabbedTextExtent(HDC, LPSTR, int, int, LPINT);
  1255. int   FAR PASCAL SetTextCharacterExtra(HDC, int);
  1256. int   FAR PASCAL GetTextCharacterExtra(HDC);
  1257. HANDLE FAR PASCAL GetMetaFile(LPSTR);
  1258. BOOL   FAR PASCAL DeleteMetaFile(HANDLE);
  1259. HANDLE FAR PASCAL CopyMetaFile(HANDLE, LPSTR);
  1260. #ifndef NOMETAFILE
  1261. void FAR PASCAL PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, WORD);
  1262. BOOL FAR PASCAL EnumMetaFile(HDC, LOCALHANDLE, FARPROC, BYTE FAR *);
  1263. #endif
  1264. BOOL FAR PASCAL PlayMetaFile(HDC, HANDLE);
  1265. int FAR PASCAL Escape(HDC, int, int, LPSTR, LPSTR);
  1266. int FAR PASCAL EnumFonts(HDC, LPSTR, FARPROC, LPSTR);
  1267. int FAR PASCAL EnumObjects(HDC, int, FARPROC, LPSTR);
  1268. int FAR PASCAL GetTextFace(HDC, int, LPSTR);
  1269. #ifndef NOTEXTMETRIC
  1270. BOOL FAR PASCAL GetTextMetrics(HDC, LPTEXTMETRIC );
  1271. #endif
  1272. int FAR PASCAL GetDeviceCaps(HDC, int);
  1273. int FAR PASCAL SetEnvironment(LPSTR, LPSTR, WORD);
  1274. int FAR PASCAL GetEnvironment(LPSTR, LPSTR, WORD);
  1275. BOOL FAR PASCAL DPtoLP(HDC, LPPOINT, int);
  1276. BOOL FAR PASCAL LPtoDP(HDC, LPPOINT, int);
  1277. HANDLE FAR PASCAL CreateMetaFile(LPSTR);
  1278. HANDLE FAR PASCAL CloseMetaFile(HANDLE);
  1279. HANDLE FAR PASCAL GetMetaFileBits(HANDLE);
  1280. HANDLE FAR PASCAL SetMetaFileBits(HANDLE);
  1281. int FAR PASCAL SetDIBits(HDC,HANDLE,WORD,WORD,LPSTR,LPBITMAPINFO,WORD);
  1282. int FAR PASCAL GetDIBits(HDC,HANDLE,WORD,WORD,LPSTR,LPBITMAPINFO,WORD);
  1283. int FAR PASCAL SetDIBitsToDevice(HDC,WORD,WORD,WORD,WORD,
  1284.                                         WORD,WORD,WORD,WORD,
  1285.                                         LPSTR,LPBITMAPINFO,WORD);
  1286. HBITMAP FAR PASCAL CreateDIBitmap(HDC,LPBITMAPINFOHEADER,DWORD,LPSTR,
  1287.                                                 LPBITMAPINFO,WORD);
  1288. HBRUSH FAR PASCAL CreateDIBPatternBrush(HANDLE,WORD);
  1289. int FAR PASCAL StretchDIBits(HDC, WORD, WORD, WORD, WORD, WORD, 
  1290.                         WORD, WORD, WORD, LPSTR, LPBITMAPINFO, WORD, DWORD);
  1291. HPALETTE FAR PASCAL CreatePalette (LPLOGPALETTE);
  1292. HPALETTE  FAR PASCAL SelectPalette (HDC,HPALETTE, BOOL) ;
  1293. WORD FAR PASCAL RealizePalette (HDC) ;
  1294. int  FAR PASCAL UpdateColors (HDC) ;
  1295. void FAR PASCAL AnimatePalette(HPALETTE, WORD, WORD, LPPALETTEENTRY);
  1296. WORD FAR PASCAL SetPaletteEntries(HPALETTE,WORD,WORD,LPPALETTEENTRY);
  1297. WORD FAR PASCAL GetPaletteEntries(HPALETTE,WORD,WORD,LPPALETTEENTRY);
  1298. WORD FAR PASCAL GetNearestPaletteIndex(HPALETTE, DWORD);
  1299. BOOL FAR PASCAL ResizePalette(HPALETTE, WORD);
  1300. WORD FAR PASCAL GetSystemPaletteEntries(HDC,WORD,WORD,LPPALETTEENTRY);
  1301. WORD FAR PASCAL GetSystemPaletteUse(HDC, WORD);
  1302. WORD FAR PASCAL SetSystemPaletteUse(HDC, WORD);
  1303. #endif /* NOGDI */
  1304. /*--------------------------------------------------------------------------*/
  1305. /*      USER Section                                                        */
  1306. /*--------------------------------------------------------------------------*/
  1307. #ifndef NOUSER
  1308. int FAR PASCAL wvsprintf(LPSTR,LPSTR,LPSTR);
  1309. #define wsprintf WSPRINTF
  1310. int FAR cdecl wsprintf(LPSTR,LPSTR,...);
  1311. #ifndef NOSCROLL
  1312. /* Scroll Bar Constants */
  1313. #define SB_HORZ             0
  1314. #define SB_VERT             1
  1315. #define SB_CTL              2
  1316. #define SB_BOTH             3
  1317. /* Scroll Bar Commands */
  1318. #define SB_LINEUP           0
  1319. #define SB_LINEDOWN         1
  1320. #define SB_PAGEUP           2
  1321. #define SB_PAGEDOWN         3
  1322. #define SB_THUMBPOSITION    4
  1323. #define SB_THUMBTRACK       5
  1324. #define SB_TOP              6
  1325. #define SB_BOTTOM           7
  1326. #define SB_ENDSCROLL        8
  1327. #endif /* NOSCROLL */
  1328. #ifndef NOSHOWWINDOW
  1329. /* ShowWindow() Commands */
  1330. #define SW_HIDE             0
  1331. #define SW_SHOWNORMAL       1
  1332. #define SW_NORMAL           1
  1333. #define SW_SHOWMINIMIZED    2
  1334. #define SW_SHOWMAXIMIZED    3
  1335. #define SW_MAXIMIZE         3
  1336. #define SW_SHOWNOACTIVATE   4
  1337. #define SW_SHOW             5
  1338. #define SW_MINIMIZE         6
  1339. #define SW_SHOWMINNOACTIVE  7
  1340. #define SW_SHOWNA           8
  1341. #define SW_RESTORE          9
  1342. /* Old ShowWindow() Commands */
  1343. #define HIDE_WINDOW         0
  1344. #define SHOW_OPENWINDOW     1
  1345. #define SHOW_ICONWINDOW     2
  1346. #define SHOW_FULLSCREEN     3
  1347. #define SHOW_OPENNOACTIVATE 4
  1348. /* Identifiers for the WM_SHOWWINDOW message */
  1349. #define SW_PARENTCLOSING    1
  1350. #define SW_OTHERZOOM        2
  1351. #define SW_PARENTOPENING    3
  1352. #define SW_OTHERUNZOOM      4
  1353. #endif /* NOSHOWWINDOW */
  1354. /* Region Flags */
  1355. #define ERROR               0
  1356. #define NULLREGION          1
  1357. #define SIMPLEREGION        2
  1358. #define COMPLEXREGION       3
  1359. /* CombineRgn() Styles */
  1360. #define RGN_AND             1
  1361. #define RGN_OR              2
  1362. #define RGN_XOR             3
  1363. #define RGN_DIFF            4
  1364. #define RGN_COPY            5
  1365. #ifndef NOVIRTUALKEYCODES
  1366. /* Virtual Keys, Standard Set */
  1367. #define VK_LBUTTON          0x01
  1368. #define VK_RBUTTON          0x02
  1369. #define VK_CANCEL           0x03
  1370. #define VK_MBUTTON          0x04    /* NOT contiguous with L & RBUTTON */
  1371. #define VK_BACK             0x08
  1372. #define VK_TAB              0x09
  1373. #define VK_CLEAR            0x0C
  1374. #define VK_RETURN           0x0D
  1375. #define VK_SHIFT            0x10
  1376. #define VK_CONTROL          0x11
  1377. #define VK_MENU             0x12
  1378. #define VK_PAUSE            0x13
  1379. #define VK_CAPITAL          0x14
  1380. #define VK_ESCAPE           0x1B
  1381. #define VK_SPACE            0x20
  1382. #define VK_PRIOR            0x21
  1383. #define VK_NEXT             0x22
  1384. #define VK_END              0x23
  1385. #define VK_HOME             0x24
  1386. #define VK_LEFT             0x25
  1387. #define VK_UP               0x26
  1388. #define VK_RIGHT            0x27
  1389. #define VK_DOWN             0x28
  1390. #define VK_SELECT           0x29
  1391. #define VK_PRINT            0x2A
  1392. #define VK_EXECUTE          0x2B
  1393. #define VK_SNAPSHOT         0x2C
  1394. /* #define VK_COPY          0x2C not used by keyboards. */
  1395. #define VK_INSERT           0x2D
  1396. #define VK_DELETE           0x2E
  1397. #define VK_HELP             0x2F
  1398. /* VK_A thru VK_Z are the same as their ASCII equivalents: 'A' thru 'Z' */
  1399. /* VK_0 thru VK_9 are the same as their ASCII equivalents: '0' thru '9' */
  1400. #define VK_NUMPAD0          0x60
  1401. #define VK_NUMPAD1          0x61
  1402. #define VK_NUMPAD2          0x62
  1403. #define VK_NUMPAD3          0x63
  1404. #define VK_NUMPAD4          0x64
  1405. #define VK_NUMPAD5          0x65
  1406. #define VK_NUMPAD6          0x66
  1407. #define VK_NUMPAD7          0x67
  1408. #define VK_NUMPAD8          0x68
  1409. #define VK_NUMPAD9          0x69
  1410. #define VK_MULTIPLY         0x6A
  1411. #define VK_ADD              0x6B
  1412. #define VK_SEPARATOR        0x6C
  1413. #define VK_SUBTRACT         0x6D
  1414. #define VK_DECIMAL          0x6E
  1415. #define VK_DIVIDE           0x6F
  1416. #define VK_F1               0x70
  1417. #define VK_F2               0x71
  1418. #define VK_F3               0x72
  1419. #define VK_F4               0x73
  1420. #define VK_F5               0x74
  1421. #define VK_F6               0x75
  1422. #define VK_F7               0x76
  1423. #define VK_F8               0x77
  1424. #define VK_F9               0x78
  1425. #define VK_F10              0x79
  1426. #define VK_F11              0x7A
  1427. #define VK_F12              0x7B
  1428. #define VK_F13              0x7C
  1429. #define VK_F14              0x7D
  1430. #define VK_F15              0x7E
  1431. #define VK_F16              0x7F
  1432. #define VK_NUMLOCK          0x90
  1433. #endif /* NOVIRTUALKEYCODES */
  1434. #ifndef NOWH
  1435. /* SetWindowsHook() codes */
  1436. #define WH_MSGFILTER        (-1)
  1437. #define WH_JOURNALRECORD    0
  1438. #define WH_JOURNALPLAYBACK  1
  1439. #define WH_KEYBOARD         2
  1440. #define WH_GETMESSAGE       3
  1441. #define WH_CALLWNDPROC      4
  1442. #define WH_CBT              5
  1443. #define WH_SYSMSGFILTER     6
  1444. #define WH_WINDOWMGR        7
  1445. /* Hook Codes */
  1446. #define HC_LPLPFNNEXT       (-2)
  1447. #define HC_LPFNNEXT         (-1)
  1448. #define HC_ACTION           0
  1449. #define HC_GETNEXT          1
  1450. #define HC_SKIP             2
  1451. #define HC_NOREM            3
  1452. #define HC_NOREMOVE         3
  1453. #define HC_SYSMODALON       4
  1454. #define HC_SYSMODALOFF      5
  1455. /* CBT Hook Codes */
  1456. #define HCBT_MOVESIZE       0
  1457. #define HCBT_MINMAX         1
  1458. #define HCBT_QS             2
  1459. /* WH_MSGFILTER Filter Proc Codes */
  1460. #define MSGF_DIALOGBOX      0
  1461. #define MSGF_MESSAGEBOX     1
  1462. #define MSGF_MENU           2
  1463. #define MSGF_MOVE           3
  1464. #define MSGF_SIZE           4
  1465. #define MSGF_SCROLLBAR      5
  1466. #define MSGF_NEXTWINDOW     6
  1467. /* Window Manager Hook Codes */
  1468. #define WC_INIT             1
  1469. #define WC_SWP              2
  1470. #define WC_DEFWINDOWPROC    3
  1471. #define WC_MINMAX           4
  1472. #define WC_MOVE             5
  1473. #define WC_SIZE             6
  1474. #define WC_DRAWCAPTION      7
  1475. /* Message Structure used in Journaling */
  1476. typedef struct tagEVENTMSG
  1477.   {
  1478.     WORD    message;
  1479.     WORD    paramL;
  1480.     WORD    paramH;
  1481.     DWORD   time;
  1482.   } EVENTMSG;
  1483. typedef EVENTMSG            *PEVENTMSGMSG;
  1484. typedef EVENTMSG NEAR       *NPEVENTMSGMSG;
  1485. typedef EVENTMSG FAR        *LPEVENTMSGMSG;
  1486. #endif /* NOWH */
  1487. typedef struct tagWNDCLASS
  1488.   {
  1489.     WORD        style;
  1490.     LONG        (FAR PASCAL *lpfnWndProc)( HWND, WORD, WORD, LONG );
  1491.     int         cbClsExtra;
  1492.     int         cbWndExtra;
  1493.     HANDLE      hInstance;
  1494.     HICON       hIcon;
  1495.     HCURSOR     hCursor;
  1496.     HBRUSH      hbrBackground;
  1497.     LPSTR       lpszMenuName;
  1498.     LPSTR       lpszClassName;
  1499.   } WNDCLASS;
  1500. typedef WNDCLASS            *PWNDCLASS;
  1501. typedef WNDCLASS NEAR       *NPWNDCLASS;
  1502. typedef WNDCLASS FAR        *LPWNDCLASS;
  1503. #ifndef NOMSG
  1504. /* Message structure */
  1505. typedef struct tagMSG
  1506.   {
  1507.     HWND        hwnd;
  1508.     WORD        message;
  1509.     WORD        wParam;
  1510.     LONG        lParam;
  1511.     DWORD       time;
  1512.     POINT       pt;
  1513.   } MSG;
  1514. typedef MSG                 *PMSG;
  1515. typedef MSG NEAR            *NPMSG;
  1516. typedef MSG FAR             *LPMSG;
  1517. #endif /* NOMSG */
  1518. #ifndef NOWINOFFSETS
  1519. /* Window field offsets for GetWindowLong() and GetWindowWord() */
  1520. #define GWL_WNDPROC         (-4)
  1521. #define GWW_HINSTANCE       (-6)
  1522. #define GWW_HWNDPARENT      (-8)
  1523. #define GWW_ID              (-12)
  1524. #define GWL_STYLE           (-16)
  1525. #define GWL_EXSTYLE         (-20)
  1526. /* Class field offsets for GetClassLong() and GetClassWord() */
  1527. #define GCL_MENUNAME        (-8)
  1528. #define GCW_HBRBACKGROUND   (-10)
  1529. #define GCW_HCURSOR         (-12)
  1530. #define GCW_HICON           (-14)
  1531. #define GCW_HMODULE         (-16)
  1532. #define GCW_CBWNDEXTRA      (-18)
  1533. #define GCW_CBCLSEXTRA      (-20)
  1534. #define GCL_WNDPROC         (-24)
  1535. #define GCW_STYLE           (-26)
  1536. #endif /* NOWINOFFSETS */
  1537. #ifndef NOWINMESSAGES
  1538. /* Window Messages */
  1539. #define WM_NULL             0x0000
  1540. #define WM_CREATE           0x0001
  1541. #define WM_DESTROY          0x0002
  1542. #define WM_MOVE             0x0003
  1543. #define WM_SIZE             0x0005
  1544. #define WM_ACTIVATE         0x0006
  1545. #define WM_SETFOCUS         0x0007
  1546. #define WM_KILLFOCUS        0x0008
  1547. #define WM_ENABLE           0x000A
  1548. #define WM_SETREDRAW        0x000B
  1549. #define WM_SETTEXT          0x000C
  1550. #define WM_GETTEXT          0x000D
  1551. #define WM_GETTEXTLENGTH    0x000E
  1552. #define WM_PAINT            0x000F
  1553. #define WM_CLOSE            0x0010
  1554. #define WM_QUERYENDSESSION  0x0011
  1555. #define WM_QUIT             0x0012
  1556. #define WM_QUERYOPEN        0x0013
  1557. #define WM_ERASEBKGND       0x0014
  1558. #define WM_SYSCOLORCHANGE   0x0015
  1559. #define WM_ENDSESSION       0x0016
  1560. #define WM_SHOWWINDOW       0x0018
  1561. #define WM_CTLCOLOR         0x0019
  1562. #define WM_WININICHANGE     0x001A
  1563. #define WM_DEVMODECHANGE    0x001B
  1564. #define WM_ACTIVATEAPP      0x001C
  1565. #define WM_FONTCHANGE       0x001D
  1566. #define WM_TIMECHANGE       0x001E
  1567. #define WM_CANCELMODE       0x001F
  1568. #define WM_SETCURSOR        0x0020
  1569. #define WM_MOUSEACTIVATE    0x0021
  1570. #define WM_CHILDACTIVATE    0x0022
  1571. #define WM_QUEUESYNC        0x0023
  1572. #define WM_GETMINMAXINFO    0x0024
  1573. #define WM_PAINTICON        0x0026
  1574. #define WM_ICONERASEBKGND   0x0027
  1575. #define WM_NEXTDLGCTL       0x0028
  1576. #define WM_SPOOLERSTATUS    0x002A
  1577. #define WM_DRAWITEM         0x002B
  1578. #define WM_MEASUREITEM      0x002C
  1579. #define WM_DELETEITEM       0x002D
  1580. #define WM_VKEYTOITEM       0x002E
  1581. #define WM_CHARTOITEM       0x002F
  1582. #define WM_SETFONT          0x0030
  1583. #define WM_GETFONT          0x0031
  1584. #define WM_QUERYDRAGICON    0x0037
  1585. #define WM_COMPAREITEM      0x0039
  1586. #define WM_COMPACTING       0x0041
  1587. #define WM_NCCREATE         0x0081
  1588. #define WM_NCDESTROY        0x0082
  1589. #define WM_NCCALCSIZE       0x0083
  1590. #define WM_NCHITTEST        0x0084
  1591. #define WM_NCPAINT          0x0085
  1592. #define WM_NCACTIVATE       0x0086
  1593. #define WM_GETDLGCODE       0x0087
  1594. #define WM_NCMOUSEMOVE      0x00A0
  1595. #define WM_NCLBUTTONDOWN    0x00A1
  1596. #define WM_NCLBUTTONUP      0x00A2
  1597. #define WM_NCLBUTTONDBLCLK  0x00A3
  1598. #define WM_NCRBUTTONDOWN    0x00A4
  1599. #define WM_NCRBUTTONUP      0x00A5
  1600. #define WM_NCRBUTTONDBLCLK  0x00A6
  1601. #define WM_NCMBUTTONDOWN    0x00A7
  1602. #define WM_NCMBUTTONUP      0x00A8
  1603. #define WM_NCMBUTTONDBLCLK  0x00A9
  1604. #define WM_KEYFIRST         0x0100
  1605. #define WM_KEYDOWN          0x0100
  1606. #define WM_KEYUP            0x0101
  1607. #define WM_CHAR             0x0102
  1608. #define WM_DEADCHAR         0x0103
  1609. #define WM_SYSKEYDOWN       0x0104
  1610. #define WM_SYSKEYUP         0x0105
  1611. #define WM_SYSCHAR          0x0106
  1612. #define WM_SYSDEADCHAR      0x0107
  1613. #define WM_KEYLAST          0x0108
  1614. #define WM_INITDIALOG       0x0110
  1615. #define WM_COMMAND          0x0111
  1616. #define WM_SYSCOMMAND       0x0112
  1617. #define WM_TIMER            0x0113
  1618. #define WM_HSCROLL          0x0114
  1619. #define WM_VSCROLL          0x0115
  1620. #define WM_INITMENU         0x0116
  1621. #define WM_INITMENUPOPUP    0x0117
  1622. #define WM_MENUSELECT       0x011F
  1623. #define WM_MENUCHAR         0x0120
  1624. #define WM_ENTERIDLE        0x0121
  1625. #define WM_MOUSEFIRST       0x0200
  1626. #define WM_MOUSEMOVE        0x0200
  1627. #define WM_LBUTTONDOWN      0x0201
  1628. #define WM_LBUTTONUP        0x0202
  1629. #define WM_LBUTTONDBLCLK    0x0203
  1630. #define WM_RBUTTONDOWN      0x0204
  1631. #define WM_RBUTTONUP        0x0205
  1632. #define WM_RBUTTONDBLCLK    0x0206
  1633. #define WM_MBUTTONDOWN      0x0207
  1634. #define WM_MBUTTONUP        0x0208
  1635. #define WM_MBUTTONDBLCLK    0x0209
  1636. #define WM_MOUSELAST        0x0209
  1637. #define WM_PARENTNOTIFY     0x0210
  1638. #define WM_MDICREATE        0x0220
  1639. #define WM_MDIDESTROY       0x0221
  1640. #define WM_MDIACTIVATE      0x0222
  1641. #define WM_MDIRESTORE       0x0223
  1642. #define WM_MDINEXT          0x0224
  1643. #define WM_MDIMAXIMIZE      0x0225
  1644. #define WM_MDITILE          0x0226
  1645. #define WM_MDICASCADE       0x0227
  1646. #define WM_MDIICONARRANGE   0x0228
  1647. #define WM_MDIGETACTIVE     0x0229
  1648. #define WM_MDISETMENU       0x0230
  1649. #define WM_CUT              0x0300
  1650. #define WM_COPY             0x0301
  1651. #define WM_PASTE            0x0302
  1652. #define WM_CLEAR            0x0303
  1653. #define WM_UNDO             0x0304
  1654. #define WM_RENDERFORMAT     0x0305
  1655. #define WM_RENDERALLFORMATS 0x0306
  1656. #define WM_DESTROYCLIPBOARD 0x0307
  1657. #define WM_DRAWCLIPBOARD    0x0308
  1658. #define WM_PAINTCLIPBOARD   0x0309
  1659. #define WM_VSCROLLCLIPBOARD 0x030A
  1660. #define WM_SIZECLIPBOARD    0x030B
  1661. #define WM_ASKCBFORMATNAME  0x030C
  1662. #define WM_CHANGECBCHAIN    0x030D
  1663. #define WM_HSCROLLCLIPBOARD 0x030E
  1664. #define WM_QUERYNEWPALETTE  0x030F
  1665. #define WM_PALETTEISCHANGING 0x0310
  1666. #define WM_PALETTECHANGED   0x0311
  1667. /* NOTE: All Message Numbers below 0x0400 are RESERVED. */
  1668. /* Private Window Messages Start Here: */
  1669. #define WM_USER             0x0400
  1670. #ifndef NONCMESSAGES
  1671. /* WM_SYNCTASK Commands */
  1672. #define ST_BEGINSWP         0
  1673. #define ST_ENDSWP           1
  1674. /* WinWhere() Area Codes */
  1675. #define HTERROR             (-2)
  1676. #define HTTRANSPARENT       (-1)
  1677. #define HTNOWHERE           0
  1678. #define HTCLIENT            1
  1679. #define HTCAPTION           2
  1680. #define HTSYSMENU           3
  1681. #define HTGROWBOX           4
  1682. #define HTSIZE              HTGROWBOX
  1683. #define HTMENU              5
  1684. #define HTHSCROLL           6
  1685. #define HTVSCROLL           7
  1686. #define HTREDUCE            8
  1687. #define HTZOOM              9
  1688. #define HTLEFT              10
  1689. #define HTRIGHT             11
  1690. #define HTTOP               12
  1691. #define HTTOPLEFT           13
  1692. #define HTTOPRIGHT          14
  1693. #define HTBOTTOM            15
  1694. #define HTBOTTOMLEFT        16
  1695. #define HTBOTTOMRIGHT       17
  1696. #define HTSIZEFIRST         HTLEFT
  1697. #define HTSIZELAST          HTBOTTOMRIGHT
  1698. #endif /* NONCMESSAGES */
  1699. /* WM_MOUSEACTIVATE Return Codes */
  1700. #define MA_ACTIVATE         1
  1701. #define MA_ACTIVATEANDEAT   2
  1702. #define MA_NOACTIVATE       3
  1703. WORD FAR PASCAL RegisterWindowMessage(LPSTR);
  1704. /* Size Message Commands */
  1705. #define SIZENORMAL          0
  1706. #define SIZEICONIC          1
  1707. #define SIZEFULLSCREEN      2
  1708. #define SIZEZOOMSHOW        3
  1709. #define SIZEZOOMHIDE        4
  1710. #ifndef NOKEYSTATES
  1711. /* Key State Masks for Mouse Messages */
  1712. #define MK_LBUTTON          0x0001
  1713. #define MK_RBUTTON          0x0002
  1714. #define MK_SHIFT            0x0004
  1715. #define MK_CONTROL          0x0008
  1716. #define MK_MBUTTON          0x0010
  1717. #endif /* NOKEYSTATES */
  1718. #endif /* NOWINMESSAGES */
  1719. #ifndef NOWINSTYLES
  1720. /* Window Styles */
  1721. #define WS_OVERLAPPED       0x00000000L
  1722. #define WS_POPUP            0x80000000L
  1723. #define WS_CHILD            0x40000000L
  1724. #define WS_MINIMIZE         0x20000000L
  1725. #define WS_VISIBLE          0x10000000L
  1726. #define WS_DISABLED         0x08000000L
  1727. #define WS_CLIPSIBLINGS     0x04000000L
  1728. #define WS_CLIPCHILDREN     0x02000000L
  1729. #define WS_MAXIMIZE         0x01000000L
  1730. #define WS_CAPTION          0x00C00000L     /* WS_BORDER | WS_DLGFRAME  */
  1731. #define WS_BORDER           0x00800000L
  1732. #define WS_DLGFRAME         0x00400000L
  1733. #define WS_VSCROLL          0x00200000L
  1734. #define WS_HSCROLL          0x00100000L
  1735. #define WS_SYSMENU          0x00080000L
  1736. #define WS_THICKFRAME       0x00040000L
  1737. #define WS_GROUP            0x00020000L
  1738. #define WS_TABSTOP          0x00010000L
  1739. #define WS_MINIMIZEBOX      0x00020000L
  1740. #define WS_MAXIMIZEBOX      0x00010000L
  1741. #define WS_TILED            WS_OVERLAPPED
  1742. #define WS_ICONIC           WS_MINIMIZE
  1743. #define WS_SIZEBOX          WS_THICKFRAME
  1744. /* Common Window Styles */
  1745. #define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
  1746. #define WS_POPUPWINDOW      (WS_POPUP | WS_BORDER | WS_SYSMENU)
  1747. #define WS_CHILDWINDOW      (WS_CHILD)
  1748. #define WS_TILEDWINDOW      (WS_OVERLAPPEDWINDOW)
  1749. /* Extended Window Styles */
  1750. #define WS_EX_DLGMODALFRAME 0x00000001L
  1751. #define WS_EX_NOPARENTNOTIFY 0x00000004L
  1752. /* Class styles */
  1753. #define CS_VREDRAW          0x0001
  1754. #define CS_HREDRAW          0x0002
  1755. #define CS_KEYCVTWINDOW     0x0004
  1756. #define CS_DBLCLKS          0x0008
  1757.                         /*  0x0010 -- no longer used */
  1758. #define CS_OWNDC            0x0020
  1759. #define CS_CLASSDC          0x0040
  1760. #define CS_PARENTDC         0x0080
  1761. #define CS_NOKEYCVT         0x0100
  1762. #define CS_NOCLOSE          0x0200
  1763. #define CS_SAVEBITS         0x0800
  1764. #define CS_BYTEALIGNCLIENT  0x1000
  1765. #define CS_BYTEALIGNWINDOW  0x2000
  1766. #define CS_GLOBALCLASS      0x4000    /* Global window class */
  1767. #endif /* NOWINSTYLES */
  1768. #ifndef NOCLIPBOARD
  1769. /* Predefined Clipboard Formats */
  1770. #define CF_TEXT             1
  1771. #define CF_BITMAP           2
  1772. #define CF_METAFILEPICT     3
  1773. #define CF_SYLK             4
  1774. #define CF_DIF              5
  1775. #define CF_TIFF             6
  1776. #define CF_OEMTEXT          7
  1777. #define CF_DIB              8
  1778. #define CF_PALETTE          9
  1779. #define CF_OWNERDISPLAY     0x0080
  1780. #define CF_DSPTEXT          0x0081
  1781. #define CF_DSPBITMAP        0x0082
  1782. #define CF_DSPMETAFILEPICT  0x0083
  1783. /* "Private" formats don't get GlobalFree()'d */
  1784. #define CF_PRIVATEFIRST     0x0200
  1785. #define CF_PRIVATELAST      0x02FF
  1786. /* "GDIOBJ" formats do get DeleteObject()'d */
  1787. #define CF_GDIOBJFIRST      0x0300
  1788. #define CF_GDIOBJLAST       0x03FF
  1789. #endif /* NOCLIPBOARD */
  1790. typedef struct tagPAINTSTRUCT
  1791.   {
  1792.     HDC         hdc;
  1793.     BOOL        fErase;
  1794.     RECT        rcPaint;
  1795.     BOOL        fRestore;
  1796.     BOOL        fIncUpdate;
  1797.     BYTE        rgbReserved[16];
  1798.   } PAINTSTRUCT;
  1799. typedef PAINTSTRUCT         *PPAINTSTRUCT;
  1800. typedef PAINTSTRUCT NEAR    *NPPAINTSTRUCT;
  1801. typedef PAINTSTRUCT FAR     *LPPAINTSTRUCT;
  1802. typedef struct tagCREATESTRUCT
  1803.   {
  1804.     LPSTR       lpCreateParams;
  1805.     HANDLE      hInstance;
  1806.     HANDLE      hMenu;
  1807.     HWND        hwndParent;
  1808.     int         cy;
  1809.     int         cx;
  1810.     int         y;
  1811.     int         x;
  1812.     LONG        style;
  1813.     LPSTR       lpszName;
  1814.     LPSTR       lpszClass;
  1815.     DWORD       dwExStyle;
  1816.   } CREATESTRUCT;
  1817. typedef CREATESTRUCT FAR    *LPCREATESTRUCT;
  1818. /* Owner draw control types */
  1819. #define ODT_MENU        1
  1820. #define ODT_LISTBOX     2
  1821. #define ODT_COMBOBOX    3
  1822. #define ODT_BUTTON      4
  1823. /* Owner draw actions */
  1824. #define ODA_DRAWENTIRE  0x0001
  1825. #define ODA_SELECT      0x0002
  1826. #define ODA_FOCUS       0x0004
  1827. /* Owner draw state */
  1828. #define ODS_SELECTED    0x0001
  1829. #define ODS_GRAYED      0x0002
  1830. #define ODS_DISABLED    0x0004
  1831. #define ODS_CHECKED     0x0008
  1832. #define ODS_FOCUS       0x0010
  1833. /* MEASUREITEMSTRUCT for ownerdraw */
  1834. typedef struct tagMEASUREITEMSTRUCT
  1835.   {
  1836.     WORD        CtlType;
  1837.     WORD        CtlID;
  1838.     WORD        itemID;
  1839.     WORD        itemWidth;
  1840.     WORD        itemHeight;
  1841.     DWORD       itemData;
  1842.   } MEASUREITEMSTRUCT;
  1843. typedef MEASUREITEMSTRUCT NEAR *PMEASUREITEMSTRUCT;
  1844. typedef MEASUREITEMSTRUCT FAR  *LPMEASUREITEMSTRUCT;
  1845. /* DRAWITEMSTRUCT for ownerdraw */
  1846. typedef struct tagDRAWITEMSTRUCT
  1847.   {
  1848.     WORD        CtlType;
  1849.     WORD        CtlID;
  1850.     WORD        itemID;
  1851.     WORD        itemAction;
  1852.     WORD        itemState;
  1853.     HWND        hwndItem;
  1854.     HDC         hDC;
  1855.     RECT        rcItem;
  1856.     DWORD       itemData;
  1857.   } DRAWITEMSTRUCT;
  1858. typedef DRAWITEMSTRUCT NEAR *PDRAWITEMSTRUCT;
  1859. typedef DRAWITEMSTRUCT FAR  *LPDRAWITEMSTRUCT;
  1860. /* DELETEITEMSTRUCT for ownerdraw */
  1861. typedef struct tagDELETEITEMSTRUCT
  1862.   {
  1863.     WORD       CtlType;
  1864.     WORD       CtlID;
  1865.     WORD       itemID;
  1866.     HWND       hwndItem;
  1867.     DWORD      itemData;
  1868.   } DELETEITEMSTRUCT;
  1869. typedef DELETEITEMSTRUCT NEAR *PDELETEITEMSTRUCT;
  1870. typedef DELETEITEMSTRUCT FAR  *LPDELETEITEMSTRUCT;
  1871. /* COMPAREITEMSTUCT for ownerdraw sorting */
  1872. typedef struct tagCOMPAREITEMSTRUCT
  1873.   {
  1874.     WORD        CtlType;
  1875.     WORD        CtlID;
  1876.     HWND        hwndItem;
  1877.     WORD        itemID1;
  1878.     DWORD       itemData1;
  1879.     WORD        itemID2;
  1880.     DWORD       itemData2;
  1881.   } COMPAREITEMSTRUCT;
  1882. typedef COMPAREITEMSTRUCT NEAR *PCOMPAREITEMSTRUCT;
  1883. typedef COMPAREITEMSTRUCT FAR  *LPCOMPAREITEMSTRUCT;
  1884. #ifndef NOMSG
  1885. /* Message Function Templates */
  1886. BOOL FAR PASCAL GetMessage(LPMSG, HWND, WORD, WORD);
  1887. BOOL FAR PASCAL TranslateMessage(LPMSG);
  1888. LONG FAR PASCAL DispatchMessage(LPMSG);
  1889. BOOL FAR PASCAL PeekMessage(LPMSG, HWND, WORD, WORD, WORD);
  1890. /* PeekMessage() Options */
  1891. #define PM_NOREMOVE         0x0000
  1892. #define PM_REMOVE           0x0001
  1893. #define PM_NOYIELD          0x0002
  1894. #endif /* NOMSG */
  1895. #ifdef WIN_INTERNAL
  1896.     #ifndef LSTRING
  1897.     #define NOLSTRING
  1898.     #endif
  1899.     #ifndef LFILEIO
  1900.     #define NOLFILEIO
  1901.     #endif
  1902. #endif
  1903. #ifndef NOLSTRING
  1904. int         FAR PASCAL lstrcmp( LPSTR, LPSTR );
  1905. int         FAR PASCAL lstrcmpi( LPSTR, LPSTR );
  1906. LPSTR       FAR PASCAL lstrcpy( LPSTR, LPSTR );
  1907. LPSTR       FAR PASCAL lstrcat( LPSTR, LPSTR );
  1908. int         FAR PASCAL lstrlen( LPSTR );
  1909. #endif  /* NOLSTRING */
  1910. #ifndef NOLFILEIO
  1911. int         FAR PASCAL _lopen( LPSTR, int );
  1912. int         FAR PASCAL _lclose( int );
  1913. int         FAR PASCAL _lcreat( LPSTR, int );
  1914. LONG        FAR PASCAL _llseek( int, long, int );
  1915. WORD        FAR PASCAL _lread( int, LPSTR, int );
  1916. WORD        FAR PASCAL _lwrite( int, LPSTR, int );
  1917. #define READ        0   /* Flags for _lopen */
  1918. #define WRITE       1
  1919. #define READ_WRITE  2
  1920. #endif  /* NOLFILEIO */
  1921. BOOL  FAR PASCAL ExitWindows(DWORD dwReserved, WORD wReturnCode);
  1922. BOOL  FAR PASCAL SwapMouseButton(BOOL);
  1923. DWORD FAR PASCAL GetMessagePos(void);
  1924. LONG  FAR PASCAL GetMessageTime(void);
  1925. HWND  FAR PASCAL GetSysModalWindow(void);
  1926. HWND  FAR PASCAL SetSysModalWindow(HWND);
  1927. LONG  FAR PASCAL SendMessage(HWND, WORD, WORD, LONG);
  1928. BOOL  FAR PASCAL PostMessage(HWND, WORD, WORD, LONG);
  1929. BOOL  FAR PASCAL PostAppMessage(HANDLE, WORD, WORD, LONG);
  1930. void  FAR PASCAL ReplyMessage(LONG);
  1931. void  FAR PASCAL WaitMessage(void);
  1932. LONG  FAR PASCAL DefWindowProc(HWND, WORD, WORD, LONG);
  1933. void  FAR PASCAL PostQuitMessage(int);
  1934. LONG  FAR PASCAL CallWindowProc(FARPROC, HWND, WORD, WORD, LONG);
  1935. BOOL  FAR PASCAL InSendMessage(void);
  1936. WORD  FAR PASCAL GetDoubleClickTime(void);
  1937. void  FAR PASCAL SetDoubleClickTime(WORD);
  1938. BOOL  FAR PASCAL RegisterClass(LPWNDCLASS);
  1939. BOOL  FAR PASCAL UnregisterClass(LPSTR, HANDLE);
  1940. BOOL  FAR PASCAL GetClassInfo(HANDLE, LPSTR, LPWNDCLASS);
  1941. BOOL  FAR PASCAL SetMessageQueue(int);
  1942. #define CW_USEDEFAULT       ((int)0x8000)
  1943. HWND  FAR PASCAL CreateWindow(LPSTR, LPSTR, DWORD, int, int, int, int, HWND, HMENU, HANDLE, LPSTR);
  1944. HWND  FAR PASCAL CreateWindowEx(DWORD, LPSTR, LPSTR, DWORD, int, int, int, int, HWND, HMENU, HANDLE, LPSTR);
  1945. BOOL FAR PASCAL IsWindow(HWND);
  1946. BOOL FAR PASCAL IsChild(HWND, HWND);
  1947. BOOL FAR PASCAL DestroyWindow(HWND);
  1948. BOOL FAR PASCAL ShowWindow(HWND, int);
  1949. BOOL FAR PASCAL FlashWindow(HWND, BOOL);
  1950. void FAR PASCAL ShowOwnedPopups(HWND, BOOL);
  1951. BOOL FAR PASCAL OpenIcon(HWND);
  1952. void FAR PASCAL CloseWindow(HWND);
  1953. void FAR PASCAL MoveWindow(HWND, int, int, int, int, BOOL);
  1954. void FAR PASCAL SetWindowPos(HWND, HWND, int, int, int, int, WORD);
  1955. #ifndef NODEFERWINDOWPOS
  1956. HANDLE FAR PASCAL BeginDeferWindowPos(int nNumWindows);
  1957. HANDLE FAR PASCAL DeferWindowPos(HANDLE hWinPosInfo, HWND hWnd, HWND hWndInsertAfter, int x, int y, int cx, int cy, WORD wFlags);
  1958. void FAR PASCAL EndDeferWindowPos(HANDLE hWinPosInfo);
  1959. #endif /* NODEFERWINDOWPOS */
  1960. BOOL FAR PASCAL IsWindowVisible(HWND);
  1961. BOOL FAR PASCAL IsIconic(HWND);
  1962. BOOL FAR PASCAL AnyPopup(void);
  1963. void FAR PASCAL BringWindowToTop(HWND);
  1964. BOOL FAR PASCAL IsZoomed(HWND);
  1965. /* SetWindowPos Flags */
  1966. #define SWP_NOSIZE          0x0001
  1967. #define SWP_NOMOVE          0x0002
  1968. #define SWP_NOZORDER        0x0004
  1969. #define SWP_NOREDRAW        0x0008
  1970. #define SWP_NOACTIVATE      0x0010
  1971. #define SWP_DRAWFRAME       0x0020
  1972. #define SWP_SHOWWINDOW      0x0040
  1973. #define SWP_HIDEWINDOW      0x0080
  1974. #define SWP_NOCOPYBITS      0x0100
  1975. #define SWP_NOREPOSITION    0x0200
  1976. #ifndef NOCTLMGR
  1977. HWND FAR PASCAL CreateDialog(HANDLE, LPSTR, HWND, FARPROC);
  1978. HWND FAR PASCAL CreateDialogIndirect(HANDLE, LPSTR, HWND, FARPROC);
  1979. HWND FAR PASCAL CreateDialogParam(HANDLE, LPSTR, HWND, FARPROC, LONG);
  1980. HWND FAR PASCAL CreateDialogIndirectParam(HANDLE, LPSTR, HWND, FARPROC, LONG);
  1981. int  FAR PASCAL DialogBox(HANDLE, LPSTR, HWND, FARPROC);
  1982. int  FAR PASCAL DialogBoxIndirect(HANDLE, HANDLE, HWND, FARPROC);
  1983. int  FAR PASCAL DialogBoxParam(HANDLE, LPSTR, HWND, FARPROC, LONG);
  1984. int  FAR PASCAL DialogBoxIndirectParam(HANDLE, HANDLE, HWND, FARPROC, LONG);
  1985. void FAR PASCAL EndDialog(HWND, int);
  1986. HWND FAR PASCAL GetDlgItem(HWND, int);
  1987. void FAR PASCAL SetDlgItemInt(HWND, int, WORD, BOOL);
  1988. WORD FAR PASCAL GetDlgItemInt(HWND, int, BOOL FAR *, BOOL);
  1989. void FAR PASCAL SetDlgItemText(HWND, int, LPSTR);
  1990. int  FAR PASCAL GetDlgItemText(HWND, int, LPSTR, int);
  1991. void FAR PASCAL CheckDlgButton(HWND, int, WORD);
  1992. void FAR PASCAL CheckRadioButton(HWND, int, int, int);
  1993. WORD FAR PASCAL IsDlgButtonChecked(HWND, int);
  1994. LONG FAR PASCAL SendDlgItemMessage(HWND, int, WORD, WORD, LONG);
  1995. HWND FAR PASCAL GetNextDlgGroupItem(HWND, HWND, BOOL);
  1996. HWND FAR PASCAL GetNextDlgTabItem(HWND, HWND, BOOL);
  1997. int  FAR PASCAL GetDlgCtrlID(HWND);
  1998. long FAR PASCAL GetDialogBaseUnits(void);
  1999. LONG FAR PASCAL DefDlgProc(HWND, WORD, WORD, LONG);
  2000. #define DLGWINDOWEXTRA   30     /* Window extra byted needed for private dialog classes */
  2001. #endif /* NOCTLMGR */
  2002. #ifndef NOMSG
  2003. BOOL FAR PASCAL CallMsgFilter(LPMSG, int);
  2004. #endif
  2005. #ifndef NOCLIPBOARD
  2006. /* Clipboard Manager Functions */
  2007. BOOL   FAR PASCAL OpenClipboard(HWND);
  2008. BOOL   FAR PASCAL CloseClipboard(void);
  2009. HWND   FAR PASCAL GetClipboardOwner(void);
  2010. HWND   FAR PASCAL SetClipboardViewer(HWND);
  2011. HWND   FAR PASCAL GetClipboardViewer(void);
  2012. BOOL   FAR PASCAL ChangeClipboardChain(HWND, HWND);
  2013. HANDLE FAR PASCAL SetClipboardData(WORD, HANDLE);
  2014. HANDLE FAR PASCAL GetClipboardData(WORD);
  2015. WORD   FAR PASCAL RegisterClipboardFormat(LPSTR);
  2016. int    FAR PASCAL CountClipboardFormats(void);
  2017. WORD   FAR PASCAL EnumClipboardFormats(WORD);
  2018. int    FAR PASCAL GetClipboardFormatName(WORD, LPSTR, int);
  2019. BOOL   FAR PASCAL EmptyClipboard(void);
  2020. BOOL   FAR PASCAL IsClipboardFormatAvailable(WORD);
  2021. int    FAR PASCAL GetPriorityClipboardFormat(WORD  FAR *, int);
  2022. #endif /* NOCLIPBOARD */
  2023. HWND FAR PASCAL SetFocus(HWND);
  2024. HWND FAR PASCAL GetFocus(void);
  2025. HWND FAR PASCAL GetActiveWindow(void);
  2026. int  FAR PASCAL GetKeyState(int);
  2027. int  FAR PASCAL GetAsyncKeyState(int);
  2028. void FAR PASCAL GetKeyboardState(BYTE FAR *);
  2029. void FAR PASCAL SetKeyboardState(BYTE FAR *);
  2030. BOOL FAR PASCAL EnableHardwareInput(BOOL);
  2031. BOOL FAR PASCAL GetInputState(void);
  2032. HWND FAR PASCAL GetCapture(void);
  2033. HWND FAR PASCAL SetCapture(HWND);
  2034. void FAR PASCAL ReleaseCapture(void);
  2035. /* Windows Functions */
  2036. WORD FAR PASCAL SetTimer(HWND, int, WORD, FARPROC);
  2037. BOOL FAR PASCAL KillTimer(HWND, int);
  2038. BOOL FAR PASCAL EnableWindow(HWND,BOOL);
  2039. BOOL FAR PASCAL IsWindowEnabled(HWND);
  2040. HANDLE FAR PASCAL LoadAccelerators(HANDLE, LPSTR);
  2041. #ifndef NOMSG
  2042. int  FAR PASCAL TranslateAccelerator(HWND, HANDLE, LPMSG);
  2043. #endif
  2044. #ifndef NOSYSMETRICS
  2045. /* GetSystemMetrics() codes */
  2046. #define SM_CXSCREEN         0
  2047. #define SM_CYSCREEN         1
  2048. #define SM_CXVSCROLL        2
  2049. #define SM_CYHSCROLL        3
  2050. #define SM_CYCAPTION        4
  2051. #define SM_CXBORDER         5
  2052. #define SM_CYBORDER         6
  2053. #define SM_CXDLGFRAME       7
  2054. #define SM_CYDLGFRAME       8
  2055. #define SM_CYVTHUMB         9
  2056. #define SM_CXHTHUMB         10
  2057. #define SM_CXICON           11
  2058. #define SM_CYICON           12
  2059. #define SM_CXCURSOR         13
  2060. #define SM_CYCURSOR         14
  2061. #define SM_CYMENU           15
  2062. #define SM_CXFULLSCREEN     16
  2063. #define SM_CYFULLSCREEN     17
  2064. #define SM_CYKANJIWINDOW    18
  2065. #define SM_MOUSEPRESENT     19
  2066. #define SM_CYVSCROLL        20
  2067. #define SM_CXHSCROLL        21
  2068. #define SM_DEBUG            22
  2069. #define SM_SWAPBUTTON       23
  2070. #define SM_RESERVED1        24
  2071. #define SM_RESERVED2        25
  2072. #define SM_RESERVED3        26
  2073. #define SM_RESERVED4        27
  2074. #define SM_CXMIN            28
  2075. #define SM_CYMIN            29
  2076. #define SM_CXSIZE           30
  2077. #define SM_CYSIZE           31
  2078. #define SM_CXFRAME          32
  2079. #define SM_CYFRAME          33
  2080. #define SM_CXMINTRACK       34
  2081. #define SM_CYMINTRACK       35
  2082. #define SM_CMETRICS         36
  2083. int FAR PASCAL GetSystemMetrics(int);
  2084. #endif /* NOSYSMETRICS */
  2085. #ifndef NOMENUS
  2086. HMENU FAR PASCAL LoadMenu(HANDLE, LPSTR);
  2087. HMENU FAR PASCAL LoadMenuIndirect(LPSTR);
  2088. HMENU FAR PASCAL GetMenu(HWND);
  2089. BOOL  FAR PASCAL SetMenu(HWND, HMENU);
  2090. BOOL  FAR PASCAL ChangeMenu(HMENU, WORD, LPSTR, WORD, WORD);
  2091. BOOL  FAR PASCAL HiliteMenuItem(HWND, HMENU, WORD, WORD);
  2092. int   FAR PASCAL GetMenuString(HMENU, WORD, LPSTR, int, WORD);
  2093. WORD  FAR PASCAL GetMenuState(HMENU, WORD, WORD);
  2094. void  FAR PASCAL DrawMenuBar(HWND);
  2095. HMENU FAR PASCAL GetSystemMenu(HWND, BOOL);
  2096. HMENU FAR PASCAL CreateMenu(void);
  2097. HMENU FAR PASCAL CreatePopupMenu(void);
  2098. BOOL  FAR PASCAL DestroyMenu(HMENU);
  2099. BOOL  FAR PASCAL CheckMenuItem(HMENU, WORD, WORD);
  2100. BOOL  FAR PASCAL EnableMenuItem(HMENU, WORD, WORD);
  2101. HMENU FAR PASCAL GetSubMenu(HMENU, int);
  2102. WORD  FAR PASCAL GetMenuItemID(HMENU, int);
  2103. WORD  FAR PASCAL GetMenuItemCount(HMENU);
  2104. BOOL  FAR PASCAL InsertMenu(HMENU, WORD, WORD, WORD, LPSTR);
  2105. BOOL  FAR PASCAL AppendMenu(HMENU, WORD, WORD, LPSTR);
  2106. BOOL  FAR PASCAL ModifyMenu(HMENU, WORD, WORD, WORD, LPSTR);
  2107. BOOL  FAR PASCAL RemoveMenu(HMENU, WORD, WORD);
  2108. BOOL  FAR PASCAL DeleteMenu(HMENU, WORD, WORD);
  2109. BOOL  FAR PASCAL SetMenuItemBitmaps(HMENU, WORD, WORD, HBITMAP, HBITMAP);
  2110. LONG  FAR PASCAL GetMenuCheckMarkDimensions(void);
  2111. BOOL  FAR PASCAL TrackPopupMenu(HMENU, WORD, int, int, int, HWND, LPRECT);
  2112. #endif /* NOMENUS */
  2113. BOOL FAR PASCAL GrayString(HDC, HBRUSH, FARPROC, DWORD, int, int, int, int, int);
  2114. void FAR PASCAL UpdateWindow(HWND);
  2115. HWND FAR PASCAL SetActiveWindow(HWND);
  2116. HDC  FAR PASCAL BeginPaint(HWND, LPPAINTSTRUCT);
  2117. void FAR PASCAL EndPaint(HWND, LPPAINTSTRUCT);
  2118. BOOL FAR PASCAL GetUpdateRect(HWND, LPRECT, BOOL);
  2119. int  FAR PASCAL GetUpdateRgn(HWND, HRGN, BOOL);
  2120. int  FAR PASCAL ExcludeUpdateRgn(HDC, HWND);
  2121. void FAR PASCAL InvalidateRect(HWND, LPRECT, BOOL);
  2122. void FAR PASCAL ValidateRect(HWND, LPRECT);
  2123. void FAR PASCAL InvalidateRgn(HWND, HRGN, BOOL);
  2124. void FAR PASCAL ValidateRgn(HWND, HRGN);
  2125. void FAR PASCAL ScrollWindow(HWND, int, int, LPRECT, LPRECT);
  2126. BOOL FAR PASCAL ScrollDC(HDC, int, int, LPRECT, LPRECT, HRGN, LPRECT);
  2127. #ifndef NOSCROLL
  2128. int  FAR PASCAL SetScrollPos(HWND, int, int, BOOL);
  2129. int  FAR PASCAL GetScrollPos(HWND, int);
  2130. void FAR PASCAL SetScrollRange(HWND, int, int, int, BOOL);
  2131. void FAR PASCAL GetScrollRange(HWND, int, LPINT, LPINT);
  2132. void FAR PASCAL ShowScrollBar(HWND, WORD, BOOL);
  2133. #endif
  2134. BOOL   FAR PASCAL SetProp(HWND, LPSTR, HANDLE);
  2135. HANDLE FAR PASCAL GetProp(HWND, LPSTR);
  2136. HANDLE FAR PASCAL RemoveProp(HWND, LPSTR);
  2137. int    FAR PASCAL EnumProps(HWND, FARPROC);
  2138. void   FAR PASCAL SetWindowText(HWND, LPSTR);
  2139. int    FAR PASCAL GetWindowText(HWND, LPSTR, int);
  2140. int    FAR PASCAL GetWindowTextLength(HWND);
  2141. void FAR PASCAL GetClientRect(HWND, LPRECT);
  2142. void FAR PASCAL GetWindowRect(HWND, LPRECT);
  2143. void FAR PASCAL AdjustWindowRect(LPRECT, LONG, BOOL);
  2144. void FAR PASCAL AdjustWindowRectEx(LPRECT, LONG, BOOL, DWORD);
  2145. #ifndef NOMB
  2146. /* MessageBox() Flags */
  2147. #define MB_OK               0x0000
  2148. #define MB_OKCANCEL         0x0001
  2149. #define MB_ABORTRETRYIGNORE 0x0002
  2150. #define MB_YESNOCANCEL      0x0003
  2151. #define MB_YESNO            0x0004
  2152. #define MB_RETRYCANCEL      0x0005
  2153. #define MB_ICONHAND         0x0010
  2154. #define MB_ICONQUESTION     0x0020
  2155. #define MB_ICONEXCLAMATION  0x0030
  2156. #define MB_ICONASTERISK     0x0040
  2157. #define MB_ICONINFORMATION  MB_ICONASTERISK
  2158. #define MB_ICONSTOP         MB_ICONHAND
  2159. #define MB_DEFBUTTON1       0x0000
  2160. #define MB_DEFBUTTON2       0x0100
  2161. #define MB_DEFBUTTON3       0x0200
  2162. #define MB_APPLMODAL        0x0000
  2163. #define MB_SYSTEMMODAL      0x1000
  2164. #define MB_TASKMODAL        0x2000
  2165. #define MB_NOFOCUS          0x8000
  2166. #define MB_TYPEMASK         0x000F
  2167. #define MB_ICONMASK         0x00F0
  2168. #define MB_DEFMASK          0x0F00
  2169. #define MB_MODEMASK         0x3000
  2170. #define MB_MISCMASK         0xC000
  2171. int  FAR PASCAL MessageBox(HWND, LPSTR, LPSTR, WORD);
  2172. void FAR PASCAL MessageBeep(WORD);
  2173. #endif /* NOMB */
  2174. int     FAR PASCAL ShowCursor(BOOL);
  2175. void    FAR PASCAL SetCursorPos(int, int);
  2176. HCURSOR FAR PASCAL SetCursor(HCURSOR);
  2177. void    FAR PASCAL GetCursorPos(LPPOINT);
  2178. void    FAR PASCAL ClipCursor(LPRECT);
  2179. void FAR PASCAL CreateCaret(HWND, HBITMAP, int, int);
  2180. WORD FAR PASCAL GetCaretBlinkTime(void);
  2181. void FAR PASCAL SetCaretBlinkTime(WORD);
  2182. void FAR PASCAL DestroyCaret(void);
  2183. void FAR PASCAL HideCaret(HWND);
  2184. void FAR PASCAL ShowCaret(HWND);
  2185. void FAR PASCAL SetCaretPos(int, int);
  2186. void FAR PASCAL GetCaretPos(LPPOINT);
  2187. void FAR PASCAL ClientToScreen(HWND, LPPOINT);
  2188. void FAR PASCAL ScreenToClient(HWND, LPPOINT);
  2189. HWND FAR PASCAL WindowFromPoint(POINT);
  2190. HWND FAR PASCAL ChildWindowFromPoint(HWND, POINT);
  2191. #ifndef NOCOLOR
  2192. /* Color Types */
  2193. #define CTLCOLOR_MSGBOX         0
  2194. #define CTLCOLOR_EDIT           1
  2195. #define CTLCOLOR_LISTBOX        2
  2196. #define CTLCOLOR_BTN            3
  2197. #define CTLCOLOR_DLG            4
  2198. #define CTLCOLOR_SCROLLBAR      5
  2199. #define CTLCOLOR_STATIC         6
  2200. #define CTLCOLOR_MAX            8     /* three bits max */
  2201. #define COLOR_SCROLLBAR         0
  2202. #define COLOR_BACKGROUND        1
  2203. #define COLOR_ACTIVECAPTION     2
  2204. #define COLOR_INACTIVECAPTION   3
  2205. #define COLOR_MENU              4
  2206. #define COLOR_WINDOW            5
  2207. #define COLOR_WINDOWFRAME       6
  2208. #define COLOR_MENUTEXT          7
  2209. #define COLOR_WINDOWTEXT        8
  2210. #define COLOR_CAPTIONTEXT       9
  2211. #define COLOR_ACTIVEBORDER      10
  2212. #define COLOR_INACTIVEBORDER    11
  2213. #define COLOR_APPWORKSPACE      12
  2214. #define COLOR_HIGHLIGHT         13
  2215. #define COLOR_HIGHLIGHTTEXT     14
  2216. #define COLOR_BTNFACE           15
  2217. #define COLOR_BTNSHADOW         16
  2218. #define COLOR_GRAYTEXT          17
  2219. #define COLOR_BTNTEXT           18
  2220. #define COLOR_ENDCOLORS         COLOR_BTNTEXT
  2221. DWORD FAR PASCAL GetSysColor(int);
  2222. void  FAR PASCAL SetSysColors(int, LPINT, LONG FAR *);
  2223. #endif /* NOCOLOR */
  2224. BOOL FAR PASCAL FillRgn(HDC, HRGN, HBRUSH);
  2225. BOOL FAR PASCAL FrameRgn(HDC, HRGN, HBRUSH, int, int);
  2226. BOOL FAR PASCAL InvertRgn(HDC, HRGN);
  2227. BOOL FAR PASCAL PaintRgn(HDC, HRGN);
  2228. BOOL FAR PASCAL PtInRegion(HRGN, int, int);
  2229. void FAR PASCAL DrawFocusRect(HDC, LPRECT);
  2230. int  FAR PASCAL FillRect(HDC, LPRECT, HBRUSH);
  2231. int  FAR PASCAL FrameRect(HDC, LPRECT, HBRUSH);
  2232. void FAR PASCAL InvertRect(HDC, LPRECT);
  2233. void FAR PASCAL SetRect(LPRECT, int, int, int, int);
  2234. void FAR PASCAL SetRectEmpty(LPRECT);
  2235. int  FAR PASCAL CopyRect(LPRECT, LPRECT);
  2236. void FAR PASCAL InflateRect(LPRECT, int, int);
  2237. int  FAR PASCAL IntersectRect(LPRECT, LPRECT, LPRECT);
  2238. int  FAR PASCAL UnionRect(LPRECT, LPRECT, LPRECT);
  2239. void FAR PASCAL OffsetRect(LPRECT, int, int);
  2240. BOOL FAR PASCAL IsRectEmpty(LPRECT);
  2241. BOOL FAR PASCAL EqualRect(LPRECT, LPRECT);
  2242. BOOL FAR PASCAL PtInRect(LPRECT, POINT);
  2243. BOOL FAR PASCAL RectVisible(HDC, LPRECT);
  2244. BOOL FAR PASCAL RectInRegion(HRGN, LPRECT);
  2245. DWORD FAR PASCAL GetCurrentTime(void);
  2246. DWORD FAR PASCAL GetTickCount(void);
  2247. #ifndef NOWINOFFSETS
  2248. WORD FAR PASCAL GetWindowWord(HWND, int);
  2249. WORD FAR PASCAL SetWindowWord(HWND, int, WORD);
  2250. LONG FAR PASCAL GetWindowLong(HWND, int);
  2251. LONG FAR PASCAL SetWindowLong(HWND, int, LONG);
  2252. WORD FAR PASCAL GetClassWord(HWND, int);
  2253. WORD FAR PASCAL SetClassWord(HWND, int, WORD);
  2254. LONG FAR PASCAL GetClassLong(HWND, int);
  2255. LONG FAR PASCAL SetClassLong(HWND, int, LONG);
  2256. HWND FAR PASCAL GetDesktopHwnd(void);
  2257. HWND FAR PASCAL GetDesktopWindow(void);
  2258. #endif /* NOWINOFFSETS */
  2259. HWND   FAR PASCAL GetParent(HWND);
  2260. HWND   FAR PASCAL SetParent(HWND, HWND);
  2261. BOOL   FAR PASCAL EnumChildWindows(HWND, FARPROC, LONG);
  2262. HWND   FAR PASCAL FindWindow(LPSTR, LPSTR);
  2263. BOOL   FAR PASCAL EnumWindows(FARPROC, LONG);
  2264. BOOL   FAR PASCAL EnumTaskWindows(HANDLE, FARPROC, LONG);
  2265. int    FAR PASCAL GetClassName(HWND, LPSTR, int);
  2266. HWND   FAR PASCAL GetTopWindow(HWND);
  2267. HWND   FAR PASCAL GetNextWindow(HWND, WORD);
  2268. HANDLE FAR PASCAL GetWindowTask(HWND);
  2269. HWND   FAR PASCAL GetLastActivePopup(HWND);
  2270. /* GetWindow() Constants */
  2271. #define GW_HWNDFIRST        0
  2272. #define GW_HWNDLAST         1
  2273. #define GW_HWNDNEXT         2
  2274. #define GW_HWNDPREV         3
  2275. #define GW_OWNER            4
  2276. #define GW_CHILD            5
  2277. HWND FAR PASCAL GetWindow(HWND, WORD);
  2278. #ifndef NOWH
  2279. FARPROC FAR PASCAL SetWindowsHook(int, FARPROC);
  2280. BOOL    FAR PASCAL UnhookWindowsHook(int, FARPROC);
  2281. DWORD   FAR PASCAL DefHookProc(int, WORD, DWORD, FARPROC FAR *);
  2282. #endif
  2283. #ifndef NOMENUS
  2284. /* Menu flags for Add/Check/EnableMenuItem() */
  2285. #define MF_INSERT          0x0000
  2286. #define MF_CHANGE          0x0080
  2287. #define MF_APPEND          0x0100
  2288. #define MF_DELETE          0x0200
  2289. #define MF_REMOVE          0x1000
  2290. #define MF_BYCOMMAND       0x0000
  2291. #define MF_BYPOSITION      0x0400
  2292. #define MF_SEPARATOR       0x0800
  2293. #define MF_ENABLED         0x0000
  2294. #define MF_GRAYED          0x0001
  2295. #define MF_DISABLED        0x0002
  2296. #define MF_UNCHECKED       0x0000
  2297. #define MF_CHECKED         0x0008
  2298. #define MF_USECHECKBITMAPS 0x0200
  2299. #define MF_STRING          0x0000
  2300. #define MF_BITMAP          0x0004
  2301. #define MF_OWNERDRAW       0x0100
  2302. #define MF_POPUP           0x0010
  2303. #define MF_MENUBARBREAK    0x0020
  2304. #define MF_MENUBREAK       0x0040
  2305. #define MF_UNHILITE        0x0000
  2306. #define MF_HILITE          0x0080
  2307. #define MF_SYSMENU         0x2000
  2308. #define MF_HELP            0x4000
  2309. #define MF_MOUSESELECT     0x8000
  2310. /* Menu item resource format */
  2311. typedef struct 
  2312.   {
  2313.     WORD versionNumber;
  2314.     WORD offset;
  2315.   } MENUITEMTEMPLATEHEADER;
  2316. typedef struct
  2317.   {
  2318.     WORD  mtOption;
  2319.     WORD  mtID;
  2320.     char  mtString[1];
  2321.   } MENUITEMTEMPLATE;
  2322. #define MF_END             0x0080
  2323. #endif /* NOMENUS */
  2324. #ifndef NOSYSCOMMANDS
  2325. /* System Menu Command Values */
  2326. #define SC_SIZE         0xF000
  2327. #define SC_MOVE         0xF010
  2328. #define SC_MINIMIZE     0xF020
  2329. #define SC_MAXIMIZE     0xF030
  2330. #define SC_NEXTWINDOW   0xF040
  2331. #define SC_PREVWINDOW   0xF050
  2332. #define SC_CLOSE        0xF060
  2333. #define SC_VSCROLL      0xF070
  2334. #define SC_HSCROLL      0xF080
  2335. #define SC_MOUSEMENU    0xF090
  2336. #define SC_KEYMENU      0xF100
  2337. #define SC_ARRANGE      0xF110
  2338. #define SC_RESTORE      0xF120
  2339. #define SC_TASKLIST     0xF130
  2340. #define SC_ICON         SC_MINIMIZE
  2341. #define SC_ZOOM         SC_MAXIMIZE
  2342. #endif /* NOSYSCOMMANDS */
  2343. /* Resource Loading Routines */
  2344. HBITMAP FAR PASCAL LoadBitmap(HANDLE, LPSTR);
  2345. HCURSOR FAR PASCAL LoadCursor(HANDLE, LPSTR);
  2346. HCURSOR FAR PASCAL CreateCursor(HANDLE, int, int, int, int, LPSTR, LPSTR);
  2347. BOOL    FAR PASCAL DestroyCursor(HCURSOR);
  2348. /* Standard Cursor IDs */
  2349. #define IDC_ARROW           MAKEINTRESOURCE(32512)
  2350. #define IDC_IBEAM           MAKEINTRESOURCE(32513)
  2351. #define IDC_WAIT            MAKEINTRESOURCE(32514)
  2352. #define IDC_CROSS           MAKEINTRESOURCE(32515)
  2353. #define IDC_UPARROW         MAKEINTRESOURCE(32516)
  2354. #define IDC_SIZE            MAKEINTRESOURCE(32640)
  2355. #define IDC_ICON            MAKEINTRESOURCE(32641)
  2356. #define IDC_SIZENWSE        MAKEINTRESOURCE(32642)
  2357. #define IDC_SIZENESW        MAKEINTRESOURCE(32643)
  2358. #define IDC_SIZEWE          MAKEINTRESOURCE(32644)
  2359. #define IDC_SIZENS          MAKEINTRESOURCE(32645)
  2360. HICON FAR PASCAL LoadIcon(HANDLE, LPSTR);
  2361. HICON FAR PASCAL CreateIcon(HANDLE, int, int, BYTE, BYTE, LPSTR, LPSTR);
  2362. BOOL  FAR PASCAL DestroyIcon(HICON);
  2363. #define ORD_LANGDRIVER    1     /* The ordinal number for the entry point of
  2364.                                 ** language drivers.
  2365.                                 */
  2366. #ifndef NOICONS
  2367. /* Standard Icon IDs */
  2368. #define IDI_APPLICATION     MAKEINTRESOURCE(32512)
  2369. #define IDI_HAND            MAKEINTRESOURCE(32513)
  2370. #define IDI_QUESTION        MAKEINTRESOURCE(32514)
  2371. #define IDI_EXCLAMATION     MAKEINTRESOURCE(32515)
  2372. #define IDI_ASTERISK        MAKEINTRESOURCE(32516)
  2373. #endif /* NOICONS */
  2374. int  FAR PASCAL LoadString(HANDLE, WORD, LPSTR, int);
  2375. int  FAR PASCAL AddFontResource(LPSTR);
  2376. BOOL FAR PASCAL RemoveFontResource(LPSTR);
  2377. #ifndef NOKANJI
  2378. #define CP_HWND             0
  2379. #define CP_OPEN             1
  2380. #define CP_DIRECT           2
  2381. /* VK from the keyboard driver */
  2382. #define VK_KANA             0x15
  2383. #define VK_ROMAJI           0x16
  2384. #define VK_ZENKAKU          0x17
  2385. #define VK_HIRAGANA         0x18
  2386. #define VK_KANJI            0x19
  2387. /* VK to send to Applications */
  2388. #define VK_CONVERT          0x1C
  2389. #define VK_NONCONVERT       0x1D
  2390. #define VK_ACCEPT           0x1E
  2391. #define VK_MODECHANGE       0x1F
  2392. /* Conversion function numbers */
  2393. #define KNJ_START           0x01
  2394. #define KNJ_END             0x02
  2395. #define KNJ_QUERY           0x03
  2396. #define KNJ_LEARN_MODE      0x10
  2397. #define KNJ_GETMODE         0x11
  2398. #define KNJ_SETMODE         0x12
  2399. #define KNJ_CODECONVERT     0x20
  2400. #define KNJ_CONVERT         0x21
  2401. #define KNJ_NEXT            0x22
  2402. #define KNJ_PREVIOUS        0x23
  2403. #define KNJ_ACCEPT          0x24
  2404. #define KNJ_LEARN           0x30
  2405. #define KNJ_REGISTER        0x31
  2406. #define KNJ_REMOVE          0x32
  2407. #define KNJ_CHANGE_UDIC     0x33
  2408. /* NOTE: DEFAULT        = 0
  2409.  *       JIS1           = 1
  2410.  *       JIS2           = 2
  2411.  *       SJIS2          = 3
  2412.  *       JIS1KATAKANA   = 4
  2413.  *       SJIS2HIRAGANA  = 5
  2414.  *       SJIS2KATAKANA  = 6
  2415.  *       OEM            = F
  2416.  */
  2417. #define KNJ_JIS1toJIS1KATAKANA  0x14
  2418. #define KNJ_JIS1toSJIS2         0x13
  2419. #define KNJ_JIS1toSJIS2HIRAGANA 0x15
  2420. #define KNJ_JIS1toSJIS2KATAKANA 0x16
  2421. #define KNJ_JIS1toDEFAULT       0x10
  2422. #define KNJ_JIS1toSJIS2OEM      0x1F
  2423. #define KNJ_JIS2toSJIS2         0x23
  2424. #define KNJ_SJIS2toJIS2         0x32
  2425. #define KNJ_MD_ALPHA            0x01
  2426. #define KNJ_MD_HIRAGANA         0x02
  2427. #define KNJ_MD_HALF             0x04
  2428. #define KNJ_MD_JIS              0x08
  2429. #define KNJ_MD_SPECIAL          0x10
  2430. #define KNJ_CVT_NEXT            0x01
  2431. #define KNJ_CVT_PREV            0x02
  2432. #define KNJ_CVT_KATAKANA        0x03
  2433. #define KNJ_CVT_HIRAGANA        0x04
  2434. #define KNJ_CVT_JIS1            0x05
  2435. #define KNJ_CVT_SJIS2           0x06
  2436. #define KNJ_CVT_DEFAULT         0x07
  2437. #define KNJ_CVT_TYPED           0x08
  2438. typedef struct
  2439.   {
  2440.     int         fnc;
  2441.     int         wParam;
  2442.     LPSTR       lpSource;
  2443.     LPSTR       lpDest;
  2444.     int         wCount;
  2445.     LPSTR       lpReserved1;
  2446.     LPSTR       lpReserved2;
  2447.   } KANJISTRUCT, FAR *LPKANJISTRUCT;
  2448. int  FAR PASCAL ConvertRequest(HWND, LPKANJISTRUCT);
  2449. BOOL FAR PASCAL SetConvertParams(int, int);
  2450. VOID FAR PASCAL SetConvertHook(BOOL);
  2451. #endif
  2452. /* Key Conversion Window */
  2453. BOOL FAR PASCAL IsTwoByteCharPrefix(char);
  2454. /* Dialog Box Command IDs */
  2455. #define IDOK                1
  2456. #define IDCANCEL            2
  2457. #define IDABORT             3
  2458. #define IDRETRY             4
  2459. #define IDIGNORE            5
  2460. #define IDYES               6
  2461. #define IDNO                7
  2462. #ifndef NOCTLMGR
  2463. /* Control Manager Structures and Definitions */
  2464. #ifndef NOWINSTYLES
  2465. /* Edit Control Styles */
  2466. #define ES_LEFT             0x0000L
  2467. #define ES_CENTER           0x0001L
  2468. #define ES_RIGHT            0x0002L
  2469. #define ES_MULTILINE        0x0004L
  2470. #define ES_UPPERCASE        0x0008L
  2471. #define ES_LOWERCASE        0x0010L
  2472. #define ES_PASSWORD         0x0020L
  2473. #define ES_AUTOVSCROLL      0x0040L
  2474. #define ES_AUTOHSCROLL      0x0080L
  2475. #define ES_NOHIDESEL        0x0100L
  2476. #define ES_OEMCONVERT       0x0400L
  2477. #endif /* NOWINSTYLES */
  2478. /* Edit Control Notification Codes */
  2479. #define EN_SETFOCUS         0x0100
  2480. #define EN_KILLFOCUS        0x0200
  2481. #define EN_CHANGE           0x0300
  2482. #define EN_UPDATE           0x0400
  2483. #define EN_ERRSPACE         0x0500
  2484. #define EN_MAXTEXT          0x0501
  2485. #define EN_HSCROLL          0x0601
  2486. #define EN_VSCROLL          0x0602
  2487. #ifndef NOWINMESSAGES
  2488. /* Edit Control Messages */
  2489. #define EM_GETSEL          (WM_USER+0)
  2490. #define EM_SETSEL          (WM_USER+1)
  2491. #define EM_GETRECT         (WM_USER+2)
  2492. #define EM_SETRECT         (WM_USER+3)
  2493. #define EM_SETRECTNP       (WM_USER+4)
  2494. #define EM_SCROLL          (WM_USER+5)
  2495. #define EM_LINESCROLL      (WM_USER+6)
  2496. #define EM_GETMODIFY       (WM_USER+8)
  2497. #define EM_SETMODIFY       (WM_USER+9)
  2498. #define EM_GETLINECOUNT    (WM_USER+10)
  2499. #define EM_LINEINDEX       (WM_USER+11)
  2500. #define EM_SETHANDLE       (WM_USER+12)
  2501. #define EM_GETHANDLE       (WM_USER+13)
  2502. #define EM_GETTHUMB        (WM_USER+14)
  2503. #define EM_LINELENGTH      (WM_USER+17)
  2504. #define EM_REPLACESEL      (WM_USER+18)
  2505. #define EM_SETFONT         (WM_USER+19)
  2506. #define EM_GETLINE         (WM_USER+20)
  2507. #define EM_LIMITTEXT       (WM_USER+21)
  2508. #define EM_CANUNDO         (WM_USER+22)
  2509. #define EM_UNDO            (WM_USER+23)
  2510. #define EM_FMTLINES        (WM_USER+24)
  2511. #define EM_LINEFROMCHAR    (WM_USER+25)
  2512. #define EM_SETWORDBREAK    (WM_USER+26)
  2513. #define EM_SETTABSTOPS     (WM_USER+27)
  2514. #define EM_SETPASSWORDCHAR (WM_USER+28)
  2515. #define EM_EMPTYUNDOBUFFER (WM_USER+29)
  2516. #define EM_MSGMAX          (WM_USER+30)
  2517. #endif /* NOWINMESSAGES */
  2518. /* Button Control Styles */
  2519. #define BS_PUSHBUTTON      0x00L
  2520. #define BS_DEFPUSHBUTTON   0x01L
  2521. #define BS_CHECKBOX        0x02L
  2522. #define BS_AUTOCHECKBOX    0x03L
  2523. #define BS_RADIOBUTTON     0x04L
  2524. #define BS_3STATE          0x05L
  2525. #define BS_AUTO3STATE      0x06L
  2526. #define BS_GROUPBOX        0x07L
  2527. #define BS_USERBUTTON      0x08L
  2528. #define BS_AUTORADIOBUTTON 0x09L
  2529. #define BS_PUSHBOX         0x0AL
  2530. #define BS_OWNERDRAW       0x0BL
  2531. #define BS_LEFTTEXT        0x20L
  2532. /* User Button Notification Codes */
  2533. #define BN_CLICKED         0
  2534. #define BN_PAINT           1
  2535. #define BN_HILITE          2
  2536. #define BN_UNHILITE        3
  2537. #define BN_DISABLE         4
  2538. #define BN_DOUBLECLICKED   5
  2539. /* Button Control Messages */
  2540. #define BM_GETCHECK        (WM_USER+0)
  2541. #define BM_SETCHECK        (WM_USER+1)
  2542. #define BM_GETSTATE        (WM_USER+2)
  2543. #define BM_SETSTATE        (WM_USER+3)
  2544. #define BM_SETSTYLE        (WM_USER+4)
  2545. /* Static Control Constants */
  2546. #define SS_LEFT            0x00L
  2547. #define SS_CENTER          0x01L
  2548. #define SS_RIGHT           0x02L
  2549. #define SS_ICON            0x03L
  2550. #define SS_BLACKRECT       0x04L
  2551. #define SS_GRAYRECT        0x05L
  2552. #define SS_WHITERECT       0x06L
  2553. #define SS_BLACKFRAME      0x07L
  2554. #define SS_GRAYFRAME       0x08L
  2555. #define SS_WHITEFRAME      0x09L
  2556. #define SS_USERITEM        0x0AL
  2557. #define SS_SIMPLE          0x0BL
  2558. #define SS_LEFTNOWORDWRAP  0x0CL
  2559. #define SS_NOPREFIX        0x80L    /* Don't do "&" character translation */
  2560. /* Dialog Manager Routines */
  2561. #ifndef NOMSG
  2562. BOOL FAR PASCAL IsDialogMessage(HWND, LPMSG);
  2563. #endif
  2564. void FAR PASCAL MapDialogRect(HWND, LPRECT);
  2565. int  FAR PASCAL DlgDirList(HWND, LPSTR, int, int, WORD);
  2566. BOOL FAR PASCAL DlgDirSelect(HWND, LPSTR, int);
  2567. int  FAR PASCAL DlgDirListComboBox(HWND, LPSTR, int, int, WORD);
  2568. BOOL FAR PASCAL DlgDirSelectComboBox(HWND, LPSTR, int);
  2569. /* Dialog Styles */
  2570. #define DS_ABSALIGN         0x01L
  2571. #define DS_SYSMODAL         0x02L
  2572. #define DS_LOCALEDIT        0x20L   /* Edit items get Local storage. */
  2573. #define DS_SETFONT          0x40L   /* User specified font for Dlg controls */
  2574. #define DS_MODALFRAME       0x80L   /* Can be combined with WS_CAPTION  */
  2575. #define DS_NOIDLEMSG        0x100L  /* WM_ENTERIDLE message will not be sent */
  2576. #define DM_GETDEFID         (WM_USER+0)
  2577. #define DM_SETDEFID         (WM_USER+1)
  2578. #define DC_HASDEFID         0x534B
  2579. /* Dialog Codes */
  2580. #define DLGC_WANTARROWS     0x0001      /* Control wants arrow keys         */
  2581. #define DLGC_WANTTAB        0x0002      /* Control wants tab keys           */
  2582. #define DLGC_WANTALLKEYS    0x0004      /* Control wants all keys           */
  2583. #define DLGC_WANTMESSAGE    0x0004      /* Pass message to control          */
  2584. #define DLGC_HASSETSEL      0x0008      /* Understands EM_SETSEL message    */
  2585. #define DLGC_DEFPUSHBUTTON  0x0010      /* Default pushbutton               */
  2586. #define DLGC_UNDEFPUSHBUTTON 0x0020     /* Non-default pushbutton           */
  2587. #define DLGC_RADIOBUTTON    0x0040      /* Radio button                     */
  2588. #define DLGC_WANTCHARS      0x0080      /* Want WM_CHAR messages            */
  2589. #define DLGC_STATIC         0x0100      /* Static item: don't include       */
  2590. #define DLGC_BUTTON         0x2000      /* Button item: can be checked      */
  2591. #define LB_CTLCODE          0L
  2592. /* Listbox Return Values */
  2593. #define LB_OKAY             0
  2594. #define LB_ERR              (-1)
  2595. #define LB_ERRSPACE         (-2)
  2596. /*
  2597. **  The idStaticPath parameter to DlgDirList can have the following values
  2598. **  ORed if the list box should show other details of the files along with
  2599. **  the name of the files;
  2600. */
  2601.                                   /* all other details also will be returned */
  2602. /* Listbox Notification Codes */
  2603. #define LBN_ERRSPACE        (-2)
  2604. #define LBN_SELCHANGE       1
  2605. #define LBN_DBLCLK          2
  2606. #define LBN_SELCANCEL       3
  2607. #define LBN_SETFOCUS        4
  2608. #define LBN_KILLFOCUS       5
  2609. #ifndef NOWINMESSAGES
  2610. /* Listbox messages */
  2611. #define LB_ADDSTRING           (WM_USER+1)
  2612. #define LB_INSERTSTRING        (WM_USER+2)
  2613. #define LB_DELETESTRING        (WM_USER+3)
  2614. #define LB_RESETCONTENT        (WM_USER+5)
  2615. #define LB_SETSEL              (WM_USER+6)
  2616. #define LB_SETCURSEL           (WM_USER+7)
  2617. #define LB_GETSEL              (WM_USER+8)
  2618. #define LB_GETCURSEL           (WM_USER+9)
  2619. #define LB_GETTEXT             (WM_USER+10)
  2620. #define LB_GETTEXTLEN          (WM_USER+11)
  2621. #define LB_GETCOUNT            (WM_USER+12)
  2622. #define LB_SELECTSTRING        (WM_USER+13)
  2623. #define LB_DIR                 (WM_USER+14)
  2624. #define LB_GETTOPINDEX         (WM_USER+15)
  2625. #define LB_FINDSTRING          (WM_USER+16)
  2626. #define LB_GETSELCOUNT         (WM_USER+17)
  2627. #define LB_GETSELITEMS         (WM_USER+18)
  2628. #define LB_SETTABSTOPS         (WM_USER+19)
  2629. #define LB_GETHORIZONTALEXTENT (WM_USER+20)
  2630. #define LB_SETHORIZONTALEXTENT (WM_USER+21)
  2631. #define LB_SETCOLUMNWIDTH      (WM_USER+22)
  2632. #define LB_SETTOPINDEX         (WM_USER+24)
  2633. #define LB_GETITEMRECT         (WM_USER+25)
  2634. #define LB_GETITEMDATA         (WM_USER+26)
  2635. #define LB_SETITEMDATA         (WM_USER+27)
  2636. #define LB_SELITEMRANGE        (WM_USER+28)
  2637. #define LB_MSGMAX              (WM_USER+33)
  2638. #endif /* NOWINMESSAGES */
  2639. #ifndef NOWINSTYLES
  2640. /* Listbox Styles */
  2641. #define LBS_NOTIFY            0x0001L
  2642. #define LBS_SORT              0x0002L
  2643. #define LBS_NOREDRAW          0x0004L
  2644. #define LBS_MULTIPLESEL       0x0008L
  2645. #define LBS_OWNERDRAWFIXED    0x0010L
  2646. #define LBS_OWNERDRAWVARIABLE 0x0020L
  2647. #define LBS_HASSTRINGS        0x0040L
  2648. #define LBS_USETABSTOPS       0x0080L
  2649. #define LBS_NOINTEGRALHEIGHT  0x0100L
  2650. #define LBS_MULTICOLUMN       0x0200L
  2651. #define LBS_WANTKEYBOARDINPUT 0x0400L
  2652. #define LBS_EXTENDEDSEL       0x0800L
  2653. #define LBS_STANDARD          (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
  2654. #endif /* NOWINSTYLES */
  2655. /* Combo Box return Values */
  2656. #define CB_OKAY             0
  2657. #define CB_ERR              (-1)
  2658. #define CB_ERRSPACE         (-2)
  2659. /* Combo Box Notification Codes */
  2660. #define CBN_ERRSPACE        (-1)
  2661. #define CBN_SELCHANGE       1
  2662. #define CBN_DBLCLK          2
  2663. #define CBN_SETFOCUS        3
  2664. #define CBN_KILLFOCUS       4
  2665. #define CBN_EDITCHANGE      5
  2666. #define CBN_EDITUPDATE      6
  2667. #define CBN_DROPDOWN        7
  2668. /* Combo Box styles */
  2669. #ifndef NOWINSTYLES
  2670. #define CBS_SIMPLE            0x0001L
  2671. #define CBS_DROPDOWN          0x0002L
  2672. #define CBS_DROPDOWNLIST      0x0003L
  2673. #define CBS_OWNERDRAWFIXED    0x0010L
  2674. #define CBS_OWNERDRAWVARIABLE 0x0020L
  2675. #define CBS_AUTOHSCROLL       0x0040L
  2676. #define CBS_OEMCONVERT        0x0080L
  2677. #define CBS_SORT              0x0100L
  2678. #define CBS_HASSTRINGS        0x0200L
  2679. #define CBS_NOINTEGRALHEIGHT  0x0400L
  2680. #endif  /* NOWINSTYLES */
  2681. /* Combo Box messages */
  2682. #ifndef NOWINMESSAGES
  2683. #define CB_GETEDITSEL            (WM_USER+0)
  2684. #define CB_LIMITTEXT             (WM_USER+1)
  2685. #define CB_SETEDITSEL            (WM_USER+2)
  2686. #define CB_ADDSTRING             (WM_USER+3)
  2687. #define CB_DELETESTRING          (WM_USER+4)
  2688. #define CB_DIR                   (WM_USER+5)
  2689. #define CB_GETCOUNT              (WM_USER+6)
  2690. #define CB_GETCURSEL             (WM_USER+7)
  2691. #define CB_GETLBTEXT             (WM_USER+8)
  2692. #define CB_GETLBTEXTLEN          (WM_USER+9)
  2693. #define CB_INSERTSTRING          (WM_USER+10)
  2694. #define CB_RESETCONTENT          (WM_USER+11)
  2695. #define CB_FINDSTRING            (WM_USER+12)
  2696. #define CB_SELECTSTRING          (WM_USER+13)
  2697. #define CB_SETCURSEL             (WM_USER+14)
  2698. #define CB_SHOWDROPDOWN          (WM_USER+15)
  2699. #define CB_GETITEMDATA           (WM_USER+16)
  2700. #define CB_SETITEMDATA           (WM_USER+17)
  2701. #define CB_GETDROPPEDCONTROLRECT (WM_USER+18)
  2702. #define CB_MSGMAX                (WM_USER+19)
  2703. #endif  /* NOWINMESSAGES */
  2704. #ifndef NOWINSTYLES
  2705. /* Scroll Bar Styles */
  2706. #define SBS_HORZ                    0x0000L
  2707. #define SBS_VERT                    0x0001L
  2708. #define SBS_TOPALIGN                0x0002L
  2709. #define SBS_LEFTALIGN               0x0002L
  2710. #define SBS_BOTTOMALIGN             0x0004L
  2711. #define SBS_RIGHTALIGN              0x0004L
  2712. #define SBS_SIZEBOXTOPLEFTALIGN     0x0002L
  2713. #define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x0004L
  2714. #define SBS_SIZEBOX                 0x0008L
  2715. #endif /* NOWINSTYLES */
  2716. #endif /* NOCTLMGR */
  2717. #ifndef NOSOUND
  2718. int   FAR PASCAL OpenSound(void);
  2719. void  FAR PASCAL CloseSound(void);
  2720. int   FAR PASCAL SetVoiceQueueSize(int, int);
  2721. int   FAR PASCAL SetVoiceNote(int, int, int, int);
  2722. int   FAR PASCAL SetVoiceAccent(int, int, int, int, int);
  2723. int   FAR PASCAL SetVoiceEnvelope(int, int, int);
  2724. int   FAR PASCAL SetSoundNoise(int, int);
  2725. int   FAR PASCAL SetVoiceSound(int, LONG, int);
  2726. int   FAR PASCAL StartSound(void);
  2727. int   FAR PASCAL StopSound(void);
  2728. int   FAR PASCAL WaitSoundState(int);
  2729. int   FAR PASCAL SyncAllVoices(void);
  2730. int   FAR PASCAL CountVoiceNotes(int);
  2731. LPINT FAR PASCAL GetThresholdEvent(void);
  2732. int   FAR PASCAL GetThresholdStatus(void);
  2733. int   FAR PASCAL SetVoiceThreshold(int, int);
  2734. /* WaitSoundState() Constants */
  2735. #define S_QUEUEEMPTY        0
  2736. #define S_THRESHOLD         1
  2737. #define S_ALLTHRESHOLD      2
  2738. /* Accent Modes */
  2739. #define S_NORMAL      0
  2740. #define S_LEGATO      1
  2741. #define S_STACCATO    2
  2742. /* SetSoundNoise() Sources */
  2743. #define S_PERIOD512   0     /* Freq = N/512 high pitch, less coarse hiss  */
  2744. #define S_PERIOD1024  1     /* Freq = N/1024                              */
  2745. #define S_PERIOD2048  2     /* Freq = N/2048 low pitch, more coarse hiss  */
  2746. #define S_PERIODVOICE 3     /* Source is frequency from voice channel (3) */
  2747. #define S_WHITE512    4     /* Freq = N/512 high pitch, less coarse hiss  */
  2748. #define S_WHITE1024   5     /* Freq = N/1024                              */
  2749. #define S_WHITE2048   6     /* Freq = N/2048 low pitch, more coarse hiss  */
  2750. #define S_WHITEVOICE  7     /* Source is frequency from voice channel (3) */
  2751. #define S_SERDVNA     (-1)  /* Device not available */
  2752. #define S_SEROFM      (-2)  /* Out of memory        */
  2753. #define S_SERMACT     (-3)  /* Music active         */
  2754. #define S_SERQFUL     (-4)  /* Queue full           */
  2755. #define S_SERBDNT     (-5)  /* Invalid note         */
  2756. #define S_SERDLN      (-6)  /* Invalid note length  */
  2757. #define S_SERDCC      (-7)  /* Invalid note count   */
  2758. #define S_SERDTP      (-8)  /* Invalid tempo        */
  2759. #define S_SERDVL      (-9)  /* Invalid volume       */
  2760. #define S_SERDMD      (-10) /* Invalid mode         */
  2761. #define S_SERDSH      (-11) /* Invalid shape        */
  2762. #define S_SERDPT      (-12) /* Invalid pitch        */
  2763. #define S_SERDFQ      (-13) /* Invalid frequency    */
  2764. #define S_SERDDR      (-14) /* Invalid duration     */
  2765. #define S_SERDSR      (-15) /* Invalid source       */
  2766. #define S_SERDST      (-16) /* Invalid state        */
  2767. #endif /* NOSOUND */
  2768. #ifndef NOCOMM
  2769. #define NOPARITY            0
  2770. #define ODDPARITY           1
  2771. #define EVENPARITY          2
  2772. #define MARKPARITY          3
  2773. #define SPACEPARITY         4
  2774. #define ONESTOPBIT          0
  2775. #define ONE5STOPBITS        1
  2776. #define TWOSTOPBITS         2
  2777. #define IGNORE              0       /* Ignore signal    */
  2778. #define INFINITE            0xFFFF  /* Infinite timeout */
  2779. /* Error Flags */
  2780. #define CE_RXOVER           0x0001  /* Receive Queue overflow       */
  2781. #define CE_OVERRUN          0x0002  /* Receive Overrun Error        */
  2782. #define CE_RXPARITY         0x0004  /* Receive Parity Error         */
  2783. #define CE_FRAME            0x0008  /* Receive Framing error        */
  2784. #define CE_BREAK            0x0010  /* Break Detected               */
  2785. #define CE_CTSTO            0x0020  /* CTS Timeout                  */
  2786. #define CE_DSRTO            0x0040  /* DSR Timeout                  */
  2787. #define CE_RLSDTO           0x0080  /* RLSD Timeout                 */
  2788. #define CE_TXFULL           0x0100  /* TX Queue is full             */
  2789. #define CE_PTO              0x0200  /* LPTx Timeout                 */
  2790. #define CE_IOE              0x0400  /* LPTx I/O Error               */
  2791. #define CE_DNS              0x0800  /* LPTx Device not selected     */
  2792. #define CE_OOP              0x1000  /* LPTx Out-Of-Paper            */
  2793. #define CE_MODE             0x8000  /* Requested mode unsupported   */
  2794. #define IE_BADID            (-1)    /* Invalid or unsupported id    */
  2795. #define IE_OPEN             (-2)    /* Device Already Open          */
  2796. #define IE_NOPEN            (-3)    /* Device Not Open              */
  2797. #define IE_MEMORY           (-4)    /* Unable to allocate queues    */
  2798. #define IE_DEFAULT          (-5)    /* Error in default parameters  */
  2799. #define IE_HARDWARE         (-10)   /* Hardware Not Present         */
  2800. #define IE_BYTESIZE         (-11)   /* Illegal Byte Size            */
  2801. #define IE_BAUDRATE         (-12)   /* Unsupported BaudRate         */
  2802. /* Events */
  2803. #define EV_RXCHAR           0x0001  /* Any Character received       */
  2804. #define EV_RXFLAG           0x0002  /* Received certain character   */
  2805. #define EV_TXEMPTY          0x0004  /* Transmitt Queue Empty        */
  2806. #define EV_CTS              0x0008  /* CTS changed state            */
  2807. #define EV_DSR              0x0010  /* DSR changed state            */
  2808. #define EV_RLSD             0x0020  /* RLSD changed state           */
  2809. #define EV_BREAK            0x0040  /* BREAK received               */
  2810. #define EV_ERR              0x0080  /* Line status error occurred   */
  2811. #define EV_RING             0x0100  /* Ring signal detected         */
  2812. #define EV_PERR             0x0200  /* Printer error occured        */
  2813. /* Escape Functions */
  2814. #define SETXOFF             1       /* Simulate XOFF received       */
  2815. #define SETXON              2       /* Simulate XON received        */
  2816. #define SETRTS              3       /* Set RTS high                 */
  2817. #define CLRRTS              4       /* Set RTS low                  */
  2818. #define SETDTR              5       /* Set DTR high                 */
  2819. #define CLRDTR              6       /* Set DTR low                  */
  2820. #define RESETDEV            7       /* Reset device if possible     */
  2821. #define LPTx                0x80    /* Set if ID is for LPT device  */
  2822. typedef struct tagDCB
  2823.   {
  2824.     BYTE Id;              /* Internal Device ID              */
  2825.     WORD BaudRate;        /* Baud rate at which runing       */
  2826.     BYTE ByteSize;        /* Number of bits/byte, 4-8        */
  2827.     BYTE Parity;          /* 0-4=None,Odd,Even,Mark,Space    */
  2828.     BYTE StopBits;        /* 0,1,2 = 1, 1.5, 2               */
  2829.     WORD RlsTimeout;      /* Timeout for RLSD to be set      */
  2830.     WORD CtsTimeout;      /* Timeout for CTS to be set       */
  2831.     WORD DsrTimeout;      /* Timeout for DSR to be set       */
  2832.     BYTE fBinary: 1;      /* Binary Mode (skip EOF check     */
  2833.     BYTE fRtsDisable:1;   /* Don't assert RTS at init time   */
  2834.     BYTE fParity: 1;      /* Enable parity checking          */
  2835.     BYTE fOutxCtsFlow:1;  /* CTS handshaking on output       */
  2836.     BYTE fOutxDsrFlow:1;  /* DSR handshaking on output       */
  2837.     BYTE fDummy: 2;       /* Reserved                        */
  2838.     BYTE fDtrDisable:1;   /* Don't assert DTR at init time   */
  2839.     BYTE fOutX: 1;        /* Enable output X-ON/X-OFF        */
  2840.     BYTE fInX: 1;         /* Enable input X-ON/X-OFF         */
  2841.     BYTE fPeChar: 1;      /* Enable Parity Err Replacement   */
  2842.     BYTE fNull: 1;        /* Enable Null stripping           */
  2843.     BYTE fChEvt: 1;       /* Enable Rx character event.      */
  2844.     BYTE fDtrflow: 1;     /* DTR handshake on input          */
  2845.     BYTE fRtsflow: 1;     /* RTS handshake on input          */
  2846.     BYTE fDummy2: 1;
  2847.     char XonChar;         /* Tx and Rx X-ON character        */
  2848.     char XoffChar;        /* Tx and Rx X-OFF character       */
  2849.     WORD XonLim;          /* Transmit X-ON threshold         */
  2850.     WORD XoffLim;         /* Transmit X-OFF threshold        */
  2851.     char PeChar;          /* Parity error replacement char   */
  2852.     char EofChar;         /* End of Input character          */
  2853.     char EvtChar;         /* Received Event character        */
  2854.     WORD TxDelay;         /* Amount of time between chars    */
  2855.   } DCB;
  2856. typedef struct tagCOMSTAT
  2857.   {
  2858.     BYTE fCtsHold: 1;   /* Transmit is on CTS hold         */
  2859.     BYTE fDsrHold: 1;   /* Transmit is on DSR hold         */
  2860.     BYTE fRlsdHold: 1;  /* Transmit is on RLSD hold        */
  2861.     BYTE fXoffHold: 1;  /* Received handshake              */
  2862.     BYTE fXoffSent: 1;  /* Issued handshake                */
  2863.     BYTE fEof: 1;       /* End of file character found     */
  2864.     BYTE fTxim: 1;      /* Character being transmitted     */
  2865.     WORD cbInQue;       /* count of characters in Rx Queue */
  2866.     WORD cbOutQue;      /* count of characters in Tx Queue */
  2867.   } COMSTAT;
  2868. int  FAR PASCAL OpenComm(LPSTR, WORD, WORD);
  2869. int  FAR PASCAL SetCommState(DCB FAR *);
  2870. int  FAR PASCAL GetCommState(int, DCB FAR *);
  2871. int  FAR PASCAL ReadComm(int, LPSTR, int);
  2872. int  FAR PASCAL UngetCommChar(int, char);
  2873. int  FAR PASCAL WriteComm(int, LPSTR, int);
  2874. int  FAR PASCAL CloseComm(int);
  2875. int  FAR PASCAL GetCommError(int, COMSTAT FAR *);
  2876. int  FAR PASCAL BuildCommDCB(LPSTR, DCB FAR *);
  2877. int  FAR PASCAL TransmitCommChar(int, char);
  2878. WORD FAR * FAR PASCAL SetCommEventMask(int, WORD);
  2879. WORD FAR PASCAL GetCommEventMask(int, int);
  2880. int  FAR PASCAL SetCommBreak(int);
  2881. int  FAR PASCAL ClearCommBreak(int);
  2882. int  FAR PASCAL FlushComm(int, int);
  2883. int  FAR PASCAL EscapeCommFunction(int, int);
  2884. #endif /* NOCOMM */
  2885. #ifndef NOMDI
  2886. typedef struct tagMDICREATESTRUCT
  2887.   {
  2888.     LPSTR szClass;
  2889.     LPSTR szTitle;
  2890.     HANDLE hOwner;
  2891.     int x,y;
  2892.     int cx,cy;
  2893.     LONG style;
  2894.     LONG lParam;        /* app-defined stuff */
  2895.   } MDICREATESTRUCT;
  2896. typedef MDICREATESTRUCT FAR * LPMDICREATESTRUCT;
  2897. typedef struct tagCLIENTCREATESTRUCT
  2898.   {
  2899.     HANDLE hWindowMenu;
  2900.     WORD idFirstChild;
  2901.   } CLIENTCREATESTRUCT;
  2902. typedef CLIENTCREATESTRUCT FAR * LPCLIENTCREATESTRUCT;
  2903. LONG FAR PASCAL DefFrameProc(HWND,HWND,WORD,WORD,LONG);
  2904. LONG FAR PASCAL DefMDIChildProc(HWND,WORD,WORD,LONG);
  2905. #ifndef NOMSG
  2906. BOOL FAR PASCAL TranslateMDISysAccel(HWND,LPMSG);
  2907. #endif
  2908. WORD FAR PASCAL ArrangeIconicWindows(HWND);
  2909. #endif /* NOMDI */
  2910. #endif /* NOUSER */
  2911. #ifndef NOHELP
  2912. /*  Help engine section.  */
  2913. /* Commands to pass WinHelp() */
  2914. #define HELP_CONTEXT    0x0001   /* Display topic in ulTopic */
  2915. #define HELP_QUIT       0x0002   /* Terminate help */
  2916. #define HELP_INDEX      0x0003   /* Display index */
  2917. #define HELP_HELPONHELP 0x0004   /* Display help on using help */
  2918. #define HELP_SETINDEX   0x0005   /* Set the current Index for multi index help */
  2919. #define HELP_KEY        0x0101   /* Display topic for keyword in offabData */
  2920. #define HELP_MULTIKEY   0x0201
  2921. BOOL FAR PASCAL WinHelp(HWND hwndMain, LPSTR lpszHelp, WORD usCommand, DWORD ulData);
  2922. typedef struct tagMULTIKEYHELP
  2923.   {
  2924.     WORD    mkSize;
  2925.     BYTE    mkKeylist;
  2926.     BYTE    szKeyphrase[1];
  2927.   } MULTIKEYHELP;
  2928. #endif /* NOHELP */
  2929. #ifndef NOPROFILER
  2930. /* function declarations for profiler routines contained in Windows libraries */
  2931. int  far pascal ProfInsChk(void);
  2932. void far pascal ProfSetup(int,int);
  2933. void far pascal ProfSampRate(int,int);
  2934. void far pascal ProfStart(void);
  2935. void far pascal ProfStop(void);
  2936. void far pascal ProfClear(void);
  2937. void far pascal ProfFlush(void);
  2938. void far pascal ProfFinish(void);
  2939. #endif /* NOPROFILER */
  2940. int PASCAL WinMain( HANDLE, HANDLE, LPSTR, int );
  2941. int FAR PASCAL LibMain( HANDLE, WORD, WORD, LPSTR );
  2942. #if defined( __cplusplus )
  2943. }
  2944. #endif  /* __cplusplus */
  2945. #ifndef RC_INVOKED
  2946. #pragma option -a.
  2947. #pragma warn .bbf
  2948. #endif
  2949. #endif  /* __WINDOWS_H */