home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c045 / 2.ddi / INCLUDE / WINDOWS.H$ / WINDOWS.bin
Encoding:
Text File  |  1992-01-01  |  112.6 KB  |  3,462 lines

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