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

操作系统开发

开发平台:

Visual C++

  1. /*****************************************************************************
  2. *                                                                             *
  3. * windows.h -   Windows functions, types, and definitions                     *
  4. *                                                                             *
  5. *               Version 3.10                                                  *
  6. *                                                                             *
  7. *               Copyright (c) 1985-1992, Microsoft Corp. All rights reserved. *
  8. *                                                                             *
  9. *******************************************************************************
  10. *
  11. * The following symbols control inclusion of various parts of this file:
  12. *
  13. * WINVER            Windows version number (0x030a).  To exclude
  14. *                   definitions introduced in version 3.1 (or above)
  15. *                   #define WINVER 0x0300 before #including <windows.h>
  16. *
  17. * #define:          To prevent inclusion of:
  18. *
  19. * NOKERNEL          KERNEL APIs and definitions
  20. * NOGDI             GDI APIs and definitions
  21. * NOUSER            USER APIs and definitions
  22. * NOSOUND           Sound APIs and definitions
  23. * NOCOMM            Comm driver APIs and definitions
  24. * NODRIVERS         Installable driver APIs and definitions
  25. *
  26. * NOMINMAX          min() and max() macros
  27. * NOLOGERROR        LogError() and related definitions
  28. * NOPROFILER        Profiler APIs
  29. * NOMEMMGR          Local and global memory management
  30. * NOLFILEIO         _l* file I/O routines
  31. * NOOPENFILE        OpenFile and related definitions
  32. * NORESOURCE        Resource management
  33. * NOATOM            Atom management
  34. * NOLANGUAGE        Character test routines
  35. * NOLSTRING         lstr* string management routines
  36. * NODBCS            Double-byte character set routines
  37. * NOKEYBOARDINFO    Keyboard driver routines
  38. * NOGDICAPMASKS     GDI device capability constants
  39. * NOCOLOR           COLOR_* color values
  40. * NOGDIOBJ          GDI pens, brushes, fonts
  41. * NODRAWTEXT        DrawText() and related definitions
  42. * NOTEXTMETRIC      TEXTMETRIC and related APIs
  43. * NOSCALABLEFONT    Truetype scalable font support
  44. * NOBITMAP          Bitmap support
  45. * NORASTEROPS       GDI Raster operation definitions
  46. * NOMETAFILE        Metafile support
  47. * NOSYSMETRICS      GetSystemMetrics() and related SM_* definitions
  48. * NOSYSTEMPARAMSINFO SystemParametersInfo() and SPI_* definitions
  49. * NOMSG             APIs and definitions that use MSG structure
  50. * NOWINSTYLES       Window style definitions
  51. * NOWINOFFSETS      Get/SetWindowWord/Long offset definitions
  52. * NOSHOWWINDOW      ShowWindow and related definitions
  53. * NODEFERWINDOWPOS  DeferWindowPos and related definitions
  54. * NOVIRTUALKEYCODES VK_* virtual key codes
  55. * NOKEYSTATES       MK_* message key state flags
  56. * NOWH              SetWindowsHook and related WH_* definitions
  57. * NOMENUS           Menu APIs
  58. * NOSCROLL          Scrolling APIs and scroll bar control
  59. * NOCLIPBOARD       Clipboard APIs and definitions
  60. * NOICONS           IDI_* icon IDs
  61. * NOMB              MessageBox and related definitions
  62. * NOSYSCOMMANDS     WM_SYSCOMMAND SC_* definitions
  63. * NOMDI             MDI support
  64. * NOCTLMGR          Control management and controls
  65. * NOWINMESSAGES     WM_* window messages
  66. * NOHELP            Help support
  67. *
  68. ****************************************************************************/
  69. #ifndef _INC_WINDOWS
  70. #define _INC_WINDOWS    /* #defined if windows.h has been included */
  71. #ifndef RC_INVOKED
  72. #pragma pack(1)         /* Assume byte packing throughout */
  73. #endif  /* RC_INVOKED */
  74. #ifdef __cplusplus
  75. extern "C" {            /* Assume C declarations for C++ */
  76. #endif /* __cplusplus */
  77. #ifdef NOWIN31                      /* ;Internal */
  78. #define WINVER  0x0300              /* ;Internal */
  79. #endif                              /* ;Internal */
  80.                                     /* ;Internal */
  81. /* If WINVER is not defined, assume version 3.1 */
  82. #ifndef WINVER
  83. #define WINVER  0x030a
  84. #endif
  85. #ifdef RC_INVOKED
  86. /* Don't include definitions that RC.EXE can't parse */
  87. #define NOATOM
  88. #define NOGDI
  89. #define NOGDICAPMASKS
  90. #define NOMETAFILE
  91. #define NOMINMAX
  92. #define NOMSG
  93. #define NOOPENFILE
  94. #define NORASTEROPS
  95. #define NOSCROLL
  96. #define NOSOUND
  97. #define NOSYSMETRICS
  98. #define NOTEXTMETRIC
  99. #define NOWH
  100. #define NODBCS
  101. #define NOSYSTEMPARAMSINFO
  102. #define NOCOMM
  103. #define NOOEMRESOURCE
  104. #endif  /* RC_INVOKED */
  105. /* Temp internal compatibility hacks */ /* ;Internal */
  106. #define NOOEMRESOURCE               /* ;Internal */
  107. #ifdef OEMRESOURCE                  /* ;Internal */
  108. #undef NOOEMRESOURCE                /* ;Internal */
  109. #endif                              /* ;Internal */
  110. #define NOCOMM                      /* ;Internal */
  111. #ifdef USECOMM                      /* ;Internal */
  112. #undef NOCOMM                       /* ;Internal */
  113. #endif                              /* ;Internal */
  114.                                     /* ;Internal */
  115. /* Handle OEMRESOURCE for 3.0 compatibility */
  116. #if (WINVER < 0x030a)
  117. #define NOOEMRESOURCE
  118. #ifdef OEMRESOURCE
  119. #undef NOOEMRESOURCE
  120. #endif
  121. #endif
  122. /******* Common definitions and typedefs ***********************************/
  123. #define VOID     void
  124. #define FAR                 _far
  125. #define NEAR     _near
  126. #define PASCAL     _pascal
  127. #define CDECL     _cdecl
  128. #define CONST               const                   /* ;Internal */
  129. #ifdef BUILDDLL                                     /* ;Internal */
  130. #define WINAPI              _loadds _far _pascal    /* ;Internal */
  131. #define CALLBACK            _loadds _far _pascal    /* ;Internal */
  132. #else                                               /* ;Internal */
  133. #define WINAPI              _far _pascal
  134. #define CALLBACK            _far _pascal
  135. #endif                                              /* ;Internal */
  136.                                                     /* ;Internal */
  137. #define API                 WINAPI                  /* ;Internal */
  138. /****** Simple types & common helper macros *********************************/
  139. typedef int     BOOL;
  140. #define FALSE     0
  141. #define TRUE     1
  142. typedef unsigned char     BYTE;
  143. typedef unsigned short      WORD;
  144. typedef unsigned long       DWORD;
  145. typedef unsigned int     UINT;
  146. #ifdef STRICT
  147. typedef signed long     LONG;
  148. #else
  149. #define LONG long
  150. #endif
  151. #define LOBYTE(w)     ((BYTE)(w))
  152. #define HIBYTE(w)           ((BYTE)(((UINT)(w) >> 8) & 0xFF))
  153. #define LOWORD(l)           ((WORD)(DWORD)(l))
  154. #define HIWORD(l)           ((WORD)((((DWORD)(l)) >> 16) & 0xFFFF))
  155. #define MAKELONG(low, high) ((LONG)(((WORD)(low)) | (((DWORD)((WORD)(high))) << 16)))
  156. #ifndef NOMINMAX
  157. #ifndef max
  158. #define max(a,b)            (((a) > (b)) ? (a) : (b))
  159. #endif
  160. #ifndef min
  161. #define min(a,b)            (((a) < (b)) ? (a) : (b))
  162. #endif
  163. #endif  /* NOMINMAX */
  164. /* Types use for passing & returning polymorphic values */
  165. typedef UINT WPARAM;
  166. typedef LONG LPARAM;
  167. typedef LONG LRESULT;
  168. #define MAKELPARAM(low, high) ((LPARAM)MAKELONG(low, high))
  169. #define MAKELRESULT(low, high) ((LRESULT)MAKELONG(low, high))
  170. /****** Common pointer types ************************************************/
  171. #ifndef NULL
  172. #define NULL     0
  173. #endif
  174. typedef char NEAR*          PSTR;
  175. typedef char NEAR*          NPSTR;
  176. #define SZ char                         /* ;Internal */
  177. typedef char FAR*           LPSTR;
  178. typedef const char FAR*     LPCSTR;
  179. typedef BYTE NEAR*     PBYTE;
  180. typedef BYTE FAR*     LPBYTE;
  181. typedef int NEAR*     PINT;
  182. typedef int FAR*     LPINT;
  183. typedef WORD NEAR*          PWORD;
  184. typedef WORD FAR*           LPWORD;
  185. typedef long NEAR*     PLONG;
  186. typedef long FAR*     LPLONG;
  187. typedef DWORD NEAR*         PDWORD;
  188. typedef DWORD FAR*          LPDWORD;
  189. typedef void FAR*           LPVOID;
  190. #define MAKELP(sel, off)    ((void FAR*)MAKELONG((off), (sel)))
  191. #define SELECTOROF(lp)      HIWORD(lp)
  192. #define OFFSETOF(lp)        LOWORD(lp)
  193. #define FIELDOFFSET(type, field)    ((int)(&((type NEAR*)1)->field)-1)
  194. /****** Common handle types *************************************************/
  195. #ifdef STRICT
  196. typedef const void NEAR*        HANDLE;
  197. #define DECLARE_HANDLE(name)    struct name##__ { int unused; }; 
  198.                                 typedef const struct name##__ NEAR* name
  199. #define DECLARE_HANDLE32(name)  struct name##__ { int unused; }; 
  200.                                 typedef const struct name##__ FAR* name
  201. #else   /* STRICT */
  202. typedef UINT                    HANDLE;
  203. #define DECLARE_HANDLE(name)    typedef UINT name
  204. #define DECLARE_HANDLE32(name)  typedef DWORD name
  205. #endif  /* !STRICT */
  206. typedef HANDLE*      PHANDLE;
  207. typedef HANDLE NEAR*     SPHANDLE;
  208. typedef HANDLE FAR*     LPHANDLE;
  209. typedef HANDLE     HGLOBAL;
  210. typedef HANDLE     HLOCAL;
  211. typedef HANDLE     GLOBALHANDLE;
  212. typedef HANDLE     LOCALHANDLE;
  213. typedef UINT                ATOM;
  214. #ifdef STRICT
  215. typedef void (CALLBACK*     FARPROC)(void);
  216. typedef void (NEAR PASCAL*  NEARPROC)(void);
  217. #else
  218. typedef int (CALLBACK*      FARPROC)();
  219. typedef int (NEAR PASCAL*   NEARPROC)();
  220. #endif
  221. DECLARE_HANDLE(HSTR);
  222. /****** KERNEL typedefs, structures, and functions **************************/
  223. DECLARE_HANDLE(HINSTANCE);
  224. typedef HINSTANCE HMODULE;  /* HMODULEs can be used in place of HINSTANCEs */
  225. #ifndef NOKERNEL
  226. /****** Application entry point function ************************************/
  227. #ifdef STRICT
  228. int PASCAL WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
  229. #endif
  230. /****** System Information **************************************************/
  231. DWORD   WINAPI GetVersion(void);
  232. DWORD   WINAPI GetFreeSpace(UINT);
  233. UINT    WINAPI GetCurrentPDB(void);
  234. UINT    WINAPI GetWindowsDirectory(LPSTR, UINT);
  235. UINT    WINAPI GetSystemDirectory(LPSTR, UINT);
  236. #if (WINVER >= 0x030a)
  237. UINT    WINAPI GetFreeSystemResources(UINT);
  238. #define GFSR_SYSTEMRESOURCES   0x0000
  239. #define GFSR_GDIRESOURCES      0x0001
  240. #define GFSR_USERRESOURCES     0x0002
  241. #define GFSR_VALID             0x0002  /* ;Internal */
  242. #endif  /* WINVER >= 0x030a */
  243. DWORD   WINAPI GetWinFlags(void);
  244. #define WF_PMODE 0x0001
  245. #define WF_CPU286 0x0002
  246. #define WF_CPU386 0x0004
  247. #define WF_CPU486 0x0008
  248. #define WF_STANDARD 0x0010
  249. #define WF_WIN286 0x0010
  250. #define WF_ENHANCED 0x0020
  251. #define WF_WIN386 0x0020
  252. #define WF_CPU086 0x0040
  253. #define WF_CPU186 0x0080
  254. #define WF_LARGEFRAME 0x0100
  255. #define WF_SMALLFRAME 0x0200
  256. #define WF_80x87 0x0400
  257. #define WF_PAGING 0x0800
  258. #define WF_WLO          0x8000
  259. LPSTR   WINAPI GetDOSEnvironment(void);
  260. DWORD   WINAPI GetCurrentTime(void);
  261. DWORD   WINAPI GetTickCount(void);
  262. DWORD   WINAPI GetTimerResolution(void);
  263. /****** Error handling ******************************************************/
  264. #if (WINVER >= 0x030a)
  265. #ifndef NOLOGERROR
  266. void    WINAPI LogError(UINT err, void FAR* lpInfo);
  267. void    WINAPI LogParamError(UINT err, FARPROC lpfn, void FAR* param);
  268. /****** LogParamError/LogError values */
  269. /* Error modifier bits */
  270. #define ERR_WARNING 0x8000
  271. #define ERR_PARAM 0x4000
  272. /* Internal error value masks */     /* ;Internal */
  273. #define ERR_TYPE_MASK 0x0fff     /* ;Internal */
  274. #define ERR_FLAGS_MASK 0xc000     /* ;Internal */
  275.     /* ;Internal */
  276. #define ERR_SIZE_MASK 0x3000
  277. #define ERR_SIZE_SHIFT          12          /* ;Internal */
  278. #define ERR_BYTE                0x1000
  279. #define ERR_WORD                0x2000
  280. #define ERR_DWORD               0x3000
  281.     /* ;Internal */
  282. /* Error option flags (set by [kernel] ErrorOptions win.ini variable) *//* ;Internal */
  283.     /* ;Internal */
  284. #define ERO_PARAM_ERROR_BREAK 0x0001     /* ;Internal */
  285. #define ERO_BUFFER_FILL  0x0002     /* ;Internal */
  286. /****** LogParamError() values */
  287. /* Generic parameter values */
  288. #define ERR_BAD_VALUE           0x6001
  289. #define ERR_BAD_FLAGS           0x6002
  290. #define ERR_BAD_INDEX           0x6003
  291. #define ERR_BAD_DVALUE 0x7004
  292. #define ERR_BAD_DFLAGS 0x7005
  293. #define ERR_BAD_DINDEX 0x7006
  294. #define ERR_BAD_PTR 0x7007
  295. #define ERR_BAD_FUNC_PTR 0x7008
  296. #define ERR_BAD_SELECTOR        0x6009
  297. #define ERR_BAD_STRING_PTR 0x700a
  298. #define ERR_BAD_HANDLE          0x600b
  299. /* KERNEL parameter errors */
  300. #define ERR_BAD_HINSTANCE       0x6020
  301. #define ERR_BAD_HMODULE         0x6021
  302. #define ERR_BAD_GLOBAL_HANDLE   0x6022
  303. #define ERR_BAD_LOCAL_HANDLE    0x6023
  304. #define ERR_BAD_ATOM            0x6024
  305. #define ERR_BAD_HFILE           0x6025
  306. /* USER parameter errors */
  307. #define ERR_BAD_HWND            0x6040
  308. #define ERR_BAD_HMENU           0x6041
  309. #define ERR_BAD_HCURSOR         0x6042
  310. #define ERR_BAD_HICON           0x6043
  311. #define ERR_BAD_HDWP            0x6044
  312. #define ERR_BAD_CID             0x6045
  313. #define ERR_BAD_HDRVR           0x6046
  314. /* GDI parameter errors */
  315. #define ERR_BAD_COORDS 0x7060
  316. #define ERR_BAD_GDI_OBJECT      0x6061
  317. #define ERR_BAD_HDC             0x6062
  318. #define ERR_BAD_HPEN            0x6063
  319. #define ERR_BAD_HFONT           0x6064
  320. #define ERR_BAD_HBRUSH          0x6065
  321. #define ERR_BAD_HBITMAP         0x6066
  322. #define ERR_BAD_HRGN            0x6067
  323. #define ERR_BAD_HPALETTE        0x6068
  324. #define ERR_BAD_HMETAFILE       0x6069
  325. /* Debug fill constants */              /* ;Internal */
  326.                                         /* ;Internal */
  327. #define DBGFILL_ALLOC           0xfd    /* ;Internal */
  328. #define DBGFILL_FREE            0xfb    /* ;Internal */
  329. #define DBGFILL_BUFFER          0xf9    /* ;Internal */
  330. #define DBGFILL_STACK           0xf7    /* ;Internal */
  331. /**** LogError() values */
  332. /* KERNEL errors */
  333. #define ERR_GALLOC              0x0001
  334. #define ERR_GREALLOC            0x0002
  335. #define ERR_GLOCK               0x0003
  336. #define ERR_LALLOC              0x0004
  337. #define ERR_LREALLOC            0x0005
  338. #define ERR_LLOCK               0x0006
  339. #define ERR_ALLOCRES            0x0007
  340. #define ERR_LOCKRES             0x0008
  341. #define ERR_LOADMODULE          0x0009
  342. /* USER errors */
  343. #define ERR_CREATEDLG           0x0040
  344. #define ERR_CREATEDLG2          0x0041
  345. #define ERR_REGISTERCLASS       0x0042
  346. #define ERR_DCBUSY              0x0043
  347. #define ERR_CREATEWND           0x0044
  348. #define ERR_STRUCEXTRA          0x0045
  349. #define ERR_LOADSTR             0x0046
  350. #define ERR_LOADMENU            0x0047
  351. #define ERR_NESTEDBEGINPAINT    0x0048
  352. #define ERR_BADINDEX            0x0049
  353. #define ERR_CREATEMENU          0x004a
  354. /* GDI errors */
  355. #define ERR_CREATEDC            0x0080
  356. #define ERR_CREATEMETA          0x0081
  357. #define ERR_DELOBJSELECTED      0x0082
  358. #define ERR_SELBITMAP           0x0083
  359. /* Debugging support (DEBUG SYSTEM ONLY) */
  360. typedef struct tagWINDEBUGINFO
  361. {
  362.     UINT    flags;
  363.     DWORD   dwOptions;
  364.     DWORD   dwFilter;
  365.     char    achAllocModule[8];
  366.     DWORD   dwAllocBreak;
  367.     DWORD   dwAllocCount;
  368. } WINDEBUGINFO;
  369. BOOL    WINAPI GetWinDebugInfo(WINDEBUGINFO FAR* lpwdi, UINT flags);
  370. BOOL    WINAPI SetWinDebugInfo(const WINDEBUGINFO FAR* lpwdi);
  371. void    FAR _cdecl DebugOutput(UINT flags, LPCSTR lpsz, ...);
  372. void    WINAPI DebugFillBuffer(void FAR* lpb, UINT cb);                 /* ;Internal */
  373. /* WINDEBUGINFO flags values */
  374. #define WDI_OPTIONS         0x0001
  375. #define WDI_FILTER          0x0002
  376. #define WDI_ALLOCBREAK      0x0004
  377. #define WDI_VALID           0x0007  /* ;Internal */
  378. /* dwOptions values */
  379. #define DBO_CHECKHEAP       0x0001
  380. #define DBO_BUFFERFILL      0x0004
  381. #define DBO_DISABLEGPTRAPPING 0x0010
  382. #define DBO_CHECKFREE       0x0020
  383. #define DBO_SILENT          0x8000
  384. #define DBO_TRACEBREAK      0x2000
  385. #define DBO_WARNINGBREAK    0x1000
  386. #define DBO_NOERRORBREAK    0x0800
  387. #define DBO_NOFATALBREAK    0x0400
  388. #define DBO_INT3BREAK       0x0100
  389. /* DebugOutput flags values */
  390. #define DBF_TRACE           0x0000
  391. #define DBF_WARNING         0x4000
  392. #define DBF_ERROR           0x8000
  393. #define DBF_FATAL           0xc000
  394. #define DBF_SEVMASK         0xc000  /* ;Internal */
  395. #define DBF_FILTERMASK      0x3fff  /* ;Internal */
  396. /* dwFilter values */
  397. #define DBF_KERNEL          0x1000
  398. #define DBF_KRN_MEMMAN      0x0001
  399. #define DBF_KRN_LOADMODULE  0x0002
  400. #define DBF_KRN_SEGMENTLOAD 0x0004
  401. #define DBF_USER            0x0800
  402. #define DBF_GDI             0x0400
  403. #define DBF_MMSYSTEM        0x0040
  404. #define DBF_PENWIN          0x0020
  405. #define DBF_APPLICATION     0x0008
  406. #define DBF_DRIVER          0x0010
  407. #endif  /* NOLOGERROR */
  408. #endif  /* WINVER >= 0x030a */
  409. void    WINAPI FatalExit(int);
  410. void    WINAPI FatalAppExit(UINT, LPCSTR);
  411. BOOL    WINAPI ExitWindows(DWORD dwReturnCode, UINT wReserved);
  412. #define EW_RESTARTWINDOWS 0x42
  413. #if (WINVER >= 0x030a)
  414. #define EW_REBOOTSYSTEM   0x43
  415. #define EW_EXITANDEXECAPP 0x44   /* ;Internal */
  416. BOOL    WINAPI ExitWindowsExec(LPCSTR, LPCSTR);
  417. #endif  /* WINVER >= 0x030a */
  418. void    WINAPI DebugBreak(void);
  419. void    WINAPI OutputDebugString(LPCSTR);
  420. /* SetErrorMode() constants */
  421. #define SEM_FAILCRITICALERRORS  0x0001
  422. #define SEM_NOGPFAULTERRORBOX   0x0002
  423. #define SEM_NOOPENFILEERRORBOX  0x8000
  424. UINT    WINAPI SetErrorMode(UINT);
  425. /****** Pointer validation **************************************************/
  426. #if (WINVER >= 0x030a)
  427. BOOL    WINAPI IsBadReadPtr(const void FAR* lp, UINT cb);
  428. BOOL    WINAPI IsBadWritePtr(void FAR* lp, UINT cb);
  429. BOOL    WINAPI IsBadHugeReadPtr(const void _huge* lp, DWORD cb);
  430. BOOL    WINAPI IsBadHugeWritePtr(void _huge* lp, DWORD cb);
  431. BOOL    WINAPI IsBadCodePtr(FARPROC lpfn);
  432. BOOL    WINAPI IsBadStringPtr(const void FAR* lpsz, UINT cchMax);
  433. #endif  /* WINVER >= 0x030a */
  434. /****** Profiling support ***************************************************/
  435. #ifndef NOPROFILER
  436. int     WINAPI ProfInsChk(void);
  437. void    WINAPI ProfSetup(int,int);
  438. void    WINAPI ProfSampRate(int,int);
  439. void    WINAPI ProfStart(void);
  440. void    WINAPI ProfStop(void);
  441. void    WINAPI ProfClear(void);
  442. void    WINAPI ProfFlush(void);
  443. void    WINAPI ProfFinish(void);
  444. #endif  /* NOPROFILER */
  445. /****** Catch/Throw and stack management ************************************/
  446. typedef int CATCHBUF[9];
  447. typedef int FAR* LPCATCHBUF;
  448. int     WINAPI Catch(int FAR*);
  449. void    WINAPI Throw(const int FAR*, int);
  450. void    WINAPI SwitchStackBack(void);
  451. void    WINAPI SwitchStackTo(UINT, UINT, UINT);
  452. /****** Module Management ***************************************************/
  453. #define HINSTANCE_ERROR ((HINSTANCE)32)
  454. LONG    WINAPI GetExpWinVer(HINSTANCE);                 /* ;Internal */
  455. HINSTANCE   WINAPI LoadModule(LPCSTR, LPVOID);
  456. BOOL        WINAPI FreeModule(HINSTANCE);
  457. HINSTANCE   WINAPI LoadLibrary(LPCSTR);
  458. void        WINAPI FreeLibrary(HINSTANCE);
  459. UINT    WINAPI WinExec(LPCSTR, UINT);
  460. HMODULE WINAPI GetModuleHandle(LPCSTR);
  461. int     WINAPI GetModuleUsage(HINSTANCE);
  462. int     WINAPI GetModuleFileName(HINSTANCE, LPSTR, int);
  463. FARPROC WINAPI GetProcAddress(HINSTANCE, LPCSTR);
  464. int     WINAPI GetInstanceData(HINSTANCE, BYTE*, int);
  465. HGLOBAL WINAPI GetCodeHandle(FARPROC);
  466. typedef struct tagSEGINFO
  467. {
  468.     UINT offSegment;
  469.     UINT cbSegment;
  470.     UINT flags;
  471.     UINT cbAlloc;
  472.     HGLOBAL h;
  473.     UINT alignShift;
  474.     UINT reserved[2];
  475. } SEGINFO;
  476. typedef SEGINFO FAR* LPSEGINFO;
  477. void    WINAPI GetCodeInfo(FARPROC lpProc, SEGINFO FAR* lpSegInfo);
  478. FARPROC WINAPI MakeProcInstance(FARPROC, HINSTANCE);
  479. void    WINAPI FreeProcInstance(FARPROC);
  480. LONG    WINAPI SetSwapAreaSize(UINT);
  481. void    WINAPI SwapRecording(UINT);
  482. void    WINAPI ValidateCodeSegments(void);
  483. /* Windows Exit Procedure flag values */
  484. #define WEP_SYSTEM_EXIT 1
  485. #define WEP_FREE_DLL 0
  486. /****** Task Management *****************************************************/
  487. #endif /* NOKERNEL */
  488. DECLARE_HANDLE(HTASK);
  489. #ifndef NOKERNEL
  490. UINT    WINAPI GetNumTasks(void);
  491. #if (WINVER >= 0x030a)
  492. BOOL    WINAPI IsTask(HTASK);
  493. #endif  /* WINVER >= 0x030a */
  494. HTASK   WINAPI GetCurrentTask(void);
  495. int     WINAPI SetPriority(HTASK, int);     /* ;Internal */
  496. void    WINAPI Yield(void);
  497. void    WINAPI DirectedYield(HTASK);
  498. DWORD   WINAPI GetAppCompatFlags(HTASK);                /* ;Internal */
  499.                                        /* ;Internal */
  500. /* GetAppCompatFlags flag values */ /* ;Internal */
  501. #define GACF_IGNORENODISCARD 0x0001 /* ;Internal */
  502. #define GACF_FORCETEXTBAND 0x0002 /* ;Internal */
  503. #define GACF_ONELANDGRXBAND 0x0004 /* ;Internal */
  504. #define GACF_IGNORETOPMOST      0x0008                  /* ;Internal */
  505. #define GACF_CALLTTDEVICE       0x0010                  /* ;Internal */
  506. #define GACF_MULTIPLEBANDS 0x0020 /* ;Internal */
  507. #define GACF_ALWAYSSENDNCPAINT  0x0040                  /* ;Internal */
  508. #define GACF_EDITSETTEXTMUNGE   0x0080                  /* ;Internal */
  509. #define GACF_MOREEXTRAWNDWORDS  0x0100                  /* ;Internal */
  510. #define GACF_TTIGNORERASTERDUPE 0x0200 /* ;Internal */
  511. #define GACF_HACKWINFLAGS 0x0400 /* ;Internal */
  512. #define GACF_DELAYHWHNDSHAKECHK 0x0800 /* ;Internal */
  513. #define GACF_ENUMHELVNTMSRMN 0x1000 /* ;Internal */
  514. #define GACF_ENUMTTNOTDEVICE 0x2000 /* ;Internal */
  515. #define GACF_SUBTRACTCLIPSIBS   0x4000                  /* ;Internal */
  516. #define GACF_FORCETTGRAPHICS 0x8000 /* ;Internal */
  517. #define GACF_NOHRGN1            0x00010000              /* ;Internal */
  518. #define GACF_NCCALCSIZEONMOVE   0x00020000              /* ;Internal */
  519. #define GACF_SENDMENUDBLCLK     0x00040000              /* ;Internal */
  520. #define GACF_30AVGWIDTH  0x00080000 /* ;Internal */
  521. /****** Global memory management ********************************************/
  522. #ifndef NOMEMMGR
  523. /* Global Memory Flags */
  524. #define GMEM_FIXED     0x0000
  525. #define GMEM_MOVEABLE     0x0002
  526. #define GMEM_NOCOMPACT     0x0010
  527. #define GMEM_NODISCARD     0x0020
  528. #define GMEM_ZEROINIT     0x0040
  529. #define GMEM_MODIFY     0x0080
  530. #define GMEM_DISCARDABLE    0x0100
  531. #define GMEM_NOT_BANKED     0x1000
  532. #define GMEM_SHARE     0x2000
  533. #define GMEM_DDESHARE     0x2000
  534. #define GMEM_NOTIFY     0x4000
  535. #define GMEM_LOWER          GMEM_NOT_BANKED
  536. #define GHND     (GMEM_MOVEABLE | GMEM_ZEROINIT)
  537. #define GPTR     (GMEM_FIXED | GMEM_ZEROINIT)
  538. #define GlobalDiscard(h)    GlobalReAlloc(h, 0L, GMEM_MOVEABLE)
  539. HGLOBAL WINAPI GlobalAlloc(UINT, DWORD);
  540. HGLOBAL WINAPI GlobalReAlloc(HGLOBAL, DWORD, UINT);
  541. HGLOBAL WINAPI GlobalFree(HGLOBAL);
  542. DWORD   WINAPI GlobalDosAlloc(DWORD);
  543. UINT    WINAPI GlobalDosFree(UINT);
  544. #ifdef STRICT
  545. void FAR* WINAPI GlobalLock(HGLOBAL);
  546. #else
  547. char FAR* WINAPI GlobalLock(HGLOBAL);
  548. #endif
  549. BOOL    WINAPI GlobalUnlock(HGLOBAL);
  550. DWORD   WINAPI GlobalSize(HGLOBAL);
  551. DWORD   WINAPI GlobalHandle(UINT);
  552. /* GlobalFlags return flags (in addition to GMEM_DISCARDABLE) */
  553. #define GMEM_DISCARDED     0x4000
  554. #define GMEM_LOCKCOUNT     0x00FF
  555. UINT    WINAPI GlobalFlags(HGLOBAL);
  556. #ifdef STRICT
  557. void FAR* WINAPI GlobalWire(HGLOBAL);
  558. #else
  559. char FAR* WINAPI GlobalWire(HGLOBAL);
  560. #endif
  561. BOOL    WINAPI GlobalUnWire(HGLOBAL);
  562. UINT    WINAPI GlobalPageLock(HGLOBAL);
  563. UINT    WINAPI GlobalPageUnlock(HGLOBAL);
  564. void    WINAPI GlobalFix(HGLOBAL);
  565. void    WINAPI GlobalUnfix(HGLOBAL);
  566. HGLOBAL WINAPI GlobalLRUNewest(HGLOBAL);
  567. HGLOBAL WINAPI GlobalLRUOldest(HGLOBAL);
  568. DWORD   WINAPI GlobalCompact(DWORD);
  569. #ifdef STRICT
  570. typedef BOOL (CALLBACK* GNOTIFYPROC)(HGLOBAL);
  571. #else
  572. typedef FARPROC GNOTIFYPROC;
  573. #endif
  574. void    WINAPI GlobalNotify(GNOTIFYPROC);
  575. HGLOBAL WINAPI LockSegment(UINT);
  576. void    WINAPI UnlockSegment(UINT);
  577. #define LockData(dummy)     LockSegment((UINT)-1)
  578. #define UnlockData(dummy)   UnlockSegment((UINT)-1)
  579. UINT    WINAPI AllocSelector(UINT);
  580. UINT    WINAPI FreeSelector(UINT);
  581. UINT    WINAPI AllocDStoCSAlias(UINT);
  582. UINT    WINAPI PrestoChangoSelector(UINT sourceSel, UINT destSel);
  583. DWORD   WINAPI GetSelectorBase(UINT);
  584. UINT    WINAPI SetSelectorBase(UINT, DWORD);
  585. DWORD   WINAPI GetSelectorLimit(UINT);
  586. UINT    WINAPI SetSelectorLimit(UINT, DWORD);
  587. void    WINAPI LimitEmsPages(DWORD);
  588. void    WINAPI ValidateFreeSpaces(void);
  589. /* Low system memory notification message */
  590. #define WM_COMPACTING       0x0041
  591. /***** Local Memory Management */
  592. /* Local Memory Flags */
  593. #define LMEM_FIXED     0x0000
  594. #define LMEM_MOVEABLE     0x0002
  595. #define LMEM_NOCOMPACT     0x0010
  596. #define LMEM_NODISCARD     0x0020
  597. #define LMEM_ZEROINIT     0x0040
  598. #define LMEM_MODIFY     0x0080
  599. #define LMEM_DISCARDABLE    0x0F00
  600. #define LHND     (LMEM_MOVEABLE | LMEM_ZEROINIT)
  601. #define LPTR     (LMEM_FIXED | LMEM_ZEROINIT)
  602. #define NONZEROLHND     (LMEM_MOVEABLE)
  603. #define NONZEROLPTR     (LMEM_FIXED)
  604. extern UINT NEAR* PASCAL pLocalHeap;                    /* ;Internal */
  605. #define LocalFreeze(dummy)  (*(pLocalHeap+1) += 1) /* ;Internal */
  606. #define LocalMelt(dummy)    (*(pLocalHeap+1) -= 1) /* ;Internal */
  607. #define LocalDiscard(h)     LocalReAlloc(h, 0, LMEM_MOVEABLE)
  608. HLOCAL  WINAPI LocalAlloc(UINT, UINT);
  609. HLOCAL  WINAPI LocalReAlloc(HLOCAL, UINT, UINT);
  610. HLOCAL  WINAPI LocalFree(HLOCAL);
  611. #ifdef STRICT
  612. void NEAR* WINAPI LocalLock(HLOCAL);
  613. #else
  614. char NEAR* WINAPI LocalLock(HLOCAL);
  615. #endif
  616. BOOL    WINAPI LocalUnlock(HLOCAL);
  617. UINT    WINAPI LocalSize(HLOCAL);
  618. #ifdef STRICT
  619. HLOCAL  WINAPI LocalHandle(void NEAR*);
  620. #else
  621. HLOCAL  WINAPI LocalHandle(UINT);
  622. #endif
  623. UINT    WINAPI LocalHandleDelta(UINT);              /* ;Internal */
  624. /* LocalFlags return flags (in addition to LMEM_DISCARDABLE) */
  625. #define LMEM_DISCARDED     0x4000
  626. #define LMEM_LOCKCOUNT     0x00FF
  627. UINT    WINAPI LocalFlags(HLOCAL);
  628. BOOL    WINAPI LocalInit(UINT, UINT, UINT);
  629. UINT    WINAPI LocalCompact(UINT);
  630. UINT    WINAPI LocalShrink(HLOCAL, UINT);
  631. /* LocalNotify callback */     /* ;Internal */
  632. #ifdef STRICT     /* ;Internal */
  633. typedef BOOL (CALLBACK* LNOTIFYPROC)(UINT, HLOCAL, void NEAR*);   /* ;Internal */
  634. #else     /* ;Internal */
  635. typedef FARPROC LNOTIFYPROC;     /* ;Internal */
  636. #endif     /* ;Internal */
  637.     /* ;Internal */
  638. #define LNOTIFY_OUTOFMEM    0     /* ;Internal */
  639. #define LNOTIFY_MOVE     1     /* ;Internal */
  640. #define LNOTIFY_DISCARD     2     /* ;Internal */
  641.     /* ;Internal */
  642. LNOTIFYPROC WINAPI LocalNotify(LNOTIFYPROC);                        /* ;Internal */
  643.     /* ;Internal */
  644. #endif  /* NOMEMMGR */
  645. /****** File I/O ************************************************************/
  646. #ifndef NOLFILEIO
  647. typedef int HFILE;      /* Polymorphic with C runtime file handle type */
  648. #define HFILE_ERROR ((HFILE)-1)
  649. #ifndef NOOPENFILE
  650. /* OpenFile() Structure */
  651. typedef struct tagOFSTRUCT
  652. {
  653.     BYTE cBytes;
  654.     BYTE fFixedDisk;
  655.     UINT nErrCode;
  656.     BYTE reserved[4];
  657.     char szPathName[128];
  658. } OFSTRUCT;
  659. typedef OFSTRUCT*       POFSTRUCT;
  660. typedef OFSTRUCT NEAR* NPOFSTRUCT;
  661. typedef OFSTRUCT FAR*  LPOFSTRUCT;
  662. /* OpenFile() Flags */
  663. #define OF_READ      0x0000
  664. #define OF_WRITE     0x0001
  665. #define OF_READWRITE     0x0002
  666. #define OF_SHARE_COMPAT     0x0000
  667. #define OF_SHARE_EXCLUSIVE  0x0010
  668. #define OF_SHARE_DENY_WRITE 0x0020
  669. #define OF_SHARE_DENY_READ  0x0030
  670. #define OF_SHARE_DENY_NONE  0x0040
  671. #define OF_PARSE     0x0100
  672. #define OF_DELETE     0x0200
  673. #define OF_VERIFY     0x0400      /* Used with OF_REOPEN */
  674. #define OF_SEARCH     0x0400 /* Used without OF_REOPEN */
  675. #define OF_CANCEL     0x0800
  676. #define OF_CREATE     0x1000
  677. #define OF_PROMPT     0x2000
  678. #define OF_EXIST     0x4000
  679. #define OF_REOPEN     0x8000
  680. HFILE   WINAPI OpenFile(LPCSTR, OFSTRUCT FAR*, UINT);
  681. #endif  /* NOOPENFILE */
  682. /* _lopen() flags */
  683. #define READ     0
  684. #define WRITE       1
  685. #define READ_WRITE  2
  686. HFILE   WINAPI _lopen(LPCSTR, int);
  687. HFILE   WINAPI _lcreat(LPCSTR, int);
  688. HFILE   WINAPI _lclose(HFILE);
  689. LONG    WINAPI _llseek(HFILE, LONG, int);
  690. /* _llseek origin values */
  691. #define SEEK_SET 0
  692. #define SEEK_CUR 1
  693. #define SEEK_END 2
  694. UINT    WINAPI _lread(HFILE, void _huge*, UINT);
  695. UINT    WINAPI _lwrite(HFILE, const void _huge*, UINT);
  696. #if (WINVER >= 0x030a)
  697. long WINAPI _hread(HFILE, void _huge*, long);
  698. long WINAPI _hwrite(HFILE, const void _huge*, long);
  699. #endif /* WINVER >= 0x030a */
  700. UINT    WINAPI DeletePathname(LPCSTR);   /* ;Internal */
  701. #endif /* NOLFILEIO */
  702. /* GetTempFileName() Flags */
  703. #define TF_FORCEDRIVE     (BYTE)0x80
  704. int     WINAPI GetTempFileName(BYTE, LPCSTR, UINT, LPSTR);
  705. BYTE    WINAPI GetTempDrive(char);
  706. /* GetDriveType return values */
  707. #define DRIVE_REMOVABLE 2
  708. #define DRIVE_FIXED     3
  709. #define DRIVE_REMOTE    4
  710. UINT    WINAPI GetDriveType(int);
  711. UINT    WINAPI SetHandleCount(UINT);
  712. /****** Network support *****************************************************/
  713. UINT WINAPI WNetAddConnection(LPSTR, LPSTR, LPSTR);
  714. UINT WINAPI WNetGetConnection(LPSTR, LPSTR, UINT FAR*);
  715. UINT WINAPI WNetCancelConnection(LPSTR, BOOL);
  716. /* Errors */
  717. #define WN_SUCCESS 0x0000
  718. #define WN_NOT_SUPPORTED 0x0001
  719. #define WN_NET_ERROR 0x0002
  720. #define WN_MORE_DATA 0x0003
  721. #define WN_BAD_POINTER 0x0004
  722. #define WN_BAD_VALUE 0x0005
  723. #define WN_BAD_PASSWORD                 0x0006
  724. #define WN_ACCESS_DENIED 0x0007
  725. #define WN_FUNCTION_BUSY 0x0008
  726. #define WN_WINDOWS_ERROR 0x0009
  727. #define WN_BAD_USER 0x000A
  728. #define WN_OUT_OF_MEMORY 0x000B
  729. #define WN_CANCEL 0x000C
  730. #define WN_CONTINUE 0x000D
  731. /* Connection errors */
  732. #define WN_NOT_CONNECTED 0x0030
  733. #define WN_OPEN_FILES 0x0031
  734. #define WN_BAD_NETNAME 0x0032
  735. #define WN_BAD_LOCALNAME 0x0033
  736. #define WN_ALREADY_CONNECTED 0x0034
  737. #define WN_DEVICE_ERROR  0x0035
  738. #define WN_CONNECTION_CLOSED 0x0036
  739. /****** Resource Management *************************************************/
  740. DECLARE_HANDLE(HRSRC);
  741. HRSRC   WINAPI FindResource(HINSTANCE, LPCSTR, LPCSTR);
  742. HGLOBAL WINAPI LoadResource(HINSTANCE, HRSRC);
  743. BOOL    WINAPI FreeResource(HGLOBAL);
  744. #ifdef STRICT
  745. void FAR* WINAPI LockResource(HGLOBAL);
  746. #else
  747. char FAR* WINAPI LockResource(HGLOBAL);
  748. #endif
  749. #define     UnlockResource(h)     GlobalUnlock(h)
  750. DWORD   WINAPI SizeofResource(HINSTANCE, HRSRC);
  751. int     WINAPI AccessResource(HINSTANCE, HRSRC);
  752. HGLOBAL WINAPI AllocResource(HINSTANCE, HRSRC, DWORD);
  753. #ifdef STRICT
  754. typedef HGLOBAL (CALLBACK* RSRCHDLRPROC)(HGLOBAL, HINSTANCE, HRSRC);
  755. #else
  756. typedef FARPROC RSRCHDLRPROC;
  757. #endif
  758. RSRCHDLRPROC WINAPI SetResourceHandler(HINSTANCE, LPCSTR, RSRCHDLRPROC);
  759. #define MAKEINTRESOURCE(i)  ((LPCSTR)MAKELP(0, (i)))
  760. #ifndef NORESOURCE
  761. /* Predefined Resource Types */
  762. #define RT_CURSOR     MAKEINTRESOURCE(1)
  763. #define RT_BITMAP     MAKEINTRESOURCE(2)
  764. #define RT_ICON      MAKEINTRESOURCE(3)
  765. #define RT_MENU      MAKEINTRESOURCE(4)
  766. #define RT_DIALOG     MAKEINTRESOURCE(5)
  767. #define RT_STRING     MAKEINTRESOURCE(6)
  768. #define RT_FONTDIR     MAKEINTRESOURCE(7)
  769. #define RT_FONT      MAKEINTRESOURCE(8)
  770. #define RT_ACCELERATOR     MAKEINTRESOURCE(9)
  771. #define RT_RCDATA     MAKEINTRESOURCE(10)
  772. /* If any new types are added above this point, */  /* ;Internal */
  773. /* DIFFERENCE must be changed. The GROUP_* */  /* ;Internal */
  774. /* values minus the non-GROUP values must be */  /* ;Internal */
  775. /* equal to DIFFERENCE */  /* ;Internal */
  776. #define DIFFERENCE     11     /* ;Internal */
  777. #define RT_GROUP_CURSOR     MAKEINTRESOURCE(12)
  778. #define RT_GROUP_ICON     MAKEINTRESOURCE(14)
  779. #endif  /* NORESOURCE */
  780. #ifdef OEMRESOURCE
  781. /* OEM Resource Ordinal Numbers */
  782. #define OBM_CLOSE     32754
  783. #define OBM_UPARROW         32753
  784. #define OBM_DNARROW         32752
  785. #define OBM_RGARROW         32751
  786. #define OBM_LFARROW         32750
  787. #define OBM_REDUCE          32749
  788. #define OBM_ZOOM            32748
  789. #define OBM_RESTORE         32747
  790. #define OBM_REDUCED         32746
  791. #define OBM_ZOOMD           32745
  792. #define OBM_RESTORED        32744
  793. #define OBM_UPARROWD        32743
  794. #define OBM_DNARROWD        32742
  795. #define OBM_RGARROWD        32741
  796. #define OBM_LFARROWD        32740
  797. #define OBM_MNARROW         32739
  798. #define OBM_COMBO           32738
  799. #if (WINVER >= 0x030a)
  800. #define OBM_UPARROWI     32737
  801. #define OBM_DNARROWI     32736
  802. #define OBM_RGARROWI     32735
  803. #define OBM_LFARROWI     32734
  804. #endif  /* WINVER >= 0x030a */
  805. #define OBM_OLD_CLOSE       32767
  806. #define OBM_SIZE            32766
  807. #define OBM_OLD_UPARROW     32765
  808. #define OBM_OLD_DNARROW     32764
  809. #define OBM_OLD_RGARROW     32763
  810. #define OBM_OLD_LFARROW     32762
  811. #define OBM_BTSIZE          32761
  812. #define OBM_CHECK           32760
  813. #define OBM_CHECKBOXES      32759
  814. #define OBM_BTNCORNERS      32758
  815. #define OBM_OLD_REDUCE      32757
  816. #define OBM_OLD_ZOOM        32756
  817. #define OBM_OLD_RESTORE     32755
  818. #define OCR_NORMAL     32512
  819. #define OCR_IBEAM     32513
  820. #define OCR_WAIT     32514
  821. #define OCR_CROSS     32515
  822. #define OCR_UP     32516
  823. #define OCR_SIZE     32640
  824. #define OCR_ICON     32641
  825. #define OCR_SIZENWSE     32642
  826. #define OCR_SIZENESW     32643
  827. #define OCR_SIZEWE     32644
  828. #define OCR_SIZENS     32645
  829. #define OCR_SIZEALL     32646
  830. #define OCR_ICOCUR     32647
  831. #define OIC_SAMPLE     32512
  832. #define OIC_HAND     32513
  833. #define OIC_QUES     32514
  834. #define OIC_BANG     32515
  835. #define OIC_NOTE     32516
  836. #endif  /* OEMRESOURCE */
  837. /****** Atom Management *****************************************************/
  838. #define MAKEINTATOM(i)      ((LPCSTR)MAKELP(0, (i)))
  839. #ifndef NOATOM
  840. BOOL    WINAPI InitAtomTable(int);
  841. ATOM    WINAPI AddAtom(LPCSTR);
  842. ATOM    WINAPI DeleteAtom(ATOM);
  843. ATOM    WINAPI FindAtom(LPCSTR);
  844. UINT    WINAPI GetAtomName(ATOM, LPSTR, int);
  845. ATOM    WINAPI GlobalAddAtom(LPCSTR);
  846. ATOM    WINAPI GlobalDeleteAtom(ATOM);
  847. ATOM    WINAPI GlobalFindAtom(LPCSTR);
  848. UINT    WINAPI GlobalGetAtomName(ATOM, LPSTR, int);
  849. HLOCAL  WINAPI GetAtomHandle(ATOM);
  850. #endif  /* NOATOM */
  851. /****** WIN.INI Support *****************************************************/
  852. /* User Profile Routines */
  853. UINT    WINAPI GetProfileInt(LPCSTR, LPCSTR, int);
  854. int     WINAPI GetProfileString(LPCSTR, LPCSTR, LPCSTR, LPSTR, int);
  855. BOOL    WINAPI WriteProfileString(LPCSTR, LPCSTR, LPCSTR);
  856. UINT    WINAPI GetPrivateProfileInt(LPCSTR, LPCSTR, int, LPCSTR);
  857. int     WINAPI GetPrivateProfileString(LPCSTR, LPCSTR, LPCSTR, LPSTR, int, LPCSTR);
  858. BOOL    WINAPI WritePrivateProfileString(LPCSTR, LPCSTR, LPCSTR, LPCSTR);
  859. #define WM_WININICHANGE     0x001A
  860. /****** International & Char Translation Support ****************************/
  861. void    WINAPI AnsiToOem(const char _huge*, char _huge*);
  862. void    WINAPI OemToAnsi(const char _huge*, char _huge*);
  863. void    WINAPI AnsiToOemBuff(LPCSTR, LPSTR, UINT);
  864. void    WINAPI OemToAnsiBuff(LPCSTR, LPSTR, UINT);
  865. LPSTR   WINAPI AnsiNext(LPCSTR);
  866. LPSTR   WINAPI AnsiPrev(LPCSTR, LPCSTR);
  867. LPSTR   WINAPI AnsiUpper(LPSTR);
  868. LPSTR   WINAPI AnsiLower(LPSTR);
  869. UINT    WINAPI AnsiUpperBuff(LPSTR, UINT);
  870. UINT    WINAPI AnsiLowerBuff(LPSTR, UINT);
  871. /* Language driver entry point ordinal */    /* ;Internal */
  872. #define ORD_LANGDRIVER   1      /* ;Internal */
  873. #ifndef  NOLANGUAGE
  874. BOOL    WINAPI IsCharAlpha(char);
  875. BOOL    WINAPI IsCharAlphaNumeric(char);
  876. BOOL    WINAPI IsCharUpper(char);
  877. BOOL    WINAPI IsCharLower(char);
  878. #endif
  879. #ifndef NOLSTRING
  880. int     WINAPI lstrcmp(LPCSTR, LPCSTR);
  881. int     WINAPI lstrcmpi(LPCSTR, LPCSTR);
  882. LPSTR   WINAPI lstrcpy(LPSTR, LPCSTR);
  883. LPSTR   WINAPI lstrcat(LPSTR, LPCSTR);
  884. int     WINAPI lstrlen(LPCSTR);
  885. #if (WINVER >= 0x030a)
  886. LPSTR   WINAPI lstrcpyn(LPSTR, LPCSTR, int);
  887. void    WINAPI hmemcpy(void _huge*, const void _huge*, long);
  888. #endif /* WINVER >= 0x030a */
  889. #endif /* NOLSTRING */
  890. #if (WINVER >= 0x030a)
  891. #ifndef NODBCS
  892. BOOL    WINAPI IsDBCSLeadByte(BYTE);
  893. #endif /* NODBCS */
  894. #endif  /* WINVER >= 0x030a */
  895. int     WINAPI LoadString(HINSTANCE, UINT, LPSTR, int);
  896. /****** Keyboard Driver Functions *******************************************/
  897. #ifndef NOKEYBOARDINFO
  898. DWORD   WINAPI OemKeyScan(UINT);
  899. UINT    WINAPI VkKeyScan(UINT);
  900. int     WINAPI GetKeyboardType(int);
  901. UINT    WINAPI MapVirtualKey(UINT, UINT);
  902. int     WINAPI GetKBCodePage(void);
  903. int     WINAPI GetKeyNameText(LONG, LPSTR, int);
  904. int     WINAPI ToAscii(UINT wVirtKey, UINT wScanCode, BYTE FAR* lpKeyState, DWORD FAR* lpChar, UINT wFlags);
  905. #endif
  906. #endif  /* NOKERNEL */
  907. /****** GDI typedefs, structures, and functions *****************************/
  908. DECLARE_HANDLE(HDC);
  909. #ifndef NOGDI
  910. #ifdef STRICT
  911. typedef const void NEAR* HGDIOBJ;
  912. #else
  913. DECLARE_HANDLE(HGDIOBJ);
  914. #endif
  915. #endif /* NOGDI */
  916. DECLARE_HANDLE(HBITMAP);
  917. DECLARE_HANDLE(HPEN);
  918. DECLARE_HANDLE(HBRUSH);
  919. DECLARE_HANDLE(HRGN);
  920. DECLARE_HANDLE(HPALETTE);
  921. DECLARE_HANDLE(HFONT);
  922. typedef struct tagRECT
  923. {
  924.     int left;
  925.     int top;
  926.     int right;
  927.     int bottom;
  928. } RECT;
  929. typedef RECT*      PRECT;
  930. typedef RECT NEAR* NPRECT;
  931. typedef RECT FAR*  LPRECT;
  932. typedef struct tagPOINT
  933. {
  934.     int x;
  935.     int y;
  936. } POINT;
  937. typedef POINT*       PPOINT;
  938. typedef POINT NEAR* NPPOINT;
  939. typedef POINT FAR*  LPPOINT;
  940. #if (WINVER >= 0x030a)
  941. typedef struct tagSIZE
  942. {
  943.     int cx;
  944.     int cy;
  945. } SIZE;
  946. typedef SIZE*       PSIZE;
  947. typedef SIZE NEAR* NPSIZE;
  948. typedef SIZE FAR*  LPSIZE;
  949. #endif  /* WINVER >= 0x030a */
  950. #define MAKEPOINT(l)     (*((POINT FAR*)&(l)))
  951. #ifndef NOGDI
  952. /****** DC Management *******************************************************/
  953. HDC     WINAPI CreateDC(LPCSTR, LPCSTR, LPCSTR, const void FAR*);
  954. HDC     WINAPI CreateIC(LPCSTR, LPCSTR, LPCSTR, const void FAR*);
  955. HDC     WINAPI CreateCompatibleDC(HDC);
  956. BOOL    WINAPI DeleteDC(HDC);
  957. DWORD   WINAPI GetDCOrg(HDC);
  958. DWORD   WINAPI SetDCOrg(HDC, int, int);    /* ;Internal */
  959. int     WINAPI SaveDC(HDC);
  960. BOOL    WINAPI RestoreDC(HDC, int);
  961. int     WINAPI SetEnvironment(LPCSTR, const void FAR*, UINT);
  962. int     WINAPI GetEnvironment(LPCSTR, void FAR*, UINT);
  963. int     WINAPI MulDiv(int, int, int);
  964. #if (WINVER >= 0x030a)
  965. /* Drawing bounds accumulation APIs */
  966. UINT    WINAPI SetBoundsRect(HDC hDC, const RECT FAR* lprcBounds, UINT flags);
  967. UINT    WINAPI GetBoundsRect(HDC hDC, RECT FAR* lprcBounds, UINT flags);
  968. #define DCB_RESET       0x0001
  969. #define DCB_ACCUMULATE  0x0002
  970. #define DCB_DIRTY DCB_ACCUMULATE
  971. #define DCB_SET  (DCB_RESET | DCB_ACCUMULATE)
  972. #define DCB_ENABLE      0x0004
  973. #define DCB_DISABLE     0x0008
  974. #define DCB_WINDOWMGR 0x8000 /* ;Internal */
  975. /* ;Internal */
  976. /* Internal SelectBitmap stuff */ /* ;Internal */
  977. /*HBITMAP WINAPI SelectBitmap(HDC hDC, HBITMAP hbm);*/     /* ;Internal */
  978. #endif  /* WINVER >= 0x030a */
  979. /****** Device Capabilities *************************************************/
  980. int WINAPI GetDeviceCaps(HDC, int);
  981. /* Device Parameters for GetDeviceCaps() */
  982. #define DRIVERVERSION 0
  983. #define TECHNOLOGY    2
  984. #define HORZSIZE      4
  985. #define VERTSIZE      6
  986. #define HORZRES       8
  987. #define VERTRES       10
  988. #define BITSPIXEL     12
  989. #define PLANES        14
  990. #define NUMBRUSHES    16
  991. #define NUMPENS       18
  992. #define NUMMARKERS    20
  993. #define NUMFONTS      22
  994. #define NUMCOLORS     24
  995. #define PDEVICESIZE   26
  996. #define CURVECAPS     28
  997. #define LINECAPS      30
  998. #define POLYGONALCAPS 32
  999. #define TEXTCAPS      34
  1000. #define CLIPCAPS      36
  1001. #define RASTERCAPS    38
  1002. #define ASPECTX       40
  1003. #define ASPECTY       42
  1004. #define ASPECTXY      44
  1005. #define LOGPIXELSX    88
  1006. #define LOGPIXELSY    90
  1007. #define SIZEPALETTE  104
  1008. #define NUMRESERVED  106
  1009. #define COLORRES     108
  1010. #ifndef NOGDICAPMASKS
  1011. /* GetDeviceCaps() return value masks */
  1012. /* TECHNOLOGY */
  1013. #define DT_PLOTTER          0
  1014. #define DT_RASDISPLAY       1
  1015. #define DT_RASPRINTER       2
  1016. #define DT_RASCAMERA        3
  1017. #define DT_CHARSTREAM       4
  1018. #define DT_METAFILE         5
  1019. #define DT_DISPFILE         6
  1020. /* CURVECAPS */
  1021. #define CC_NONE             0x0000
  1022. #define CC_CIRCLES          0x0001
  1023. #define CC_PIE              0x0002
  1024. #define CC_CHORD            0x0004
  1025. #define CC_ELLIPSES         0x0008
  1026. #define CC_WIDE             0x0010
  1027. #define CC_STYLED           0x0020
  1028. #define CC_WIDESTYLED       0x0040
  1029. #define CC_INTERIORS        0x0080
  1030. #define CC_ROUNDRECT        0x0100
  1031. /* LINECAPS */
  1032. #define LC_NONE             0x0000
  1033. #define LC_POLYLINE         0x0002
  1034. #define LC_MARKER           0x0004
  1035. #define LC_POLYMARKER       0x0008
  1036. #define LC_WIDE             0x0010
  1037. #define LC_STYLED           0x0020
  1038. #define LC_WIDESTYLED       0x0040
  1039. #define LC_INTERIORS        0x0080
  1040. /* POLYGONALCAPS */
  1041. #define PC_NONE             0x0000
  1042. #define PC_POLYGON          0x0001
  1043. #define PC_RECTANGLE        0x0002
  1044. #define PC_WINDPOLYGON      0x0004
  1045. #define PC_SCANLINE         0x0008
  1046. #define PC_WIDE             0x0010
  1047. #define PC_STYLED           0x0020
  1048. #define PC_WIDESTYLED       0x0040
  1049. #define PC_INTERIORS        0x0080
  1050. /* TEXTCAPS */
  1051. #define TC_OP_CHARACTER     0x0001
  1052. #define TC_OP_STROKE        0x0002
  1053. #define TC_CP_STROKE        0x0004
  1054. #define TC_CR_90            0x0008
  1055. #define TC_CR_ANY           0x0010
  1056. #define TC_SF_X_YINDEP      0x0020
  1057. #define TC_SA_DOUBLE        0x0040
  1058. #define TC_SA_INTEGER       0x0080
  1059. #define TC_SA_CONTIN        0x0100
  1060. #define TC_EA_DOUBLE        0x0200
  1061. #define TC_IA_ABLE          0x0400
  1062. #define TC_UA_ABLE          0x0800
  1063. #define TC_SO_ABLE          0x1000
  1064. #define TC_RA_ABLE          0x2000
  1065. #define TC_VA_ABLE          0x4000
  1066. #define TC_RESERVED         0x8000
  1067. /* CLIPCAPS */
  1068. #define CP_NONE             0x0000
  1069. #define CP_RECTANGLE        0x0001
  1070. #define CP_REGION           0x0002
  1071. /* RASTERCAPS */
  1072. #define RC_NONE
  1073. #define RC_BITBLT           0x0001
  1074. #define RC_BANDING          0x0002
  1075. #define RC_SCALING          0x0004
  1076. #define RC_BITMAP64         0x0008
  1077. #define RC_GDI20_OUTPUT     0x0010
  1078. #define RC_GDI20_STATE      0x0020
  1079. #define RC_SAVEBITMAP       0x0040
  1080. #define RC_DI_BITMAP        0x0080
  1081. #define RC_PALETTE          0x0100
  1082. #define RC_DIBTODEV         0x0200
  1083. #define RC_BIGFONT          0x0400
  1084. #define RC_STRETCHBLT       0x0800
  1085. #define RC_FLOODFILL        0x1000
  1086. #define RC_STRETCHDIB       0x2000
  1087. #define RC_OP_DX_OUTPUT     0x4000
  1088. #define RC_DEVBITS          0x8000
  1089. #endif  /* NOGDICAPMASKS */
  1090. /****** Coordinate transformation support ***********************************/
  1091. int     WINAPI SetMapMode(HDC, int);
  1092. int     WINAPI GetMapMode(HDC);
  1093. /* Map modes */
  1094. #define MM_TEXT     1
  1095. #define MM_LOMETRIC     2
  1096. #define MM_HIMETRIC     3
  1097. #define MM_LOENGLISH     4
  1098. #define MM_HIENGLISH     5
  1099. #define MM_TWIPS     6
  1100. #define MM_ISOTROPIC     7
  1101. #define MM_ANISOTROPIC     8
  1102. DWORD   WINAPI SetWindowOrg(HDC, int, int);
  1103. DWORD   WINAPI GetWindowOrg(HDC);
  1104. DWORD   WINAPI SetWindowExt(HDC, int, int);
  1105. DWORD   WINAPI GetWindowExt(HDC);
  1106. DWORD   WINAPI OffsetWindowOrg(HDC, int, int);
  1107. DWORD   WINAPI ScaleWindowExt(HDC, int, int, int, int);
  1108. DWORD   WINAPI SetViewportOrg(HDC, int, int);
  1109. DWORD   WINAPI GetViewportOrg(HDC);
  1110. DWORD   WINAPI SetViewportExt(HDC, int, int);
  1111. DWORD   WINAPI GetViewportExt(HDC);
  1112. DWORD   WINAPI OffsetViewportOrg(HDC, int, int);
  1113. DWORD   WINAPI ScaleViewportExt(HDC, int, int, int, int);
  1114. #if (WINVER >= 0x030a)
  1115. BOOL    WINAPI SetWindowOrgEx(HDC, int, int, POINT FAR*);
  1116. BOOL    WINAPI GetWindowOrgEx(HDC, POINT FAR*);
  1117. BOOL    WINAPI SetWindowExtEx(HDC, int, int, SIZE FAR*);
  1118. BOOL    WINAPI GetWindowExtEx(HDC, SIZE FAR*);
  1119. BOOL    WINAPI OffsetWindowOrgEx(HDC, int, int, POINT FAR*);
  1120. BOOL    WINAPI ScaleWindowExtEx(HDC, int, int, int, int, SIZE FAR*);
  1121. BOOL    WINAPI SetViewportExtEx(HDC, int, int, SIZE FAR*);
  1122. BOOL    WINAPI GetViewportExtEx(HDC, SIZE FAR*);
  1123. BOOL    WINAPI SetViewportOrgEx(HDC, int, int, POINT FAR*);
  1124. BOOL    WINAPI GetViewportOrgEx(HDC, POINT FAR*);
  1125. BOOL    WINAPI OffsetViewportOrgEx(HDC, int, int, POINT FAR*);
  1126. BOOL    WINAPI ScaleViewportExtEx(HDC, int, int, int, int, SIZE FAR*);
  1127. #endif  /* WINVER >= 0x030a */
  1128. BOOL    WINAPI DPtoLP(HDC, POINT FAR*, int);
  1129. BOOL    WINAPI LPtoDP(HDC, POINT FAR*, int);
  1130. int     WINAPI SetRelAbs(HDC, int);   /* ;Internal */
  1131. int     WINAPI GetRelAbs(HDC);        /* ;Internal */
  1132. /* Coordinate Modes */
  1133. #define ABSOLUTE    1
  1134. #define RELATIVE    2
  1135. /****** Color support *******************************************************/
  1136. typedef DWORD COLORREF;
  1137. #define RGB(r,g,b)          ((COLORREF)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16)))
  1138. #define GetRValue(rgb)     ((BYTE)(rgb))
  1139. #define GetGValue(rgb)      ((BYTE)(((WORD)(rgb)) >> 8))
  1140. #define GetBValue(rgb)     ((BYTE)((rgb)>>16))
  1141. COLORREF WINAPI GetNearestColor(HDC, COLORREF);
  1142. #ifndef NOCOLOR
  1143. COLORREF WINAPI GetSysColor(int);
  1144. void    WINAPI SetSysColors(int, const int FAR*, const COLORREF FAR*);
  1145. #define COLOR_SCROLLBAR    0
  1146. #define COLOR_BACKGROUND    1
  1147. #define COLOR_ACTIVECAPTION    2
  1148. #define COLOR_INACTIVECAPTION    3
  1149. #define COLOR_MENU    4
  1150. #define COLOR_WINDOW    5
  1151. #define COLOR_WINDOWFRAME    6
  1152. #define COLOR_MENUTEXT    7
  1153. #define COLOR_WINDOWTEXT    8
  1154. #define COLOR_CAPTIONTEXT      9
  1155. #define COLOR_ACTIVEBORDER   10
  1156. #define COLOR_INACTIVEBORDER   11
  1157. #define COLOR_APPWORKSPACE   12
  1158. #define COLOR_HIGHLIGHT   13
  1159. #define COLOR_HIGHLIGHTTEXT   14
  1160. #define COLOR_BTNFACE             15
  1161. #define COLOR_BTNSHADOW           16
  1162. #define COLOR_GRAYTEXT            17
  1163. #define COLOR_BTNTEXT   18
  1164. #if (WINVER >= 0x030a)
  1165. #define COLOR_INACTIVECAPTIONTEXT 19
  1166. #define COLOR_BTNHIGHLIGHT        20
  1167. #define COLOR_MAX   20 /* ;Internal */
  1168. #else  /* WINVER >= 0x030a */                   /* ;Internal */
  1169. #define COLOR_MAX   18 /* ;Internal */
  1170. #endif  /* WINVER >= 0x030a */
  1171. #define COLOR_ENDCOLORS    COLOR_MAX /* ;Internal */
  1172. #endif  /* NOCOLOR */
  1173. #define WM_SYSCOLORCHANGE   0x0015
  1174. /****** GDI Object Support **************************************************/
  1175. #ifndef NOGDIOBJ
  1176. HGDIOBJ WINAPI GetStockObject(int);
  1177. BOOL    WINAPI IsGDIObject(HGDIOBJ);
  1178. #define GDIOBJ_PEN        1    /* ;Internal */
  1179. #define GDIOBJ_BRUSH      2    /* ;Internal */
  1180. #define GDIOBJ_FONT       3    /* ;Internal */
  1181. #define GDIOBJ_PALETTE    4    /* ;Internal */
  1182. #define GDIOBJ_BITMAP     5    /* ;Internal */
  1183. #define GDIOBJ_RGN        6    /* ;Internal */
  1184. #define GDIOBJ_DC         7    /* ;Internal */
  1185. #define GDIOBJ_IC         8    /* ;Internal */
  1186. #define GDIOBJ_DISABLEDDC 9    /* ;Internal */
  1187. #define GDIOBJ_METADC    10    /* ;Internal */
  1188. #define GDIOBJ_METAFILE  11    /* ;Internal */
  1189. BOOL    WINAPI DeleteObject(HGDIOBJ);
  1190. HGDIOBJ WINAPI SelectObject(HDC, HGDIOBJ);
  1191. int     WINAPI GetObject(HGDIOBJ, int, void FAR*);
  1192. BOOL    WINAPI UnrealizeObject(HGDIOBJ);
  1193. #ifdef STRICT
  1194. typedef (CALLBACK* GOBJENUMPROC)(void FAR*, LPARAM);
  1195. #else
  1196. typedef FARPROC GOBJENUMPROC;
  1197. #endif
  1198. #ifdef STRICT
  1199. int     WINAPI EnumObjects(HDC, int, GOBJENUMPROC, LPARAM);
  1200. #else
  1201. int     WINAPI EnumObjects(HDC, int, GOBJENUMPROC, LPSTR);
  1202. #endif
  1203. /* Object types for EnumObjects() */
  1204. #define OBJ_PEN      1
  1205. #define OBJ_BRUSH     2
  1206. /****** Pen support *********************************************************/
  1207. /* Logical Pen */
  1208. typedef struct tagLOGPEN
  1209. {
  1210.     UINT    lopnStyle;
  1211.     POINT   lopnWidth;
  1212.     COLORREF lopnColor;
  1213. } LOGPEN;
  1214. typedef LOGPEN*       PLOGPEN;
  1215. typedef LOGPEN NEAR* NPLOGPEN;
  1216. typedef LOGPEN FAR*  LPLOGPEN;
  1217. /* Pen Styles */
  1218. #define PS_SOLID     0
  1219. #define PS_DASH             1
  1220. #define PS_DOT              2
  1221. #define PS_DASHDOT          3
  1222. #define PS_DASHDOTDOT       4
  1223. #define PS_NULL      5
  1224. #define PS_INSIDEFRAME      6
  1225. HPEN    WINAPI CreatePen(int, int, COLORREF);
  1226. HPEN    WINAPI CreatePenIndirect(LOGPEN FAR*);
  1227. /* Stock pens for use with GetStockObject(); */
  1228. #define WHITE_PEN     6
  1229. #define BLACK_PEN     7
  1230. #define NULL_PEN     8
  1231. /****** Brush support *******************************************************/
  1232. /* Brush Styles */
  1233. #define BS_SOLID     0
  1234. #define BS_NULL     1
  1235. #define BS_HOLLOW     BS_NULL
  1236. #define BS_HATCHED     2
  1237. #define BS_PATTERN     3
  1238. #define BS_INDEXED     4
  1239. #define BS_DIBPATTERN     5
  1240. /* Hatch Styles */
  1241. #define HS_HORIZONTAL       0
  1242. #define HS_VERTICAL         1
  1243. #define HS_FDIAGONAL        2
  1244. #define HS_BDIAGONAL        3
  1245. #define HS_CROSS            4
  1246. #define HS_DIAGCROSS        5
  1247. /* Logical Brush (or Pattern) */
  1248. typedef struct tagLOGBRUSH
  1249. {
  1250.     UINT     lbStyle;
  1251.     COLORREF lbColor;
  1252.     int      lbHatch;
  1253. } LOGBRUSH;
  1254. typedef LOGBRUSH*       PLOGBRUSH;
  1255. typedef LOGBRUSH NEAR* NPLOGBRUSH;
  1256. typedef LOGBRUSH FAR*  LPLOGBRUSH;
  1257. typedef LOGBRUSH     PATTERN;
  1258. typedef PATTERN*       PPATTERN;
  1259. typedef PATTERN NEAR* NPPATTERN;
  1260. typedef PATTERN FAR*  LPPATTERN;
  1261. HBRUSH  WINAPI CreateSolidBrush(COLORREF);
  1262. HBRUSH  WINAPI CreateHatchBrush(int, COLORREF);
  1263. HBRUSH  WINAPI CreatePatternBrush(HBITMAP);
  1264. HBRUSH  WINAPI CreateDIBPatternBrush(HGLOBAL, UINT);
  1265. HBRUSH  WINAPI CreateBrushIndirect(LOGBRUSH FAR*);
  1266. /* Stock brushes for use with GetStockObject() */
  1267. #define WHITE_BRUSH     0
  1268. #define LTGRAY_BRUSH     1
  1269. #define GRAY_BRUSH     2
  1270. #define DKGRAY_BRUSH     3
  1271. #define BLACK_BRUSH     4
  1272. #define NULL_BRUSH     5
  1273. #define HOLLOW_BRUSH     NULL_BRUSH
  1274. DWORD   WINAPI SetBrushOrg(HDC, int, int);
  1275. DWORD   WINAPI GetBrushOrg(HDC);
  1276. #if (WINVER >= 0x030a)
  1277. BOOL    WINAPI GetBrushOrgEx(HDC, POINT FAR*);
  1278. #endif  /* WINVER >= 0x030a */
  1279. #endif /* NOGDIOBJ */
  1280. /****** Region support ******************************************************/
  1281. HRGN    WINAPI CreateRectRgn(int, int, int, int);
  1282. HRGN    WINAPI CreateRectRgnIndirect(const RECT FAR*);
  1283. HRGN    WINAPI CreateEllipticRgnIndirect(const RECT FAR*);
  1284. HRGN    WINAPI CreateEllipticRgn(int, int, int, int);
  1285. HRGN    WINAPI CreatePolygonRgn(const POINT FAR*, int, int);
  1286. HRGN    WINAPI CreatePolyPolygonRgn(const POINT FAR*, const int FAR*, int, int);
  1287. HRGN    WINAPI CreateRoundRectRgn(int, int, int, int, int, int);
  1288. /* Region type flags */
  1289. #define ERROR     0
  1290. #define NULLREGION     1
  1291. #define SIMPLEREGION     2
  1292. #define COMPLEXREGION     3
  1293. void    WINAPI SetRectRgn(HRGN, int, int, int, int);
  1294. int     WINAPI CombineRgn(HRGN, HRGN, HRGN, int);
  1295. /* CombineRgn() command values */
  1296. #define RGN_AND      1
  1297. #define RGN_OR     2
  1298. #define RGN_XOR      3
  1299. #define RGN_DIFF     4
  1300. #define RGN_COPY     5
  1301. BOOL    WINAPI EqualRgn(HRGN, HRGN);
  1302. int     WINAPI OffsetRgn(HRGN, int, int);
  1303. int     WINAPI GetRgnBox(HRGN, RECT FAR*);
  1304. BOOL    WINAPI RectInRegion(HRGN, const RECT FAR*);
  1305. BOOL    WINAPI PtInRegion(HRGN, int, int);
  1306. /****** Color palette Support ************************************************/
  1307. #define PALETTERGB(r,g,b)   (0x02000000L | RGB(r,g,b))
  1308. #define PALETTEINDEX(i)     ((COLORREF)(0x01000000L | (DWORD)(WORD)(i)))
  1309. typedef struct tagPALETTEENTRY
  1310. {
  1311.     BYTE    peRed;
  1312.     BYTE    peGreen;
  1313.     BYTE    peBlue;
  1314.     BYTE    peFlags;
  1315. } PALETTEENTRY;
  1316. typedef PALETTEENTRY FAR* LPPALETTEENTRY;
  1317. /* Palette entry flags */
  1318. #define PC_RESERVED 0x01 /* palette index used for animation */
  1319. #define PC_EXPLICIT 0x02 /* palette index is explicit to device */
  1320. #define PC_NOCOLLAPSE 0x04 /* do not match color to system palette */
  1321. /* Logical Palette */
  1322. typedef struct tagLOGPALETTE
  1323. {
  1324.     WORD    palVersion;
  1325.     WORD    palNumEntries;
  1326.     PALETTEENTRY palPalEntry[1];
  1327. } LOGPALETTE;
  1328. typedef LOGPALETTE*       PLOGPALETTE;
  1329. typedef LOGPALETTE NEAR* NPLOGPALETTE;
  1330. typedef LOGPALETTE FAR*  LPLOGPALETTE;
  1331. HPALETTE WINAPI CreatePalette(const LOGPALETTE FAR*);
  1332. HPALETTE WINAPI SelectPalette(HDC, HPALETTE, BOOL);
  1333. UINT    WINAPI RealizePalette(HDC);
  1334. int     WINAPI UpdateColors(HDC);
  1335. void    WINAPI AnimatePalette(HPALETTE, UINT, UINT, const PALETTEENTRY FAR*);
  1336. UINT    WINAPI SetPaletteEntries(HPALETTE, UINT, UINT, const PALETTEENTRY FAR*);
  1337. UINT    WINAPI GetPaletteEntries(HPALETTE, UINT, UINT, PALETTEENTRY FAR*);
  1338. UINT    WINAPI GetNearestPaletteIndex(HPALETTE, COLORREF);
  1339. BOOL    WINAPI ResizePalette(HPALETTE, UINT);
  1340. UINT    WINAPI GetSystemPaletteEntries(HDC, UINT, UINT, PALETTEENTRY FAR*);
  1341. UINT    WINAPI GetSystemPaletteUse(HDC);
  1342. UINT    WINAPI SetSystemPaletteUse(HDC, UINT);
  1343. /* Get/SetSystemPaletteUse() values */
  1344. #define SYSPAL_STATIC 1
  1345. #define SYSPAL_NOSTATIC 2
  1346. /* Palette window messages */
  1347. #define WM_QUERYNEWPALETTE  0x030F
  1348. #define WM_PALETTEISCHANGING 0x0310
  1349. #define WM_PALETTECHANGED   0x0311
  1350. #define WM_PALETTEGONNACHANGE WM_PALETTEISCHANGING /* ;Internal */
  1351. #define WM_CHANGEPALETTE WM_PALETTECHANGED /* ;Internal */
  1352. /****** Clipping support *****************************************************/
  1353. int     WINAPI SelectClipRgn(HDC, HRGN);
  1354. int     WINAPI GetClipBox(HDC, RECT FAR*);
  1355. int     WINAPI IntersectClipRect(HDC, int, int, int, int);
  1356. int     WINAPI OffsetClipRgn(HDC, int, int);
  1357. int     WINAPI ExcludeClipRect(HDC, int, int, int, int);
  1358. BOOL    WINAPI PtVisible(HDC, int, int);
  1359. BOOL    WINAPI RectVisible(HDC, const RECT FAR*);
  1360. #if (WINVER >= 0x030a)                                  /* ;Internal */
  1361. /* DC hook callback function */ /* ;Internal */
  1362. /* ;Internal */
  1363. typedef UINT (CALLBACK* DCHOOKPROC)(HDC hDC, UINT code, DWORD data, DWORD lParam); /* ;Internal */
  1364. /* ;Internal */
  1365. BOOL    WINAPI SetDCHook(HDC hDC, DCHOOKPROC lpNewProc, DWORD data);   /* ;Internal */
  1366. DWORD   WINAPI GetDCHook(HDC hDC, DCHOOKPROC FAR* lplpproc);          /* ;Internal */
  1367. /* ;Internal */
  1368. /* Callback reason code values */ /* ;Internal */
  1369. /* ;Internal */
  1370. #define DCHC_INVALIDVISRGN 0x0001 /* ;Internal */
  1371. #define DCHC_DELETEDC    0x0002 /* ;Internal */
  1372. /* ;Internal */
  1373. UINT WINAPI SetHookFlags(HDC hDC, UINT flags);          /* ;Internal */
  1374. /* ;Internal */
  1375. #define DCHF_INVALIDATEVISRGN 0x0001 /* ;Internal */
  1376. #define DCHF_VALIDATEVISRGN   0x0002 /* ;Internal */
  1377. #endif  /* WINVER >= 0x030a */                          /* ;Internal */
  1378. /****** General drawing support ********************************************/
  1379. DWORD   WINAPI MoveTo(HDC, int, int);
  1380. DWORD   WINAPI GetCurrentPosition(HDC);
  1381. #if (WINVER >= 0x030a)
  1382. BOOL    WINAPI MoveToEx(HDC, int, int, POINT FAR*);
  1383. BOOL    WINAPI GetCurrentPositionEx(HDC, POINT FAR*);
  1384. #endif  /* WINVER >= 0x030a */
  1385. BOOL    WINAPI LineTo(HDC, int, int);
  1386. BOOL    WINAPI Polyline(HDC, const POINT FAR*, int);
  1387. #ifdef STRICT
  1388. typedef void (CALLBACK* LINEDDAPROC)(int, int, LPARAM);
  1389. #else
  1390. typedef FARPROC LINEDDAPROC;
  1391. #endif
  1392. void    WINAPI LineDDA(int, int, int, int, LINEDDAPROC, LPARAM);
  1393. BOOL    WINAPI Rectangle(HDC, int, int, int, int);
  1394. BOOL    WINAPI RoundRect(HDC, int, int, int, int, int, int);
  1395. BOOL    WINAPI Ellipse(HDC, int, int, int, int);
  1396. BOOL    WINAPI Arc(HDC, int, int, int, int, int, int, int, int);
  1397. BOOL    WINAPI Chord(HDC, int, int, int, int, int, int, int, int);
  1398. BOOL    WINAPI Pie(HDC, int, int, int, int, int, int, int, int);
  1399. BOOL    WINAPI Polygon(HDC, const POINT FAR*, int);
  1400. BOOL    WINAPI PolyPolygon(HDC, const POINT FAR*, int FAR*, int);
  1401. /* PolyFill Modes */
  1402. #define ALTERNATE   1
  1403. #define WINDING     2
  1404. int     WINAPI SetPolyFillMode(HDC, int);
  1405. int     WINAPI GetPolyFillMode(HDC);
  1406. BOOL    WINAPI FloodFill(HDC, int, int, COLORREF);
  1407. BOOL    WINAPI ExtFloodFill(HDC, int, int, COLORREF, UINT);
  1408. /* ExtFloodFill style flags */
  1409. #define  FLOODFILLBORDER   0
  1410. #define  FLOODFILLSURFACE  1
  1411. BOOL    WINAPI FillRgn(HDC, HRGN, HBRUSH);
  1412. BOOL    WINAPI FrameRgn(HDC, HRGN, HBRUSH, int, int);
  1413. BOOL    WINAPI InvertRgn(HDC, HRGN);
  1414. BOOL    WINAPI PaintRgn(HDC, HRGN);
  1415. /* Rectangle output routines */
  1416. int     WINAPI FillRect(HDC, const RECT FAR*, HBRUSH);
  1417. int     WINAPI FrameRect(HDC, const RECT FAR*, HBRUSH);
  1418. void    WINAPI InvertRect(HDC, const RECT FAR*);
  1419. void    WINAPI DrawFocusRect(HDC, const RECT FAR*);
  1420. BOOL    WINAPI FastWindowFrame(HDC, const RECT FAR*, UINT, UINT, DWORD); /* ;Internal */
  1421. /****** Text support ********************************************************/
  1422. BOOL    WINAPI TextOut(HDC, int, int, LPCSTR, int);
  1423. LONG    WINAPI TabbedTextOut(HDC, int, int, LPCSTR, int, int, int FAR*, int);
  1424. BOOL    WINAPI ExtTextOut(HDC, int, int, UINT, const RECT FAR*, LPCSTR, UINT, int FAR*);
  1425. #define ETO_GRAYED 0x0001
  1426. #define ETO_OPAQUE 0x0002
  1427. #define ETO_CLIPPED 0x0004
  1428. DWORD   WINAPI GetTextExtent(HDC, LPCSTR, int);
  1429. DWORD   WINAPI GetTabbedTextExtent(HDC, LPCSTR, int, int, int FAR*);
  1430. #if (WINVER >= 0x030a)
  1431. BOOL    WINAPI GetTextExtentPoint(HDC, LPCSTR, int, SIZE FAR*);
  1432. #endif  /* WINVER >= 0x030a */
  1433. /* DrawText() Format Flags */
  1434. #ifndef NODRAWTEXT
  1435. #define DT_TOP     0x0000
  1436. #define DT_LEFT      0x0000
  1437. #define DT_CENTER     0x0001
  1438. #define DT_RIGHT     0x0002
  1439. #define DT_VCENTER     0x0004
  1440. #define DT_BOTTOM     0x0008
  1441. #define DT_WORDBREAK        0x0010
  1442. #define DT_SINGLELINE     0x0020
  1443. #define DT_EXPANDTABS     0x0040
  1444. #define DT_TABSTOP     0x0080
  1445. #define DT_NOCLIP     0x0100
  1446. #define DT_EXTERNALLEADING  0x0200
  1447. #define DT_CALCRECT     0x0400
  1448. #define DT_NOPREFIX     0x0800
  1449. #define DT_INTERNAL     0x1000
  1450. #define DT_VALID     0x1fff  /* ;Internal: Union of all those above */
  1451. int     WINAPI DrawText(HDC, LPCSTR, int, RECT FAR*, UINT);
  1452. #endif  /* NODRAWTEXT */
  1453. #ifdef STRICT
  1454. typedef BOOL (CALLBACK* GRAYSTRINGPROC)(HDC, LPARAM, int);
  1455. #else
  1456. typedef FARPROC GRAYSTRINGPROC;
  1457. #endif
  1458. BOOL    WINAPI GrayString(HDC, HBRUSH, GRAYSTRINGPROC, LPARAM, int, int, int, int, int);
  1459. BOOL    WINAPI GetCharWidth(HDC, UINT, UINT, int FAR*);
  1460. COLORREF WINAPI SetTextColor(HDC, COLORREF);
  1461. COLORREF WINAPI GetTextColor(HDC);
  1462. COLORREF WINAPI SetBkColor(HDC, COLORREF);
  1463. COLORREF WINAPI GetBkColor(HDC);
  1464. int     WINAPI SetBkMode(HDC, int);
  1465. int     WINAPI GetBkMode(HDC);
  1466. /* Background Modes */
  1467. #define TRANSPARENT     1
  1468. #define OPAQUE          2
  1469. #define TRANSPARENT1    3           /* ;Internal */
  1470. UINT    WINAPI SetTextAlign(HDC, UINT);
  1471. UINT    WINAPI GetTextAlign(HDC);
  1472. /* Text Alignment Options */
  1473. #define TA_NOUPDATECP      0x0000
  1474. #define TA_UPDATECP      0x0001
  1475. #define TA_LEFT       0x0000
  1476. #define TA_RIGHT      0x0002
  1477. #define TA_CENTER      0x0006
  1478. #define TA_TOP      0x0000
  1479. #define TA_BOTTOM      0x0008
  1480. #define TA_BASELINE      0x0018
  1481. int     WINAPI SetTextCharacterExtra(HDC, int);
  1482. int     WINAPI GetTextCharacterExtra(HDC);
  1483. int     WINAPI SetTextJustification(HDC, int, int);
  1484. /****** Font support ********************************************************/
  1485. #ifndef NOGDIOBJ
  1486. /* Logical Font */
  1487. #define LF_FACESIZE     32
  1488. typedef struct tagLOGFONT
  1489. {
  1490.     int     lfHeight;
  1491.     int     lfWidth;
  1492.     int     lfEscapement;
  1493.     int     lfOrientation;
  1494.     int     lfWeight;
  1495.     BYTE    lfItalic;
  1496.     BYTE    lfUnderline;
  1497.     BYTE    lfStrikeOut;
  1498.     BYTE    lfCharSet;
  1499.     BYTE    lfOutPrecision;
  1500.     BYTE    lfClipPrecision;
  1501.     BYTE    lfQuality;
  1502.     BYTE    lfPitchAndFamily;
  1503.     char    lfFaceName[LF_FACESIZE];
  1504. } LOGFONT;
  1505. typedef LOGFONT*       PLOGFONT;
  1506. typedef LOGFONT NEAR* NPLOGFONT;
  1507. typedef LOGFONT FAR*  LPLOGFONT;
  1508. /* weight values */
  1509. #define FW_DONTCARE     0
  1510. #define FW_THIN      100
  1511. #define FW_EXTRALIGHT     200
  1512. #define FW_LIGHT     300
  1513. #define FW_NORMAL     400
  1514. #define FW_MEDIUM     500
  1515. #define FW_SEMIBOLD     600
  1516. #define FW_BOLD      700
  1517. #define FW_EXTRABOLD     800
  1518. #define FW_HEAVY     900
  1519. #define FW_ULTRALIGHT     FW_EXTRALIGHT
  1520. #define FW_REGULAR     FW_NORMAL
  1521. #define FW_DEMIBOLD     FW_SEMIBOLD
  1522. #define FW_ULTRABOLD     FW_EXTRABOLD
  1523. #define FW_BLACK     FW_HEAVY
  1524. /* CharSet values */
  1525. #define ANSI_CHARSET     0
  1526. #define DEFAULT_CHARSET     1
  1527. #define SYMBOL_CHARSET     2
  1528. #define SHIFTJIS_CHARSET    128
  1529. #define HANGEUL_CHARSET     129
  1530. #define CHINESEBIG5_CHARSET 136
  1531. #define OEM_CHARSET     255
  1532. /* OutPrecision values */
  1533. #define OUT_DEFAULT_PRECIS 0
  1534. #define OUT_STRING_PRECIS 1
  1535. #define OUT_CHARACTER_PRECIS 2
  1536. #define OUT_STROKE_PRECIS 3
  1537. #if (WINVER >= 0x030a)
  1538. #define OUT_TT_PRECIS 4
  1539. #define OUT_DEVICE_PRECIS 5
  1540. #define OUT_RASTER_PRECIS 6
  1541. #define OUT_TT_ONLY_PRECIS 7
  1542. #endif  /* WINVER >= 0x030a */
  1543. /* ClipPrecision values */
  1544. #define CLIP_DEFAULT_PRECIS     0x00
  1545. #define CLIP_CHARACTER_PRECIS   0x01
  1546. #define CLIP_STROKE_PRECIS      0x02
  1547. #define CLIP_MASK 0x0F
  1548. #if (WINVER >= 0x030a)
  1549. #define CLIP_LH_ANGLES 0x10
  1550. #define CLIP_TT_ALWAYS 0x20
  1551. #define CLIP_EMBEDDED 0x80
  1552. #endif  /* WINVER >= 0x030a */
  1553. /* Quality values */
  1554. #define DEFAULT_QUALITY     0
  1555. #define DRAFT_QUALITY       1
  1556. #define PROOF_QUALITY       2
  1557. /* PitchAndFamily pitch values (low 4 bits) */
  1558. #define DEFAULT_PITCH       0x00
  1559. #define FIXED_PITCH         0x01
  1560. #define VARIABLE_PITCH      0x02
  1561. /* PitchAndFamily family values (high 4 bits) */
  1562. #define FF_DONTCARE         0x00
  1563. #define FF_ROMAN            0x10
  1564. #define FF_SWISS            0x20
  1565. #define FF_MODERN           0x30
  1566. #define FF_SCRIPT           0x40
  1567. #define FF_DECORATIVE       0x50
  1568. HFONT   WINAPI CreateFont(int, int, int, int, int, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, LPCSTR);
  1569. HFONT   WINAPI CreateFontIndirect(const LOGFONT FAR*);
  1570. /* Stock fonts for use with GetStockObject() */
  1571. #define OEM_FIXED_FONT     10
  1572. #define ANSI_FIXED_FONT     11
  1573. #define ANSI_VAR_FONT     12
  1574. #define SYSTEM_FONT     13
  1575. #define DEVICE_DEFAULT_FONT 14
  1576. #define DEFAULT_PALETTE     15
  1577. #define SYSTEM_FIXED_FONT   16
  1578. DWORD   WINAPI SetMapperFlags(HDC, DWORD);
  1579. #define ASPECT_FILTERING      0x00000001L
  1580. int     WINAPI AddFontResource(LPCSTR);
  1581. BOOL    WINAPI RemoveFontResource(LPCSTR);
  1582. #define WM_FONTCHANGE     0x001D
  1583. int     WINAPI GetTextFace(HDC, int, LPSTR);
  1584. DWORD   WINAPI GetAspectRatioFilter(HDC);
  1585. #if (WINVER >= 0x030a)
  1586. BOOL    WINAPI GetAspectRatioFilterEx(HDC, SIZE FAR*);
  1587. #endif  /* WINVER >= 0x030a */
  1588. #endif /* NOGDIOBJ */
  1589. #ifndef NOTEXTMETRIC
  1590. typedef struct tagTEXTMETRIC
  1591. {
  1592.     int     tmHeight;
  1593.     int     tmAscent;
  1594.     int     tmDescent;
  1595.     int     tmInternalLeading;
  1596.     int     tmExternalLeading;
  1597.     int     tmAveCharWidth;
  1598.     int     tmMaxCharWidth;
  1599.     int     tmWeight;
  1600.     BYTE    tmItalic;
  1601.     BYTE    tmUnderlined;
  1602.     BYTE    tmStruckOut;
  1603.     BYTE    tmFirstChar;
  1604.     BYTE    tmLastChar;
  1605.     BYTE    tmDefaultChar;
  1606.     BYTE    tmBreakChar;
  1607.     BYTE    tmPitchAndFamily;
  1608.     BYTE    tmCharSet;
  1609.     int     tmOverhang;
  1610.     int     tmDigitizedAspectX;
  1611.     int     tmDigitizedAspectY;
  1612. } TEXTMETRIC;
  1613. typedef TEXTMETRIC*       PTEXTMETRIC;
  1614. typedef TEXTMETRIC NEAR* NPTEXTMETRIC;
  1615. typedef TEXTMETRIC FAR*  LPTEXTMETRIC;
  1616. /* tmPitchAndFamily values */
  1617. #define TMPF_FIXED_PITCH    0x01
  1618. #define TMPF_VECTOR     0x02
  1619. #define TMPF_DEVICE     0x08
  1620. #if (WINVER >= 0x030a)
  1621. #define TMPF_TRUETYPE     0x04
  1622. #endif  /* WINVER >= 0x030a */
  1623. BOOL    WINAPI GetTextMetrics(HDC, TEXTMETRIC FAR*);
  1624. #if (WINVER >= 0x030a)
  1625. #ifndef NOSCALABLEFONT
  1626. typedef struct tagPANOSE
  1627. {
  1628.     BYTE    bFamilyType;
  1629.     BYTE    bSerifStyle;
  1630.     BYTE    bWeight;
  1631.     BYTE    bProportion;
  1632.     BYTE    bContrast;
  1633.     BYTE    bStrokeVariation;
  1634.     BYTE    bArmStyle;
  1635.     BYTE    bLetterform;
  1636.     BYTE    bMidline;
  1637.     BYTE    bXHeight;
  1638. } PANOSE, FAR* LPPANOSE;
  1639. typedef struct tagOUTLINETEXTMETRIC
  1640. {
  1641.     UINT    otmSize;
  1642.     TEXTMETRIC otmTextMetrics;
  1643.     BYTE    otmFiller;
  1644.     PANOSE  otmPanoseNumber;
  1645.     UINT    otmfsSelection;
  1646.     UINT    otmfsType;
  1647.     int     otmsCharSlopeRise;
  1648.     int     otmsCharSlopeRun;
  1649.     int     otmItalicAngle;
  1650.     UINT    otmEMSquare;
  1651.     int     otmAscent;
  1652.     int     otmDescent;
  1653.     UINT    otmLineGap;
  1654.     UINT    otmsCapEmHeight;
  1655.     UINT    otmsXHeight;
  1656.     RECT    otmrcFontBox;
  1657.     int     otmMacAscent;
  1658.     int     otmMacDescent;
  1659.     UINT    otmMacLineGap;
  1660.     UINT    otmusMinimumPPEM;
  1661.     POINT   otmptSubscriptSize;
  1662.     POINT   otmptSubscriptOffset;
  1663.     POINT   otmptSuperscriptSize;
  1664.     POINT   otmptSuperscriptOffset;
  1665.     UINT    otmsStrikeoutSize;
  1666.     int     otmsStrikeoutPosition;
  1667.     int     otmsUnderscorePosition;
  1668.     int     otmsUnderscoreSize;
  1669.     PSTR    otmpFamilyName;
  1670.     PSTR    otmpFaceName;
  1671.     PSTR    otmpStyleName;
  1672.     PSTR    otmpFullName;
  1673. } OUTLINETEXTMETRIC, FAR* LPOUTLINETEXTMETRIC;
  1674. WORD    WINAPI GetOutlineTextMetrics(HDC, UINT, OUTLINETEXTMETRIC FAR*);
  1675. #endif  /* WINVER >= 0x030a */
  1676. #endif  /* NOSCALABLEFONT */
  1677. #ifndef NOGDIOBJ
  1678. #if (WINVER >= 0x030a)
  1679. /* Structure passed to FONTENUMPROC */
  1680. /* NOTE: NEWTEXTMETRIC is the same as TEXTMETRIC plus 4 new fields */
  1681. typedef struct tagNEWTEXTMETRIC
  1682. {
  1683.     int     tmHeight;
  1684.     int     tmAscent;
  1685.     int     tmDescent;
  1686.     int     tmInternalLeading;
  1687.     int     tmExternalLeading;
  1688.     int     tmAveCharWidth;
  1689.     int     tmMaxCharWidth;
  1690.     int     tmWeight;
  1691.     BYTE    tmItalic;
  1692.     BYTE    tmUnderlined;
  1693.     BYTE    tmStruckOut;
  1694.     BYTE    tmFirstChar;
  1695.     BYTE    tmLastChar;
  1696.     BYTE    tmDefaultChar;
  1697.     BYTE    tmBreakChar;
  1698.     BYTE    tmPitchAndFamily;
  1699.     BYTE    tmCharSet;
  1700.     int     tmOverhang;
  1701.     int     tmDigitizedAspectX;
  1702.     int     tmDigitizedAspectY;
  1703.     DWORD   ntmFlags;
  1704.     UINT    ntmSizeEM;
  1705.     UINT    ntmCellHeight;
  1706.     UINT    ntmAvgWidth;
  1707. } NEWTEXTMETRIC;
  1708. typedef NEWTEXTMETRIC*       PNEWTEXTMETRIC;
  1709. typedef NEWTEXTMETRIC NEAR* NPNEWTEXTMETRIC;
  1710. typedef NEWTEXTMETRIC FAR*  LPNEWTEXTMETRIC;
  1711. /* ntmFlags field flags */
  1712. #define NTM_REGULAR 0x00000040L
  1713. #define NTM_BOLD 0x00000020L
  1714. #define NTM_ITALIC 0x00000001L
  1715. #define LF_FULLFACESIZE     64
  1716. /* Structure passed to FONTENUMPROC */
  1717. typedef struct tagENUMLOGFONT
  1718. {
  1719.     LOGFONT elfLogFont;
  1720.     char    elfFullName[LF_FULLFACESIZE];
  1721.     char    elfStyle[LF_FACESIZE];
  1722. } ENUMLOGFONT, FAR* LPENUMLOGFONT;
  1723. #endif  /* WINVER >= 0x030a */
  1724. #endif  /* NOGDIOBJ */
  1725. #ifdef STRICT
  1726. #ifndef NOGDIOBJ
  1727. typedef int (CALLBACK* OLDFONTENUMPROC)(const LOGFONT FAR*, const TEXTMETRIC FAR*, int, LPARAM);
  1728. #if (WINVER >= 0x030a)
  1729. typedef int (CALLBACK* FONTENUMPROC)(const ENUMLOGFONT FAR*, const NEWTEXTMETRIC FAR*, int, LPARAM);
  1730. int     WINAPI EnumFontFamilies(HDC, LPCSTR, FONTENUMPROC, LPARAM);
  1731. #else   /* WINVER >= 0x030a */
  1732. typedef OLDFONTENUMPROC FONTENUMPROC;
  1733. #endif  /* WINVER >= 0x030a) */
  1734. int     WINAPI EnumFonts(HDC, LPCSTR, OLDFONTENUMPROC, LPARAM);
  1735. #endif  /* NOGDIOBJ */
  1736. #else   /* STRICT */
  1737. typedef FARPROC OLDFONTENUMPROC;
  1738. typedef FARPROC FONTENUMPROC;
  1739. int     WINAPI EnumFonts(HDC, LPCSTR, OLDFONTENUMPROC, LPSTR);
  1740. #if (WINVER >= 0x030a)
  1741. int     WINAPI EnumFontFamilies(HDC, LPCSTR, FONTENUMPROC, LPSTR);
  1742. #endif  /* WINVER >= 0x030a */
  1743. #endif  /* !STRICT */
  1744. /* EnumFonts font type values */
  1745. #define RASTER_FONTTYPE     0x0001
  1746. #define DEVICE_FONTTYPE     0X0002
  1747. #if (WINVER >= 0x030a)
  1748. #define TRUETYPE_FONTTYPE   0x0004
  1749. #endif  /* WINVER >= 0x030a */
  1750. #endif  /* NOTEXTMETRIC */
  1751. #ifndef NOSCALABLEFONT
  1752. #if (WINVER >= 0x030a)
  1753. DWORD   WINAPI ConvertOutlineFontFile(LPCSTR, LPCSTR, LPCSTR);  /* ;Internal */
  1754. DWORD   WINAPI GetFontData(HDC, DWORD, DWORD, void FAR*, DWORD);
  1755. BOOL WINAPI CreateScalableFontResource(UINT, LPCSTR, LPCSTR, LPCSTR);
  1756. typedef struct tagGLYPHMETRICS
  1757. {
  1758.     UINT    gmBlackBoxX;
  1759.     UINT    gmBlackBoxY;
  1760.     POINT   gmptGlyphOrigin;
  1761.     int     gmCellIncX;
  1762.     int     gmCellIncY;
  1763. } GLYPHMETRICS, FAR* LPGLYPHMETRICS;
  1764. typedef struct tagFIXED
  1765. {
  1766.     UINT    fract;
  1767.     int     value;
  1768. } FIXED, FAR* LPFIXED;
  1769. typedef struct tagMAT2
  1770. {
  1771.     FIXED  eM11;
  1772.     FIXED  eM12;
  1773.     FIXED  eM21;
  1774.     FIXED  eM22;
  1775. } MAT2, FAR* LPMAT2;
  1776. DWORD   WINAPI GetGlyphOutline(HDC, UINT, UINT, GLYPHMETRICS FAR*, DWORD, void FAR*, const MAT2 FAR*);
  1777. /* GetGlyphOutline constants */
  1778. #define GGO_METRICS        0
  1779. #define GGO_BITMAP         1
  1780. #define GGO_NATIVE         2
  1781. #define TT_POLYGON_TYPE   24
  1782. #define TT_PRIM_LINE       1
  1783. #define TT_PRIM_QSPLINE    2
  1784. typedef struct tagPOINTFX
  1785. {
  1786.     FIXED x;
  1787.     FIXED y;
  1788. } POINTFX, FAR* LPPOINTFX;
  1789. typedef struct tagTTPOLYCURVE
  1790. {
  1791.     UINT    wType;
  1792.     UINT    cpfx;
  1793.     POINTFX apfx[1];
  1794. } TTPOLYCURVE, FAR* LPTTPOLYCURVE;
  1795. typedef struct tagTTPOLYGONHEADER
  1796. {
  1797.     DWORD   cb;
  1798.     DWORD   dwType;
  1799.     POINTFX pfxStart;
  1800. } TTPOLYGONHEADER, FAR* LPTTPOLYGONHEADER;
  1801. typedef UINT FAR* LPFONTDIR;                               /* ;Internal */
  1802.                                                            /* ;Internal */
  1803. DWORD   WINAPI EngineMakeFontDir(HDC, LPFONTDIR, LPCSTR);  /* ;Internal */
  1804.                                                            /* ;Internal */
  1805. typedef struct tagABC
  1806. {
  1807.     int   abcA;
  1808.     UINT  abcB;
  1809.     int   abcC;
  1810. } ABC;
  1811. typedef ABC FAR* LPABC;
  1812. BOOL    WINAPI GetCharABCWidths(HDC, UINT, UINT, ABC FAR*);
  1813. typedef struct tagKERNINGPAIR
  1814. {
  1815.     WORD wFirst;
  1816.     WORD wSecond;
  1817.     int  iKernAmount;
  1818. } KERNINGPAIR, FAR* LPKERNINGPAIR;
  1819. int     WINAPI GetKerningPairs(HDC, int, KERNINGPAIR FAR*);
  1820. typedef struct tagRASTERIZER_STATUS
  1821. {
  1822.     int   nSize;
  1823.     int   wFlags;
  1824.     int   nLanguageID;
  1825. } RASTERIZER_STATUS;
  1826. typedef RASTERIZER_STATUS FAR* LPRASTERIZER_STATUS;
  1827. /* bits defined in wFlags of RASTERIZER_STATUS */
  1828. #define TT_AVAILABLE 0x0001
  1829. #define TT_ENABLED 0x0002
  1830. BOOL    WINAPI GetRasterizerCaps(RASTERIZER_STATUS FAR*, int);
  1831. #endif  /* WINVER >= 0x030a */
  1832. #endif  /* NOSCALABLEFONT */
  1833. /****** Bitmap support ******************************************************/
  1834. #ifndef NOBITMAP
  1835. typedef struct tagBITMAP
  1836. {
  1837.     int     bmType;
  1838.     int     bmWidth;
  1839.     int     bmHeight;
  1840.     int     bmWidthBytes;
  1841.     BYTE    bmPlanes;
  1842.     BYTE    bmBitsPixel;
  1843.     void FAR* bmBits;
  1844. } BITMAP;
  1845. typedef BITMAP*       PBITMAP;
  1846. typedef BITMAP NEAR* NPBITMAP;
  1847. typedef BITMAP FAR*  LPBITMAP;
  1848. /* Bitmap Header structures */
  1849. typedef struct tagRGBTRIPLE
  1850. {
  1851.     BYTE    rgbtBlue;
  1852.     BYTE    rgbtGreen;
  1853.     BYTE    rgbtRed;
  1854. } RGBTRIPLE;
  1855. typedef RGBTRIPLE FAR* LPRGBTRIPLE;
  1856. typedef struct tagRGBQUAD
  1857. {
  1858.     BYTE    rgbBlue;
  1859.     BYTE    rgbGreen;
  1860.     BYTE    rgbRed;
  1861.     BYTE    rgbReserved;
  1862. } RGBQUAD;
  1863. typedef RGBQUAD FAR* LPRGBQUAD;
  1864. /* structures for defining DIBs */
  1865. typedef struct tagBITMAPCOREHEADER
  1866. {
  1867.     DWORD   bcSize;
  1868.     short   bcWidth;
  1869.     short   bcHeight;
  1870.     WORD    bcPlanes;
  1871.     WORD    bcBitCount;
  1872. } BITMAPCOREHEADER;
  1873. typedef BITMAPCOREHEADER*      PBITMAPCOREHEADER;
  1874. typedef BITMAPCOREHEADER FAR* LPBITMAPCOREHEADER;
  1875. typedef struct tagBITMAPINFOHEADER
  1876. {
  1877.     DWORD   biSize;
  1878.     LONG    biWidth;
  1879.     LONG    biHeight;
  1880.     WORD    biPlanes;
  1881.     WORD    biBitCount;
  1882.     DWORD   biCompression;
  1883.     DWORD   biSizeImage;
  1884.     LONG    biXPelsPerMeter;
  1885.     LONG    biYPelsPerMeter;
  1886.     DWORD   biClrUsed;
  1887.     DWORD   biClrImportant;
  1888. } BITMAPINFOHEADER;
  1889. typedef BITMAPINFOHEADER*      PBITMAPINFOHEADER;
  1890. typedef BITMAPINFOHEADER FAR* LPBITMAPINFOHEADER;
  1891. /* constants for the biCompression field */
  1892. #define BI_RGB      0L
  1893. #define BI_RLE8     1L
  1894. #define BI_RLE4     2L
  1895. typedef struct tagBITMAPINFO
  1896. {
  1897.     BITMAPINFOHEADER bmiHeader;
  1898.     RGBQUAD      bmiColors[1];
  1899. } BITMAPINFO;
  1900. typedef BITMAPINFO*     PBITMAPINFO;
  1901. typedef BITMAPINFO FAR* LPBITMAPINFO;
  1902. typedef struct tagBITMAPCOREINFO
  1903. {
  1904.     BITMAPCOREHEADER bmciHeader;
  1905.     RGBTRIPLE      bmciColors[1];
  1906. } BITMAPCOREINFO;
  1907. typedef BITMAPCOREINFO*      PBITMAPCOREINFO;
  1908. typedef BITMAPCOREINFO FAR* LPBITMAPCOREINFO;
  1909. typedef struct tagBITMAPFILEHEADER
  1910. {
  1911.     UINT    bfType;
  1912.     DWORD   bfSize;
  1913.     UINT    bfReserved1;
  1914.     UINT    bfReserved2;
  1915.     DWORD   bfOffBits;
  1916. } BITMAPFILEHEADER;
  1917. typedef BITMAPFILEHEADER*      PBITMAPFILEHEADER;
  1918. typedef BITMAPFILEHEADER FAR* LPBITMAPFILEHEADER;
  1919. /* Pel Array */      /* ;Internal */
  1920. typedef struct tagPELARRAY     /* ;Internal */
  1921. {     /* ;Internal */
  1922.     int     paXCount;                       /* ;Internal */
  1923.     int     paYCount;                       /* ;Internal */
  1924.     int     paXExt;                         /* ;Internal */
  1925.     int     paYExt;                         /* ;Internal */
  1926.     BYTE    paRGBs;     /* ;Internal */
  1927. } PELARRAY;     /* ;Internal */
  1928. typedef PELARRAY*       PPELARRAY;          /* ;Internal */
  1929. typedef PELARRAY NEAR* NPPELARRAY;          /* ;Internal */
  1930. typedef PELARRAY FAR*  LPPELARRAY;          /* ;Internal */
  1931. HBITMAP WINAPI CreateBitmap(int, int, UINT, UINT, const void FAR*);
  1932. HBITMAP WINAPI CreateBitmapIndirect(BITMAP FAR* );
  1933. HBITMAP WINAPI CreateCompatibleBitmap(HDC, int, int);
  1934. HBITMAP WINAPI CreateDiscardableBitmap(HDC, int, int);
  1935. HBITMAP WINAPI CreateDIBitmap(HDC, BITMAPINFOHEADER FAR*, DWORD, const void FAR*, BITMAPINFO FAR*, UINT);
  1936. HBITMAP WINAPI LoadBitmap(HINSTANCE, LPCSTR);
  1937. /* DIB color table identifiers */
  1938. #define DIB_RGB_COLORS  0
  1939. #define DIB_PAL_COLORS  1
  1940. /* constants for CreateDIBitmap */
  1941. #define CBM_INIT        0x00000004L
  1942. #endif /* NOBITMAP */
  1943. #ifndef NORASTEROPS
  1944. /* Binary raster ops */
  1945. #define R2_BLACK            1
  1946. #define R2_NOTMERGEPEN      2
  1947. #define R2_MASKNOTPEN       3
  1948. #define R2_NOTCOPYPEN       4
  1949. #define R2_MASKPENNOT       5
  1950. #define R2_NOT              6
  1951. #define R2_XORPEN           7
  1952. #define R2_NOTMASKPEN       8
  1953. #define R2_MASKPEN          9
  1954. #define R2_NOTXORPEN        10
  1955. #define R2_NOP              11
  1956. #define R2_MERGENOTPEN      12
  1957. #define R2_COPYPEN          13
  1958. #define R2_MERGEPENNOT      14
  1959. #define R2_MERGEPEN         15
  1960. #define R2_WHITE            16
  1961. /* Ternary raster operations */
  1962. #define SRCCOPY             0x00CC0020L
  1963. #define SRCPAINT            0x00EE0086L
  1964. #define SRCAND              0x008800C6L
  1965. #define SRCINVERT           0x00660046L
  1966. #define SRCERASE            0x00440328L
  1967. #define NOTSRCCOPY          0x00330008L
  1968. #define NOTSRCERASE         0x001100A6L
  1969. #define MERGECOPY           0x00C000CAL
  1970. #define MERGEPAINT          0x00BB0226L
  1971. #define PATCOPY             0x00F00021L
  1972. #define PATPAINT            0x00FB0A09L
  1973. #define PATINVERT           0x005A0049L
  1974. #define DSTINVERT           0x00550009L
  1975. #define BLACKNESS           0x00000042L
  1976. #define WHITENESS           0x00FF0062L
  1977. #endif  /* NORASTEROPS */
  1978. #ifndef NOBITMAP
  1979. BOOL    WINAPI BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD);
  1980. BOOL    WINAPI PatBlt(HDC, int, int, int, int, DWORD);
  1981. BOOL    WINAPI StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD);
  1982. int     WINAPI StretchDIBits(HDC, int, int, int, int, int,
  1983.                         int, int, int, const void FAR*, LPBITMAPINFO, UINT, DWORD);
  1984. COLORREF WINAPI SetPixel(HDC, int, int, COLORREF);
  1985. COLORREF WINAPI GetPixel(HDC, int, int);
  1986. /* StretchBlt() Modes */
  1987. #define BLACKONWHITE 1
  1988. #define WHITEONBLACK 2
  1989. #define COLORONCOLOR 3
  1990. /* new StretchBlt() Modes (simpler names) */
  1991. #define STRETCH_ANDSCANS        1
  1992. #define STRETCH_ORSCANS         2
  1993. #define STRETCH_DELETESCANS     3
  1994. int     WINAPI SetStretchBltMode(HDC, int);
  1995. int     WINAPI GetStretchBltMode(HDC);
  1996. DWORD   WINAPI SetBitmapDimension(HBITMAP, int, int);
  1997. DWORD   WINAPI GetBitmapDimension(HBITMAP);
  1998. #if (WINVER >= 0x030a)
  1999. BOOL    WINAPI SetBitmapDimensionEx(HBITMAP, int, int, SIZE FAR*);
  2000. BOOL    WINAPI GetBitmapDimensionEx(HBITMAP, SIZE FAR*);
  2001. #endif  /* WINVER >= 0x030a */
  2002. int     WINAPI SetROP2(HDC, int);
  2003. int     WINAPI GetROP2(HDC);
  2004. LONG    WINAPI SetBitmapBits(HBITMAP, DWORD, const void FAR*);
  2005. LONG    WINAPI GetBitmapBits(HBITMAP, LONG, void FAR*);
  2006. int     WINAPI SetDIBits(HDC, HBITMAP, UINT, UINT, const void FAR*, BITMAPINFO FAR*, UINT);
  2007. int     WINAPI GetDIBits(HDC, HBITMAP, UINT, UINT, void FAR*, BITMAPINFO FAR*, UINT);
  2008. int     WINAPI SetDIBitsToDevice(HDC, int, int, int, int, int, int, UINT, UINT,
  2009.                     void FAR*, BITMAPINFO FAR*, UINT);
  2010. #endif /* NOBITMAP */
  2011. /****** Metafile support ****************************************************/
  2012. #ifndef NOMETAFILE
  2013. DECLARE_HANDLE(HMETAFILE);
  2014. HDC     WINAPI CreateMetaFile(LPCSTR);
  2015. HMETAFILE WINAPI CloseMetaFile(HDC);
  2016. HMETAFILE WINAPI GetMetaFile(LPCSTR);
  2017. BOOL      WINAPI DeleteMetaFile(HMETAFILE);
  2018. HMETAFILE WINAPI CopyMetaFile(HMETAFILE, LPCSTR);
  2019. BOOL    WINAPI PlayMetaFile(HDC, HMETAFILE);
  2020. HGLOBAL WINAPI GetMetaFileBits(HMETAFILE);
  2021. HMETAFILE WINAPI SetMetaFileBits(HGLOBAL);
  2022. #if (WINVER >= 0x030a)
  2023. HMETAFILE WINAPI SetMetaFileBitsBetter(HGLOBAL);
  2024. #endif  /* WINVER >= 0x030a */
  2025. /* Clipboard Metafile Picture Structure */
  2026. typedef struct tagMETAFILEPICT
  2027. {
  2028.     int     mm;
  2029.     int     xExt;
  2030.     int     yExt;
  2031.     HMETAFILE hMF;
  2032. } METAFILEPICT;
  2033. typedef METAFILEPICT FAR* LPMETAFILEPICT;
  2034. typedef struct tagMETAHEADER
  2035. {
  2036.     UINT    mtType;
  2037.     UINT    mtHeaderSize;
  2038.     UINT    mtVersion;
  2039.     DWORD   mtSize;
  2040.     UINT    mtNoObjects;
  2041.     DWORD   mtMaxRecord;
  2042.     UINT    mtNoParameters;
  2043. } METAHEADER;
  2044. typedef struct tagHANDLETABLE
  2045. {
  2046.     HGDIOBJ objectHandle[1];
  2047. } HANDLETABLE;
  2048. typedef HANDLETABLE*      PHANDLETABLE;
  2049. typedef HANDLETABLE FAR* LPHANDLETABLE;
  2050. typedef struct tagMETARECORD
  2051. {
  2052.     DWORD   rdSize;
  2053.     UINT    rdFunction;
  2054.     UINT    rdParm[1];
  2055. } METARECORD;
  2056. typedef METARECORD*      PMETARECORD;
  2057. typedef METARECORD FAR* LPMETARECORD;
  2058. /* Metafile Functions */
  2059. #define META_SETBKCOLOR      0x0201
  2060. #define META_SETBKMODE      0x0102
  2061. #define META_SETMAPMODE      0x0103
  2062. #define META_SETROP2      0x0104
  2063. #define META_SETRELABS      0x0105
  2064. #define META_SETPOLYFILLMODE      0x0106
  2065. #define META_SETSTRETCHBLTMODE      0x0107
  2066. #define META_SETTEXTCHAREXTRA      0x0108
  2067. #define META_SETTEXTCOLOR      0x0209
  2068. #define META_SETTEXTJUSTIFICATION    0x020A
  2069. #define META_SETWINDOWORG      0x020B
  2070. #define META_SETWINDOWEXT      0x020C
  2071. #define META_SETVIEWPORTORG      0x020D
  2072. #define META_SETVIEWPORTEXT      0x020E
  2073. #define META_OFFSETWINDOWORG      0x020F
  2074. #define META_SCALEWINDOWEXT      0x0410
  2075. #define META_OFFSETVIEWPORTORG      0x0211
  2076. #define META_SCALEVIEWPORTEXT      0x0412
  2077. #define META_LINETO      0x0213
  2078. #define META_MOVETO      0x0214
  2079. #define META_EXCLUDECLIPRECT      0x0415
  2080. #define META_INTERSECTCLIPRECT      0x0416
  2081. #define META_ARC      0x0817
  2082. #define META_ELLIPSE      0x0418
  2083. #define META_FLOODFILL      0x0419
  2084. #define META_PIE      0x081A
  2085. #define META_RECTANGLE      0x041B
  2086. #define META_ROUNDRECT      0x061C
  2087. #define META_PATBLT      0x061D
  2088. #define META_SAVEDC      0x001E
  2089. #define META_SETPIXEL      0x041F
  2090. #define META_OFFSETCLIPRGN      0x0220
  2091. #define META_TEXTOUT      0x0521
  2092. #define META_BITBLT      0x0922
  2093. #define META_STRETCHBLT      0x0B23
  2094. #define META_POLYGON      0x0324
  2095. #define META_POLYLINE      0x0325
  2096. #define META_ESCAPE      0x0626
  2097. #define META_RESTOREDC      0x0127
  2098. #define META_FILLREGION      0x0228
  2099. #define META_FRAMEREGION      0x0429
  2100. #define META_INVERTREGION      0x012A
  2101. #define META_PAINTREGION      0x012B
  2102. #define META_SELECTCLIPREGION      0x012C
  2103. #define META_SELECTOBJECT      0x012D
  2104. #define META_SETTEXTALIGN      0x012E
  2105. #define META_DRAWTEXT      0x062F
  2106. #define META_CHORD      0x0830
  2107. #define META_SETMAPPERFLAGS      0x0231
  2108. #define META_EXTTEXTOUT      0x0a32
  2109. #define META_SETDIBTODEV      0x0d33
  2110. #define META_SELECTPALETTE      0x0234
  2111. #define META_REALIZEPALETTE      0x0035
  2112. #define META_ANIMATEPALETTE      0x0436
  2113. #define META_SETPALENTRIES      0x0037
  2114. #define META_POLYPOLYGON      0x0538
  2115. #define META_RESIZEPALETTE      0x0139
  2116. #define META_DIBBITBLT      0x0940
  2117. #define META_DIBSTRETCHBLT      0x0b41
  2118. #define META_DIBCREATEPATTERNBRUSH   0x0142
  2119. #define META_STRETCHDIB      0x0f43
  2120. #define META_EXTFLOODFILL      0x0548
  2121. #define META_RESETDC      0x014C
  2122. #define META_STARTDOC      0x014D
  2123. #define META_STARTPAGE      0x004F
  2124. #define META_ENDPAGE      0x0050
  2125. #define META_ABORTDOC      0x0052
  2126. #define META_ENDDOC      0x005E
  2127. #define META_DELETEOBJECT      0x01f0
  2128. #define META_CREATEPALETTE      0x00f7
  2129. #define META_CREATEBRUSH      0x00F8
  2130. #define META_CREATEPATTERNBRUSH      0x01F9
  2131. #define META_CREATEPENINDIRECT      0x02FA
  2132. #define META_CREATEFONTINDIRECT      0x02FB
  2133. #define META_CREATEBRUSHINDIRECT     0x02FC
  2134. #define META_CREATEBITMAPINDIRECT    0x02FD
  2135. #define META_CREATEBITMAP      0x06FE
  2136. #define META_CREATEREGION      0x06FF
  2137. void    WINAPI PlayMetaFileRecord(HDC, HANDLETABLE FAR*, METARECORD FAR*, UINT);
  2138. #ifdef STRICT
  2139. typedef int (CALLBACK* MFENUMPROC)(HDC, HANDLETABLE FAR*, METARECORD FAR*, int, LPARAM);
  2140. #else
  2141. typedef FARPROC MFENUMPROC;
  2142. #endif
  2143. BOOL    WINAPI EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM);
  2144. #endif  /* NOMETAFILE */
  2145. /****** Printing support ****************************************************/
  2146. #ifdef STRICT
  2147. typedef BOOL (CALLBACK* ABORTPROC)(HDC, int);
  2148. #else
  2149. typedef FARPROC ABORTPROC;
  2150. #endif
  2151. #if (WINVER >= 0x030a)
  2152. typedef struct
  2153. {
  2154.     int     cbSize;
  2155.     LPCSTR  lpszDocName;
  2156.     LPCSTR  lpszOutput;
  2157. }   DOCINFO;
  2158. typedef DOCINFO FAR* LPDOCINFO;
  2159. int     WINAPI StartDoc(HDC, DOCINFO FAR*);
  2160. int     WINAPI StartPage(HDC);
  2161. int     WINAPI EndPage(HDC);
  2162. int     WINAPI EndDoc(HDC);
  2163. int     WINAPI AbortDoc(HDC);
  2164. int     WINAPI SetAbortProc(HDC, ABORTPROC);
  2165. HANDLE  WINAPI SpoolFile(LPSTR, LPSTR, LPSTR, LPSTR);
  2166. BOOL    WINAPI QueryJob(HANDLE, int);           /* ;Internal */
  2167. #endif  /* WINVER >= 0x030a */
  2168. BOOL    WINAPI QueryAbort(HDC, int);
  2169. /* Spooler Error Codes */
  2170. #define SP_NOTREPORTED      0x4000
  2171. #define SP_ERROR      (-1)
  2172. #define SP_APPABORT      (-2)
  2173. #define SP_USERABORT      (-3)
  2174. #define SP_OUTOFDISK      (-4)
  2175. #define SP_OUTOFMEMORY      (-5)
  2176. #define PR_JOBSTATUS      0x0000
  2177. #endif  /* NOGDI  */
  2178. /* Spooler status notification message */
  2179. #define WM_SPOOLERSTATUS     0x002A
  2180. #ifndef NOGDI
  2181. /******* GDI Escape support *************************************************/
  2182. int     WINAPI Escape(HDC, int, int, LPCSTR, void FAR*);
  2183. /* GDI Escapes */
  2184. #define NEWFRAME      1
  2185. #define ABORTDOC      2
  2186. #define NEXTBAND      3
  2187. #define SETCOLORTABLE      4
  2188. #define GETCOLORTABLE      5
  2189. #define FLUSHOUTPUT      6
  2190. #define DRAFTMODE      7
  2191. #define QUERYESCSUPPORT       8
  2192. #define SETABORTPROC      9
  2193. #define STARTDOC      10
  2194. #define ENDDOC      11
  2195. #define GETPHYSPAGESIZE       12
  2196. #define GETPRINTINGOFFSET      13
  2197. #define GETSCALINGFACTOR      14
  2198. #define MFCOMMENT      15
  2199. #define GETPENWIDTH      16
  2200. #define SETCOPYCOUNT      17
  2201. #define SELECTPAPERSOURCE      18
  2202. #define DEVICEDATA      19
  2203. #define PASSTHROUGH      19
  2204. #define GETTECHNOLGY      20
  2205. #define GETTECHNOLOGY      20
  2206. #define SETLINECAP      21
  2207. #define SETLINEJOIN      22
  2208. #define SETMITERLIMIT      23
  2209. #define BANDINFO      24
  2210. #define DRAWPATTERNRECT       25
  2211. #define GETVECTORPENSIZE      26
  2212. #define GETVECTORBRUSHSIZE      27
  2213. #define ENABLEDUPLEX      28
  2214. #define GETSETPAPERBINS       29
  2215. #define GETSETPRINTORIENT      30
  2216. #define ENUMPAPERBINS      31
  2217. #define SETDIBSCALING      32
  2218. #define EPSPRINTING              33
  2219. #define ENUMPAPERMETRICS         34
  2220. #define GETSETPAPERMETRICS       35
  2221. #define POSTSCRIPT_DATA      37
  2222. #define POSTSCRIPT_IGNORE      38
  2223. #define MOUSETRAILS      39
  2224. #define GETEXTENDEDTEXTMETRICS      256
  2225. #define GETEXTENTTABLE      257
  2226. #define GETPAIRKERNTABLE      258
  2227. #define GETTRACKKERNTABLE      259
  2228. #define EXTTEXTOUT      512
  2229. #define GETFACENAME      513
  2230. #define ENABLERELATIVEWIDTHS      768
  2231. #define ENABLEPAIRKERNING      769
  2232. #define SETKERNTRACK      770
  2233. #define SETALLJUSTVALUES      771
  2234. #define SETCHARSET      772
  2235. #define STRETCHBLT      2048
  2236. #define GETSETSCREENPARAMS           3072
  2237. #define BEGIN_PATH      4096
  2238. #define CLIP_TO_PATH      4097
  2239. #define END_PATH      4098
  2240. #define EXT_DEVICE_CAPS      4099
  2241. #define RESTORE_CTM      4100
  2242. #define SAVE_CTM              4101
  2243. #define SET_ARC_DIRECTION      4102
  2244. #define SET_BACKGROUND_COLOR      4103
  2245. #define SET_POLY_MODE      4104
  2246. #define SET_SCREEN_ANGLE      4105
  2247. #define SET_SPREAD      4106
  2248. #define TRANSFORM_CTM      4107
  2249. #define SET_CLIP_BOX      4108
  2250. #define SET_BOUNDS                   4109
  2251. #endif  /* NOGDI */
  2252. /****** USER typedefs, structures, and functions *****************************/
  2253. #ifdef tagWND                       /* ;Internal */
  2254. typedef struct tagWND NEAR* HWND;   /* ;Internal */
  2255. #else                               /* ;Internal */
  2256. DECLARE_HANDLE(HWND);
  2257. #endif                              /* ;Internal */
  2258. #ifndef NOUSER
  2259. DECLARE_HANDLE(HMENU);
  2260. DECLARE_HANDLE(HICON);
  2261. typedef HICON HCURSOR;     /* HICONs & HCURSORs are polymorphic */
  2262. /****** System Metrics *******************************************************/
  2263. #ifndef NOSYSMETRICS
  2264. int WINAPI GetSystemMetrics(int);
  2265. /* GetSystemMetrics() codes */
  2266. #define SM_CXSCREEN      0
  2267. #define SM_CYSCREEN      1
  2268. #define SM_CXVSCROLL      2
  2269. #define SM_CYHSCROLL      3
  2270. #define SM_CYCAPTION      4
  2271. #define SM_CXBORDER      5
  2272. #define SM_CYBORDER      6
  2273. #define SM_CXDLGFRAME      7
  2274. #define SM_CYDLGFRAME      8
  2275. #define SM_CYVTHUMB      9
  2276. #define SM_CXHTHUMB      10
  2277. #define SM_CXICON      11
  2278. #define SM_CYICON      12
  2279. #define SM_CXCURSOR      13
  2280. #define SM_CYCURSOR      14
  2281. #define SM_CYMENU      15
  2282. #define SM_CXFULLSCREEN      16
  2283. #define SM_CYFULLSCREEN      17
  2284. #define SM_CYKANJIWINDOW     18
  2285. #define SM_MOUSEPRESENT      19
  2286. #define SM_CYVSCROLL      20
  2287. #define SM_CXHSCROLL      21
  2288. #define SM_DEBUG      22
  2289. #define SM_SWAPBUTTON      23
  2290. #define SM_RESERVED1      24
  2291. #define SM_RESERVED2      25
  2292. #define SM_RESERVED3      26
  2293. #define SM_RESERVED4      27
  2294. #define SM_CXMIN      28
  2295. #define SM_CYMIN      29
  2296. #define SM_CXSIZE      30
  2297. #define SM_CYSIZE      31
  2298. #define SM_CXFRAME      32
  2299. #define SM_CYFRAME      33
  2300. #define SM_CXMINTRACK      34
  2301. #define SM_CYMINTRACK      35
  2302. #if (WINVER >= 0x030a)
  2303. #define SM_CXDOUBLECLK       36
  2304. #define SM_CYDOUBLECLK       37
  2305. #define SM_CXICONSPACING     38
  2306. #define SM_CYICONSPACING     39
  2307. #define SM_MENUDROPALIGNMENT 40
  2308. #define SM_PENWINDOWS        41
  2309. #define SM_DBCSENABLED       42
  2310. #endif  /* WINVER >= 0x030a */
  2311. #define SM_MAX      42  /* ;Internal */
  2312. #define SM_CMETRICS      43
  2313. #endif  /* NOSYSMETRICS */
  2314. UINT    WINAPI GetDoubleClickTime(void);
  2315. void    WINAPI SetDoubleClickTime(UINT);