home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c221 / 6.ddi / MWHC.006 / C0 < prev    next >
Encoding:
Text File  |  1992-12-09  |  124.1 KB  |  3,603 lines

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