windows.h
上传用户:xiaoan1112
上传日期:2013-04-11
资源大小:19621k
文件大小:86k
源码类别:

操作系统开发

开发平台:

Visual C++

  1. /*  If defined, the following flags inhibit definition
  2.     of the indicated constants.
  3.     NOGDICAPMASKS CC_*, LC_*, PC_*, CP_*, TC_*, RC_
  4.     NOVIRTUALKEYCODES VK_*
  5.     NOWINMESSAGES WM_*
  6.     NONCMESSAGES WM_NC* and HT*
  7.     NOWINSTYLES WS_*, CS_*, ES_*, LBS_*
  8.     NOSYSMETRICS SM_*
  9.     NODRAWFRAME DF_*
  10.     NOMENUS MF_*
  11.     NOICON IDI_*
  12.     NOKEYSTATE MK_*
  13.     NOSYSCOMMANDS SC_*
  14.     NORASTEROPS binary and tertiary raster ops
  15.     NOSHOWWINDOW SHOW_* and HIDE_*
  16.     The following flags inhibit declarations of the following groups
  17.     of procedures and type definitions.
  18.     "associated routines" refers to routines with parameters or return
  19.      values of the given type.
  20.     OEMRESOURCE     - define this and get the Oem Resource values.
  21.     NOSYSMETRICS    - GetSystemMetrics
  22.     NOATOM     - Atom Manager routines
  23.     NOBITMAP     - typedef HBITMAP and associated routines
  24.     NOBRUSH     - typedef HBRUSH and associated routines
  25.     NOCLIPBOARD     - clipboard routines
  26.     NOCOLOR
  27.     NOCREATESTRUCT  - typedef CREATESTRUCT
  28.     NOCTLMGR     - control and dialog routines
  29.     NODRAWTEXT     - DrawText() and DT_*
  30.     NOFONT     - typedef FONT and associated routines
  31.     NOGDI     - StretchBlt modes and gdi logical objects
  32.     NOHDC     - typedef HDC and associated routines
  33.     NOMB     - MB_* and MessageBox()
  34.     NOMEMMGR     - GMEM_*, LMEM_*, GHND, LHND, associated routines
  35.     NOMENUS     - HMENU and associated routines
  36.     NOMETAFILE     - typedef METAFILEPICT
  37.     NOMINMAX     - Macros min(a,b) and max(a,b)
  38.     NOMSG     - typedef MSG and associated routines
  39.     NOOPENFILE     - OpenFile(), OemToAnsi, AnsiToOem, and OF_*
  40.     NOPEN     - typedef HPEN and associated routines
  41.     NOPOINT     - typedef POINT and associated routines
  42.     NORECT     - typedef RECT and associated routines
  43.     NOREGION     - typedef HRGN and associated routines
  44.     NOSCROLL     - SB_* and scrolling routines
  45.     NOSOUND     - Sound driver routines
  46.     NOTEXTMETRIC    - typedef TEXTMETRIC and associated routines
  47.     NOWH     - SetWindowsHook and WH_*
  48.     NOWINOFFSETS    - GWL_*, GCL_*, associated routines
  49.     NOWNDCLASS     - typedef WNDCLASS and associated routines
  50.     NOCOMM     - COMM driver routines
  51.     NOKANJI     - Kanji support stuff.
  52. */
  53. #ifdef RC_INVOKED
  54. /*
  55.  Turn off a bunch of stuff to ensure that RC files compile OK
  56. */
  57. #define NOCOMM
  58. #define NOKANJI
  59. #define NOWH
  60. #define NOTEXTMETRIC
  61. #define NOSOUND
  62. #define NOSCROLL
  63. #define NOGDICAPMASKS
  64. #define NOSYSMETRICS
  65. #define NORASTEROPS
  66. #define NOATOM
  67. #define NOFONT
  68. #define NOREGION
  69. #define NORECT
  70. #define NOPEN
  71. #define NOPOINT
  72. #define NOOPENFILE
  73. #define NOMSG
  74. #define NOMINMAX
  75. #define NOMETAFILE
  76. #define NOHDC
  77. #define NOGDI
  78. #endif
  79. #ifndef PASCAL
  80. #define PASCAL pascal
  81. #endif
  82. #define FALSE 0
  83. #define TRUE 1
  84. #define NULL 0
  85. #define FAR far
  86. #define NEAR near
  87. #define LONG long
  88. #define VOID void
  89. typedef unsigned char BYTE;
  90. typedef unsigned short WORD;
  91. typedef unsigned long  DWORD;
  92. typedef int   BOOL;
  93. typedef char  *PSTR;
  94. typedef char NEAR*NPSTR;
  95. typedef char FAR *LPSTR;
  96. typedef int  FAR *LPINT;
  97. #ifndef NOMINMAX
  98. #define max(a,b) ((a) > (b) ? (a) : (b))
  99. #define min(a,b) ((a) < (b) ? (a) : (b))
  100. #endif
  101. #define MAKELONG(a, b) ((long)(((unsigned)(a)) | ((unsigned long)((unsigned)(b))) << 16))
  102. #define LOWORD(l) ((WORD)(l))
  103. #define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
  104. #define LOBYTE(w) ((BYTE)(w))
  105. #define HIBYTE(w) (((WORD)(w) >> 8) & 0xff)
  106. #ifndef NOPOINT
  107. #define MAKEPOINT(l) (*((POINT *)&(l)))
  108. #endif
  109. #ifdef OEMRESOURCE
  110. #define OBM_CLOSE 32767
  111. #define OBM_SIZE 32766
  112. #define OBM_UPARROW 32765
  113. #define OBM_DNARROW 32764
  114. #define OBM_RGARROW 32763
  115. #define OBM_LFARROW 32762
  116. #define OBM_BTSIZE 32761
  117. #define OBM_CHECK 32760
  118. #define OBM_CHECKBOXES 32759
  119. #define OBM_BTNCORNERS 32758
  120. #define OBM_REDUCE 32757
  121. #define OBM_ZOOM 32756
  122. #define OBM_RESTORE 32755
  123. #define OCR_NORMAL 32512
  124. #define OCR_IBEAM 32513
  125. #define OCR_WAIT 32514
  126. #define OCR_CROSS 32515
  127. #define OCR_UP 32516
  128. #define OCR_SIZE 32640
  129. #define OCR_ICON 32641
  130. #define OCR_SIZENWSE 32642
  131. #define OCR_SIZENESW 32643
  132. #define OCR_SIZEWE 32644
  133. #define OCR_SIZENS 32645
  134. #define OCR_SIZEALL 32646
  135. #define OIC_SAMPLE 32512
  136. #define OIC_HAND 32513
  137. #define OIC_QUES 32514
  138. #define OIC_BANG 32515
  139. #define OIC_NOTE 32516
  140. #endif
  141. /*  Scroll bar constants */
  142. #ifndef NOSCROLL
  143. #define SB_HORZ     0
  144. #define SB_VERT     1
  145. #define SB_CTL     2
  146. #define SB_BOTH     3
  147. /*  Scroll Commands */
  148. #define SB_LINEUP     0
  149. #define SB_LINEDOWN     1
  150. #define SB_PAGEUP     2
  151. #define SB_PAGEDOWN     3
  152. #define SB_THUMBPOSITION    4
  153. #define SB_THUMBTRACK     5
  154. #define SB_TOP     6
  155. #define SB_BOTTOM     7
  156. #define SB_ENDSCROLL     8
  157. #endif
  158. #ifndef NOSHOWWINDOW
  159. /* ShowWindow commands */
  160. #define SW_HIDE     0
  161. #define SW_SHOWNORMAL     1
  162. #define SW_RESTORE     1
  163. #define SW_NORMAL     1
  164. #define SW_SHOWMINIMIZED    2
  165. #define SW_SHOWMAXIMIZED    3
  166. #define SW_MAXIMIZE     3
  167. #define SW_SHOWNOACTIVATE   4
  168. #define SW_SHOW     5
  169. #define SW_MINIMIZE     6
  170. #define SW_SHOWMINNOACTIVE  7
  171. #define SW_SHOWNA     8
  172. /* Old showwindow commands */
  173. #define HIDE_WINDOW 0
  174. #define SHOW_OPENWINDOW 1
  175. #define SHOW_ICONWINDOW 2
  176. #define SHOW_FULLSCREEN 3
  177. #define SHOW_OPENNOACTIVATE 4
  178. /* identifiers for the WM_SHOWWINDOW message */
  179. #define SW_PARENTCLOSING    1
  180. #define SW_OTHERZOOM     2
  181. #define SW_PARENTOPENING    3
  182. #define SW_OTHERUNZOOM     4
  183. #endif
  184. /* flags for regions */
  185. #ifndef NOREGION
  186. #define ERROR 0
  187. #define NULLREGION 1
  188. #define SIMPLEREGION 2
  189. #define COMPLEXREGION 3
  190. /* styles for CombineRgn */
  191. #define RGN_AND  1
  192. #define RGN_OR  2
  193. #define RGN_XOR  3
  194. #define RGN_DIFF 4
  195. #define RGN_COPY 5
  196. #endif
  197. #ifndef NOVIRTUALKEYCODES
  198. /* Virtual Keys, Standard Set */
  199. #define VK_LBUTTON  0x01
  200. #define VK_RBUTTON  0x02
  201. #define VK_CANCEL   0x03
  202. #define VK_MBUTTON  0x04    /* NOT contiguous with L & RBUTTON */
  203. #define VK_BACK     0x08
  204. #define VK_TAB     0x09
  205. #define VK_CLEAR    0x0C
  206. #define VK_RETURN   0x0D
  207. #define VK_SHIFT    0x10
  208. #define VK_CONTROL  0x11
  209. #define VK_MENU     0x12
  210. #define VK_PAUSE    0x13
  211. #define VK_CAPITAL  0x14
  212. #define VK_ESCAPE   0x1B
  213. #define VK_SPACE    0x20
  214. #define VK_PRIOR    0x21
  215. #define VK_NEXT     0x22
  216. #define VK_END     0x23
  217. #define VK_HOME     0x24
  218. #define VK_LEFT     0x25
  219. #define VK_UP     0x26
  220. #define VK_RIGHT    0x27
  221. #define VK_DOWN     0x28
  222. /* VK_A thru VK_Z are the same as their ASCII equivalents: 'A' thru 'Z' */
  223. /* VK_0 thru VK_9 are the same as their ASCII equivalents: '0' thru '0' */
  224. #define VK_SELECT   0x29
  225. #define VK_PRINT    0x2A
  226. #define VK_EXECUTE  0x2B
  227. #define VK_COPY     0x2C
  228. #define VK_INSERT   0x2D
  229. #define VK_DELETE   0x2E
  230. #define VK_HELP     0x2F
  231. #define VK_NUMPAD0  0x60
  232. #define VK_NUMPAD1  0x61
  233. #define VK_NUMPAD2  0x62
  234. #define VK_NUMPAD3  0x63
  235. #define VK_NUMPAD4  0x64
  236. #define VK_NUMPAD5  0x65
  237. #define VK_NUMPAD6  0x66
  238. #define VK_NUMPAD7  0x67
  239. #define VK_NUMPAD8  0x68
  240. #define VK_NUMPAD9  0x69
  241. #define VK_MULTIPLY 0x6A
  242. #define VK_ADD     0x6B
  243. #define VK_SEPARATOR 0x6C
  244. #define VK_SUBTRACT 0x6D
  245. #define VK_DECIMAL  0x6E
  246. #define VK_DIVIDE   0x6F
  247. #define VK_F1     0x70
  248. #define VK_F2     0x71
  249. #define VK_F3     0x72
  250. #define VK_F4     0x73
  251. #define VK_F5     0x74
  252. #define VK_F6     0x75
  253. #define VK_F7     0x76
  254. #define VK_F8     0x77
  255. #define VK_F9     0x78
  256. #define VK_F10     0x79
  257. #define VK_F11     0x7A
  258. #define VK_F12     0x7B
  259. #define VK_F13     0x7C
  260. #define VK_F14     0x7D
  261. #define VK_F15     0x7E
  262. #define VK_F16     0x7F
  263. #define VK_NUMLOCK  0x90
  264. #endif
  265. /* SetWindowsHook codes */
  266. #ifndef NOWH
  267. #define WH_MSGFILTER     -1
  268. #define WH_JOURNALRECORD    0
  269. #define WH_JOURNALPLAYBACK  1
  270. #define WH_KEYBOARD     2
  271. #define WH_GETMESSAGE     3
  272. #define WH_CALLWNDPROC     4
  273. #define WH_CBT     5
  274. #define WH_SYSMSGFILTER     6
  275. #define WH_WINDOWMGR     7
  276. /* HC_* Hook Codes */
  277. #define HC_LPLPFNNEXT -2
  278. #define HC_LPFNNEXT   -1
  279. #define HC_ACTION      0
  280. #define HC_GETNEXT     1
  281. #define HC_SKIP        2
  282. #define HC_NOREM       3
  283. #define HC_NOREMOVE    3
  284. /* CBT hook codes */
  285. #define HCBT_MOVESIZE  0
  286. #define HCBT_MINMAX    1
  287. #define HCBT_QS        2
  288. /* WH_MSGFILTER filter proc codes */
  289. #define MSGF_DIALOGBOX     0
  290. #define MSGF_MESSAGEBOX     1
  291. #define MSGF_MENU     2
  292. #define MSGF_MOVE     3
  293. #define MSGF_SIZE     4
  294. #define MSGF_SCROLLBAR     5
  295. #define MSGF_NEXTWINDOW     6
  296. /* Define window manager hook codes */
  297. #define WC_INIT     1
  298. #define WC_SWP     2
  299. #define WC_DEFWINDOWPROC    3
  300. #define WC_MINMAX     4
  301. #define WC_MOVE     5
  302. #define WC_SIZE     6
  303. #define WC_DRAWCAPTION     7
  304. /* message structure used in journaling  */
  305. typedef struct eventmsg {
  306.     unsigned message;
  307.     WORD paramL;
  308.     WORD paramH;
  309.     DWORD time;
  310. } EVENTMSG;
  311. typedef EVENTMSG *PEVENTMSGMSG;
  312. typedef EVENTMSG NEAR *NPEVENTMSGMSG;
  313. typedef EVENTMSG FAR *LPEVENTMSGMSG;
  314. #endif
  315. /*  Binary raster ops */
  316. #ifndef NORASTEROPS
  317. #define R2_BLACK     1 /*  0     */
  318. #define R2_NOTMERGEPEN     2 /* DPon     */
  319. #define R2_MASKNOTPEN     3 /* DPna     */
  320. #define R2_NOTCOPYPEN     4 /* PN     */
  321. #define R2_MASKPENNOT     5 /* PDna     */
  322. #define R2_NOT     6 /* Dn     */
  323. #define R2_XORPEN     7 /* DPx     */
  324. #define R2_NOTMASKPEN     8 /* DPan     */
  325. #define R2_MASKPEN     9 /* DPa     */
  326. #define R2_NOTXORPEN    10 /* DPxn     */
  327. #define R2_NOP    11 /* D     */
  328. #define R2_MERGENOTPEN    12 /* DPno     */
  329. #define R2_COPYPEN    13 /* P     */
  330. #define R2_MERGEPENNOT    14 /* PDno     */
  331. #define R2_MERGEPEN    15 /* DPo     */
  332. #define R2_WHITE    16 /*  1     */
  333. /*  Ternary raster operations */
  334. #define SRCCOPY     (DWORD)0x00CC0020  /* dest=source      */
  335. #define SRCPAINT    (DWORD)0x00EE0086  /* dest=source OR dest      */
  336. #define SRCAND     (DWORD)0x008800C6  /* dest = source AND dest      */
  337. #define SRCINVERT   (DWORD)0x00660046  /* dest = source XOR  dest      */
  338. #define SRCERASE    (DWORD)0x00440328  /* dest = source AND (not dest )      */
  339. #define NOTSRCCOPY  (DWORD)0x00330008  /* dest = (not source)      */
  340. #define NOTSRCERASE (DWORD)0x001100A6  /* dest = (not source) AND (not dest) */
  341. #define MERGECOPY   (DWORD)0x00C000CA  /* dest = (source AND pattern)      */
  342. #define MERGEPAINT  (DWORD)0x00BB0226  /* dest = (NOT source) OR dest      */
  343. #define PATCOPY     (DWORD)0x00F00021  /* dest = pattern      */
  344. #define PATPAINT    (DWORD)0x00FB0A09  /* dest = DPSnoo      */
  345. #define PATINVERT   (DWORD)0x005A0049  /* dest = pattern XOR dest      */
  346. #define DSTINVERT   (DWORD)0x00550009  /* dest = (not dest)      */
  347. #define BLACKNESS   (DWORD)0x00000042  /* dest = BLACK      */
  348. #define WHITENESS   (DWORD)0x00FF0062  /* dest = WHITE      */
  349. #endif
  350. #ifndef NOGDI
  351. /* StretchBlt() modes */
  352. #define BLACKONWHITE 1
  353. #define WHITEONBLACK 2
  354. #define COLORONCOLOR 3
  355. /* PolyFill modes */
  356. #define ALTERNATE 1
  357. #define WINDING 2
  358. /* text alignment options */
  359. #define TA_UPDATECP 1
  360. #define TA_NOUPDATECP 0
  361. #define TA_LEFT 0
  362. #define TA_RIGHT 2
  363. #define TA_CENTER 6
  364. #define TA_TOP 0
  365. #define TA_BOTTOM 8
  366. #define TA_BASELINE 24
  367. #define ETO_GRAYED 1
  368. #define ETO_OPAQUE 2
  369. #define ETO_CLIPPED 4
  370. #define ASPECT_FILTERING 0x00000001
  371. #ifndef NOMETAFILE
  372. /* Meta file function numbers */
  373. #define META_SETBKCOLOR      0x0201
  374. #define META_SETBKMODE      0x0102
  375. #define META_SETMAPMODE      0x0103
  376. #define META_SETROP2      0x0104
  377. #define META_SETRELABS      0x0105
  378. #define META_SETPOLYFILLMODE      0x0106
  379. #define META_SETSTRETCHBLTMODE      0x0107
  380. #define META_SETTEXTCHAREXTRA      0x0108
  381. #define META_SETTEXTCOLOR      0x0209
  382. #define META_SETTEXTJUSTIFICATION    0x020A
  383. #define META_SETWINDOWORG      0x020B
  384. #define META_SETWINDOWEXT      0x020C
  385. #define META_SETVIEWPORTORG      0x020D
  386. #define META_SETVIEWPORTEXT      0x020E
  387. #define META_OFFSETWINDOWORG      0x020F
  388. #define META_SCALEWINDOWEXT      0x0400
  389. #define META_OFFSETVIEWPORTORG      0x0211
  390. #define META_SCALEVIEWPORTEXT      0x0412
  391. #define META_LINETO      0x0213
  392. #define META_MOVETO      0x0214
  393. #define META_EXCLUDECLIPRECT      0x0415
  394. #define META_INTERSECTCLIPRECT      0x0416
  395. #define META_ARC      0x0817
  396. #define META_ELLIPSE      0x0418
  397. #define META_FLOODFILL      0x0419
  398. #define META_PIE      0x081A
  399. #define META_RECTANGLE      0x041B
  400. #define META_ROUNDRECT      0x061C
  401. #define META_PATBLT      0x061D
  402. #define META_SAVEDC      0x001E
  403. #define META_SETPIXEL      0x041F
  404. #define META_OFFSETCLIPRGN      0x0220
  405. #define META_TEXTOUT      0x0521
  406. #define META_BITBLT      0x0922
  407. #define META_STRETCHBLT      0x0B23
  408. #define META_POLYGON      0x0324
  409. #define META_POLYLINE      0x0325
  410. #define META_ESCAPE      0x0626
  411. #define META_RESTOREDC      0x0127
  412. #define META_FILLREGION      0x0228
  413. #define META_FRAMEREGION      0x0429
  414. #define META_INVERTREGION      0x012A
  415. #define META_PAINTREGION      0x012B
  416. #define META_SELECTCLIPREGION      0x012C
  417. #define META_SELECTOBJECT      0x012D
  418. #define META_SETTEXTALIGN      0x012E
  419. #define META_DRAWTEXT      0x062F
  420. #define META_CHORD      0x0630
  421. #define META_CREATEBRUSH      0x00F8
  422. #define META_CREATEPATTERNBRUSH      0x01F9
  423. #define META_CREATEPENINDIRECT      0x02FA
  424. #define META_CREATEFONTINDIRECT      0x02FB
  425. #define META_CREATEBRUSHINDIRECT     0x02FC
  426. #define META_CREATEBITMAPINDIRECT    0x02FD
  427. #define META_CREATEBITMAP      0x06FE
  428. #define META_CREATEREGION      0x06FF
  429. #endif
  430. /* GDI escapes */
  431. #define NEWFRAME     1
  432. #define ABORTDOC     2
  433. #define NEXTBAND     3
  434. #define SETCOLORTABLE     4
  435. #define GETCOLORTABLE     5
  436. #define FLUSHOUTPUT     6
  437. #define DRAFTMODE     7
  438. #define QUERYESCSUPPORT     8
  439. #define SETABORTPROC     9
  440. #define STARTDOC     10
  441. #define ENDDOC     11
  442. #define GETPHYSPAGESIZE     12
  443. #define GETPRINTINGOFFSET   13
  444. #define GETSCALINGFACTOR    14
  445. #define MFCOMMENT     15       /* Metafile comment escape */
  446. #define GETPENWIDTH     16
  447. #define SETCOPYCOUNT     17
  448. #define SELECTPAPERSOURCE   18
  449. #define DEVICEDATA     19
  450. #define PASSTHROUGH     19
  451. #define GETTECHNOLGY     20
  452. #define SETENDCAP     21
  453. #define SETLINEJOIN     22
  454. #define SETMITERLIMIT     23
  455. #define BANDINFO     24
  456. #define DRAWPATTERNRECT     25
  457. #define GETVECTORPENSIZE    26
  458. #define GETVECTORBRUSHSIZE  27
  459. #define ENABLEDUPLEX     28
  460. #define ENABLEMANUALFEED    29
  461. #define GETEXTENDEDTEXTMETRICS 256
  462. #define GETEXTENTTABLE 257
  463. #define GETPAIRKERNTABLE 258
  464. #define GETTRACKKERNTABLE 259
  465. #define EXTTEXTOUT 512
  466. #define ENABLERELATIVEWIDTHS 768
  467. #define ENABLEPAIRKERNING 769
  468. #define SETKERNTRACK 770
  469. #define STRETCHBLT 2048
  470. /* spooler error code */
  471. #define SP_NOTREPORTED     0x4000  /* set if GDI did not report error */
  472. #define SP_ERROR     (-1)    /* general errors who know what went wrong */
  473. #define SP_APPABORT     (-2)    /* app aborted the job - callback function returned false */
  474. #define SP_USERABORT     (-3)    /* user aborted the job through spooler's front end */
  475. #define SP_OUTOFDISK     (-4)    /* not enough disk space to spool */
  476. #define SP_OUTOFMEMORY     (-5)
  477. /* spooler WM_SPOOLERSTATUS wparm classes   */
  478. #define PR_JOBSTATUS     0x0000
  479. #endif
  480. /* Object definitions for GDI EnumObjects. */
  481. #define OBJ_PEN 1
  482. #define OBJ_BRUSH 2
  483. #ifndef WIN_INTERNAL
  484. typedef WORD HANDLE;
  485. #endif
  486. typedef HANDLE      *PHANDLE;
  487. typedef HANDLE NEAR *SPHANDLE;
  488. typedef HANDLE FAR *LPHANDLE;
  489. typedef int (FAR PASCAL *FARPROC)();
  490. typedef int (NEAR PASCAL *NEARPROC)();
  491. typedef HANDLE GLOBALHANDLE;
  492. typedef HANDLE LOCALHANDLE;
  493. #ifndef NOBITMAP
  494. typedef struct tagBITMAP {
  495.     short      bmType;
  496.     short      bmWidth;
  497.     short      bmHeight;
  498.     short      bmWidthBytes;
  499.     BYTE       bmPlanes;
  500.     BYTE       bmBitsPixel;
  501.     LPSTR      bmBits;
  502. } BITMAP;
  503. typedef BITMAP *PBITMAP;
  504. typedef BITMAP NEAR *NPBITMAP;
  505. typedef BITMAP FAR *LPBITMAP;
  506. #endif
  507. typedef HANDLE HSTR;
  508. typedef HANDLE HICON;
  509. typedef HANDLE HDC;
  510. typedef HANDLE HMENU;
  511. typedef HANDLE HPEN;
  512. typedef HANDLE HFONT;
  513. typedef HANDLE HBRUSH;
  514. typedef HANDLE HBITMAP;
  515. typedef HANDLE HCURSOR;
  516. typedef HANDLE HRGN;
  517. typedef struct tagPOINT {
  518.     int x;
  519.     int y;
  520. } POINT;
  521. typedef POINT *PPOINT;
  522. typedef POINT NEAR *NPPOINT;
  523. typedef POINT FAR *LPPOINT;
  524. #ifndef NORECT
  525. #ifndef WIN_INTERNAL
  526. typedef struct tagRECT {
  527.     int left;
  528.     int top;
  529.     int right;
  530.     int bottom;
  531. } RECT;
  532. #endif
  533. typedef RECT *PRECT;
  534. typedef RECT NEAR *NPRECT;
  535. typedef RECT FAR *LPRECT;
  536. #endif
  537. #ifndef NOWNDCLASS
  538. #ifndef NOBRUSH
  539. typedef struct tagWNDCLASS {
  540.     WORD    style;
  541.     long    (FAR PASCAL *lpfnWndProc)();
  542.     int     cbClsExtra;
  543.     int     cbWndExtra;
  544.     HANDLE  hInstance;
  545.     HICON   hIcon;
  546.     HCURSOR hCursor;
  547.     HBRUSH  hbrBackground;
  548.     LPSTR   lpszMenuName;
  549.     LPSTR   lpszClassName;
  550. } WNDCLASS;
  551. typedef WNDCLASS     *PWNDCLASS;
  552. typedef WNDCLASS NEAR *NPWNDCLASS;
  553. typedef WNDCLASS FAR *LPWNDCLASS;
  554. #endif
  555. #endif
  556. #ifndef WIN_INTERNAL
  557. typedef HANDLE HWND;
  558. #endif
  559. #ifndef NOMSG
  560. #ifndef NOPOINT
  561. /* Message structure */
  562. typedef struct tagMSG {
  563.     HWND hwnd;
  564.     WORD message;
  565.     WORD wParam;
  566.     LONG lParam;
  567.     DWORD time;
  568.     POINT pt;
  569. } MSG;
  570. typedef MSG *PMSG;
  571. typedef MSG NEAR *NPMSG;
  572. typedef MSG FAR *LPMSG;
  573. #endif
  574. #endif
  575. /* Window field offsets for GetWindowLong & GetWindowWord */
  576. #ifndef NOWINOFFSETS
  577. #define GWL_WNDPROC -4
  578. #define GWW_HINSTANCE -6
  579. #define GWW_HWNDPARENT -8
  580. #define GWW_HWNDTEXT -10
  581. #define GWW_ID -12
  582. #define GWL_STYLE -16
  583. /* Class field offsets for GetClassLong & GetClassWord */
  584. #define GCL_MENUNAME     -8
  585. #define GCW_HBRBACKGROUND   -10
  586. #define GCW_HCURSOR     -12
  587. #define GCW_HICON     -14
  588. #define GCW_HMODULE     -16
  589. #define GCW_CBWNDEXTRA     -18
  590. #define GCW_CBCLSEXTRA     -20
  591. #define GCL_WNDPROC     -24
  592. #define GCW_STYLE     -26
  593. #endif
  594. #ifndef NOWINMESSAGES
  595. /* ** Window Procedure Messages */
  596. #define WM_NULL     0x0000
  597. #define WM_CREATE     0x0001
  598. #define WM_DESTROY     0x0002
  599. #define WM_MOVE     0x0003
  600. #define WM_SIZEWAIT     0x0004
  601. #define WM_SIZE     0x0005
  602. #define WM_ACTIVATE     0x0006
  603. #define WM_SETFOCUS     0x0007
  604. #define WM_KILLFOCUS     0x0008
  605. #define WM_SETVISIBLE     0x0009
  606. #define WM_ENABLE     0x000a
  607. #define WM_SETREDRAW     0x000b
  608. #define WM_SETTEXT     0x000c
  609. #define WM_GETTEXT     0x000d
  610. #define WM_GETTEXTLENGTH    0x000e
  611. #define WM_PAINT     0x000f
  612. #define WM_CLOSE     0x0010
  613. #define WM_QUERYENDSESSION  0x0011
  614. #define WM_QUIT     0x0012
  615. #define WM_QUERYOPEN     0x0013
  616. #define WM_ERASEBKGND     0x0014
  617. #define WM_SYSCOLORCHANGE   0x0015
  618. #define WM_ENDSESSION     0x0016
  619. #define WM_SYSTEMERROR     0x0017
  620. #define WM_SHOWWINDOW     0x0018
  621. #define WM_CTLCOLOR     0x0019
  622. #define WM_WININICHANGE     0x001A
  623. #define WM_DEVMODECHANGE    0x001B
  624. #define WM_ACTIVATEAPP     0x001C
  625. #define WM_FONTCHANGE     0x001D
  626. #define WM_TIMECHANGE     0x001E
  627. #define WM_CANCELMODE     0x001F
  628. #define WM_SETCURSOR     0x0020
  629. #define WM_MOUSEACTIVATE    0x0021
  630. #define WM_CHILDACTIVATE    0x0022
  631. #define WM_QUEUESYNC     0x0023
  632. #define WM_GETMINMAXINFO    0x0024
  633. #define WM_PAINTICON     0x0026
  634. #define WM_ICONERASEBKGND   0x0027
  635. #define WM_NEXTDLGCTL     0x0028
  636. #define WM_ALTTABACTIVE     0x0029     /* for win386 only */
  637. #define WM_SPOOLERSTATUS    0x002A
  638. #ifndef NONCMESSAGES
  639. #define WM_NCCREATE     0x0081
  640. #define WM_NCDESTROY     0x0082
  641. #define WM_NCCALCSIZE     0x0083
  642. #define WM_NCHITTEST     0x0084
  643. #define WM_NCPAINT     0x0085
  644. #define WM_NCACTIVATE     0x0086
  645. #define WM_GETDLGCODE     0x0087
  646. #define WM_SYNCPAINT     0x0088
  647. #define WM_SYNCTASK     0x0089
  648. #define ST_BEGINSWP     0
  649. #define ST_ENDSWP     1
  650. #define WM_NCMOUSEMOVE     0x00a0
  651. #define WM_NCLBUTTONDOWN    0x00a1
  652. #define WM_NCLBUTTONUP     0x00a2
  653. #define WM_NCLBUTTONDBLCLK  0x00a3
  654. #define WM_NCRBUTTONDOWN    0x00a4
  655. #define WM_NCRBUTTONUP     0x00a5
  656. #define WM_NCRBUTTONDBLCLK  0x00a6
  657. #define WM_NCMBUTTONDOWN    0x00a7
  658. #define WM_NCMBUTTONUP     0x00a8
  659. #define WM_NCMBUTTONDBLCLK  0x00a9
  660. /* WINWhere area codes */
  661. #define HTERROR       -2
  662. #define HTTRANSPARENT -1
  663. #define HTNOWHERE      0
  664. #define HTCLIENT       1
  665. #define HTCAPTION      2
  666. #define HTSYSMENU      3
  667. #define HTGROWBOX      4
  668. #define HTSIZE HTGROWBOX
  669. #define HTMENU        5
  670. #define HTHSCROLL      6
  671. #define HTVSCROLL      7
  672. #define HTREDUCE       8
  673. #define HTZOOM        9
  674. #define HTLEFT        10
  675. #define HTRIGHT        11
  676. #define HTTOP        12
  677. #define HTTOPLEFT      13
  678. #define HTTOPRIGHT     14
  679. #define HTBOTTOM       15
  680. #define HTBOTTOMLEFT   16
  681. #define HTBOTTOMRIGHT  17
  682. #define HTSIZEFIRST HTLEFT
  683. #define HTSIZELAST  HTBOTTOMRIGHT
  684. #endif
  685. /* WM_MOUSEACTIVATE return codes */
  686. #define MA_ACTIVATE     1
  687. #define MA_ACTIVATEANDEAT   2
  688. #define MA_NOACTIVATE     3
  689. #define WM_KEYFIRST     0x0100
  690. #define WM_KEYLAST     0x0108
  691. #define WM_KEYDOWN     0x0100
  692. #define WM_KEYUP     0x0101
  693. #define WM_CHAR     0x0102
  694. #define WM_DEADCHAR     0x0103
  695. #define WM_SYSKEYDOWN     0x0104
  696. #define WM_SYSKEYUP     0x0105
  697. #define WM_SYSCHAR     0x0106
  698. #define WM_SYSDEADCHAR     0x0107
  699. #define WM_YOMICHAR     0x0108
  700. #define WM_CONVERTREQUEST   0x010A
  701. #define WM_CONVERTRESULT    0x010B
  702. #define WM_INITDIALOG     0x0110
  703. #define WM_COMMAND     0x0111
  704. #define WM_SYSCOMMAND     0x0112
  705. #define WM_TIMER     0x0113
  706. #define WM_HSCROLL     0x0114
  707. #define WM_VSCROLL     0x0115
  708. #define WM_INITMENU     0x0116
  709. #define WM_INITMENUPOPUP    0x0117
  710. #define WM_SYSTIMER     0x0118
  711. #define WM_MENUSELECT     0x011f
  712. #define WM_MENUCHAR     0x0120
  713. #define WM_ENTERIDLE     0x0121
  714. #define WM_MOUSEFIRST     0x0200
  715. #define WM_MOUSELAST     0x0209
  716. #define WM_MOUSEMOVE     0x0200 /* mouse related constants */
  717. #define WM_LBUTTONDOWN     0x0201
  718. #define WM_LBUTTONUP     0x0202
  719. #define WM_LBUTTONDBLCLK    0x0203
  720. #define WM_RBUTTONDOWN     0x0204
  721. #define WM_RBUTTONUP     0x0205
  722. #define WM_RBUTTONDBLCLK    0x0206
  723. #define WM_MBUTTONDOWN     0x0207
  724. #define WM_MBUTTONUP     0x0208
  725. #define WM_MBUTTONDBLCLK    0x0209
  726. #define WM_KANJIFIRST     0x0280
  727. #define WM_KANJILAST     0x029f
  728. /* clipboard messages */
  729. #define WM_CUT     0x0300
  730. #define WM_COPY     0x0301
  731. #define WM_PASTE     0x0302
  732. #define WM_CLEAR     0x0303
  733. #define WM_UNDO     0x0304
  734. #define WM_RENDERFORMAT     0x0305
  735. #define WM_RENDERALLFORMATS 0x0306
  736. #define WM_DESTROYCLIPBOARD 0x0307
  737. #define WM_DRAWCLIPBOARD    0x0308
  738. #define WM_PAINTCLIPBOARD   0x0309
  739. #define WM_VSCROLLCLIPBOARD 0x030A
  740. #define WM_SIZECLIPBOARD    0x030B
  741. #define WM_ASKCBFORMATNAME  0x030C
  742. #define WM_CHANGECBCHAIN    0x030D
  743. #define WM_HSCROLLCLIPBOARD 0x030E
  744. /* 0x03f0 to 0x03ff are reserved */
  745. /* private window messages start here */
  746. #define WM_USER     0x0400
  747. unsigned FAR PASCAL RegisterWindowMessage(LPSTR);
  748. /* Size message commands */
  749. #define SIZENORMAL 0
  750. #define SIZEICONIC 1
  751. #define SIZEFULLSCREEN 2
  752. #define SIZEZOOMSHOW 3
  753. #define SIZEZOOMHIDE 4
  754. #endif
  755. /* Key state masks for mouse messages */
  756. #ifndef NOKEYSTATE
  757. #define MK_LBUTTON 0x0001
  758. #define MK_RBUTTON 0x0002
  759. #define MK_SHIFT 0x0004
  760. #define MK_CONTROL 0x0008
  761. #define MK_MBUTTON 0x0010
  762. #endif
  763. #ifndef NOWINSTYLES
  764. /* Window styles */
  765. #define WS_TILED 0x00000000L
  766. #define WS_OVERLAPPED WS_TILED
  767. #define WS_ICONICPOPUP 0xc0000000L
  768. #define WS_POPUP 0x80000000L
  769. #define WS_CHILD 0x40000000L
  770. #define WS_MINIMIZE 0x20000000L
  771. #define WS_VISIBLE 0x10000000L
  772. #define WS_DISABLED 0x08000000L
  773. #define WS_CLIPSIBLINGS 0x04000000L
  774. #define WS_CLIPCHILDREN 0x02000000L
  775. #define WS_MAXIMIZE 0x01000000L
  776. #define WS_BORDER 0x00800000L
  777. #define WS_CAPTION 0x00c00000L
  778. #define WS_DLGFRAME 0x00400000L
  779. #define WS_VSCROLL 0x00200000L
  780. #define WS_HSCROLL 0x00100000L
  781. #define WS_SYSMENU 0x00080000L
  782. #define WS_SIZEBOX 0x00040000L
  783. #define WS_THICKFRAME 0x00040000L
  784. #define WS_GROUP 0x00020000L
  785. #define WS_TABSTOP 0x00010000L
  786. #define WS_MINIMIZEBOX 0x00020000L
  787. #define WS_MAXIMIZEBOX 0x00010000L
  788. #define WS_ICONIC WS_MINIMIZE
  789. /* Class styles */
  790. #define CS_VREDRAW 0x0001
  791. #define CS_HREDRAW 0x0002
  792. #define CS_KEYCVTWINDOW 0x0004
  793. #define CS_DBLCLKS 0x0008
  794. #define CS_OEMCHARS 0x0010
  795. #define CS_OWNDC 0x0020
  796. #define CS_CLASSDC 0x0040
  797. #define CS_PARENTDC 0x0080
  798. #define CS_NOKEYCVT 0x0100
  799. #define CS_SAVEBITS 0x0800
  800. #define CS_NOCLOSE 0x0200
  801. #define CS_BYTEALIGNCLIENT 0x1000
  802. #define CS_BYTEALIGNWINDOW 0x2000
  803. /* Shorthand for the common cases */
  804. #define WS_TILEDWINDOW  (WS_TILED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
  805. #define WS_OVERLAPPEDWINDOW  WS_TILEDWINDOW
  806. #define WS_POPUPWINDOW  (WS_POPUP | WS_BORDER | WS_SYSMENU)
  807. #define WS_CHILDWINDOW  (WS_CHILD)
  808. #endif
  809. /* clipboard metafile picture structure */
  810. #ifndef NOMETAFILE
  811. typedef struct tagHANDLETABLE {
  812.     HANDLE  objectHandle[1];
  813. } HANDLETABLE;
  814. typedef HANDLETABLE *PHANDLETABLE;
  815. typedef HANDLETABLE FAR *LPHANDLETABLE;
  816. typedef struct tagMETARECORD {
  817.     DWORD rdSize;
  818.     WORD  rdFunction;
  819.     WORD  rdParm[1];
  820. } METARECORD;
  821. typedef METARECORD   *PMETARECORD;
  822. typedef METARECORD    FAR *LPMETARECORD;
  823. typedef struct tagMETAFILEPICT {
  824.     int mm;
  825.     int xExt, yExt;
  826.     HANDLE hMF;
  827. } METAFILEPICT;
  828. typedef METAFILEPICT FAR *LPMETAFILEPICT;
  829. #endif
  830. #ifndef NOCLIPBOARD
  831. /* predefined clipboard formats */
  832. #define CF_TEXT 1
  833. #define CF_BITMAP 2
  834. #define CF_METAFILEPICT 3
  835. #define CF_SYLK 4
  836. #define CF_DIF 5
  837. #define CF_TIFF 6
  838. #define CF_OEMTEXT 7
  839. #define CF_OWNERDISPLAY     0x80       /* owner display */
  840. #define CF_DSPTEXT     0x81       /* display text */
  841. #define CF_DSPBITMAP     0x82       /* display bitmap */
  842. #define CF_DSPMETAFILEPICT  0x83       /* display metafile */
  843. /* Private clipboard format range */
  844. #define CF_PRIVATEFIRST 0x200     /* Anything in this range doesn't */
  845. #define CF_PRIVATELAST 0x2FF     /* get GlobalFree'd */
  846. #define CF_GDIOBJFIRST 0x300     /* Anything in this range gets */
  847. #define CF_GDIOBJLAST 0x3FF     /* DeleteObject'ed */
  848. #endif
  849. #ifndef NOHDC
  850. #ifndef NORECT
  851. typedef struct tagPAINTSTRUCT {
  852.     HDC hdc;
  853.     BOOL fErase;
  854.     RECT rcPaint;
  855.     BOOL fRestore;
  856.     BOOL fIncUpdate;
  857.     BYTE rgbReserved[16];
  858. } PAINTSTRUCT;
  859. typedef PAINTSTRUCT *PPAINTSTRUCT;
  860. typedef PAINTSTRUCT NEAR *NPPAINTSTRUCT;
  861. typedef PAINTSTRUCT FAR *LPPAINTSTRUCT;
  862. #endif
  863. #endif
  864. #ifndef NOCREATESTRUCT
  865. typedef struct tagCREATESTRUCT {
  866.     LPSTR lpCreateParams;
  867.     HANDLE hInstance;
  868.     HANDLE hMenu;
  869.     HWND hwndParent;
  870.     int cy;
  871.     int cx;
  872.     int y;
  873.     int x;
  874.     long style;
  875.     LPSTR lpszName;
  876.     LPSTR lpszClass;
  877. } CREATESTRUCT;
  878. typedef CREATESTRUCT FAR *LPCREATESTRUCT;
  879. #endif
  880. #ifndef NOTEXTMETRIC
  881. /* TextMetric structure */
  882. typedef struct tagTEXTMETRIC {
  883.     short int tmHeight;
  884.     short int tmAscent;
  885.     short int tmDescent;
  886.     short int tmInternalLeading;
  887.     short int tmExternalLeading;
  888.     short int tmAveCharWidth;
  889.     short int tmMaxCharWidth;
  890.     short int tmWeight;
  891.     BYTE      tmItalic;
  892.     BYTE      tmUnderlined;
  893.     BYTE      tmStruckOut;
  894.     BYTE      tmFirstChar;
  895.     BYTE      tmLastChar;
  896.     BYTE      tmDefaultChar;
  897.     BYTE      tmBreakChar;
  898.     BYTE      tmPitchAndFamily;
  899.     BYTE      tmCharSet;
  900.     short int tmOverhang;
  901.     short int tmDigitizedAspectX;
  902.     short int tmDigitizedAspectY;
  903. } TEXTMETRIC;
  904. typedef TEXTMETRIC *PTEXTMETRIC;
  905. typedef TEXTMETRIC NEAR *NPTEXTMETRIC;
  906. typedef TEXTMETRIC FAR *LPTEXTMETRIC;
  907. #endif
  908. #ifndef NOGDI
  909. /* GDI logical objects */
  910. /* Pel Array */
  911. typedef struct tagPELARRAY {
  912.     short int paXCount;
  913.     short int paYCount;
  914.     short int paXExt;
  915.     short int paYExt;
  916.     BYTE      paRGBs;
  917. } PELARRAY;
  918. typedef PELARRAY     *PPELARRAY;
  919. typedef PELARRAY NEAR *NPPELARRAY;
  920. typedef PELARRAY FAR *LPPELARRAY;
  921. /* Logical Brush */
  922. typedef struct tagLOGBRUSH {
  923.     WORD      lbStyle;
  924.     DWORD     lbColor;
  925.     short int lbHatch;
  926. } LOGBRUSH;
  927. typedef LOGBRUSH *PLOGBRUSH;
  928. typedef LOGBRUSH NEAR *NPLOGBRUSH;
  929. typedef LOGBRUSH    FAR *LPLOGBRUSH;
  930. /* A PATTERN and a LOGBRUSH are the same thing */
  931. typedef LOGBRUSH     PATTERN;
  932. typedef PATTERN     *PPATTERN;
  933. typedef PATTERN NEAR *NPPATTERN;
  934. typedef PATTERN FAR *LPPATTERN;
  935. #ifndef NOPOINT
  936. /* Logical Pen */
  937. typedef struct tagLOGPEN {
  938.     WORD   lopnStyle;
  939.     POINT  lopnWidth;
  940.     DWORD  lopnColor;
  941. } LOGPEN;
  942. typedef LOGPEN     *PLOGPEN;
  943. typedef LOGPEN NEAR *NPLOGPEN;
  944. typedef LOGPEN FAR *LPLOGPEN;
  945. #endif
  946. /* Logical Font */
  947. #define LF_FACESIZE 32
  948. typedef struct tagLOGFONT {
  949.     short int lfHeight;
  950.     short int lfWidth;
  951.     short int lfEscapement;
  952.     short int lfOrientation;
  953.     short int lfWeight;
  954.     BYTE      lfItalic;
  955.     BYTE      lfUnderline;
  956.     BYTE      lfStrikeOut;
  957.     BYTE      lfCharSet;
  958.     BYTE      lfOutPrecision;
  959.     BYTE      lfClipPrecision;
  960.     BYTE      lfQuality;
  961.     BYTE      lfPitchAndFamily;
  962.     BYTE      lfFaceName[LF_FACESIZE];
  963. } LOGFONT;
  964. typedef LOGFONT     *PLOGFONT;
  965. typedef LOGFONT NEAR *NPLOGFONT;
  966. typedef LOGFONT FAR *LPLOGFONT;
  967. /* Logical font constants */
  968. #define OUT_DEFAULT_PRECIS    0
  969. #define OUT_STRING_PRECIS     1
  970. #define OUT_CHARACTER_PRECIS  2
  971. #define OUT_STROKE_PRECIS     3
  972. #define CLIP_DEFAULT_PRECIS   0
  973. #define CLIP_CHARACTER_PRECIS 1
  974. #define CLIP_STROKE_PRECIS    2
  975. #define DEFAULT_QUALITY       0
  976. #define DRAFT_QUALITY       1
  977. #define PROOF_QUALITY       2
  978. #define DEFAULT_PITCH       0
  979. #define FIXED_PITCH       1
  980. #define VARIABLE_PITCH       2
  981. #define ANSI_CHARSET       0
  982. #define SHIFTJIS_CHARSET      128     /* Kanji CharSet */
  983. #define OEM_CHARSET       255
  984. /* GDI font families. */
  985. #define FF_DONTCARE (0<<4) /* Don't care or don't know. */
  986. #define FF_ROMAN (1<<4) /* Variable stroke width, serifed. */
  987. /* Times Roman, Century Schoolbook, etc. */
  988. #define FF_SWISS (2<<4) /* Variable stroke width, sans-serifed. */
  989. /* Helvetica, Swiss, etc. */
  990. #define FF_MODERN (3<<4) /* Constant stroke width, serifed or sans-serifed. */
  991. /* Pica, Elite, Courier, etc. */
  992. #define FF_SCRIPT (4<<4) /* Cursive, etc. */
  993. #define FF_DECORATIVE (5<<4) /* Old English, etc. */
  994. /* Font weights lightest to darkest. */
  995. #define FW_DONTCARE 0
  996. #define FW_THIN 100
  997. #define FW_EXTRALIGHT 200
  998. #define FW_LIGHT 300
  999. #define FW_NORMAL 400
  1000. #define FW_MEDIUM 500
  1001. #define FW_SEMIBOLD 600
  1002. #define FW_BOLD 700
  1003. #define FW_EXTRABOLD 800
  1004. #define FW_HEAVY 900
  1005. #define FW_ULTRALIGHT FW_EXTRALIGHT
  1006. #define FW_REGULAR FW_NORMAL
  1007. #define FW_DEMIBOLD FW_SEMIBOLD
  1008. #define FW_ULTRABOLD FW_EXTRABOLD
  1009. #define FW_BLACK FW_HEAVY
  1010. /* EnumFonts masks. */
  1011. #define RASTER_FONTTYPE 0x0001
  1012. #define DEVICE_FONTTYPE 0X0002
  1013. /* GDI rgb values packed into a dword */
  1014. #define RGB(r,g,b) (((DWORD) ((b) << 8 | (g)) << 8) | (r))
  1015. #define GetRValue(rgb) ((BYTE)(rgb))
  1016. #define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8))
  1017. #define GetBValue(rgb) ((BYTE)((rgb)>>16))
  1018. /* GDI Background Modes */
  1019. #define TRANSPARENT    1
  1020. #define OPAQUE        2
  1021. /* GDI map modes */
  1022. #define MM_TEXT     1
  1023. #define MM_LOMETRIC     2
  1024. #define MM_HIMETRIC     3
  1025. #define MM_LOENGLISH     4
  1026. #define MM_HIENGLISH     5
  1027. #define MM_TWIPS     6
  1028. #define MM_ISOTROPIC     7
  1029. #define MM_ANISOTROPIC     8
  1030. /* GDI coordinate modes */
  1031. #define ABSOLUTE     1
  1032. #define RELATIVE     2
  1033. /* Stock Logical Objects */
  1034. #define WHITE_BRUSH     0
  1035. #define LTGRAY_BRUSH     1
  1036. #define GRAY_BRUSH     2
  1037. #define DKGRAY_BRUSH     3
  1038. #define BLACK_BRUSH     4
  1039. #define NULL_BRUSH     5
  1040. #define HOLLOW_BRUSH     NULL_BRUSH
  1041. #define WHITE_PEN     6
  1042. #define BLACK_PEN     7
  1043. #define NULL_PEN     8
  1044. #define OEM_FIXED_FONT    10
  1045. #define ANSI_FIXED_FONT    11
  1046. #define ANSI_VAR_FONT    12
  1047. #define SYSTEM_FONT    13
  1048. #define DEVICEDEFAULT_FONT 14
  1049. /* GDI Brush Style definitions. */
  1050. #define BS_SOLID     0
  1051. #define BS_NULL     1
  1052. #define BS_HOLLOW     BS_NULL
  1053. #define BS_HATCHED     2
  1054. #define BS_PATTERN     3
  1055. #define BS_INDEXED     4
  1056. /* GDI Hatch Style definitions. */
  1057. #define HS_HORIZONTAL     0     /* ----- */
  1058. #define HS_VERTICAL     1     /* ||||| */
  1059. #define HS_FDIAGONAL     2     /* ///// */
  1060. #define HS_BDIAGONAL     3     /* \\ */
  1061. #define HS_CROSS     4     /* +++++ */
  1062. #define HS_DIAGCROSS     5     /* xxxxx */
  1063. /* GDI Pen Style definitions */
  1064. #define PS_SOLID     0     /* solid pen */
  1065. #define PS_DASH     1     /* ------- */
  1066. #define PS_DOT     2     /* ....... */
  1067. #define PS_DASHDOT     3     /* _._._._ */
  1068. #define PS_DASHDOTDOT     4     /* _.._.._ */
  1069. #define PS_NULL     5     /* */
  1070. /* Device Parameters for GetDeviceCaps() */
  1071. #define DRIVERVERSION 0     /* Device driver version       */
  1072. #define TECHNOLOGY    2     /* Device classification       */
  1073. #define HORZSIZE      4     /* Horizontal size in millimeters       */
  1074. #define VERTSIZE      6     /* Vertical   size in millimeters       */
  1075. #define HORZRES       8     /* Horizontal width in pixels       */
  1076. #define VERTRES       10    /* Vertical   width in pixels       */
  1077. #define BITSPIXEL     12    /* Number of bits per pixel       */
  1078. #define PLANES       14    /* Number of planes       */
  1079. #define NUMBRUSHES    16    /* Number of brushes the device has      */
  1080. #define NUMPENS       18    /* Number of pens the device has       */
  1081. #define NUMMARKERS    20    /* Number of markers the device has      */
  1082. #define NUMFONTS      22    /* Number of fonts the device has       */
  1083. #define NUMCOLORS     24
  1084. #define PDEVICESIZE   26    /* Size required for device descriptor   */
  1085. #define CURVECAPS     28    /* Curves   capabilities       */
  1086. #define LINECAPS      30    /* Line   capabilities       */
  1087. #define POLYGONALCAPS 32    /* Polygonal capabilities       */
  1088. #define TEXTCAPS      34    /* Text   capabilities       */
  1089. #define CLIPCAPS      36    /* Clipping  capabilities       */
  1090. #define RASTERCAPS    38    /* Bitblt   capabilities       */
  1091. #define ASPECTX       40    /* Length of the X leg       */
  1092. #define ASPECTY       42    /* Length of the Y leg       */
  1093. #define ASPECTXY      44    /* Length of the hypotenuse       */
  1094. #define LOGPIXELSX    88    /* Logical pixels/inch in X       */
  1095. #define LOGPIXELSY    90    /* Logical pixels/inch in Y       */
  1096. #ifndef NOGDICAPMASKS
  1097. /* Device capability masks */
  1098. /*   Device Technologies */
  1099. #define DT_PLOTTER 0   /* Vector plotter        */
  1100. #define DT_RASDISPLAY 1   /* Raster display        */
  1101. #define DT_RASPRINTER 2   /* Raster printer        */
  1102. #define DT_RASCAMERA 3   /* Raster camera        */
  1103. #define DT_CHARSTREAM 4   /* Character-stream, PLP   */
  1104. #define DT_METAFILE 5   /* Metafile, VDM        */
  1105. #define DT_DISPFILE 6   /* Display-file        */
  1106. /*   Curve Capabilities */
  1107. #define CC_NONE 0   /* Curves not supported    */
  1108. #define CC_CIRCLES 1   /* Can do circles        */
  1109. #define CC_PIE 2   /* Can do pie wedges       */
  1110. #define CC_CHORD 4   /* Can do chord arcs       */
  1111. #define CC_ELLIPSES 8   /* Can do ellipese        */
  1112. #define CC_WIDE 16  /* Can do wide lines       */
  1113. #define CC_STYLED 32  /* Can do styled lines     */
  1114. #define CC_WIDESTYLED 64  /* Can do wide styled lines*/
  1115. #define CC_INTERIORS 128 /* Can do interiors        */
  1116. /*   Line Capabilities */
  1117. #define LC_NONE 0   /* Lines not supported     */
  1118. #define LC_POLYLINE 2   /* Can do polylines        */
  1119. #define LC_MARKER 4   /* Can do markers        */
  1120. #define LC_POLYMARKER 8   /* Can do polymarkers      */
  1121. #define LC_WIDE 16  /* Can do wide lines       */
  1122. #define LC_STYLED 32   /* Can do styled lines */
  1123. #define LC_WIDESTYLED 64   /* Can do wide styled lines*/
  1124. #define LC_INTERIORS 128  /* Can do interiors */
  1125. /*   Polygonal Capabilities */
  1126. #define PC_NONE 0   /* Polygonals not supported*/
  1127. #define PC_POLYGON 1   /* Can do polygons        */
  1128. #define PC_RECTANGLE 2   /* Can do rectangles       */
  1129. #define PC_TRAPEZOID 4   /* Can do trapezoids       */
  1130. #define PC_SCANLINE 8   /* Can do scanlines        */
  1131. #define PC_WIDE 16  /* Can do wide borders     */
  1132. #define PC_STYLED 32   /* Can do styled borders */
  1133. #define PC_WIDESTYLED 64   /* Can do wide styled borders*/
  1134. #define PC_INTERIORS 128  /* Can do interiors */
  1135. /*   Polygonal Capabilities */
  1136. #define CP_NONE 0   /* no clipping of Output   */
  1137. #define CP_RECTANGLE 1   /* Output clipped to Rects */
  1138. /*   Text Capabilities */
  1139. #define TC_OP_CHARACTER 0x0001 /* Can do OutputPrecision   CHARACTER    */
  1140. #define TC_OP_STROKE 0x0002 /* Can do OutputPrecision   STROKE    */
  1141. #define TC_CP_STROKE 0x0004 /* Can do ClipPrecision     STROKE    */
  1142. #define TC_CR_90 0x0008 /* Can do CharRotAbility    90    */
  1143. #define TC_CR_ANY 0x0010 /* Can do CharRotAbility    ANY    */
  1144. #define TC_SF_X_YINDEP 0x0020 /* Can do ScaleFreedom     X_YINDEPENDENT */
  1145. #define TC_SA_DOUBLE 0x0040 /* Can do ScaleAbility     DOUBLE    */
  1146. #define TC_SA_INTEGER 0x0080 /* Can do ScaleAbility     INTEGER    */
  1147. #define TC_SA_CONTIN 0x0100 /* Can do ScaleAbility     CONTINUOUS    */
  1148. #define TC_EA_DOUBLE 0x0200 /* Can do EmboldenAbility   DOUBLE    */
  1149. #define TC_IA_ABLE 0x0400 /* Can do ItalisizeAbility  ABLE    */
  1150. #define TC_UA_ABLE 0x0800 /* Can do UnderlineAbility  ABLE    */
  1151. #define TC_SO_ABLE 0x1000 /* Can do StrikeOutAbility  ABLE    */
  1152. #define TC_RA_ABLE 0x2000 /* Can do RasterFontAble    ABLE    */
  1153. #define TC_VA_ABLE 0x4000 /* Can do VectorFontAble    ABLE    */
  1154. #define TC_RESERVED 0x8000 /* Reserved.    */
  1155. #endif
  1156. /*   Raster Capabilities */
  1157. #define RC_BITBLT 1   /* Can do standard non-stretching, non-inverting BLT. */
  1158. #define RC_BANDING 2   /* Device requires banding support   */
  1159. #define RC_SCALING 4   /* Device requires scaling support */
  1160. #define RC_BITMAP64 8   /* Device can support >64K bitmap  */
  1161. #endif
  1162. #ifndef NOMSG
  1163. BOOL FAR PASCAL GetMessage(LPMSG, HWND, unsigned, unsigned);
  1164. BOOL FAR PASCAL TranslateMessage(LPMSG);
  1165. LONG FAR PASCAL DispatchMessage(LPMSG);
  1166. BOOL FAR PASCAL PeekMessage(LPMSG, HWND, unsigned, WORD, WORD);
  1167. /* PeekMessage options */
  1168. #define PM_REMOVE   TRUE
  1169. #define PM_NOREMOVE FALSE
  1170. #define PM_NOYIELD  0x02
  1171. #endif
  1172. BOOL  FAR PASCAL SwapMouseButton(BOOL);
  1173. DWORD FAR PASCAL GetMessagePos(void);
  1174. long  FAR PASCAL GetMessageTime(void);
  1175. HWND FAR PASCAL GetSysModalWindow(void);
  1176. HWND FAR PASCAL SetSysModalWindow(HWND);
  1177. #ifndef NOWINMESSAGES
  1178. long FAR PASCAL SendMessage(HWND, unsigned, WORD, LONG);
  1179. BOOL FAR PASCAL PostMessage(HWND, unsigned, WORD, LONG);
  1180. BOOL FAR PASCAL PostAppMessage(HANDLE, unsigned, WORD, LONG);
  1181. void FAR PASCAL ReplyMessage(long);
  1182. void FAR PASCAL WaitMessage(void);
  1183. long FAR PASCAL DefWindowProc(HWND, unsigned, WORD, LONG);
  1184. void FAR PASCAL PostQuitMessage(int);
  1185. long FAR PASCAL CallWindowProc(FARPROC, HWND, unsigned, WORD, LONG);
  1186. BOOL FAR PASCAL InSendMessage(void);
  1187. #endif
  1188. WORD FAR PASCAL GetDoubleClickTime( void );
  1189. void FAR PASCAL SetDoubleClickTime(WORD);
  1190. #ifndef NOWNDCLASS
  1191. #ifndef NOBRUSH
  1192. BOOL FAR PASCAL RegisterClass(LPWNDCLASS);
  1193. #endif
  1194. #endif
  1195. BOOL FAR PASCAL SetMessageQueue(int);
  1196. HWND FAR PASCAL CreateWindow(LPSTR, LPSTR, DWORD, int, int, int, int, HWND, HMENU, HANDLE, LPSTR);
  1197. #define     CW_USEDEFAULT ((int)0x8000)    /*used on both x and cx */
  1198. BOOL FAR PASCAL IsWindow(HWND);
  1199. BOOL FAR PASCAL DestroyWindow(HWND);
  1200. BOOL FAR PASCAL ShowWindow(HWND, int);
  1201. BOOL FAR PASCAL FlashWindow(HWND, BOOL);
  1202. void FAR PASCAL ShowOwnedPopups(HWND, BOOL);
  1203. BOOL FAR PASCAL OpenIcon(HWND);
  1204. void FAR PASCAL CloseWindow(HWND);
  1205. void FAR PASCAL MoveWindow(HWND, int, int, int, int, BOOL);
  1206. void FAR PASCAL SetWindowPos(HWND, HWND, int, int, int, int, WORD);
  1207. BOOL FAR PASCAL IsWindowVisible(HWND);
  1208. BOOL FAR PASCAL IsIconic(HWND);
  1209. BOOL FAR PASCAL AnyPopup(void);
  1210. void FAR PASCAL BringWindowToTop(HWND);
  1211. BOOL FAR PASCAL IsZoomed(HWND);
  1212. /* SetWindowPos flags */
  1213. #define SWP_NOSIZE  0x01
  1214. #define SWP_NOMOVE  0x02
  1215. #define SWP_NOZORDER  0x04
  1216. #define SWP_NOREDRAW  0x08
  1217. #define SWP_NOACTIVATE  0x10
  1218. #define SWP_DRAWFRAME  0x20
  1219. #define SWP_SHOWWINDOW  0x40
  1220. #define SWP_HIDEWINDOW  0x80
  1221. #define SWP_NOCOPYBITS  0x0100
  1222. #define SWP_NOREPOSITION 0x200
  1223. #ifndef NODRAWFRAME
  1224. #ifndef NORECT
  1225. #ifndef NOHDC
  1226. /* DrawFrame and associated defines */
  1227. #define DF_SHIFT0     0x0000
  1228. #define DF_SHIFT1     0x0001
  1229. #define DF_SHIFT2     0x0002
  1230. #define DF_SHIFT3     0x0003
  1231. #define DF_PATCOPY     0x0000
  1232. #define DF_PATINVERT     0x0004
  1233. #define DF_SCROLLBAR     (COLOR_SCROLLBAR << 3)
  1234. #define DF_BACKGROUND     (COLOR_BACKGROUND << 3)
  1235. #define DF_ACTIVECAPTION    (COLOR_ACTIVECAPTION << 3)
  1236. #define DF_INACTIVECAPTION  (COLOR_INACTIVECAPTION << 3)
  1237. #define DF_MENU     (COLOR_MENU << 3)
  1238. #define DF_WINDOW     (COLOR_WINDOW << 3)
  1239. #define DF_WINDOWFRAME     (COLOR_WINDOWFRAME << 3)
  1240. #define DF_MENUTEXT     (COLOR_MENUTEXT << 3)
  1241. #define DF_WINDOWTEXT     (COLOR_WINDOWTEXT << 3)
  1242. #define DF_CAPTIONTEXT     (COLOR_CAPTIONTEXT << 3)
  1243. #define DF_ACTIVEBORDER     (COLOR_ACTIVEBORDER << 3)
  1244. #define DF_INACTIVEBORDER   (COLOR_INACTIVEBORDER << 3)
  1245. #define DF_APPWORKSPACE     (COLOR_APPWORKSPACE << 3)
  1246. #define DF_GRAY     (DF_APPWORKSPACE + (1 << 3))
  1247. #endif
  1248. #endif
  1249. #endif
  1250. /* DrawText format flags */
  1251. #ifndef NODRAWTEXT
  1252. #define DT_LEFT    0x00
  1253. #define DT_CENTER    0x01
  1254. #define DT_RIGHT    0x02
  1255. #define DT_TOP    0x00
  1256. #define DT_VCENTER    0x04
  1257. #define DT_BOTTOM    0x08
  1258. #define DT_WORDBREAK    0x10
  1259. #define DT_SINGLELINE    0x20
  1260. #define DT_EXPANDTABS    0x40
  1261. #define DT_TABSTOP    0x80
  1262. #define DT_NOCLIP    0x100
  1263. #define DT_EXTERNALLEADING 0x200
  1264. #define DT_CALCRECT    0x400
  1265. #define DT_NOPREFIX    0x800
  1266. #define DT_INTERNAL    0x1000
  1267. #ifndef NOHDC
  1268. #ifndef NORECT
  1269. int  FAR PASCAL DrawText(HDC, LPSTR, int, LPRECT, WORD);
  1270. #endif
  1271. BOOL FAR PASCAL DrawIcon(HDC, int, int, HICON);
  1272. #endif
  1273. #endif
  1274. #ifndef NOCTLMGR
  1275. HWND FAR PASCAL CreateDialog(HANDLE, LPSTR, HWND, FARPROC);
  1276. HWND FAR PASCAL CreateDialogIndirect(HANDLE, LPSTR, HWND, FARPROC);
  1277. int  FAR PASCAL DialogBox(HANDLE, LPSTR, HWND, FARPROC);
  1278. int  FAR PASCAL DialogBoxIndirect(HANDLE, HANDLE, HWND, FARPROC);
  1279. void FAR PASCAL EndDialog(HWND, int);
  1280. HWND FAR PASCAL GetDlgItem(HWND, int);
  1281. void FAR PASCAL SetDlgItemInt(HWND, int, unsigned, BOOL);
  1282. unsigned FAR PASCAL GetDlgItemInt(HWND, int, BOOL FAR *, BOOL);
  1283. void FAR PASCAL SetDlgItemText(HWND, int, LPSTR);
  1284. int  FAR PASCAL GetDlgItemText(HWND, int, LPSTR, int);
  1285. void FAR PASCAL CheckDlgButton(HWND, int, WORD);
  1286. void FAR PASCAL CheckRadioButton(HWND, int, int, int);
  1287. WORD FAR PASCAL IsDlgButtonChecked(HWND, int);
  1288. long FAR PASCAL SendDlgItemMessage(HWND, int, unsigned, WORD, LONG);
  1289. HWND FAR PASCAL GetNextDlgGroupItem(HWND, HWND, BOOL);
  1290. HWND FAR PASCAL GetNextDlgTabItem(HWND, HWND, BOOL);
  1291. #endif
  1292. #ifndef NOMSG
  1293. BOOL FAR PASCAL CallMsgFilter(LPMSG, int);
  1294. #endif
  1295. #ifndef NOCLIPBOARD
  1296. /* Clipboard manager routines */
  1297. BOOL   FAR PASCAL OpenClipboard(HWND);
  1298. BOOL   FAR PASCAL CloseClipboard(void);
  1299. HWND   FAR PASCAL GetClipboardOwner(void);
  1300. HWND   FAR PASCAL SetClipboardViewer(HWND);
  1301. HWND   FAR PASCAL GetClipboardViewer(void);
  1302. BOOL   FAR PASCAL ChangeClipboardChain(HWND, HWND);
  1303. HANDLE FAR PASCAL SetClipboardData(WORD, HANDLE);
  1304. HANDLE FAR PASCAL GetClipboardData(WORD);
  1305. WORD   FAR PASCAL RegisterClipboardFormat(LPSTR);
  1306. int    FAR PASCAL CountClipboardFormats(void);
  1307. WORD   FAR PASCAL EnumClipboardFormats(WORD);
  1308. int    FAR PASCAL GetClipboardFormatName(WORD, LPSTR, int);
  1309. BOOL   FAR PASCAL EmptyClipboard(void);
  1310. BOOL   FAR PASCAL IsClipboardFormatAvailable(WORD);
  1311. #endif
  1312. HWND FAR PASCAL SetFocus(HWND);
  1313. HWND FAR PASCAL GetFocus(void);
  1314. HWND FAR PASCAL GetActiveWindow(void);
  1315. int  FAR PASCAL GetKeyState(int);
  1316. int  FAR PASCAL GetAsyncKeyState(int);
  1317. void FAR PASCAL GetKeyboardState(BYTE FAR *);
  1318. void FAR PASCAL SetKeyboardState(BYTE FAR *);
  1319. BOOL FAR PASCAL EnableHardwareInput(BOOL);
  1320. BOOL FAR PASCAL GetInputState();
  1321. HWND FAR PASCAL GetCapture(void);
  1322. HWND FAR PASCAL SetCapture(HWND);
  1323. void FAR PASCAL ReleaseCapture(void);
  1324. /* Windows Functions */
  1325. WORD FAR PASCAL SetTimer(HWND, short, unsigned, FARPROC);
  1326. BOOL FAR PASCAL KillTimer(HWND, short);
  1327. BOOL FAR PASCAL EnableWindow(HWND,BOOL);
  1328. BOOL FAR PASCAL IsWindowEnabled(HWND);
  1329. HANDLE FAR PASCAL LoadAccelerators(HANDLE, LPSTR);
  1330. #ifndef NOMSG
  1331. int  FAR PASCAL TranslateAccelerator(HWND, HANDLE, LPMSG);
  1332. #endif
  1333. #ifndef NOSYSMETRICS
  1334. /* GetSystemMetrics codes */
  1335. #define SM_CXSCREEN    0
  1336. #define SM_CYSCREEN    1
  1337. #define SM_CXVSCROLL    2
  1338. #define SM_CYHSCROLL    3
  1339. #define SM_CYCAPTION    4
  1340. #define SM_CXBORDER    5
  1341. #define SM_CYBORDER    6
  1342. #define SM_CXDLGFRAME    7
  1343. #define SM_CYDLGFRAME    8
  1344. #define SM_CYVTHUMB    9
  1345. #define SM_CXHTHUMB   10
  1346. #define SM_CXICON   11
  1347. #define SM_CYICON   12
  1348. #define SM_CXCURSOR   13
  1349. #define SM_CYCURSOR   14
  1350. #define SM_CYMENU   15
  1351. #define SM_CXFULLSCREEN   16
  1352. #define SM_CYFULLSCREEN   17
  1353. #define SM_CYKANJIWINDOW  18
  1354. #define SM_MOUSEPRESENT   19
  1355. #define SM_CYVSCROLL   20
  1356. #define SM_CXHSCROLL   21
  1357. #define SM_DEBUG   22
  1358. #define SM_SWAPBUTTON   23
  1359. #define SM_RESERVED1   24
  1360. #define SM_RESERVED2   25
  1361. #define SM_RESERVED3   26     /* new additions since 2.0 */
  1362. #define SM_RESERVED4   27
  1363. #define SM_CXMIN   28
  1364. #define SM_CYMIN   29
  1365. #define SM_CXSIZE   30
  1366. #define SM_CYSIZE   31
  1367. #define SM_CXFRAME   32
  1368. #define SM_CYFRAME   33
  1369. #define SM_CXMINTRACK   34
  1370. #define SM_CYMINTRACK   35
  1371. #define SM_CMETRICS   36
  1372. int FAR PASCAL GetSystemMetrics(int);
  1373. #endif
  1374. #ifndef NOMENUS
  1375. BOOL  FAR PASCAL HiliteMenuItem(HWND, HMENU, WORD, WORD);
  1376. int   FAR PASCAL GetMenuString(HMENU, WORD, LPSTR, int, WORD);
  1377. WORD  FAR PASCAL GetMenuState(HMENU, WORD, WORD);
  1378. void  FAR PASCAL DrawMenuBar(HWND);
  1379. HMENU FAR PASCAL GetSystemMenu(HWND, BOOL);
  1380. HMENU FAR PASCAL CreateMenu(void);
  1381. BOOL  FAR PASCAL DestroyMenu(HMENU);
  1382. BOOL  FAR PASCAL ChangeMenu(HMENU, WORD, LPSTR, WORD, WORD);
  1383. BOOL  FAR PASCAL CheckMenuItem(HMENU, WORD, WORD);
  1384. BOOL  FAR PASCAL EnableMenuItem(HMENU, WORD, WORD);
  1385. HMENU FAR PASCAL GetSubMenu(HMENU, int);
  1386. WORD  FAR PASCAL GetMenuItemID(HMENU, int);
  1387. WORD  FAR PASCAL GetMenuItemCount(HMENU);
  1388. #endif
  1389. BOOL FAR PASCAL GrayString(HDC, HBRUSH, FARPROC, DWORD, int, int, int, int, int);
  1390. void FAR PASCAL UpdateWindow(HWND);
  1391. HWND FAR PASCAL SetActiveWindow(HWND);
  1392. #ifndef NOHDC
  1393. HDC FAR PASCAL GetWindowDC(HWND);
  1394. HDC FAR PASCAL GetDC(HWND);
  1395. int FAR PASCAL ReleaseDC(HWND, HDC);
  1396. #ifndef NORECT
  1397. HDC FAR PASCAL BeginPaint(HWND, LPPAINTSTRUCT);
  1398. void FAR PASCAL EndPaint(HWND, LPPAINTSTRUCT);
  1399. BOOL FAR PASCAL GetUpdateRect(HWND, LPRECT, BOOL);
  1400. int  FAR PASCAL GetUpdateRgn(HWND, HRGN, BOOL);
  1401. #endif
  1402. #endif
  1403. short FAR PASCAL ExcludeUpdateRgn(HDC, HWND);
  1404. #ifndef NORECT
  1405. void FAR PASCAL InvalidateRect(HWND, LPRECT, BOOL);
  1406. void FAR PASCAL ValidateRect(HWND, LPRECT);
  1407. #endif
  1408. #ifndef NOREGION
  1409. void FAR PASCAL InvalidateRgn(HWND, HRGN, BOOL);
  1410. void FAR PASCAL ValidateRgn(HWND, HRGN);
  1411. #endif
  1412. #ifndef NORECT
  1413. void FAR PASCAL ScrollWindow(HWND, int, int, LPRECT, LPRECT);
  1414. BOOL FAR PASCAL ScrollDC(HDC, int, int, LPRECT, LPRECT, HRGN, LPRECT);
  1415. #endif
  1416. #ifndef NOSCROLL
  1417. int  FAR PASCAL SetScrollPos(HWND, int, int, BOOL);
  1418. int  FAR PASCAL GetScrollPos(HWND, int);
  1419. void FAR PASCAL SetScrollRange(HWND, int, int, int, BOOL);
  1420. void FAR PASCAL GetScrollRange(HWND, int, LPINT, LPINT);
  1421. void FAR PASCAL ShowScrollBar(HWND, WORD, BOOL);
  1422. #endif
  1423. BOOL   FAR PASCAL SetProp(HWND, LPSTR, HANDLE);
  1424. HANDLE FAR PASCAL GetProp(HWND, LPSTR);
  1425. HANDLE FAR PASCAL RemoveProp(HWND, LPSTR);
  1426. int    FAR PASCAL EnumProps(HWND, FARPROC);
  1427. void   FAR PASCAL SetWindowText(HWND, LPSTR);
  1428. int    FAR PASCAL GetWindowText(HWND, LPSTR, int);
  1429. int    FAR PASCAL GetWindowTextLength(HWND);
  1430. #ifndef NOMENUS
  1431. BOOL   FAR PASCAL SetMenu(HWND, HMENU);
  1432. HMENU  FAR PASCAL GetMenu(HWND);
  1433. #endif
  1434. #ifndef NORECT
  1435. void FAR PASCAL GetClientRect(HWND, LPRECT);
  1436. void FAR PASCAL GetWindowRect(HWND, LPRECT);
  1437. void FAR PASCAL AdjustWindowRect(LPRECT, long, BOOL);
  1438. #endif
  1439. /* MessageBox type flags */
  1440. #ifndef NOMB
  1441. #define MB_OK     0x0000
  1442. #define MB_OKCANCEL     0x0001
  1443. #define MB_ABORTRETRYIGNORE 0x0002
  1444. #define MB_YESNOCANCEL     0x0003
  1445. #define MB_YESNO     0x0004
  1446. #define MB_RETRYCANCEL     0x0005
  1447. #define MB_ICONHAND     0x0010
  1448. #define MB_ICONQUESTION     0x0020
  1449. #define MB_ICONEXCLAMATION  0x0030
  1450. #define MB_ICONASTERISK     0x0040
  1451. #define MB_DEFBUTTON1     0x0000
  1452. #define MB_DEFBUTTON2     0x0100
  1453. #define MB_DEFBUTTON3     0x0200
  1454. #define MB_APPLMODAL     0x0000
  1455. #define MB_SYSTEMMODAL     0x1000
  1456. #define MB_NOFOCUS     0x8000
  1457. #define MB_MISCMASK     0xC000
  1458. #define MB_TYPEMASK     0x000F
  1459. #define MB_ICONMASK     0x00F0
  1460. #define MB_DEFMASK     0x0F00
  1461. #define MB_MODEMASK     0x3000
  1462. int  FAR PASCAL MessageBox(HWND, LPSTR, LPSTR, WORD);
  1463. BOOL FAR PASCAL MessageBeep(WORD);
  1464. #endif
  1465. int  FAR PASCAL ShowCursor(BOOL);
  1466. HCURSOR FAR PASCAL SetCursor(HCURSOR);
  1467. void FAR PASCAL SetCursorPos(int, int);
  1468. #ifndef NOPOINT
  1469. void FAR PASCAL GetCursorPos(LPPOINT);
  1470. #endif
  1471. #ifndef NORECT
  1472. void FAR PASCAL ClipCursor(LPRECT);
  1473. #endif
  1474. #ifndef NOBITMAP
  1475. void FAR PASCAL CreateCaret(HWND, HBITMAP, int, int);
  1476. #endif
  1477. WORD FAR PASCAL GetCaretBlinkTime();
  1478. void FAR PASCAL SetCaretBlinkTime(WORD);
  1479. void FAR PASCAL DestroyCaret(void);
  1480. void FAR PASCAL HideCaret(HWND);
  1481. void FAR PASCAL ShowCaret(HWND);
  1482. void FAR PASCAL SetCaretPos(int, int);
  1483. void FAR PASCAL GetCaretPos(LPPOINT);
  1484. #ifndef NOPOINT
  1485. void FAR PASCAL ClientToScreen(HWND, LPPOINT);
  1486. void FAR PASCAL ScreenToClient(HWND, LPPOINT);
  1487. HWND FAR PASCAL WindowFromPoint(POINT);
  1488. HWND FAR PASCAL ChildWindowFromPoint(HWND, POINT);
  1489. #endif
  1490. /* color type indices */
  1491. #ifndef NOCOLOR
  1492. /* for the WM_CTLCOLOR message */
  1493. #define CTLCOLOR_MSGBOX 0
  1494. #define CTLCOLOR_EDIT 1
  1495. #define CTLCOLOR_LISTBOX 2
  1496. #define CTLCOLOR_BTN 3
  1497. #define CTLCOLOR_DLG 4
  1498. #define CTLCOLOR_SCROLLBAR 5
  1499. #define CTLCOLOR_STATIC 6
  1500. #define CTLCOLOR_MAX 8     /* three bits max */
  1501. #define COLOR_SCROLLBAR 0
  1502. #define COLOR_BACKGROUND 1
  1503. #define COLOR_ACTIVECAPTION 2
  1504. #define COLOR_INACTIVECAPTION 3
  1505. #define COLOR_MENU 4
  1506. #define COLOR_WINDOW 5
  1507. #define COLOR_WINDOWFRAME 6
  1508. #define COLOR_MENUTEXT 7
  1509. #define COLOR_WINDOWTEXT 8
  1510. #define COLOR_CAPTIONTEXT 9
  1511. #define COLOR_ACTIVEBORDER 10
  1512. #define COLOR_INACTIVEBORDER 11
  1513. #define COLOR_APPWORKSPACE 12
  1514. DWORD FAR PASCAL GetSysColor(int);
  1515. void  FAR PASCAL SetSysColors(int, LPINT, long FAR *);
  1516. #endif
  1517. #define CP_GETBEEP 1
  1518. #define CP_SETBEEP 2
  1519. #define CP_GETMOUSE 3
  1520. #define CP_SETMOUSE 4
  1521. #define CP_GETBORDER 5
  1522. #define CP_SETBORDER 6
  1523. #define CP_TIMEOUTS 7
  1524. #define CP_KANJIMENU 8
  1525. #define CP_GETKSPEED  10
  1526. #define CP_SETKSPEED  11
  1527. void FAR PASCAL ControlPanelInfo(WORD, WORD, LONG);
  1528. #ifndef NOHDC
  1529. HDC   FAR PASCAL CreateDC(LPSTR, LPSTR, LPSTR, LPSTR);
  1530. HDC   FAR PASCAL CreateIC(LPSTR, LPSTR, LPSTR, LPSTR);
  1531. HDC   FAR PASCAL CreateCompatibleDC ( HDC );
  1532. BOOL  FAR PASCAL DeleteDC(HDC);
  1533. short FAR PASCAL SaveDC(HDC);
  1534. BOOL  FAR PASCAL RestoreDC(HDC, short);
  1535. DWORD FAR PASCAL MoveTo(HDC, short, short);
  1536. DWORD FAR PASCAL GetCurrentPosition(HDC);
  1537. BOOL  FAR PASCAL LineTo(HDC, short, short);
  1538. DWORD FAR PASCAL GetDCOrg(HDC);
  1539. #ifndef NORECT
  1540. BOOL  FAR PASCAL ExtTextOut(HDC, short, short, WORD, LPRECT, LPSTR, WORD, LPINT);
  1541. BOOL  FAR PASCAL FastWindowFrame( HDC, LPRECT, WORD, WORD, DWORD);
  1542. #endif
  1543. #ifndef NOPOINT
  1544. BOOL FAR PASCAL Polyline(HDC, LPPOINT, short);
  1545. BOOL FAR PASCAL Polygon( HDC, LPPOINT, short);
  1546. #endif
  1547. BOOL  FAR PASCAL Rectangle(HDC, short, short, short, short);
  1548. BOOL  FAR PASCAL RoundRect(HDC, short, short, short, short, short, short);
  1549. BOOL  FAR PASCAL Ellipse(HDC, short, short, short, short);
  1550. BOOL  FAR PASCAL Arc(HDC, short, short, short, short, short, short, short, short);
  1551. BOOL  FAR PASCAL Chord(HDC, short, short, short, short, short, short, short, short);
  1552. BOOL  FAR PASCAL Pie(HDC, short, short, short, short, short, short, short, short);
  1553. BOOL  FAR PASCAL PatBlt(HDC, short, short, short, short, DWORD);
  1554. BOOL  FAR PASCAL BitBlt(HDC, short, short, short, short, HDC, short, short, DWORD);
  1555. BOOL  FAR PASCAL StretchBlt(HDC, short, short, short, short, HDC, short, short, short, short, DWORD);
  1556. BOOL  FAR PASCAL TextOut(HDC, short, short, LPSTR, short);
  1557. BOOL  FAR PASCAL GetCharWidth(HDC, WORD, WORD, LPINT);
  1558. DWORD FAR PASCAL SetPixel( HDC, short, short, DWORD);
  1559. DWORD FAR PASCAL GetPixel( HDC, short, short);
  1560. BOOL  FAR PASCAL FloodFill( HDC, short, short, DWORD);
  1561. #endif
  1562. void  FAR PASCAL LineDDA(short, short, short, short, FARPROC, LPSTR);
  1563. #ifndef NORECT
  1564. #ifndef NOHDC
  1565. #ifndef NOBRUSH
  1566. int FAR PASCAL FillRect(HDC, LPRECT, HBRUSH);
  1567. int FAR PASCAL FrameRect(HDC, LPRECT, HBRUSH);
  1568. #endif
  1569. int FAR PASCAL InvertRect(HDC, LPRECT);
  1570. #endif
  1571. #endif
  1572. #ifndef NOREGION
  1573. #ifndef NOHDC
  1574. #ifndef NOBRUSH
  1575. BOOL FAR PASCAL FillRgn(HDC, HRGN, HBRUSH);
  1576. BOOL FAR PASCAL FrameRgn(HDC, HRGN, HBRUSH, short, short);
  1577. #endif
  1578. BOOL FAR PASCAL InvertRgn(HDC, HRGN);
  1579. BOOL FAR PASCAL PaintRgn(HDC, HRGN);
  1580. BOOL FAR PASCAL PtInRegion(HRGN, short, short);
  1581. #endif
  1582. #endif
  1583. HANDLE FAR PASCAL GetStockObject(short);
  1584. #ifndef NOPEN
  1585. HPEN FAR PASCAL CreatePen(short, short, DWORD);
  1586. HPEN FAR PASCAL CreatePenIndirect(LOGPEN FAR *);
  1587. #endif
  1588. #ifndef NOBRUSH
  1589. HBRUSH FAR PASCAL CreateSolidBrush(DWORD);
  1590. HBRUSH FAR PASCAL CreateHatchBrush(short,DWORD);
  1591. DWORD  FAR PASCAL SetBrushOrg(HDC, int, int);
  1592. DWORD  FAR PASCAL GetBrushOrg(HDC);
  1593. BOOL   FAR PASCAL UnrealizeObject(HBRUSH);
  1594. #endif
  1595. #ifndef NOBRUSH
  1596. #ifndef NOBITMAP
  1597. HBRUSH FAR PASCAL CreatePatternBrush(HBITMAP);
  1598. #endif
  1599. #ifndef NOGDI
  1600. HBRUSH FAR PASCAL CreateBrushIndirect(LOGBRUSH FAR *);
  1601. #endif
  1602. #endif
  1603. #ifndef NOBITMAP
  1604. HBITMAP FAR PASCAL CreateBitmap(short, short, BYTE, BYTE, LPSTR);
  1605. HBITMAP FAR PASCAL CreateBitmapIndirect(BITMAP FAR *);
  1606. #ifndef NOHDC
  1607. HBITMAP FAR PASCAL CreateCompatibleBitmap(HDC, short, short);
  1608. HBITMAP FAR PASCAL CreateDiscardableBitmap(HDC, short, short);
  1609. #endif
  1610. long  FAR PASCAL SetBitmapBits(HBITMAP, DWORD, LPSTR);
  1611. long  FAR PASCAL GetBitmapBits(HBITMAP, long, LPSTR);
  1612. DWORD FAR PASCAL SetBitmapDimension(HBITMAP, short, short);
  1613. DWORD FAR PASCAL GetBitmapDimension(HBITMAP);
  1614. #endif
  1615. #ifndef NOFONT
  1616. HFONT FAR PASCAL CreateFont(short, short, short, short, short, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, LPSTR);
  1617. #ifndef NOGDI
  1618. HFONT FAR PASCAL CreateFontIndirect(LOGFONT FAR *);
  1619. #endif
  1620. #endif
  1621. #ifndef NOREGION
  1622. HRGN FAR PASCAL CreateRectRgn(short, short, short, short);
  1623. void FAR PASCAL SetRectRgn(HRGN, short, short, short, short);
  1624. #ifndef NORECT
  1625. HRGN FAR PASCAL CreateRectRgnIndirect(LPRECT);
  1626. HRGN FAR PASCAL CreateEllipticRgnIndirect(LPRECT);
  1627. #endif
  1628. HRGN FAR PASCAL CreateEllipticRgn(short, short, short, short);
  1629. #ifndef NOPOINT
  1630. HRGN FAR PASCAL CreatePolygonRgn(LPPOINT, short, short);
  1631. #endif
  1632. #endif
  1633. BOOL FAR PASCAL DeleteObject(HANDLE);
  1634. #ifndef NOHDC
  1635. HANDLE FAR PASCAL SelectObject(HDC, HANDLE);
  1636. #endif
  1637. #ifndef NOREGION
  1638. #ifndef NOHDC
  1639. short FAR PASCAL SelectClipRgn(HDC, HRGN);
  1640. #endif
  1641. #endif
  1642. short FAR PASCAL GetObject(HANDLE, short, LPSTR);
  1643. #ifndef NOHDC
  1644. short FAR PASCAL SetRelAbs(HDC, short);
  1645. short FAR PASCAL GetRelAbs(HDC);
  1646. DWORD FAR PASCAL SetBkColor(HDC, DWORD);
  1647. DWORD FAR PASCAL GetBkColor(HDC);
  1648. short FAR PASCAL SetBkMode(HDC, short);
  1649. short FAR PASCAL GetBkMode(HDC);
  1650. DWORD FAR PASCAL SetTextColor(HDC, DWORD);
  1651. DWORD FAR PASCAL GetTextColor(HDC);
  1652. WORD  FAR PASCAL SetTextAlign(HDC, WORD);
  1653. WORD  FAR PASCAL GetTextAlign(HDC);
  1654. DWORD FAR PASCAL SetMapperFlags(HDC, DWORD);
  1655. DWORD FAR PASCAL GetAspectRatioFilter(HDC);
  1656. DWORD FAR PASCAL GetNearestColor(HDC, DWORD);
  1657. short FAR PASCAL SetROP2(HDC, short);
  1658. short FAR PASCAL GetROP2(HDC);
  1659. short FAR PASCAL SetStretchBltMode( HDC, short);
  1660. short FAR PASCAL GetStretchBltMode( HDC );
  1661. short FAR PASCAL SetPolyFillMode( HDC, short);
  1662. short FAR PASCAL GetPolyFillMode( HDC );
  1663. short FAR PASCAL SetMapMode(HDC, short);
  1664. short FAR PASCAL GetMapMode(HDC);
  1665. DWORD FAR PASCAL SetWindowOrg(HDC, short, short);
  1666. DWORD FAR PASCAL GetWindowOrg(HDC);
  1667. DWORD FAR PASCAL SetWindowExt(HDC, short, short);
  1668. DWORD FAR PASCAL GetWindowExt(HDC);
  1669. DWORD FAR PASCAL SetViewportOrg(HDC, short, short);
  1670. DWORD FAR PASCAL GetViewportOrg(HDC);
  1671. DWORD FAR PASCAL SetViewportExt(HDC, short, short);
  1672. DWORD FAR PASCAL GetViewportExt(HDC);
  1673. DWORD FAR PASCAL OffsetViewportOrg(HDC, short, short);
  1674. DWORD FAR PASCAL ScaleViewportExt(HDC, short, short, short, short);
  1675. DWORD FAR PASCAL OffsetWindowOrg(HDC, short, short);
  1676. DWORD FAR PASCAL ScaleWindowExt(HDC, short, short, short, short);
  1677. #ifndef NORECT
  1678. short FAR PASCAL GetClipBox(HDC, LPRECT);
  1679. #endif
  1680. short FAR PASCAL IntersectClipRect(HDC, short, short, short, short);
  1681. short FAR PASCAL OffsetClipRgn(HDC, short, short);
  1682. short FAR PASCAL ExcludeClipRect(HDC, short, short, short, short);
  1683. BOOL  FAR PASCAL PtVisible(HDC, short, short);
  1684. #endif
  1685. #ifndef NORECT
  1686. int  FAR PASCAL SetRect(LPRECT, int, int, int, int);
  1687. int  FAR PASCAL SetRectEmpty(LPRECT);
  1688. int  FAR PASCAL CopyRect(LPRECT, LPRECT);
  1689. int  FAR PASCAL InflateRect(LPRECT, int, int);
  1690. int  FAR PASCAL IntersectRect(LPRECT, LPRECT, LPRECT);
  1691. int  FAR PASCAL UnionRect(LPRECT, LPRECT, LPRECT);
  1692. int  FAR PASCAL OffsetRect(LPRECT, int, int);
  1693. BOOL FAR PASCAL IsRectEmpty(LPRECT);
  1694. BOOL FAR PASCAL EqualRect(LPRECT, LPRECT);
  1695. #ifndef NOPOINT
  1696. BOOL FAR PASCAL PtInRect(LPRECT, POINT);
  1697. #endif
  1698. #ifndef NOHDC
  1699. BOOL FAR PASCAL RectVisible(HDC, LPRECT);
  1700. #endif
  1701. #endif
  1702. #ifndef NOREGION
  1703. short FAR PASCAL CombineRgn(HRGN, HRGN, HRGN, short);
  1704. BOOL  FAR PASCAL EqualRgn(HRGN, HRGN);
  1705. short FAR PASCAL OffsetRgn(HRGN, short, short);
  1706. #endif
  1707. #ifndef NOHDC
  1708. short FAR PASCAL SetTextJustification(HDC, short, short);
  1709. DWORD FAR PASCAL GetTextExtent(HDC, LPSTR, short);
  1710. short FAR PASCAL SetTextCharacterExtra(HDC, short);
  1711. short FAR PASCAL GetTextCharacterExtra(HDC);
  1712. #endif
  1713. HANDLE FAR PASCAL  GetMetaFile(LPSTR);
  1714. BOOL   FAR PASCAL  DeleteMetaFile(HANDLE);
  1715. HANDLE FAR PASCAL  CopyMetaFile(HANDLE, LPSTR);
  1716. #ifndef NOHDC
  1717. #ifndef NOMETAFILE
  1718. void FAR PASCAL PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, WORD);
  1719. BOOL FAR PASCAL EnumMetaFile(HDC, LOCALHANDLE, FARPROC, BYTE FAR *);
  1720. #endif
  1721. BOOL  FAR PASCAL  PlayMetaFile(HDC, HANDLE);
  1722. short FAR PASCAL Escape(HDC, short, short, LPSTR, LPSTR);
  1723. short FAR PASCAL EnumFonts(HDC, LPSTR, FARPROC, LPSTR);
  1724. short FAR PASCAL EnumObjects(HDC, short, FARPROC, LPSTR);
  1725. short FAR PASCAL GetTextFace(HDC, short, LPSTR);
  1726. #ifndef NOTEXTMETRIC
  1727. BOOL  FAR PASCAL GetTextMetrics(HDC, LPTEXTMETRIC );
  1728. #endif
  1729. short FAR PASCAL GetDeviceCaps(HDC, short);
  1730. #endif
  1731. LPSTR FAR PASCAL DeviceModes(HWND, HANDLE, LPSTR, LPSTR);
  1732. short FAR PASCAL SetEnvironment(LPSTR, LPSTR, WORD);
  1733. short FAR PASCAL GetEnvironment(LPSTR, LPSTR, WORD);
  1734. #ifndef NOHDC
  1735. #ifndef NOPOINT
  1736. BOOL FAR PASCAL DPtoLP(HDC, LPPOINT, short);
  1737. BOOL FAR PASCAL LPtoDP(HDC, LPPOINT, short);
  1738. #endif
  1739. #endif
  1740. /* Interface to the dynamic loader/linker */
  1741. WORD FAR PASCAL GetVersion( void );
  1742. WORD FAR PASCAL GetNumTasks( void );
  1743. HANDLE FAR PASCAL GetCodeHandle( FARPROC );
  1744. HANDLE FAR PASCAL GetModuleHandle( LPSTR );
  1745. int FAR PASCAL GetModuleUsage( HANDLE );
  1746. int FAR PASCAL GetModuleFileName( HANDLE, LPSTR, int );
  1747. int FAR PASCAL GetInstanceData( HANDLE, NPSTR, int );
  1748. FARPROC FAR PASCAL GetProcAddress(  HANDLE, LPSTR );
  1749. FARPROC FAR PASCAL MakeProcInstance( FARPROC, HANDLE );
  1750. void FAR PASCAL FreeProcInstance( FARPROC );
  1751. HANDLE FAR PASCAL LoadLibrary( LPSTR );
  1752. HANDLE FAR PASCAL FreeLibrary( HANDLE );
  1753. BOOL  FAR PASCAL AnsiToOem( LPSTR, LPSTR );
  1754. BOOL  FAR PASCAL OemToAnsi( LPSTR, LPSTR );
  1755. LPSTR FAR PASCAL AnsiUpper( LPSTR );
  1756. LPSTR FAR PASCAL AnsiLower( LPSTR );
  1757. LPSTR FAR PASCAL AnsiNext( LPSTR );
  1758. LPSTR FAR PASCAL AnsiPrev( LPSTR, LPSTR );
  1759. #ifndef NOOPENFILE
  1760. typedef struct tagOFSTRUCT {
  1761.     BYTE    cBytes;     /* length of structure */
  1762.     BYTE    fFixedDisk;     /* non-zero if file located on non- */
  1763.     /* removeable media */
  1764.     WORD    nErrCode;     /* DOS error code if OpenFile fails */
  1765.     BYTE    reserved[4];
  1766.     BYTE    szPathName[128];
  1767. } OFSTRUCT;
  1768. typedef OFSTRUCT      *POFSTRUCT;
  1769. typedef OFSTRUCT NEAR *NPOFSTRUCT;
  1770. typedef OFSTRUCT FAR  *LPOFSTRUCT;
  1771. BYTE FAR PASCAL GetTempDrive( BYTE );
  1772. int  FAR PASCAL GetTempFileName( BYTE, LPSTR, WORD, LPSTR );
  1773. int  FAR PASCAL OpenFile( LPSTR, LPOFSTRUCT, WORD );
  1774. /* Flags for GetTempFileName */
  1775. #define TF_FORCEDRIVE (BYTE)0x80  /* Forces use of current dir of passed */
  1776.     /* drive */
  1777. /* Flags for OpenFile */
  1778. #define OF_REOPEN 0x8000
  1779. #define OF_EXIST  0x4000
  1780. #define OF_PROMPT 0x2000
  1781. #define OF_CREATE 0x1000
  1782. #define OF_CANCEL 0x0800
  1783. #define OF_VERIFY 0x0400
  1784. #define OF_DELETE 0x0200
  1785. #define OF_PARSE  0x0100
  1786. #define OF_READ      0
  1787. #define OF_WRITE     1
  1788. #define OF_READWRITE 2
  1789. #endif
  1790. #ifndef NOMEMMGR
  1791. /* Interface to global memory manager */
  1792. #define GMEM_FIXED     0x0000
  1793. #define GMEM_MOVEABLE     0x0002
  1794. #define GMEM_NOCOMPACT     0x0010
  1795. #define GMEM_NODISCARD     0x0020
  1796. #define GMEM_ZEROINIT     0x0040
  1797. #define GMEM_MODIFY     0x0080
  1798. #define GMEM_DISCARDABLE    0x0F00
  1799. #define GHND (GMEM_MOVEABLE | GMEM_ZEROINIT)
  1800. #define GPTR (GMEM_FIXED    | GMEM_ZEROINIT)
  1801. #define GMEM_SHARE     0x2000
  1802. #define GMEM_DDESHARE     0x2000
  1803. #define GMEM_NOT_BANKED     0x1000
  1804. #define GMEM_NOTIFY     0x4000
  1805. #define GMEM_LOWER     GMEM_NOT_BANKED
  1806. HANDLE FAR PASCAL GlobalAlloc( WORD, DWORD );
  1807. DWORD  FAR PASCAL GlobalCompact( DWORD );
  1808. #define GlobalDiscard( h ) GlobalReAlloc( h, 0L, GMEM_MOVEABLE )
  1809. HANDLE FAR PASCAL GlobalFree( HANDLE );
  1810. DWORD  FAR PASCAL GlobalHandle( WORD );
  1811. LPSTR  FAR PASCAL GlobalLock( HANDLE );
  1812. HANDLE FAR PASCAL GlobalReAlloc( HANDLE, DWORD, WORD );
  1813. DWORD  FAR PASCAL GlobalSize( HANDLE );
  1814. BOOL   FAR PASCAL GlobalUnlock( HANDLE );
  1815. WORD   FAR PASCAL GlobalFlags( HANDLE );
  1816. LPSTR  FAR PASCAL GlobalWire( HANDLE );
  1817. BOOL   FAR PASCAL GlobalUnWire( HANDLE );
  1818. BOOL   FAR PASCAL GlobalUnlock( HANDLE );
  1819. HANDLE FAR PASCAL GlobalLRUNewest( HANDLE );
  1820. HANDLE FAR PASCAL GlobalLRUOldest( HANDLE );
  1821. VOID   FAR PASCAL GlobalNotify( LPSTR );
  1822. /* Flags returned by GlobalFlags (in addition to GMEM_DISCARDABLE) */
  1823. #define GMEM_DISCARDED     0x4000
  1824. #define GMEM_LOCKCOUNT     0x00FF
  1825. #define LockData( dummy )   LockSegment( 0xFFFF )
  1826. #define UnlockData( dummy ) UnlockSegment( 0xFFFF )
  1827. HANDLE FAR PASCAL LockSegment( WORD );
  1828. HANDLE FAR PASCAL UnlockSegment( WORD );
  1829. /* Interface to local memory manager */
  1830. #define LMEM_FIXED     0x0000
  1831. #define LMEM_MOVEABLE     0x0002
  1832. #define LMEM_NOCOMPACT     0x0010
  1833. #define LMEM_NODISCARD     0x0020
  1834. #define LMEM_ZEROINIT     0x0040
  1835. #define LMEM_MODIFY     0x0080
  1836. #define LMEM_DISCARDABLE    0x0F00
  1837. #define LHND (LMEM_MOVEABLE | LMEM_ZEROINIT)
  1838. #define LPTR (LMEM_FIXED    | LMEM_ZEROINIT)
  1839. #define NONZEROLHND (LMEM_MOVEABLE)
  1840. #define NONZEROLPTR (LMEM_FIXED)
  1841. #define LNOTIFY_OUTOFMEM 0
  1842. #define LNOTIFY_MOVE  1
  1843. #define LNOTIFY_DISCARD  2
  1844. HANDLE FAR PASCAL LocalAlloc( WORD, WORD );
  1845. WORD FAR PASCAL LocalCompact( WORD );
  1846. #define LocalDiscard( h ) LocalReAlloc( h, 0, LMEM_MOVEABLE )
  1847. HANDLE FAR PASCAL LocalFree( HANDLE );
  1848. HANDLE FAR PASCAL LocalHandle( WORD );
  1849. WORD NEAR * PASCAL pLocalHeap;
  1850. #define LocalFreeze( dummy ) ( *(pLocalHeap+1) += 1 )
  1851. #define LocalHandleDelta( delta ) ( (delta) ? (*(pLocalHeap+9) = (delta)) : *(pLocalHeap+9))
  1852. BOOL FAR PASCAL LocalInit( WORD, char NEAR *, char NEAR * );
  1853. char NEAR * FAR PASCAL LocalLock( HANDLE );
  1854. #define LocalMelt( dummy )   ( *(pLocalHeap+1) -= 1 )
  1855. FARPROC FAR PASCAL LocalNotify( FARPROC );
  1856. HANDLE FAR PASCAL LocalReAlloc( HANDLE, WORD, WORD );
  1857. WORD FAR PASCAL LocalSize( HANDLE );
  1858. BOOL FAR PASCAL LocalUnlock( HANDLE );
  1859. WORD FAR PASCAL LocalFlags( HANDLE );
  1860. WORD FAR PASCAL LocalShrink( HANDLE, WORD );
  1861. /* Flags returned by LocalFlags (in addition to LMEM_DISCARDABLE) */
  1862. #define LMEM_DISCARDED     0x4000
  1863. #define LMEM_LOCKCOUNT     0x00FF
  1864. #endif
  1865. /* SetSwapAreaSize really returns 2 words - 
  1866.     lo word is Size actually set (or current size if you passed in 0)
  1867.     hi word is Max size you can get
  1868. */
  1869. LONG   FAR PASCAL SetSwapAreaSize ( WORD );
  1870. LPSTR  FAR PASCAL ValidateFreeSpaces ( void );
  1871. VOID   FAR PASCAL LimitEmsPages ( DWORD );
  1872. BOOL   FAR PASCAL SetErrorMode ( WORD );
  1873. /* Interface to the resource manager */
  1874. HANDLE FAR PASCAL FindResource( HANDLE, LPSTR, LPSTR );
  1875. HANDLE FAR PASCAL LoadResource( HANDLE, HANDLE );
  1876. BOOL   FAR PASCAL FreeResource( HANDLE );
  1877. LPSTR  FAR PASCAL LockResource( HANDLE );
  1878. #define UnlockResource( h ) GlobalUnlock( h )
  1879. FARPROC FAR PASCAL SetResourceHandler( HANDLE, LPSTR, FARPROC );
  1880. HANDLE FAR PASCAL AllocResource( HANDLE, HANDLE, DWORD );
  1881. WORD FAR PASCAL SizeofResource( HANDLE, HANDLE );
  1882. int FAR PASCAL AccessResource( HANDLE, HANDLE );
  1883. #define MAKEINTRESOURCE(i)  (LPSTR)((DWORD)((WORD)(i)))
  1884. #ifndef NORESOURCE
  1885. /* Predefined resource types */
  1886. #define RT_CURSOR MAKEINTRESOURCE( 1 )
  1887. #define RT_BITMAP MAKEINTRESOURCE( 2 )
  1888. #define RT_ICON MAKEINTRESOURCE( 3 )
  1889. #define RT_MENU MAKEINTRESOURCE( 4 )
  1890. #define RT_DIALOG MAKEINTRESOURCE( 5 )
  1891. #define RT_STRING MAKEINTRESOURCE( 6 )
  1892. #define RT_FONTDIR MAKEINTRESOURCE( 7 )
  1893. #define RT_FONT MAKEINTRESOURCE( 8 )
  1894. #define RT_ACCELERATOR MAKEINTRESOURCE( 9 )
  1895. #define RT_RCDATA MAKEINTRESOURCE( 10 )
  1896. #endif
  1897. /* Interface to the task scheduler */
  1898. BOOL   FAR PASCAL Yield( void );
  1899. HANDLE FAR PASCAL GetCurrentTask( void );
  1900. int    FAR PASCAL SetPriority(HANDLE, int);
  1901. /* Interface to the atom manager */
  1902. #ifndef NOATOM
  1903. typedef WORD ATOM;
  1904. #endif
  1905. BOOL FAR PASCAL InitAtomTable( int );
  1906. #ifndef NOATOM
  1907. ATOM   FAR PASCAL AddAtom( LPSTR );
  1908. ATOM   FAR PASCAL DeleteAtom( ATOM );
  1909. ATOM   FAR PASCAL FindAtom( LPSTR );
  1910. WORD   FAR PASCAL GetAtomName( ATOM, LPSTR, int  );
  1911. ATOM   FAR PASCAL GlobalAddAtom( LPSTR );
  1912. ATOM   FAR PASCAL GlobalDeleteAtom( ATOM );
  1913. ATOM   FAR PASCAL GlobalFindAtom( LPSTR );
  1914. WORD   FAR PASCAL GlobalGetAtomName( ATOM, LPSTR, int  );
  1915. HANDLE FAR PASCAL GetAtomHandle( ATOM );
  1916. #define MAKEINTATOM(i) (LPSTR)((DWORD)((WORD)(i)))
  1917. #endif
  1918. /* Interface to the user profile */
  1919. int  FAR PASCAL GetProfileInt( LPSTR, LPSTR, int );
  1920. int  FAR PASCAL GetProfileString( LPSTR, LPSTR, LPSTR, LPSTR, int );
  1921. BOOL FAR PASCAL WriteProfileString( LPSTR, LPSTR, LPSTR );
  1922. /* Interface to FatalExit procedure */
  1923. void FAR PASCAL FatalExit( int );
  1924. /* Interface to Catch and Throw procedures */
  1925. typedef int CATCHBUF[ 9 ];
  1926. typedef int FAR *LPCATCHBUF;
  1927. int  FAR PASCAL Catch( LPCATCHBUF );
  1928. void FAR PASCAL Throw( LPCATCHBUF, int );
  1929. HANDLE FAR PASCAL CreateMetaFile(LPSTR);
  1930. HANDLE FAR PASCAL CloseMetaFile(HANDLE);
  1931. HANDLE FAR PASCAL GetMetaFileBits(HANDLE);
  1932. HANDLE FAR PASCAL SetMetaFileBits(HANDLE);
  1933. DWORD FAR PASCAL GetCurrentTime(void);
  1934. DWORD FAR PASCAL GetTickCount();
  1935. DWORD FAR PASCAL GetTimerResolution();
  1936. BOOL  FAR PASCAL IsChild(HWND, HWND);
  1937. #ifndef NOWINOFFSETS
  1938. WORD FAR PASCAL GetWindowWord(HWND, int);
  1939. WORD FAR PASCAL SetWindowWord(HWND, int, WORD);
  1940. LONG FAR PASCAL GetWindowLong(HWND, int);
  1941. LONG FAR PASCAL SetWindowLong(HWND, int, LONG);
  1942. WORD FAR PASCAL GetClassWord(HWND, int);
  1943. WORD FAR PASCAL SetClassWord(HWND, int, WORD);
  1944. LONG FAR PASCAL GetClassLong(HWND, int);
  1945. LONG FAR PASCAL SetClassLong(HWND, int, LONG);
  1946. #endif
  1947. HWND  FAR PASCAL GetParent(HWND);
  1948. HWND  FAR PASCAL SetParent(HWND, HWND);
  1949. BOOL  FAR PASCAL EnumChildWindows(HWND, FARPROC, LONG);
  1950. HWND  FAR PASCAL FindWindow(LPSTR, LPSTR);
  1951. BOOL  FAR PASCAL EnumWindows(FARPROC, LONG);
  1952. BOOL  FAR PASCAL EnumTaskWindows(HANDLE, FARPROC, LONG);
  1953. int   FAR PASCAL GetClassName(HWND, LPSTR, int);
  1954. HWND  FAR PASCAL GetTopWindow(HWND);
  1955. HWND  FAR PASCAL GetNextWindow(HWND, WORD);
  1956. HANDLE FAR PASCAL GetWindowTask(HWND);
  1957. /* GetWindow() and constants */
  1958. HWND FAR PASCAL GetWindow(HWND, WORD);
  1959. #define GW_HWNDFIRST 0
  1960. #define GW_HWNDLAST  1
  1961. #define GW_HWNDNEXT  2
  1962. #define GW_HWNDPREV  3
  1963. #define GW_OWNER     4
  1964. #define GW_CHILD     5
  1965. #ifndef NOWH
  1966. FARPROC FAR PASCAL SetWindowsHook(int, FARPROC);
  1967. BOOL  FAR PASCAL UnhookWindowsHook(int, FARPROC);
  1968. DWORD FAR PASCAL DefHookProc(int, WORD, DWORD, FARPROC FAR *);
  1969. #endif
  1970. /* Key conversion window */
  1971. BOOL FAR PASCAL IsTwoByteCharPrefix( char );
  1972. #ifndef NOMENUS
  1973. /* Menu flags for Add/Check/EnableMenuItem */
  1974. #define MF_CHANGE 0x0080
  1975. #define MF_INSERT 0x0000
  1976. #define MF_APPEND 0x0100
  1977. #define MF_DELETE 0x0200
  1978. #define MF_BYPOSITION 0x0400
  1979. #define MF_SEPARATOR 0x0800
  1980. #define MF_REMOVE 0x1000
  1981. #define MF_BYCOMMAND 0x0000
  1982. #define MF_GRAYED 0x0001
  1983. #define MF_DISABLED 0x0002
  1984. #define MF_ENABLED 0x0000
  1985. #define MF_CHECKED 0x0008
  1986. #define MF_UNCHECKED 0x0000
  1987. #define MF_BITMAP 0x0004
  1988. #define MF_STRING 0x0000
  1989. #define MF_POPUP 0x0010
  1990. #define MF_MENUBARBREAK 0x0020
  1991. #define MF_MENUBREAK 0x0040
  1992. #define MF_HILITE 0x0080
  1993. #define MF_UNHILITE 0x0000
  1994. #define MF_HELP 0x4000
  1995. #define MF_SYSMENU 0x2000
  1996. #define MF_MOUSESELECT 0x8000
  1997. #endif /* of NOMENU */
  1998. /* System Menu Command Values */
  1999. #ifndef NOSYSCOMMANDS
  2000. #define SC_SIZE 0xF000
  2001. #define SC_MOVE 0xF010
  2002. #define SC_MINIMIZE 0xF020
  2003. #define SC_MAXIMIZE 0xF030
  2004. #define SC_NEXTWINDOW 0xF040
  2005. #define SC_PREVWINDOW 0xF050
  2006. #define SC_CLOSE 0xF060
  2007. #define SC_VSCROLL 0xF070
  2008. #define SC_HSCROLL 0xF080
  2009. #define SC_MOUSEMENU 0xF090
  2010. #define SC_KEYMENU 0xF100
  2011. #define SC_ARRANGE 0xF110
  2012. #define SC_RESTORE 0xF120
  2013. #define SC_ICON SC_MINIMIZE
  2014. #define SC_ZOOM SC_MAXIMIZE
  2015. #endif
  2016. /* Resource loading routines */
  2017. #ifndef NOBITMAP
  2018. HBITMAP FAR PASCAL LoadBitmap( HANDLE, LPSTR );
  2019. #endif
  2020. HCURSOR FAR PASCAL LoadCursor( HANDLE, LPSTR );
  2021. /* Standard cursor IDs */
  2022. #define IDC_ARROW MAKEINTRESOURCE(32512)
  2023. #define IDC_IBEAM MAKEINTRESOURCE(32513)
  2024. #define IDC_WAIT MAKEINTRESOURCE(32514)
  2025. #define IDC_CROSS MAKEINTRESOURCE(32515)
  2026. #define IDC_UPARROW MAKEINTRESOURCE(32516)
  2027. #define IDC_SIZE MAKEINTRESOURCE(32640)
  2028. #define IDC_ICON MAKEINTRESOURCE(32641)
  2029. #define IDC_SIZENWSE MAKEINTRESOURCE(32642)
  2030. #define IDC_SIZENESW MAKEINTRESOURCE(32643)
  2031. #define IDC_SIZEWE MAKEINTRESOURCE(32644)
  2032. #define IDC_SIZENS MAKEINTRESOURCE(32645)
  2033. HICON FAR PASCAL LoadIcon( HANDLE, LPSTR );
  2034. #ifndef NOICON
  2035. /* Standard icon IDs */
  2036. #define IDI_APPLICATION MAKEINTRESOURCE(32512)
  2037. #define IDI_HAND MAKEINTRESOURCE(32513)
  2038. #define IDI_QUESTION MAKEINTRESOURCE(32514)
  2039. #define IDI_EXCLAMATION MAKEINTRESOURCE(32515)
  2040. #define IDI_ASTERISK MAKEINTRESOURCE(32516)
  2041. #endif
  2042. #ifndef NOMENUS
  2043. HMENU FAR PASCAL LoadMenu( HANDLE, LPSTR );
  2044. HMENU FAR PASCAL LoadMenuIndirect( LPSTR );
  2045. #endif
  2046. int FAR PASCAL LoadString( HANDLE, unsigned, LPSTR, int );
  2047. short FAR PASCAL AddFontResource( LPSTR );
  2048. BOOL  FAR PASCAL RemoveFontResource( LPSTR );
  2049. #ifndef NOKANJI
  2050. #define CP_HWND 0
  2051. #define CP_OPEN 1
  2052. #define CP_DIRECT 2
  2053. /* VK from the keyboard driver */
  2054. #define VK_KANA 0x15
  2055. #define VK_ROMAJI 0x16
  2056. #define VK_ZENKAKU 0x17
  2057. #define VK_HIRAGANA 0x18
  2058. #define VK_KANJI 0x19
  2059. /* VK to send to Applications */
  2060. #define VK_CONVERT 0x1C
  2061. #define VK_NONCONVERT 0x1D
  2062. #define VK_ACCEPT 0x1E
  2063. #define VK_MODECHANGE 0x1F
  2064. /* Conversion function numbers */
  2065. #define KNJ_START 0x01
  2066. #define KNJ_END 0x02
  2067. #define KNJ_QUERY 0x03
  2068. #define KNJ_LEARN_MODE 0x10
  2069. #define KNJ_GETMODE 0x11
  2070. #define KNJ_SETMODE 0x12
  2071. #define KNJ_CODECONVERT 0x20
  2072. #define KNJ_CONVERT 0x21
  2073. #define KNJ_NEXT 0x22
  2074. #define KNJ_PREVIOUS 0x23
  2075. #define KNJ_ACCEPT 0x24
  2076. #define KNJ_LEARN 0x30
  2077. #define KNJ_REGISTER 0x31
  2078. #define KNJ_REMOVE 0x32
  2079. #define KNJ_CHANGE_UDIC 0x33
  2080. /* note: DEFAULT = 0
  2081.  JIS1 = 1
  2082.  JIS2 = 2
  2083.  SJIS2 = 3
  2084.  JIS1KATAKANA = 4
  2085.  SJIS2HIRAGANA = 5
  2086.  SJIS2KATAKANA = 6
  2087.  OEM = F
  2088. */
  2089. #define KNJ_JIS1toJIS1KATAKANA 0x14
  2090. #define KNJ_JIS1toSJIS2 0x13
  2091. #define KNJ_JIS1toSJIS2HIRAGANA 0x15
  2092. #define KNJ_JIS1toSJIS2KATAKANA 0x16
  2093. #define KNJ_JIS1toDEFAULT 0x10
  2094. #define KNJ_JIS1toSJIS2OEM 0x1F
  2095. #define KNJ_JIS2toSJIS2 0x23
  2096. #define KNJ_SJIS2toJIS2 0x32
  2097. /* see KNJ_GETMODE for definition */
  2098. #define KNJ_MD_ALPHA 0x01
  2099. #define KNJ_MD_HIRAGANA 0x02
  2100. #define KNJ_MD_HALF 0x04
  2101. #define KNJ_MD_JIS 0x08
  2102. #define KNJ_MD_SPECIAL 0x10
  2103. /* conversion modes, low word of lParam when VK_CONVERT is sent to the app */
  2104. #define KNJ_CVT_NEXT 0x01
  2105. #define KNJ_CVT_PREV 0x02
  2106. #define KNJ_CVT_KATAKANA 0x03
  2107. #define KNJ_CVT_HIRAGANA 0x04
  2108. #define KNJ_CVT_JIS1 0x05
  2109. #define KNJ_CVT_SJIS2 0x06
  2110. #define KNJ_CVT_DEFAULT 0x07
  2111. #define KNJ_CVT_TYPED 0x08
  2112. typedef struct
  2113. {
  2114.     short   fnc;
  2115.     short   wParam;
  2116.     LPSTR   lpSource;
  2117.     LPSTR   lpDest;
  2118.     short   wCount;
  2119.     LPSTR   lpReserved1;
  2120.     LPSTR   lpReserved2;
  2121. } KANJISTRUCT, FAR *LPKANJISTRUCT;
  2122. short     FAR PASCAL ConvertRequest (HWND, LPKANJISTRUCT);
  2123. BOOL     FAR PASCAL SetConvertParams(short, short);
  2124. VOID     FAR PASCAL SetConvertHook(BOOL);
  2125. #endif
  2126. /* Conventional dialog box and message box command IDs */
  2127. #define IDOK   1
  2128. #define IDCANCEL  2
  2129. #define IDABORT   3
  2130. #define IDRETRY   4
  2131. #define IDIGNORE  5
  2132. #define IDYES   6
  2133. #define IDNO   7
  2134. #ifndef NOCTLMGR
  2135. /* Control manager structures & definitions */
  2136. /* Edit control class stuff */
  2137. /* styles */
  2138. #ifndef NOWINSTYLES
  2139. #define ES_LEFT   0L
  2140. #define ES_CENTER   1L
  2141. #define ES_RIGHT   2L
  2142. #define ES_MULTILINE   4L
  2143. #define ES_AUTOVSCROLL   64L
  2144. #define ES_AUTOHSCROLL   128L
  2145. #define ES_NOHIDESEL   256L
  2146. #endif
  2147. /* notification codes */
  2148. #define EN_SETFOCUS   0x0100
  2149. #define EN_KILLFOCUS  0x0200
  2150. #define EN_CHANGE     0x0300
  2151. #define EN_UPDATE     0x0400
  2152. #define EN_ERRSPACE   0x0500
  2153. #define EN_HSCROLL    0x0601
  2154. #define EN_VSCROLL    0x0602
  2155. /* control messages: */
  2156. #ifndef NOWINMESSAGES
  2157. #define EM_GETSEL  (WM_USER+0)
  2158. #define EM_SETSEL  (WM_USER+1)
  2159. #define EM_GETRECT  (WM_USER+2)
  2160. #define EM_SETRECT  (WM_USER+3)
  2161. #define EM_SETRECTNP  (WM_USER+4)
  2162. #define EM_SCROLL  (WM_USER+5)
  2163. #define EM_LINESCROLL  (WM_USER+6)
  2164. #define EM_GETMODIFY  (WM_USER+8)
  2165. #define EM_SETMODIFY  (WM_USER+9)
  2166. #define EM_GETLINECOUNT  (WM_USER+10)
  2167. #define EM_LINEINDEX  (WM_USER+11)
  2168. #define EM_SETHANDLE  (WM_USER+12)
  2169. #define EM_GETHANDLE  (WM_USER+13)
  2170. #define EM_GETTHUMB  (WM_USER+14)
  2171. #define EM_LINELENGTH  (WM_USER+17)
  2172. #define EM_REPLACESEL  (WM_USER+18)
  2173. #define EM_SETFONT  (WM_USER+19)
  2174. #define EM_GETLINE  (WM_USER+20)
  2175. #define EM_LIMITTEXT  (WM_USER+21)
  2176. #define EM_CANUNDO  (WM_USER+22)
  2177. #define EM_UNDO  (WM_USER+23)
  2178. #define EM_FMTLINES  (WM_USER+24)
  2179. #define EM_LINEFROMCHAR  (WM_USER+25)
  2180. #define EM_SETWORDBREAK  (WM_USER+26)
  2181. #endif
  2182. /* button control styles */
  2183. #define BS_PUSHBUTTON  0L
  2184. #define BS_DEFPUSHBUTTON 1L
  2185. #define BS_CHECKBOX  2L
  2186. #define BS_AUTOCHECKBOX  3L
  2187. #define BS_RADIOBUTTON  4L
  2188. #define BS_3STATE  5L
  2189. #define BS_AUTO3STATE  6L
  2190. #define BS_GROUPBOX  7L
  2191. #define BS_USERBUTTON  8L
  2192. #define BS_AUTORADIOBUTTON 9L
  2193. #define BS_PUSHBOX  10L
  2194. #define BS_LEFTTEXT  0x20L
  2195. /* user button notification codes */
  2196. #define BN_CLICKED  0
  2197. #define BN_PAINT  1
  2198. #define BN_HILITE  2
  2199. #define BN_UNHILITE  3
  2200. #define BN_DISABLE  4
  2201. #define BN_DOUBLECLICKED 5
  2202. /* control messages */
  2203. #define BM_GETCHECK WM_USER+0
  2204. #define BM_SETCHECK WM_USER+1
  2205. #define BM_GETSTATE WM_USER+2
  2206. #define BM_SETSTATE WM_USER+3
  2207. #define BM_SETSTYLE WM_USER+4
  2208. /* Static control constants */
  2209. #define SS_LEFT       0L
  2210. #define SS_CENTER     1L
  2211. #define SS_RIGHT      2L
  2212. #define SS_ICON       3L
  2213. #define SS_BLACKRECT  4L
  2214. #define SS_GRAYRECT   5L
  2215. #define SS_WHITERECT  6L
  2216. #define SS_BLACKFRAME 7L
  2217. #define SS_GRAYFRAME  8L
  2218. #define SS_WHITEFRAME 9L
  2219. #define SS_USERITEM   10L
  2220. #define SS_SIMPLE     11L
  2221. #define SS_NOPREFIX  128L   /* 0x80 - don't do "&" character translation */
  2222. /* Dialog manager routines */
  2223. #ifndef NOMSG
  2224. BOOL FAR PASCAL IsDialogMessage(HWND, LPMSG);
  2225. #endif
  2226. #ifndef NORECT
  2227. void FAR PASCAL MapDialogRect(HWND, LPRECT);
  2228. #endif
  2229. #ifndef NOCTLMGR
  2230. int  FAR PASCAL DlgDirList(HWND, LPSTR, int, int, unsigned);
  2231. BOOL FAR PASCAL DlgDirSelect(HWND, LPSTR, int);
  2232. /* Dialog style bits */
  2233. #define DS_ABSALIGN   0x000000001L
  2234. #define DS_SYSMODAL   0x000000002L
  2235. #define DS_LOCALEDIT  0x000000020L  /* Edit items get Local storage. */
  2236. #define DM_GETDEFID (WM_USER+0)
  2237. #define DM_SETDEFID (WM_USER+1)
  2238. #define DC_HASDEFID (0x534B)
  2239. /*  Dialog codes (returned by WM_GETDLGCODE message): */
  2240. #define DLGC_WANTARROWS 0x01 /* control wants arrow keys */
  2241. #define DLGC_WANTTAB 0x02 /* control wants tab keys */
  2242. #define DLGC_WANTALLKEYS 0x04 /* control wants all keys */
  2243. #define DLGC_WANTMESSAGE 0x04 /* pass message to control */
  2244. #define DLGC_HASSETSEL 0x08 /* understands EM_SETSEL message */
  2245. #define DLGC_DEFPUSHBUTTON 0x10 /* Default pushbutton   */
  2246. #define DLGC_UNDEFPUSHBUTTON 0x20 /* Non-default pushbutton */
  2247. #define DLGC_RADIOBUTTON 0x40 /* radio button   */
  2248. #define DLGC_WANTCHARS 0x80 /* Want WM_CHAR messages  */
  2249. #define DLGC_STATIC 0x100 /* Static item: don't include */
  2250. #define DLGC_BUTTON 0x2000 /* Button item: can be checked */
  2251. #define LB_CTLCODE   0L
  2252. /* Listbox control return values */
  2253. #define LB_OKAY      0
  2254. #define LB_ERR      -1
  2255. #define LB_ERRSPACE  -2
  2256. /* listbox notification codes */
  2257. #define LBN_ERRSPACE -2
  2258. #define LBN_SELCHANGE 1
  2259. #define LBN_DBLCLK 2
  2260. #endif
  2261. /* listbox messages */
  2262. #ifndef NOWINMESSAGES
  2263. #define LB_ADDSTRING  (1+WM_USER)
  2264. #define LB_INSERTSTRING  (2+WM_USER)
  2265. #define LB_DELETESTRING  (3+WM_USER)
  2266. #define LB_RESETCONTENT  (5+WM_USER)
  2267. #define LB_SETSEL  (6+WM_USER)
  2268. #define LB_SETCURSEL  (7+WM_USER)
  2269. #define LB_GETSEL  (8+WM_USER)
  2270. #define LB_GETCURSEL  (9+WM_USER)
  2271. #define LB_GETTEXT  (10+WM_USER)
  2272. #define LB_GETTEXTLEN  (11+WM_USER)
  2273. #define LB_GETCOUNT  (12+WM_USER)
  2274. #define LB_SELECTSTRING  (13+WM_USER)
  2275. #define LB_DIR  (14+WM_USER)
  2276. #define LB_GETTOPINDEX  (15+WM_USER)
  2277. #define LB_MSGMAX  (16+WM_USER)
  2278. #endif
  2279. /* listbox style bits */
  2280. #ifndef NOWINSTYLES
  2281. #define LBS_NOTIFY   0x0001L
  2282. #define LBS_SORT   0x0002L
  2283. #define LBS_NOREDRAW   0x0004L
  2284. #define LBS_MULTIPLESEL   0x0008L
  2285. #define LBS_STANDARD   (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
  2286. #endif
  2287. /* scroll bar styles */
  2288. #ifndef NOWINSTYLES
  2289. #define SBS_HORZ     0x0000L
  2290. #define SBS_VERT     0x0001L
  2291. #define SBS_TOPALIGN     0x0002L
  2292. #define SBS_LEFTALIGN     0x0002L
  2293. #define SBS_BOTTOMALIGN     0x0004L
  2294. #define SBS_RIGHTALIGN     0x0004L
  2295. #define SBS_SIZEBOXTOPLEFTALIGN     0x0002L
  2296. #define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x0004L
  2297. #define SBS_SIZEBOX     0x0008L
  2298. #endif
  2299. #endif
  2300. #ifndef NOSOUND
  2301. int FAR PASCAL OpenSound();
  2302. int FAR PASCAL CloseSound();
  2303. int FAR PASCAL SetVoiceQueueSize(int, int);
  2304. int FAR PASCAL SetVoiceNote(int, int, int, int);
  2305. int FAR PASCAL SetVoiceAccent(int, int, int, int, int);
  2306. int FAR PASCAL SetVoiceEnvelope(int, int, int);
  2307. int FAR PASCAL SetSoundNoise(int, int);
  2308. int FAR PASCAL SetVoiceSound(int, long, int);
  2309. int FAR PASCAL StartSound();
  2310. int FAR PASCAL StopSound();
  2311. int FAR PASCAL WaitSoundState(int);
  2312. int FAR PASCAL SyncAllVoices();
  2313. int FAR PASCAL CountVoiceNotes(int);
  2314. LPINT FAR PASCAL GetThresholdEvent();
  2315. int FAR PASCAL GetThresholdStatus();
  2316. int FAR PASCAL SetVoiceThreshold(int, int);
  2317. /* constants used to specify return condition for WaitSoundState */
  2318. #define S_QUEUEEMPTY   0
  2319. #define S_THRESHOLD    1
  2320. #define S_ALLTHRESHOLD 2
  2321. /* constants used to specify accent mode */
  2322. #define S_NORMAL      0
  2323. #define S_LEGATO      1
  2324. #define S_STACCATO    2
  2325. /* constants used to specify source in SetSoundNoise */
  2326. #define S_PERIOD512   0   /* freq = N/512 high pitch, less coarse hiss */
  2327. #define S_PERIOD1024  1   /* freq = N/1024 */
  2328. #define S_PERIOD2048  2   /* freq = N/2048 low pitch, more coarse hiss */
  2329. #define S_PERIODVOICE 3   /* source is frequency from voice channel (3) */
  2330. #define S_WHITE512    4   /* freq = N/512 high pitch, less coarse hiss */
  2331. #define S_WHITE1024   5   /* freq = N/1024 */
  2332. #define S_WHITE2048   6   /* freq = N/2048 low pitch, more coarse hiss */
  2333. #define S_WHITEVOICE  7   /* source is frequency from voice channel (3) */
  2334. #define S_SERDVNA     -1  /* device not available */
  2335. #define S_SEROFM      -2  /* out of memory */
  2336. #define S_SERMACT     -3  /* music active */
  2337. #define S_SERQFUL     -4  /* queue full */
  2338. #define S_SERBDNT     -5  /* invalid note */
  2339. #define S_SERDLN      -6  /* invalid note length */
  2340. #define S_SERDCC      -7  /* invalid note count */
  2341. #define S_SERDTP      -8  /* invalid tempo */
  2342. #define S_SERDVL      -9  /* invalid volume */
  2343. #define S_SERDMD      -10 /* invalid mode */
  2344. #define S_SERDSH      -11 /* invalid shape */
  2345. #define S_SERDPT      -12 /* invalid pitch */
  2346. #define S_SERDFQ      -13 /* invalid frequency */
  2347. #define S_SERDDR      -14 /* invalid duration */
  2348. #define S_SERDSR      -15 /* invalid source */
  2349. #define S_SERDST      -16 /* invalid state */
  2350. #endif
  2351. #ifndef NOCOMM
  2352. /*************************************************************************
  2353. **
  2354. ** dcb field definitions.
  2355. **
  2356. *************************************************************************/
  2357. #define NOPARITY    0
  2358. #define ODDPARITY   1
  2359. #define EVENPARITY  2
  2360. #define MARKPARITY  3
  2361. #define SPACEPARITY 4
  2362. #define ONESTOPBIT  0
  2363. #define ONE5STOPBITS 1
  2364. #define TWOSTOPBITS 2
  2365. #define IGNORE     0     /* Ignore signal */
  2366. #define INFINITE    0xFFFF  /* Infinite timeout */
  2367. /*************************************************************************
  2368. **
  2369. ** Comm Device Driver Error Bits.
  2370. **
  2371. *************************************************************************/
  2372. #define CE_RXOVER   0x0001  /* Receive Queue overflow        */
  2373. #define CE_OVERRUN  0x0002  /* Receive Overrun Error        */
  2374. #define CE_RXPARITY 0x0004  /* Receive Parity Error        */
  2375. #define CE_FRAME    0x0008  /* Receive Framing error        */
  2376. #define CE_BREAK    0x0010  /* Break Detected        */
  2377. #define CE_CTSTO    0x0020  /* CTS Timeout   */
  2378. #define CE_DSRTO    0x0040  /* DSR Timeout   */
  2379. #define CE_RLSDTO   0x0080  /* RLSD Timeout   */
  2380. #define CE_TXFULL   0x0100  /* TX Queue is full   */
  2381. #define CE_PTO     0x0200  /* LPTx Timeout   */
  2382. #define CE_IOE     0x0400  /* LPTx I/O Error   */
  2383. #define CE_DNS     0x0800  /* LPTx Device not selected   */
  2384. #define CE_OOP     0x1000  /* LPTx Out-Of-Paper   */
  2385. #define CE_MODE     0x8000  /* Requested mode unsupported */
  2386. /*************************************************************************
  2387. **
  2388. ** Initialization Error Codes
  2389. **
  2390. *************************************************************************/
  2391. #define IE_BADID    -1 /* Invalid or unsupported id    */
  2392. #define IE_OPEN     -2 /* Device Already Open    */
  2393. #define IE_NOPEN    -3 /* Device Not Open    */
  2394. #define IE_MEMORY   -4 /* Unable to allocate queues    */
  2395. #define IE_DEFAULT  -5 /* Error in default parameters    */
  2396. #define IE_HARDWARE -10 /* Hardware Not Present    */
  2397. #define IE_BYTESIZE -11 /* Illegal Byte Size    */
  2398. #define IE_BAUDRATE -12 /* Unsupported BaudRate    */
  2399. /*************************************************************************
  2400. **
  2401. ** Event Definitions
  2402. **
  2403. *************************************************************************/
  2404. #define EV_RXCHAR   0x0001  /* Any Character received    */
  2405. #define EV_RXFLAG   0x0002  /* Received certain character  */
  2406. #define EV_TXEMPTY  0x0004  /* Transmitt Queue Empty    */
  2407. #define EV_CTS     0x0008  /* CTS changed state    */
  2408. #define EV_DSR     0x0010  /* DSR changed state    */
  2409. #define EV_RLSD     0x0020  /* RLSD changed state    */
  2410. #define EV_BREAK    0x0040  /* BREAK received    */
  2411. #define EV_ERR     0x0080  /* Line status error occurred  */
  2412. #define EV_RING     0x0100  /* Ring signal detected    */
  2413. #define EV_PERR     0x0200  /* Printer error occured    */
  2414. /*************************************************************************
  2415. **
  2416. ** Escape Functions
  2417. **
  2418. *************************************************************************/
  2419. #define SETXOFF   1 /* Simulate XOFF received   */
  2420. #define SETXON   2 /* Simulate XON received   */
  2421. #define SETRTS   3 /* Set RTS high   */
  2422. #define CLRRTS   4 /* Set RTS low   */
  2423. #define SETDTR   5 /* Set DTR high   */
  2424. #define CLRDTR   6 /* Set DTR low   */
  2425. #define RESETDEV  7 /* Reset device if possible   */
  2426. /*************************************************************************
  2427. **
  2428. ** Device Descriptor Block Definition
  2429. **
  2430. *************************************************************************/
  2431. #define LPTx 0x80 /* Set if ID is for LPT device   */
  2432. typedef struct tagDCB {
  2433.     BYTE Id;   /* Internal Device ID      */
  2434.     WORD BaudRate;   /* Baudrate at which runing      */
  2435.     BYTE ByteSize;   /* Number of bits/byte, 4-8      */
  2436.     BYTE Parity;   /* 0-4=None,Odd,Even,Mark,Space    */
  2437.     BYTE StopBits;   /* 0,1,2 = 1, 1.5, 2      */
  2438.     WORD RlsTimeout;   /* Timeout for RLSD to be set      */
  2439.     WORD CtsTimeout;   /* Timeout for CTS to be set      */
  2440.     WORD DsrTimeout;   /* Timeout for DSR to be set      */
  2441.     BYTE fBinary: 1;   /* Binary Mode (skip EOF check     */
  2442.     BYTE fRtsDisable:1;   /* Don't assert RTS at init time   */
  2443.     BYTE fParity: 1;   /* Enable parity checking      */
  2444.     BYTE fOutxCtsFlow:1;  /* CTS handshaking on output      */
  2445.     BYTE fOutxDsrFlow:1;  /* DSR handshaking on output      */
  2446.     BYTE fDummy: 2;   /* Reserved      */
  2447.     BYTE fDtrDisable:1;   /* Don't assert DTR at init time   */
  2448.     BYTE fOutX: 1;   /* Enable output X-ON/X-OFF      */
  2449.     BYTE fInX: 1;   /* Enable input X-ON/X-OFF      */
  2450.     BYTE fPeChar: 1;   /* Enable Parity Err Replacement   */
  2451.     BYTE fNull: 1;   /* Enable Null stripping      */
  2452.     BYTE fChEvt: 1;   /* Enable Rx character event.      */
  2453.     BYTE fDtrflow: 1;   /* DTR handshake on input      */
  2454.     BYTE fRtsflow: 1;   /* RTS handshake on input      */
  2455.     BYTE fDummy2: 1;
  2456.     char XonChar;   /* Tx and Rx X-ON character      */
  2457.     char XoffChar;   /* Tx and Rx X-OFF character      */
  2458.     WORD XonLim;   /* Transmit X-ON threshold      */
  2459.     WORD XoffLim;   /* Transmit X-OFF threshold      */
  2460.     char PeChar;   /* Parity error replacement char   */
  2461.     char EofChar;   /* End of Input character      */
  2462.     char EvtChar;   /* Recieved Event character      */
  2463.     WORD TxDelay;   /* Amount of time between chars    */
  2464. } DCB;
  2465. /*************************************************************************
  2466. **
  2467. ** Status record returned by GetCommError
  2468. **
  2469. *************************************************************************/
  2470. typedef struct tagCOMSTAT {
  2471.     BYTE fCtsHold: 1; /* Transmit is on CTS hold    */
  2472.     BYTE fDsrHold: 1; /* Transmit is on DSR hold    */
  2473.     BYTE fRlsdHold: 1; /* Transmit is on RLSD hold    */
  2474.     BYTE fXoffHold: 1; /* Received handshake    */
  2475.     BYTE fXoffSent: 1; /* Issued handshake    */
  2476.     BYTE fEof: 1; /* End of file character found    */
  2477.     BYTE fTxim: 1; /* Character being transmitted    */
  2478.     WORD cbInQue; /* count of characters in Rx Queue */
  2479.     WORD cbOutQue; /* count of characters in Tx Queue */
  2480. } COMSTAT;
  2481. short FAR PASCAL OpenComm(LPSTR, WORD, WORD);
  2482. short FAR PASCAL SetCommState(DCB FAR *);
  2483. short FAR PASCAL GetCommState(short, DCB FAR *);
  2484. short FAR PASCAL ReadComm(short, LPSTR, int);
  2485. short FAR PASCAL UngetCommChar(short, char);
  2486. short FAR PASCAL WriteComm(short, LPSTR, int);
  2487. short FAR PASCAL CloseComm(short);
  2488. short FAR PASCAL GetCommError(short, COMSTAT FAR *);
  2489. short FAR PASCAL BuildCommDCB(LPSTR, DCB FAR *);
  2490. short FAR PASCAL TransmitCommChar(short, char);
  2491. WORD FAR * FAR PASCAL SetCommEventMask(short, WORD);
  2492. WORD  FAR PASCAL GetCommEventMask(short, int);
  2493. short FAR PASCAL SetCommBreak(short);
  2494. short FAR PASCAL ClearCommBreak(short);
  2495. short FAR PASCAL FlushComm(short, int);
  2496. short FAR PASCAL EscapeCommFunction(short, int);
  2497. #endif