WinUser.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:274k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /****************************************************************************
  2. *                                                                           *
  3. * winuser.h -- USER procedure declarations, constant definitions and macros *
  4. *                                                                           *
  5. * Copyright (c) Microsoft Corporation. All rights reserved.                          *
  6. *                                                                           *
  7. ****************************************************************************/
  8. #ifndef _WINUSER_
  9. #define _WINUSER_
  10. //
  11. // Define API decoration for direct importing of DLL references.
  12. //
  13. #if !defined(_USER32_)
  14. #define WINUSERAPI DECLSPEC_IMPORT
  15. #else
  16. #define WINUSERAPI
  17. #endif
  18. #ifdef _MAC
  19. #include <macwin32.h>
  20. #endif
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif /* __cplusplus */
  24. #ifndef WINVER
  25. #define WINVER  0x0500      /* version 5.0 */
  26. #endif /* !WINVER */
  27. #include <stdarg.h>
  28. #ifndef NOUSER
  29. typedef HANDLE HDWP;
  30. typedef VOID MENUTEMPLATEA;
  31. typedef VOID MENUTEMPLATEW;
  32. #ifdef UNICODE
  33. typedef MENUTEMPLATEW MENUTEMPLATE;
  34. #else
  35. typedef MENUTEMPLATEA MENUTEMPLATE;
  36. #endif // UNICODE
  37. typedef PVOID LPMENUTEMPLATEA;
  38. typedef PVOID LPMENUTEMPLATEW;
  39. #ifdef UNICODE
  40. typedef LPMENUTEMPLATEW LPMENUTEMPLATE;
  41. #else
  42. typedef LPMENUTEMPLATEA LPMENUTEMPLATE;
  43. #endif // UNICODE
  44. typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);
  45. #ifdef STRICT
  46. typedef INT_PTR (CALLBACK* DLGPROC)(HWND, UINT, WPARAM, LPARAM);
  47. typedef VOID (CALLBACK* TIMERPROC)(HWND, UINT, UINT_PTR, DWORD);
  48. typedef BOOL (CALLBACK* GRAYSTRINGPROC)(HDC, LPARAM, int);
  49. typedef BOOL (CALLBACK* WNDENUMPROC)(HWND, LPARAM);
  50. typedef LRESULT (CALLBACK* HOOKPROC)(int code, WPARAM wParam, LPARAM lParam);
  51. typedef VOID (CALLBACK* SENDASYNCPROC)(HWND, UINT, ULONG_PTR, LRESULT);
  52. typedef BOOL (CALLBACK* PROPENUMPROCA)(HWND, LPCSTR, HANDLE);
  53. typedef BOOL (CALLBACK* PROPENUMPROCW)(HWND, LPCWSTR, HANDLE);
  54. typedef BOOL (CALLBACK* PROPENUMPROCEXA)(HWND, LPSTR, HANDLE, ULONG_PTR);
  55. typedef BOOL (CALLBACK* PROPENUMPROCEXW)(HWND, LPWSTR, HANDLE, ULONG_PTR);
  56. typedef int (CALLBACK* EDITWORDBREAKPROCA)(LPSTR lpch, int ichCurrent, int cch, int code);
  57. typedef int (CALLBACK* EDITWORDBREAKPROCW)(LPWSTR lpch, int ichCurrent, int cch, int code);
  58. #if(WINVER >= 0x0400)
  59. typedef BOOL (CALLBACK* DRAWSTATEPROC)(HDC hdc, LPARAM lData, WPARAM wData, int cx, int cy);
  60. #endif /* WINVER >= 0x0400 */
  61. #else /* !STRICT */
  62. typedef FARPROC DLGPROC;
  63. typedef FARPROC TIMERPROC;
  64. typedef FARPROC GRAYSTRINGPROC;
  65. typedef FARPROC WNDENUMPROC;
  66. typedef FARPROC HOOKPROC;
  67. typedef FARPROC SENDASYNCPROC;
  68. typedef FARPROC EDITWORDBREAKPROCA;
  69. typedef FARPROC EDITWORDBREAKPROCW;
  70. typedef FARPROC PROPENUMPROCA;
  71. typedef FARPROC PROPENUMPROCW;
  72. typedef FARPROC PROPENUMPROCEXA;
  73. typedef FARPROC PROPENUMPROCEXW;
  74. #if(WINVER >= 0x0400)
  75. typedef FARPROC DRAWSTATEPROC;
  76. #endif /* WINVER >= 0x0400 */
  77. #endif /* !STRICT */
  78. #ifdef UNICODE
  79. typedef PROPENUMPROCW        PROPENUMPROC;
  80. typedef PROPENUMPROCEXW      PROPENUMPROCEX;
  81. typedef EDITWORDBREAKPROCW   EDITWORDBREAKPROC;
  82. #else  /* !UNICODE */
  83. typedef PROPENUMPROCA        PROPENUMPROC;
  84. typedef PROPENUMPROCEXA      PROPENUMPROCEX;
  85. typedef EDITWORDBREAKPROCA   EDITWORDBREAKPROC;
  86. #endif /* UNICODE */
  87. #ifdef STRICT
  88. typedef BOOL (CALLBACK* NAMEENUMPROCA)(LPSTR, LPARAM);
  89. typedef BOOL (CALLBACK* NAMEENUMPROCW)(LPWSTR, LPARAM);
  90. typedef NAMEENUMPROCA   WINSTAENUMPROCA;
  91. typedef NAMEENUMPROCA   DESKTOPENUMPROCA;
  92. typedef NAMEENUMPROCW   WINSTAENUMPROCW;
  93. typedef NAMEENUMPROCW   DESKTOPENUMPROCW;
  94. #else /* !STRICT */
  95. typedef FARPROC NAMEENUMPROCA;
  96. typedef FARPROC NAMEENUMPROCW;
  97. typedef FARPROC WINSTAENUMPROCA;
  98. typedef FARPROC DESKTOPENUMPROCA;
  99. typedef FARPROC WINSTAENUMPROCW;
  100. typedef FARPROC DESKTOPENUMPROCW;
  101. #endif /* !STRICT */
  102. #ifdef UNICODE
  103. typedef WINSTAENUMPROCW     WINSTAENUMPROC;
  104. typedef DESKTOPENUMPROCW    DESKTOPENUMPROC;
  105. #else  /* !UNICODE */
  106. typedef WINSTAENUMPROCA     WINSTAENUMPROC;
  107. typedef DESKTOPENUMPROCA    DESKTOPENUMPROC;
  108. #endif /* UNICODE */
  109. #define IS_INTRESOURCE(_r) (((ULONG_PTR)(_r) >> 16) == 0)
  110. #define MAKEINTRESOURCEA(i) (LPSTR)((ULONG_PTR)((WORD)(i)))
  111. #define MAKEINTRESOURCEW(i) (LPWSTR)((ULONG_PTR)((WORD)(i)))
  112. #ifdef UNICODE
  113. #define MAKEINTRESOURCE  MAKEINTRESOURCEW
  114. #else
  115. #define MAKEINTRESOURCE  MAKEINTRESOURCEA
  116. #endif // !UNICODE
  117. #ifndef NORESOURCE
  118. /*
  119.  * Predefined Resource Types
  120.  */
  121. #define RT_CURSOR           MAKEINTRESOURCE(1)
  122. #define RT_BITMAP           MAKEINTRESOURCE(2)
  123. #define RT_ICON             MAKEINTRESOURCE(3)
  124. #define RT_MENU             MAKEINTRESOURCE(4)
  125. #define RT_DIALOG           MAKEINTRESOURCE(5)
  126. #define RT_STRING           MAKEINTRESOURCE(6)
  127. #define RT_FONTDIR          MAKEINTRESOURCE(7)
  128. #define RT_FONT             MAKEINTRESOURCE(8)
  129. #define RT_ACCELERATOR      MAKEINTRESOURCE(9)
  130. #define RT_RCDATA           MAKEINTRESOURCE(10)
  131. #define RT_MESSAGETABLE     MAKEINTRESOURCE(11)
  132. #define DIFFERENCE     11
  133. #define RT_GROUP_CURSOR MAKEINTRESOURCE((ULONG_PTR)RT_CURSOR + DIFFERENCE)
  134. #define RT_GROUP_ICON   MAKEINTRESOURCE((ULONG_PTR)RT_ICON + DIFFERENCE)
  135. #define RT_VERSION      MAKEINTRESOURCE(16)
  136. #define RT_DLGINCLUDE   MAKEINTRESOURCE(17)
  137. #if(WINVER >= 0x0400)
  138. #define RT_PLUGPLAY     MAKEINTRESOURCE(19)
  139. #define RT_VXD          MAKEINTRESOURCE(20)
  140. #define RT_ANICURSOR    MAKEINTRESOURCE(21)
  141. #define RT_ANIICON      MAKEINTRESOURCE(22)
  142. #endif /* WINVER >= 0x0400 */
  143. #define RT_HTML         MAKEINTRESOURCE(23)
  144. #ifdef RC_INVOKED
  145. #define RT_MANIFEST                        24
  146. #define CREATEPROCESS_MANIFEST_RESOURCE_ID  1
  147. #define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2
  148. #define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID 3
  149. #define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID 1   /* inclusive */
  150. #define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID 16  /* inclusive */
  151. #else  /* RC_INVOKED */
  152. #define RT_MANIFEST                        MAKEINTRESOURCE(24)
  153. #define CREATEPROCESS_MANIFEST_RESOURCE_ID MAKEINTRESOURCE( 1)
  154. #define ISOLATIONAWARE_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(2)
  155. #define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(3)
  156. #define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE( 1 /*inclusive*/)
  157. #define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(16 /*inclusive*/)
  158. #endif /* RC_INVOKED */
  159. #endif /* !NORESOURCE */
  160. WINUSERAPI
  161. int
  162. WINAPI
  163. wvsprintfA(
  164.     OUT LPSTR,
  165.     IN LPCSTR,
  166.     IN va_list arglist);
  167. WINUSERAPI
  168. int
  169. WINAPI
  170. wvsprintfW(
  171.     OUT LPWSTR,
  172.     IN LPCWSTR,
  173.     IN va_list arglist);
  174. #ifdef UNICODE
  175. #define wvsprintf  wvsprintfW
  176. #else
  177. #define wvsprintf  wvsprintfA
  178. #endif // !UNICODE
  179. WINUSERAPI
  180. int
  181. WINAPIV
  182. wsprintfA(
  183.     OUT LPSTR,
  184.     IN LPCSTR,
  185.     ...);
  186. WINUSERAPI
  187. int
  188. WINAPIV
  189. wsprintfW(
  190.     OUT LPWSTR,
  191.     IN LPCWSTR,
  192.     ...);
  193. #ifdef UNICODE
  194. #define wsprintf  wsprintfW
  195. #else
  196. #define wsprintf  wsprintfA
  197. #endif // !UNICODE
  198. /*
  199.  * SPI_SETDESKWALLPAPER defined constants
  200.  */
  201. #define SETWALLPAPER_DEFAULT    ((LPWSTR)-1)
  202. #ifndef NOSCROLL
  203. /*
  204.  * Scroll Bar Constants
  205.  */
  206. #define SB_HORZ             0
  207. #define SB_VERT             1
  208. #define SB_CTL              2
  209. #define SB_BOTH             3
  210. /*
  211.  * Scroll Bar Commands
  212.  */
  213. #define SB_LINEUP           0
  214. #define SB_LINELEFT         0
  215. #define SB_LINEDOWN         1
  216. #define SB_LINERIGHT        1
  217. #define SB_PAGEUP           2
  218. #define SB_PAGELEFT         2
  219. #define SB_PAGEDOWN         3
  220. #define SB_PAGERIGHT        3
  221. #define SB_THUMBPOSITION    4
  222. #define SB_THUMBTRACK       5
  223. #define SB_TOP              6
  224. #define SB_LEFT             6
  225. #define SB_BOTTOM           7
  226. #define SB_RIGHT            7
  227. #define SB_ENDSCROLL        8
  228. #endif /* !NOSCROLL */
  229. #ifndef NOSHOWWINDOW
  230. /*
  231.  * ShowWindow() Commands
  232.  */
  233. #define SW_HIDE             0
  234. #define SW_SHOWNORMAL       1
  235. #define SW_NORMAL           1
  236. #define SW_SHOWMINIMIZED    2
  237. #define SW_SHOWMAXIMIZED    3
  238. #define SW_MAXIMIZE         3
  239. #define SW_SHOWNOACTIVATE   4
  240. #define SW_SHOW             5
  241. #define SW_MINIMIZE         6
  242. #define SW_SHOWMINNOACTIVE  7
  243. #define SW_SHOWNA           8
  244. #define SW_RESTORE          9
  245. #define SW_SHOWDEFAULT      10
  246. #define SW_FORCEMINIMIZE    11
  247. #define SW_MAX              11
  248. /*
  249.  * Old ShowWindow() Commands
  250.  */
  251. #define HIDE_WINDOW         0
  252. #define SHOW_OPENWINDOW     1
  253. #define SHOW_ICONWINDOW     2
  254. #define SHOW_FULLSCREEN     3
  255. #define SHOW_OPENNOACTIVATE 4
  256. /*
  257.  * Identifiers for the WM_SHOWWINDOW message
  258.  */
  259. #define SW_PARENTCLOSING    1
  260. #define SW_OTHERZOOM        2
  261. #define SW_PARENTOPENING    3
  262. #define SW_OTHERUNZOOM      4
  263. #endif /* !NOSHOWWINDOW */
  264. #if(WINVER >= 0x0500)
  265. /*
  266.  * AnimateWindow() Commands
  267.  */
  268. #define AW_HOR_POSITIVE             0x00000001
  269. #define AW_HOR_NEGATIVE             0x00000002
  270. #define AW_VER_POSITIVE             0x00000004
  271. #define AW_VER_NEGATIVE             0x00000008
  272. #define AW_CENTER                   0x00000010
  273. #define AW_HIDE                     0x00010000
  274. #define AW_ACTIVATE                 0x00020000
  275. #define AW_SLIDE                    0x00040000
  276. #define AW_BLEND                    0x00080000
  277. #endif /* WINVER >= 0x0500 */
  278. /*
  279.  * WM_KEYUP/DOWN/CHAR HIWORD(lParam) flags
  280.  */
  281. #define KF_EXTENDED       0x0100
  282. #define KF_DLGMODE        0x0800
  283. #define KF_MENUMODE       0x1000
  284. #define KF_ALTDOWN        0x2000
  285. #define KF_REPEAT         0x4000
  286. #define KF_UP             0x8000
  287. #ifndef NOVIRTUALKEYCODES
  288. /*
  289.  * Virtual Keys, Standard Set
  290.  */
  291. #define VK_LBUTTON        0x01
  292. #define VK_RBUTTON        0x02
  293. #define VK_CANCEL         0x03
  294. #define VK_MBUTTON        0x04    /* NOT contiguous with L & RBUTTON */
  295. #if(_WIN32_WINNT >= 0x0500)
  296. #define VK_XBUTTON1       0x05    /* NOT contiguous with L & RBUTTON */
  297. #define VK_XBUTTON2       0x06    /* NOT contiguous with L & RBUTTON */
  298. #endif /* _WIN32_WINNT >= 0x0500 */
  299. /*
  300.  * 0x07 : unassigned
  301.  */
  302. #define VK_BACK           0x08
  303. #define VK_TAB            0x09
  304. /*
  305.  * 0x0A - 0x0B : reserved
  306.  */
  307. #define VK_CLEAR          0x0C
  308. #define VK_RETURN         0x0D
  309. #define VK_SHIFT          0x10
  310. #define VK_CONTROL        0x11
  311. #define VK_MENU           0x12
  312. #define VK_PAUSE          0x13
  313. #define VK_CAPITAL        0x14
  314. #define VK_KANA           0x15
  315. #define VK_HANGEUL        0x15  /* old name - should be here for compatibility */
  316. #define VK_HANGUL         0x15
  317. #define VK_JUNJA          0x17
  318. #define VK_FINAL          0x18
  319. #define VK_HANJA          0x19
  320. #define VK_KANJI          0x19
  321. #define VK_ESCAPE         0x1B
  322. #define VK_CONVERT        0x1C
  323. #define VK_NONCONVERT     0x1D
  324. #define VK_ACCEPT         0x1E
  325. #define VK_MODECHANGE     0x1F
  326. #define VK_SPACE          0x20
  327. #define VK_PRIOR          0x21
  328. #define VK_NEXT           0x22
  329. #define VK_END            0x23
  330. #define VK_HOME           0x24
  331. #define VK_LEFT           0x25
  332. #define VK_UP             0x26
  333. #define VK_RIGHT          0x27
  334. #define VK_DOWN           0x28
  335. #define VK_SELECT         0x29
  336. #define VK_PRINT          0x2A
  337. #define VK_EXECUTE        0x2B
  338. #define VK_SNAPSHOT       0x2C
  339. #define VK_INSERT         0x2D
  340. #define VK_DELETE         0x2E
  341. #define VK_HELP           0x2F
  342. /*
  343.  * VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39)
  344.  * 0x40 : unassigned
  345.  * VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A)
  346.  */
  347. #define VK_LWIN           0x5B
  348. #define VK_RWIN           0x5C
  349. #define VK_APPS           0x5D
  350. /*
  351.  * 0x5E : reserved
  352.  */
  353. #define VK_SLEEP          0x5F
  354. #define VK_NUMPAD0        0x60
  355. #define VK_NUMPAD1        0x61
  356. #define VK_NUMPAD2        0x62
  357. #define VK_NUMPAD3        0x63
  358. #define VK_NUMPAD4        0x64
  359. #define VK_NUMPAD5        0x65
  360. #define VK_NUMPAD6        0x66
  361. #define VK_NUMPAD7        0x67
  362. #define VK_NUMPAD8        0x68
  363. #define VK_NUMPAD9        0x69
  364. #define VK_MULTIPLY       0x6A
  365. #define VK_ADD            0x6B
  366. #define VK_SEPARATOR      0x6C
  367. #define VK_SUBTRACT       0x6D
  368. #define VK_DECIMAL        0x6E
  369. #define VK_DIVIDE         0x6F
  370. #define VK_F1             0x70
  371. #define VK_F2             0x71
  372. #define VK_F3             0x72
  373. #define VK_F4             0x73
  374. #define VK_F5             0x74
  375. #define VK_F6             0x75
  376. #define VK_F7             0x76
  377. #define VK_F8             0x77
  378. #define VK_F9             0x78
  379. #define VK_F10            0x79
  380. #define VK_F11            0x7A
  381. #define VK_F12            0x7B
  382. #define VK_F13            0x7C
  383. #define VK_F14            0x7D
  384. #define VK_F15            0x7E
  385. #define VK_F16            0x7F
  386. #define VK_F17            0x80
  387. #define VK_F18            0x81
  388. #define VK_F19            0x82
  389. #define VK_F20            0x83
  390. #define VK_F21            0x84
  391. #define VK_F22            0x85
  392. #define VK_F23            0x86
  393. #define VK_F24            0x87
  394. /*
  395.  * 0x88 - 0x8F : unassigned
  396.  */
  397. #define VK_NUMLOCK        0x90
  398. #define VK_SCROLL         0x91
  399. /*
  400.  * NEC PC-9800 kbd definitions
  401.  */
  402. #define VK_OEM_NEC_EQUAL  0x92   // '=' key on numpad
  403. /*
  404.  * Fujitsu/OASYS kbd definitions
  405.  */
  406. #define VK_OEM_FJ_JISHO   0x92   // 'Dictionary' key
  407. #define VK_OEM_FJ_MASSHOU 0x93   // 'Unregister word' key
  408. #define VK_OEM_FJ_TOUROKU 0x94   // 'Register word' key
  409. #define VK_OEM_FJ_LOYA    0x95   // 'Left OYAYUBI' key
  410. #define VK_OEM_FJ_ROYA    0x96   // 'Right OYAYUBI' key
  411. /*
  412.  * 0x97 - 0x9F : unassigned
  413.  */
  414. /*
  415.  * VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys.
  416.  * Used only as parameters to GetAsyncKeyState() and GetKeyState().
  417.  * No other API or message will distinguish left and right keys in this way.
  418.  */
  419. #define VK_LSHIFT         0xA0
  420. #define VK_RSHIFT         0xA1
  421. #define VK_LCONTROL       0xA2
  422. #define VK_RCONTROL       0xA3
  423. #define VK_LMENU          0xA4
  424. #define VK_RMENU          0xA5
  425. #if(_WIN32_WINNT >= 0x0500)
  426. #define VK_BROWSER_BACK        0xA6
  427. #define VK_BROWSER_FORWARD     0xA7
  428. #define VK_BROWSER_REFRESH     0xA8
  429. #define VK_BROWSER_STOP        0xA9
  430. #define VK_BROWSER_SEARCH      0xAA
  431. #define VK_BROWSER_FAVORITES   0xAB
  432. #define VK_BROWSER_HOME        0xAC
  433. #define VK_VOLUME_MUTE         0xAD
  434. #define VK_VOLUME_DOWN         0xAE
  435. #define VK_VOLUME_UP           0xAF
  436. #define VK_MEDIA_NEXT_TRACK    0xB0
  437. #define VK_MEDIA_PREV_TRACK    0xB1
  438. #define VK_MEDIA_STOP          0xB2
  439. #define VK_MEDIA_PLAY_PAUSE    0xB3
  440. #define VK_LAUNCH_MAIL         0xB4
  441. #define VK_LAUNCH_MEDIA_SELECT 0xB5
  442. #define VK_LAUNCH_APP1         0xB6
  443. #define VK_LAUNCH_APP2         0xB7
  444. #endif /* _WIN32_WINNT >= 0x0500 */
  445. /*
  446.  * 0xB8 - 0xB9 : reserved
  447.  */
  448. #define VK_OEM_1          0xBA   // ';:' for US
  449. #define VK_OEM_PLUS       0xBB   // '+' any country
  450. #define VK_OEM_COMMA      0xBC   // ',' any country
  451. #define VK_OEM_MINUS      0xBD   // '-' any country
  452. #define VK_OEM_PERIOD     0xBE   // '.' any country
  453. #define VK_OEM_2          0xBF   // '/?' for US
  454. #define VK_OEM_3          0xC0   // '`~' for US
  455. /*
  456.  * 0xC1 - 0xD7 : reserved
  457.  */
  458. /*
  459.  * 0xD8 - 0xDA : unassigned
  460.  */
  461. #define VK_OEM_4          0xDB  //  '[{' for US
  462. #define VK_OEM_5          0xDC  //  '|' for US
  463. #define VK_OEM_6          0xDD  //  ']}' for US
  464. #define VK_OEM_7          0xDE  //  ''"' for US
  465. #define VK_OEM_8          0xDF
  466. /*
  467.  * 0xE0 : reserved
  468.  */
  469. /*
  470.  * Various extended or enhanced keyboards
  471.  */
  472. #define VK_OEM_AX         0xE1  //  'AX' key on Japanese AX kbd
  473. #define VK_OEM_102        0xE2  //  "<>" or "|" on RT 102-key kbd.
  474. #define VK_ICO_HELP       0xE3  //  Help key on ICO
  475. #define VK_ICO_00         0xE4  //  00 key on ICO
  476. #if(WINVER >= 0x0400)
  477. #define VK_PROCESSKEY     0xE5
  478. #endif /* WINVER >= 0x0400 */
  479. #define VK_ICO_CLEAR      0xE6
  480. #if(_WIN32_WINNT >= 0x0500)
  481. #define VK_PACKET         0xE7
  482. #endif /* _WIN32_WINNT >= 0x0500 */
  483. /*
  484.  * 0xE8 : unassigned
  485.  */
  486. /*
  487.  * Nokia/Ericsson definitions
  488.  */
  489. #define VK_OEM_RESET      0xE9
  490. #define VK_OEM_JUMP       0xEA
  491. #define VK_OEM_PA1        0xEB
  492. #define VK_OEM_PA2        0xEC
  493. #define VK_OEM_PA3        0xED
  494. #define VK_OEM_WSCTRL     0xEE
  495. #define VK_OEM_CUSEL      0xEF
  496. #define VK_OEM_ATTN       0xF0
  497. #define VK_OEM_FINISH     0xF1
  498. #define VK_OEM_COPY       0xF2
  499. #define VK_OEM_AUTO       0xF3
  500. #define VK_OEM_ENLW       0xF4
  501. #define VK_OEM_BACKTAB    0xF5
  502. #define VK_ATTN           0xF6
  503. #define VK_CRSEL          0xF7
  504. #define VK_EXSEL          0xF8
  505. #define VK_EREOF          0xF9
  506. #define VK_PLAY           0xFA
  507. #define VK_ZOOM           0xFB
  508. #define VK_NONAME         0xFC
  509. #define VK_PA1            0xFD
  510. #define VK_OEM_CLEAR      0xFE
  511. /*
  512.  * 0xFF : reserved
  513.  */
  514. #endif /* !NOVIRTUALKEYCODES */
  515. #ifndef NOWH
  516. /*
  517.  * SetWindowsHook() codes
  518.  */
  519. #define WH_MIN              (-1)
  520. #define WH_MSGFILTER        (-1)
  521. #define WH_JOURNALRECORD    0
  522. #define WH_JOURNALPLAYBACK  1
  523. #define WH_KEYBOARD         2
  524. #define WH_GETMESSAGE       3
  525. #define WH_CALLWNDPROC      4
  526. #define WH_CBT              5
  527. #define WH_SYSMSGFILTER     6
  528. #define WH_MOUSE            7
  529. #if defined(_WIN32_WINDOWS)
  530. #define WH_HARDWARE         8
  531. #endif
  532. #define WH_DEBUG            9
  533. #define WH_SHELL           10
  534. #define WH_FOREGROUNDIDLE  11
  535. #if(WINVER >= 0x0400)
  536. #define WH_CALLWNDPROCRET  12
  537. #endif /* WINVER >= 0x0400 */
  538. #if (_WIN32_WINNT >= 0x0400)
  539. #define WH_KEYBOARD_LL     13
  540. #define WH_MOUSE_LL        14
  541. #endif // (_WIN32_WINNT >= 0x0400)
  542. #if(WINVER >= 0x0400)
  543. #if (_WIN32_WINNT >= 0x0400)
  544. #define WH_MAX             14
  545. #else
  546. #define WH_MAX             12
  547. #endif // (_WIN32_WINNT >= 0x0400)
  548. #else
  549. #define WH_MAX             11
  550. #endif
  551. #define WH_MINHOOK         WH_MIN
  552. #define WH_MAXHOOK         WH_MAX
  553. /*
  554.  * Hook Codes
  555.  */
  556. #define HC_ACTION           0
  557. #define HC_GETNEXT          1
  558. #define HC_SKIP             2
  559. #define HC_NOREMOVE         3
  560. #define HC_NOREM            HC_NOREMOVE
  561. #define HC_SYSMODALON       4
  562. #define HC_SYSMODALOFF      5
  563. /*
  564.  * CBT Hook Codes
  565.  */
  566. #define HCBT_MOVESIZE       0
  567. #define HCBT_MINMAX         1
  568. #define HCBT_QS             2
  569. #define HCBT_CREATEWND      3
  570. #define HCBT_DESTROYWND     4
  571. #define HCBT_ACTIVATE       5
  572. #define HCBT_CLICKSKIPPED   6
  573. #define HCBT_KEYSKIPPED     7
  574. #define HCBT_SYSCOMMAND     8
  575. #define HCBT_SETFOCUS       9
  576. /*
  577.  * HCBT_CREATEWND parameters pointed to by lParam
  578.  */
  579. typedef struct tagCBT_CREATEWNDA
  580. {
  581.     struct tagCREATESTRUCTA *lpcs;
  582.     HWND           hwndInsertAfter;
  583. } CBT_CREATEWNDA, *LPCBT_CREATEWNDA;
  584. /*
  585.  * HCBT_CREATEWND parameters pointed to by lParam
  586.  */
  587. typedef struct tagCBT_CREATEWNDW
  588. {
  589.     struct tagCREATESTRUCTW *lpcs;
  590.     HWND           hwndInsertAfter;
  591. } CBT_CREATEWNDW, *LPCBT_CREATEWNDW;
  592. #ifdef UNICODE
  593. typedef CBT_CREATEWNDW CBT_CREATEWND;
  594. typedef LPCBT_CREATEWNDW LPCBT_CREATEWND;
  595. #else
  596. typedef CBT_CREATEWNDA CBT_CREATEWND;
  597. typedef LPCBT_CREATEWNDA LPCBT_CREATEWND;
  598. #endif // UNICODE
  599. /*
  600.  * HCBT_ACTIVATE structure pointed to by lParam
  601.  */
  602. typedef struct tagCBTACTIVATESTRUCT
  603. {
  604.     BOOL    fMouse;
  605.     HWND    hWndActive;
  606. } CBTACTIVATESTRUCT, *LPCBTACTIVATESTRUCT;
  607. #if(_WIN32_WINNT >= 0x0501)
  608. /*
  609.  * WTSSESSION_NOTIFICATION struct pointed by lParam, for WM_WTSSESSION_CHANGE
  610.  */
  611. typedef struct tagWTSSESSION_NOTIFICATION
  612. {
  613.     DWORD cbSize;
  614.     DWORD dwSessionId;
  615. } WTSSESSION_NOTIFICATION, *PWTSSESSION_NOTIFICATION;
  616. /*
  617.  * codes passed in WPARAM for WM_WTSSESSION_CHANGE
  618.  */
  619. #define WTS_CONSOLE_CONNECT                0x1
  620. #define WTS_CONSOLE_DISCONNECT             0x2
  621. #define WTS_REMOTE_CONNECT                 0x3
  622. #define WTS_REMOTE_DISCONNECT              0x4
  623. #define WTS_SESSION_LOGON                  0x5
  624. #define WTS_SESSION_LOGOFF                 0x6
  625. #define WTS_SESSION_LOCK                   0x7
  626. #define WTS_SESSION_UNLOCK                 0x8
  627. #endif /* _WIN32_WINNT >= 0x0501 */
  628. /*
  629.  * WH_MSGFILTER Filter Proc Codes
  630.  */
  631. #define MSGF_DIALOGBOX      0
  632. #define MSGF_MESSAGEBOX     1
  633. #define MSGF_MENU           2
  634. #define MSGF_SCROLLBAR      5
  635. #define MSGF_NEXTWINDOW     6
  636. #define MSGF_MAX            8                       // unused
  637. #define MSGF_USER           4096
  638. /*
  639.  * Shell support
  640.  */
  641. #define HSHELL_WINDOWCREATED        1
  642. #define HSHELL_WINDOWDESTROYED      2
  643. #define HSHELL_ACTIVATESHELLWINDOW  3
  644. #if(WINVER >= 0x0400)
  645. #define HSHELL_WINDOWACTIVATED      4
  646. #define HSHELL_GETMINRECT           5
  647. #define HSHELL_REDRAW               6
  648. #define HSHELL_TASKMAN              7
  649. #define HSHELL_LANGUAGE             8
  650. #endif /* WINVER >= 0x0400 */
  651. #if(_WIN32_WINNT >= 0x0500)
  652. #define HSHELL_ACCESSIBILITYSTATE   11
  653. #define HSHELL_APPCOMMAND           12
  654. #endif /* _WIN32_WINNT >= 0x0500 */
  655. #if(_WIN32_WINNT >= 0x0501)
  656. #define HSHELL_WINDOWREPLACED       13
  657. #endif /* _WIN32_WINNT >= 0x0501 */
  658. #if(_WIN32_WINNT >= 0x0500)
  659. /* wparam for HSHELL_ACCESSIBILITYSTATE */
  660. #define    ACCESS_STICKYKEYS            0x0001
  661. #define    ACCESS_FILTERKEYS            0x0002
  662. #define    ACCESS_MOUSEKEYS             0x0003
  663. /* cmd for HSHELL_APPCOMMAND and WM_APPCOMMAND */
  664. #define APPCOMMAND_BROWSER_BACKWARD       1
  665. #define APPCOMMAND_BROWSER_FORWARD        2
  666. #define APPCOMMAND_BROWSER_REFRESH        3
  667. #define APPCOMMAND_BROWSER_STOP           4
  668. #define APPCOMMAND_BROWSER_SEARCH         5
  669. #define APPCOMMAND_BROWSER_FAVORITES      6
  670. #define APPCOMMAND_BROWSER_HOME           7
  671. #define APPCOMMAND_VOLUME_MUTE            8
  672. #define APPCOMMAND_VOLUME_DOWN            9
  673. #define APPCOMMAND_VOLUME_UP              10
  674. #define APPCOMMAND_MEDIA_NEXTTRACK        11
  675. #define APPCOMMAND_MEDIA_PREVIOUSTRACK    12
  676. #define APPCOMMAND_MEDIA_STOP             13
  677. #define APPCOMMAND_MEDIA_PLAY_PAUSE       14
  678. #define APPCOMMAND_LAUNCH_MAIL            15
  679. #define APPCOMMAND_LAUNCH_MEDIA_SELECT    16
  680. #define APPCOMMAND_LAUNCH_APP1            17
  681. #define APPCOMMAND_LAUNCH_APP2            18
  682. #define APPCOMMAND_BASS_DOWN              19
  683. #define APPCOMMAND_BASS_BOOST             20
  684. #define APPCOMMAND_BASS_UP                21
  685. #define APPCOMMAND_TREBLE_DOWN            22
  686. #define APPCOMMAND_TREBLE_UP              23
  687. #if(_WIN32_WINNT >= 0x0501)
  688. #define APPCOMMAND_MICROPHONE_VOLUME_MUTE 24
  689. #define APPCOMMAND_MICROPHONE_VOLUME_DOWN 25
  690. #define APPCOMMAND_MICROPHONE_VOLUME_UP   26
  691. #define APPCOMMAND_HELP                   27
  692. #define APPCOMMAND_FIND                   28
  693. #define APPCOMMAND_NEW                    29
  694. #define APPCOMMAND_OPEN                   30
  695. #define APPCOMMAND_CLOSE                  31
  696. #define APPCOMMAND_SAVE                   32
  697. #define APPCOMMAND_PRINT                  33
  698. #define APPCOMMAND_UNDO                   34
  699. #define APPCOMMAND_REDO                   35
  700. #define APPCOMMAND_COPY                   36
  701. #define APPCOMMAND_CUT                    37
  702. #define APPCOMMAND_PASTE                  38
  703. #define APPCOMMAND_REPLY_TO_MAIL          39
  704. #define APPCOMMAND_FORWARD_MAIL           40
  705. #define APPCOMMAND_SEND_MAIL              41
  706. #define APPCOMMAND_SPELL_CHECK            42
  707. #define APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE    43
  708. #define APPCOMMAND_MIC_ON_OFF_TOGGLE      44
  709. #define APPCOMMAND_CORRECTION_LIST        45
  710. #endif /* _WIN32_WINNT >= 0x0501 */
  711. #define FAPPCOMMAND_MOUSE 0x8000
  712. #define FAPPCOMMAND_KEY   0
  713. #define FAPPCOMMAND_OEM   0x1000
  714. #define FAPPCOMMAND_MASK  0xF000
  715. #define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK))
  716. #define GET_DEVICE_LPARAM(lParam)     ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK))
  717. #define GET_MOUSEORKEY_LPARAM         GET_DEVICE_LPARAM
  718. #define GET_FLAGS_LPARAM(lParam)      (LOWORD(lParam))
  719. #define GET_KEYSTATE_LPARAM(lParam)   GET_FLAGS_LPARAM(lParam)
  720. #endif /* _WIN32_WINNT >= 0x0500 */
  721. /*
  722.  * Message Structure used in Journaling
  723.  */
  724. typedef struct tagEVENTMSG {
  725.     UINT    message;
  726.     UINT    paramL;
  727.     UINT    paramH;
  728.     DWORD    time;
  729.     HWND     hwnd;
  730. } EVENTMSG, *PEVENTMSGMSG, NEAR *NPEVENTMSGMSG, FAR *LPEVENTMSGMSG;
  731. typedef struct tagEVENTMSG *PEVENTMSG, NEAR *NPEVENTMSG, FAR *LPEVENTMSG;
  732. /*
  733.  * Message structure used by WH_CALLWNDPROC
  734.  */
  735. typedef struct tagCWPSTRUCT {
  736.     LPARAM  lParam;
  737.     WPARAM  wParam;
  738.     UINT    message;
  739.     HWND    hwnd;
  740. } CWPSTRUCT, *PCWPSTRUCT, NEAR *NPCWPSTRUCT, FAR *LPCWPSTRUCT;
  741. #if(WINVER >= 0x0400)
  742. /*
  743.  * Message structure used by WH_CALLWNDPROCRET
  744.  */
  745. typedef struct tagCWPRETSTRUCT {
  746.     LRESULT lResult;
  747.     LPARAM  lParam;
  748.     WPARAM  wParam;
  749.     UINT    message;
  750.     HWND    hwnd;
  751. } CWPRETSTRUCT, *PCWPRETSTRUCT, NEAR *NPCWPRETSTRUCT, FAR *LPCWPRETSTRUCT;
  752. #endif /* WINVER >= 0x0400 */
  753. #if (_WIN32_WINNT >= 0x0400)
  754. /*
  755.  * Low level hook flags
  756.  */
  757. #define LLKHF_EXTENDED       (KF_EXTENDED >> 8)
  758. #define LLKHF_INJECTED       0x00000010
  759. #define LLKHF_ALTDOWN        (KF_ALTDOWN >> 8)
  760. #define LLKHF_UP             (KF_UP >> 8)
  761. #define LLMHF_INJECTED       0x00000001
  762. /*
  763.  * Structure used by WH_KEYBOARD_LL
  764.  */
  765. typedef struct tagKBDLLHOOKSTRUCT {
  766.     DWORD   vkCode;
  767.     DWORD   scanCode;
  768.     DWORD   flags;
  769.     DWORD   time;
  770.     ULONG_PTR dwExtraInfo;
  771. } KBDLLHOOKSTRUCT, FAR *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;
  772. /*
  773.  * Structure used by WH_MOUSE_LL
  774.  */
  775. typedef struct tagMSLLHOOKSTRUCT {
  776.     POINT   pt;
  777.     DWORD   mouseData;
  778.     DWORD   flags;
  779.     DWORD   time;
  780.     ULONG_PTR dwExtraInfo;
  781. } MSLLHOOKSTRUCT, FAR *LPMSLLHOOKSTRUCT, *PMSLLHOOKSTRUCT;
  782. #endif // (_WIN32_WINNT >= 0x0400)
  783. /*
  784.  * Structure used by WH_DEBUG
  785.  */
  786. typedef struct tagDEBUGHOOKINFO
  787. {
  788.     DWORD   idThread;
  789.     DWORD   idThreadInstaller;
  790.     LPARAM  lParam;
  791.     WPARAM  wParam;
  792.     int     code;
  793. } DEBUGHOOKINFO, *PDEBUGHOOKINFO, NEAR *NPDEBUGHOOKINFO, FAR* LPDEBUGHOOKINFO;
  794. /*
  795.  * Structure used by WH_MOUSE
  796.  */
  797. typedef struct tagMOUSEHOOKSTRUCT {
  798.     POINT   pt;
  799.     HWND    hwnd;
  800.     UINT    wHitTestCode;
  801.     ULONG_PTR dwExtraInfo;
  802. } MOUSEHOOKSTRUCT, FAR *LPMOUSEHOOKSTRUCT, *PMOUSEHOOKSTRUCT;
  803. #if(_WIN32_WINNT >= 0x0500)
  804. #ifdef __cplusplus
  805. typedef struct tagMOUSEHOOKSTRUCTEX : public tagMOUSEHOOKSTRUCT
  806. {
  807.     DWORD   mouseData;
  808. } MOUSEHOOKSTRUCTEX, *LPMOUSEHOOKSTRUCTEX, *PMOUSEHOOKSTRUCTEX;
  809. #else // ndef __cplusplus
  810. typedef struct tagMOUSEHOOKSTRUCTEX
  811. {
  812.     MOUSEHOOKSTRUCT;
  813.     DWORD   mouseData;
  814. } MOUSEHOOKSTRUCTEX, *LPMOUSEHOOKSTRUCTEX, *PMOUSEHOOKSTRUCTEX;
  815. #endif
  816. #endif /* _WIN32_WINNT >= 0x0500 */
  817. #if(WINVER >= 0x0400)
  818. /*
  819.  * Structure used by WH_HARDWARE
  820.  */
  821. typedef struct tagHARDWAREHOOKSTRUCT {
  822.     HWND    hwnd;
  823.     UINT    message;
  824.     WPARAM  wParam;
  825.     LPARAM  lParam;
  826. } HARDWAREHOOKSTRUCT, FAR *LPHARDWAREHOOKSTRUCT, *PHARDWAREHOOKSTRUCT;
  827. #endif /* WINVER >= 0x0400 */
  828. #endif /* !NOWH */
  829. /*
  830.  * Keyboard Layout API
  831.  */
  832. #define HKL_PREV            0
  833. #define HKL_NEXT            1
  834. #define KLF_ACTIVATE        0x00000001
  835. #define KLF_SUBSTITUTE_OK   0x00000002
  836. #define KLF_REORDER         0x00000008
  837. #if(WINVER >= 0x0400)
  838. #define KLF_REPLACELANG     0x00000010
  839. #define KLF_NOTELLSHELL     0x00000080
  840. #endif /* WINVER >= 0x0400 */
  841. #define KLF_SETFORPROCESS   0x00000100
  842. #if(_WIN32_WINNT >= 0x0500)
  843. #define KLF_SHIFTLOCK       0x00010000
  844. #define KLF_RESET           0x40000000
  845. #endif /* _WIN32_WINNT >= 0x0500 */
  846. #if(WINVER >= 0x0500)
  847. /*
  848.  * Bits in wParam of WM_INPUTLANGCHANGEREQUEST message
  849.  */
  850. #define INPUTLANGCHANGE_SYSCHARSET 0x0001
  851. #define INPUTLANGCHANGE_FORWARD    0x0002
  852. #define INPUTLANGCHANGE_BACKWARD   0x0004
  853. #endif /* WINVER >= 0x0500 */
  854. /*
  855.  * Size of KeyboardLayoutName (number of characters), including nul terminator
  856.  */
  857. #define KL_NAMELENGTH       9
  858. WINUSERAPI
  859. HKL
  860. WINAPI
  861. LoadKeyboardLayoutA(
  862.     IN LPCSTR pwszKLID,
  863.     IN UINT Flags);
  864. WINUSERAPI
  865. HKL
  866. WINAPI
  867. LoadKeyboardLayoutW(
  868.     IN LPCWSTR pwszKLID,
  869.     IN UINT Flags);
  870. #ifdef UNICODE
  871. #define LoadKeyboardLayout  LoadKeyboardLayoutW
  872. #else
  873. #define LoadKeyboardLayout  LoadKeyboardLayoutA
  874. #endif // !UNICODE
  875. #if(WINVER >= 0x0400)
  876. WINUSERAPI
  877. HKL
  878. WINAPI
  879. ActivateKeyboardLayout(
  880.     IN HKL hkl,
  881.     IN UINT Flags);
  882. #else
  883. WINUSERAPI
  884. BOOL
  885. WINAPI
  886. ActivateKeyboardLayout(
  887.     IN HKL hkl,
  888.     IN UINT Flags);
  889. #endif /* WINVER >= 0x0400 */
  890. #if(WINVER >= 0x0400)
  891. WINUSERAPI
  892. int
  893. WINAPI
  894. ToUnicodeEx(
  895.     IN UINT wVirtKey,
  896.     IN UINT wScanCode,
  897.     IN CONST BYTE *lpKeyState,
  898.     OUT LPWSTR pwszBuff,
  899.     IN int cchBuff,
  900.     IN UINT wFlags,
  901.     IN HKL dwhkl);
  902. #endif /* WINVER >= 0x0400 */
  903. WINUSERAPI
  904. BOOL
  905. WINAPI
  906. UnloadKeyboardLayout(
  907.     IN HKL hkl);
  908. WINUSERAPI
  909. BOOL
  910. WINAPI
  911. GetKeyboardLayoutNameA(
  912.     OUT LPSTR pwszKLID);
  913. WINUSERAPI
  914. BOOL
  915. WINAPI
  916. GetKeyboardLayoutNameW(
  917.     OUT LPWSTR pwszKLID);
  918. #ifdef UNICODE
  919. #define GetKeyboardLayoutName  GetKeyboardLayoutNameW
  920. #else
  921. #define GetKeyboardLayoutName  GetKeyboardLayoutNameA
  922. #endif // !UNICODE
  923. #if(WINVER >= 0x0400)
  924. WINUSERAPI
  925. int
  926. WINAPI
  927. GetKeyboardLayoutList(
  928.         IN int nBuff,
  929.         OUT HKL FAR *lpList);
  930. WINUSERAPI
  931. HKL
  932. WINAPI
  933. GetKeyboardLayout(
  934.     IN DWORD idThread
  935. );
  936. #endif /* WINVER >= 0x0400 */
  937. #if(WINVER >= 0x0500)
  938. typedef struct tagMOUSEMOVEPOINT {
  939.     int   x;
  940.     int   y;
  941.     DWORD time;
  942.     ULONG_PTR dwExtraInfo;
  943. } MOUSEMOVEPOINT, *PMOUSEMOVEPOINT, FAR* LPMOUSEMOVEPOINT;
  944. /*
  945.  * Values for resolution parameter of GetMouseMovePointsEx
  946.  */
  947. #define GMMP_USE_DISPLAY_POINTS          1
  948. #define GMMP_USE_HIGH_RESOLUTION_POINTS  2
  949. WINUSERAPI
  950. int
  951. WINAPI
  952. GetMouseMovePointsEx(
  953.     IN UINT             cbSize,
  954.     IN LPMOUSEMOVEPOINT lppt,
  955.     IN LPMOUSEMOVEPOINT lpptBuf,
  956.     IN int              nBufPoints,
  957.     IN DWORD            resolution
  958. );
  959. #endif /* WINVER >= 0x0500 */
  960. #ifndef NODESKTOP
  961. /*
  962.  * Desktop-specific access flags
  963.  */
  964. #define DESKTOP_READOBJECTS         0x0001L
  965. #define DESKTOP_CREATEWINDOW        0x0002L
  966. #define DESKTOP_CREATEMENU          0x0004L
  967. #define DESKTOP_HOOKCONTROL         0x0008L
  968. #define DESKTOP_JOURNALRECORD       0x0010L
  969. #define DESKTOP_JOURNALPLAYBACK     0x0020L
  970. #define DESKTOP_ENUMERATE           0x0040L
  971. #define DESKTOP_WRITEOBJECTS        0x0080L
  972. #define DESKTOP_SWITCHDESKTOP       0x0100L
  973. /*
  974.  * Desktop-specific control flags
  975.  */
  976. #define DF_ALLOWOTHERACCOUNTHOOK    0x0001L
  977. #ifdef _WINGDI_
  978. #ifndef NOGDI
  979. WINUSERAPI
  980. HDESK
  981. WINAPI
  982. CreateDesktopA(
  983.     IN LPCSTR lpszDesktop,
  984.     IN LPCSTR lpszDevice,
  985.     IN LPDEVMODEA pDevmode,
  986.     IN DWORD dwFlags,
  987.     IN ACCESS_MASK dwDesiredAccess,
  988.     IN LPSECURITY_ATTRIBUTES lpsa);
  989. WINUSERAPI
  990. HDESK
  991. WINAPI
  992. CreateDesktopW(
  993.     IN LPCWSTR lpszDesktop,
  994.     IN LPCWSTR lpszDevice,
  995.     IN LPDEVMODEW pDevmode,
  996.     IN DWORD dwFlags,
  997.     IN ACCESS_MASK dwDesiredAccess,
  998.     IN LPSECURITY_ATTRIBUTES lpsa);
  999. #ifdef UNICODE
  1000. #define CreateDesktop  CreateDesktopW
  1001. #else
  1002. #define CreateDesktop  CreateDesktopA
  1003. #endif // !UNICODE
  1004. #endif /* NOGDI */
  1005. #endif /* _WINGDI_ */
  1006. WINUSERAPI
  1007. HDESK
  1008. WINAPI
  1009. OpenDesktopA(
  1010.     IN LPCSTR lpszDesktop,
  1011.     IN DWORD dwFlags,
  1012.     IN BOOL fInherit,
  1013.     IN ACCESS_MASK dwDesiredAccess);
  1014. WINUSERAPI
  1015. HDESK
  1016. WINAPI
  1017. OpenDesktopW(
  1018.     IN LPCWSTR lpszDesktop,
  1019.     IN DWORD dwFlags,
  1020.     IN BOOL fInherit,
  1021.     IN ACCESS_MASK dwDesiredAccess);
  1022. #ifdef UNICODE
  1023. #define OpenDesktop  OpenDesktopW
  1024. #else
  1025. #define OpenDesktop  OpenDesktopA
  1026. #endif // !UNICODE
  1027. WINUSERAPI
  1028. HDESK
  1029. WINAPI
  1030. OpenInputDesktop(
  1031.     IN DWORD dwFlags,
  1032.     IN BOOL fInherit,
  1033.     IN ACCESS_MASK dwDesiredAccess);
  1034. WINUSERAPI
  1035. BOOL
  1036. WINAPI
  1037. EnumDesktopsA(
  1038.     IN HWINSTA hwinsta,
  1039.     IN DESKTOPENUMPROCA lpEnumFunc,
  1040.     IN LPARAM lParam);
  1041. WINUSERAPI
  1042. BOOL
  1043. WINAPI
  1044. EnumDesktopsW(
  1045.     IN HWINSTA hwinsta,
  1046.     IN DESKTOPENUMPROCW lpEnumFunc,
  1047.     IN LPARAM lParam);
  1048. #ifdef UNICODE
  1049. #define EnumDesktops  EnumDesktopsW
  1050. #else
  1051. #define EnumDesktops  EnumDesktopsA
  1052. #endif // !UNICODE
  1053. WINUSERAPI
  1054. BOOL
  1055. WINAPI
  1056. EnumDesktopWindows(
  1057.     IN HDESK hDesktop,
  1058.     IN WNDENUMPROC lpfn,
  1059.     IN LPARAM lParam);
  1060. WINUSERAPI
  1061. BOOL
  1062. WINAPI
  1063. SwitchDesktop(
  1064.     IN HDESK hDesktop);
  1065. WINUSERAPI
  1066. BOOL
  1067. WINAPI
  1068. SetThreadDesktop(
  1069.     IN HDESK hDesktop);
  1070. WINUSERAPI
  1071. BOOL
  1072. WINAPI
  1073. CloseDesktop(
  1074.     IN HDESK hDesktop);
  1075. WINUSERAPI
  1076. HDESK
  1077. WINAPI
  1078. GetThreadDesktop(
  1079.     IN DWORD dwThreadId);
  1080. #endif  /* !NODESKTOP */
  1081. #ifndef NOWINDOWSTATION
  1082. /*
  1083.  * Windowstation-specific access flags
  1084.  */
  1085. #define WINSTA_ENUMDESKTOPS         0x0001L
  1086. #define WINSTA_READATTRIBUTES       0x0002L
  1087. #define WINSTA_ACCESSCLIPBOARD      0x0004L
  1088. #define WINSTA_CREATEDESKTOP        0x0008L
  1089. #define WINSTA_WRITEATTRIBUTES      0x0010L
  1090. #define WINSTA_ACCESSGLOBALATOMS    0x0020L
  1091. #define WINSTA_EXITWINDOWS          0x0040L
  1092. #define WINSTA_ENUMERATE            0x0100L
  1093. #define WINSTA_READSCREEN           0x0200L
  1094. /*
  1095.  * Windowstation-specific attribute flags
  1096.  */
  1097. #define WSF_VISIBLE                 0x0001L
  1098. WINUSERAPI
  1099. HWINSTA
  1100. WINAPI
  1101. CreateWindowStationA(
  1102.     IN LPCSTR              lpwinsta,
  1103.     IN DWORD                 dwReserved,
  1104.     IN ACCESS_MASK           dwDesiredAccess,
  1105.     IN LPSECURITY_ATTRIBUTES lpsa);
  1106. WINUSERAPI
  1107. HWINSTA
  1108. WINAPI
  1109. CreateWindowStationW(
  1110.     IN LPCWSTR              lpwinsta,
  1111.     IN DWORD                 dwReserved,
  1112.     IN ACCESS_MASK           dwDesiredAccess,
  1113.     IN LPSECURITY_ATTRIBUTES lpsa);
  1114. #ifdef UNICODE
  1115. #define CreateWindowStation  CreateWindowStationW
  1116. #else
  1117. #define CreateWindowStation  CreateWindowStationA
  1118. #endif // !UNICODE
  1119. WINUSERAPI
  1120. HWINSTA
  1121. WINAPI
  1122. OpenWindowStationA(
  1123.     IN LPCSTR lpszWinSta,
  1124.     IN BOOL fInherit,
  1125.     IN ACCESS_MASK dwDesiredAccess);
  1126. WINUSERAPI
  1127. HWINSTA
  1128. WINAPI
  1129. OpenWindowStationW(
  1130.     IN LPCWSTR lpszWinSta,
  1131.     IN BOOL fInherit,
  1132.     IN ACCESS_MASK dwDesiredAccess);
  1133. #ifdef UNICODE
  1134. #define OpenWindowStation  OpenWindowStationW
  1135. #else
  1136. #define OpenWindowStation  OpenWindowStationA
  1137. #endif // !UNICODE
  1138. WINUSERAPI
  1139. BOOL
  1140. WINAPI
  1141. EnumWindowStationsA(
  1142.     IN WINSTAENUMPROCA lpEnumFunc,
  1143.     IN LPARAM lParam);
  1144. WINUSERAPI
  1145. BOOL
  1146. WINAPI
  1147. EnumWindowStationsW(
  1148.     IN WINSTAENUMPROCW lpEnumFunc,
  1149.     IN LPARAM lParam);
  1150. #ifdef UNICODE
  1151. #define EnumWindowStations  EnumWindowStationsW
  1152. #else
  1153. #define EnumWindowStations  EnumWindowStationsA
  1154. #endif // !UNICODE
  1155. WINUSERAPI
  1156. BOOL
  1157. WINAPI
  1158. CloseWindowStation(
  1159.     IN HWINSTA hWinSta);
  1160. WINUSERAPI
  1161. BOOL
  1162. WINAPI
  1163. SetProcessWindowStation(
  1164.     IN HWINSTA hWinSta);
  1165. WINUSERAPI
  1166. HWINSTA
  1167. WINAPI
  1168. GetProcessWindowStation(
  1169.     VOID);
  1170. #endif  /* !NOWINDOWSTATION */
  1171. #ifndef NOSECURITY
  1172. WINUSERAPI
  1173. BOOL
  1174. WINAPI
  1175. SetUserObjectSecurity(
  1176.     IN HANDLE hObj,
  1177.     IN PSECURITY_INFORMATION pSIRequested,
  1178.     IN PSECURITY_DESCRIPTOR pSID);
  1179. WINUSERAPI
  1180. BOOL
  1181. WINAPI
  1182. GetUserObjectSecurity(
  1183.     IN HANDLE hObj,
  1184.     IN PSECURITY_INFORMATION pSIRequested,
  1185.     IN OUT PSECURITY_DESCRIPTOR pSID,
  1186.     IN DWORD nLength,
  1187.     OUT LPDWORD lpnLengthNeeded);
  1188. #define UOI_FLAGS       1
  1189. #define UOI_NAME        2
  1190. #define UOI_TYPE        3
  1191. #define UOI_USER_SID    4
  1192. typedef struct tagUSEROBJECTFLAGS {
  1193.     BOOL fInherit;
  1194.     BOOL fReserved;
  1195.     DWORD dwFlags;
  1196. } USEROBJECTFLAGS, *PUSEROBJECTFLAGS;
  1197. WINUSERAPI
  1198. BOOL
  1199. WINAPI
  1200. GetUserObjectInformationA(
  1201.     IN HANDLE hObj,
  1202.     IN int nIndex,
  1203.     OUT PVOID pvInfo,
  1204.     IN DWORD nLength,
  1205.     OUT LPDWORD lpnLengthNeeded);
  1206. WINUSERAPI
  1207. BOOL
  1208. WINAPI
  1209. GetUserObjectInformationW(
  1210.     IN HANDLE hObj,
  1211.     IN int nIndex,
  1212.     OUT PVOID pvInfo,
  1213.     IN DWORD nLength,
  1214.     OUT LPDWORD lpnLengthNeeded);
  1215. #ifdef UNICODE
  1216. #define GetUserObjectInformation  GetUserObjectInformationW
  1217. #else
  1218. #define GetUserObjectInformation  GetUserObjectInformationA
  1219. #endif // !UNICODE
  1220. WINUSERAPI
  1221. BOOL
  1222. WINAPI
  1223. SetUserObjectInformationA(
  1224.     IN HANDLE hObj,
  1225.     IN int nIndex,
  1226.     IN PVOID pvInfo,
  1227.     IN DWORD nLength);
  1228. WINUSERAPI
  1229. BOOL
  1230. WINAPI
  1231. SetUserObjectInformationW(
  1232.     IN HANDLE hObj,
  1233.     IN int nIndex,
  1234.     IN PVOID pvInfo,
  1235.     IN DWORD nLength);
  1236. #ifdef UNICODE
  1237. #define SetUserObjectInformation  SetUserObjectInformationW
  1238. #else
  1239. #define SetUserObjectInformation  SetUserObjectInformationA
  1240. #endif // !UNICODE
  1241. #endif  /* !NOSECURITY */
  1242. #if(WINVER >= 0x0400)
  1243. typedef struct tagWNDCLASSEXA {
  1244.     UINT        cbSize;
  1245.     /* Win 3.x */
  1246.     UINT        style;
  1247.     WNDPROC     lpfnWndProc;
  1248.     int         cbClsExtra;
  1249.     int         cbWndExtra;
  1250.     HINSTANCE   hInstance;
  1251.     HICON       hIcon;
  1252.     HCURSOR     hCursor;
  1253.     HBRUSH      hbrBackground;
  1254.     LPCSTR      lpszMenuName;
  1255.     LPCSTR      lpszClassName;
  1256.     /* Win 4.0 */
  1257.     HICON       hIconSm;
  1258. } WNDCLASSEXA, *PWNDCLASSEXA, NEAR *NPWNDCLASSEXA, FAR *LPWNDCLASSEXA;
  1259. typedef struct tagWNDCLASSEXW {
  1260.     UINT        cbSize;
  1261.     /* Win 3.x */
  1262.     UINT        style;
  1263.     WNDPROC     lpfnWndProc;
  1264.     int         cbClsExtra;
  1265.     int         cbWndExtra;
  1266.     HINSTANCE   hInstance;
  1267.     HICON       hIcon;
  1268.     HCURSOR     hCursor;
  1269.     HBRUSH      hbrBackground;
  1270.     LPCWSTR     lpszMenuName;
  1271.     LPCWSTR     lpszClassName;
  1272.     /* Win 4.0 */
  1273.     HICON       hIconSm;
  1274. } WNDCLASSEXW, *PWNDCLASSEXW, NEAR *NPWNDCLASSEXW, FAR *LPWNDCLASSEXW;
  1275. #ifdef UNICODE
  1276. typedef WNDCLASSEXW WNDCLASSEX;
  1277. typedef PWNDCLASSEXW PWNDCLASSEX;
  1278. typedef NPWNDCLASSEXW NPWNDCLASSEX;
  1279. typedef LPWNDCLASSEXW LPWNDCLASSEX;
  1280. #else
  1281. typedef WNDCLASSEXA WNDCLASSEX;
  1282. typedef PWNDCLASSEXA PWNDCLASSEX;
  1283. typedef NPWNDCLASSEXA NPWNDCLASSEX;
  1284. typedef LPWNDCLASSEXA LPWNDCLASSEX;
  1285. #endif // UNICODE
  1286. #endif /* WINVER >= 0x0400 */
  1287. typedef struct tagWNDCLASSA {
  1288.     UINT        style;
  1289.     WNDPROC     lpfnWndProc;
  1290.     int         cbClsExtra;
  1291.     int         cbWndExtra;
  1292.     HINSTANCE   hInstance;
  1293.     HICON       hIcon;
  1294.     HCURSOR     hCursor;
  1295.     HBRUSH      hbrBackground;
  1296.     LPCSTR      lpszMenuName;
  1297.     LPCSTR      lpszClassName;
  1298. } WNDCLASSA, *PWNDCLASSA, NEAR *NPWNDCLASSA, FAR *LPWNDCLASSA;
  1299. typedef struct tagWNDCLASSW {
  1300.     UINT        style;
  1301.     WNDPROC     lpfnWndProc;
  1302.     int         cbClsExtra;
  1303.     int         cbWndExtra;
  1304.     HINSTANCE   hInstance;
  1305.     HICON       hIcon;
  1306.     HCURSOR     hCursor;
  1307.     HBRUSH      hbrBackground;
  1308.     LPCWSTR     lpszMenuName;
  1309.     LPCWSTR     lpszClassName;
  1310. } WNDCLASSW, *PWNDCLASSW, NEAR *NPWNDCLASSW, FAR *LPWNDCLASSW;
  1311. #ifdef UNICODE
  1312. typedef WNDCLASSW WNDCLASS;
  1313. typedef PWNDCLASSW PWNDCLASS;
  1314. typedef NPWNDCLASSW NPWNDCLASS;
  1315. typedef LPWNDCLASSW LPWNDCLASS;
  1316. #else
  1317. typedef WNDCLASSA WNDCLASS;
  1318. typedef PWNDCLASSA PWNDCLASS;
  1319. typedef NPWNDCLASSA NPWNDCLASS;
  1320. typedef LPWNDCLASSA LPWNDCLASS;
  1321. #endif // UNICODE
  1322. #ifndef NOMSG
  1323. /*
  1324.  * Message structure
  1325.  */
  1326. typedef struct tagMSG {
  1327.     HWND        hwnd;
  1328.     UINT        message;
  1329.     WPARAM      wParam;
  1330.     LPARAM      lParam;
  1331.     DWORD       time;
  1332.     POINT       pt;
  1333. #ifdef _MAC
  1334.     DWORD       lPrivate;
  1335. #endif
  1336. } MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;
  1337. #define POINTSTOPOINT(pt, pts)                          
  1338.         { (pt).x = (LONG)(SHORT)LOWORD(*(LONG*)&pts);   
  1339.           (pt).y = (LONG)(SHORT)HIWORD(*(LONG*)&pts); }
  1340. #define POINTTOPOINTS(pt)      (MAKELONG((short)((pt).x), (short)((pt).y)))
  1341. #define MAKEWPARAM(l, h)      ((WPARAM)(DWORD)MAKELONG(l, h))
  1342. #define MAKELPARAM(l, h)      ((LPARAM)(DWORD)MAKELONG(l, h))
  1343. #define MAKELRESULT(l, h)     ((LRESULT)(DWORD)MAKELONG(l, h))
  1344. #endif /* !NOMSG */
  1345. #ifndef NOWINOFFSETS
  1346. /*
  1347.  * Window field offsets for GetWindowLong()
  1348.  */
  1349. #define GWL_WNDPROC         (-4)
  1350. #define GWL_HINSTANCE       (-6)
  1351. #define GWL_HWNDPARENT      (-8)
  1352. #define GWL_STYLE           (-16)
  1353. #define GWL_EXSTYLE         (-20)
  1354. #define GWL_USERDATA        (-21)
  1355. #define GWL_ID              (-12)
  1356. #ifdef _WIN64
  1357. #undef GWL_WNDPROC
  1358. #undef GWL_HINSTANCE
  1359. #undef GWL_HWNDPARENT
  1360. #undef GWL_USERDATA
  1361. #endif /* _WIN64 */
  1362. #define GWLP_WNDPROC        (-4)
  1363. #define GWLP_HINSTANCE      (-6)
  1364. #define GWLP_HWNDPARENT     (-8)
  1365. #define GWLP_USERDATA       (-21)
  1366. #define GWLP_ID             (-12)
  1367. /*
  1368.  * Class field offsets for GetClassLong()
  1369.  */
  1370. #define GCL_MENUNAME        (-8)
  1371. #define GCL_HBRBACKGROUND   (-10)
  1372. #define GCL_HCURSOR         (-12)
  1373. #define GCL_HICON           (-14)
  1374. #define GCL_HMODULE         (-16)
  1375. #define GCL_CBWNDEXTRA      (-18)
  1376. #define GCL_CBCLSEXTRA      (-20)
  1377. #define GCL_WNDPROC         (-24)
  1378. #define GCL_STYLE           (-26)
  1379. #define GCW_ATOM            (-32)
  1380. #if(WINVER >= 0x0400)
  1381. #define GCL_HICONSM         (-34)
  1382. #endif /* WINVER >= 0x0400 */
  1383. #ifdef _WIN64
  1384. #undef GCL_MENUNAME
  1385. #undef GCL_HBRBACKGROUND
  1386. #undef GCL_HCURSOR
  1387. #undef GCL_HICON
  1388. #undef GCL_HMODULE
  1389. #undef GCL_WNDPROC
  1390. #undef GCL_HICONSM
  1391. #endif /* _WIN64 */
  1392. #define GCLP_MENUNAME       (-8)
  1393. #define GCLP_HBRBACKGROUND  (-10)
  1394. #define GCLP_HCURSOR        (-12)
  1395. #define GCLP_HICON          (-14)
  1396. #define GCLP_HMODULE        (-16)
  1397. #define GCLP_WNDPROC        (-24)
  1398. #define GCLP_HICONSM        (-34)
  1399. #endif /* !NOWINOFFSETS */
  1400. #ifndef NOWINMESSAGES
  1401. /*
  1402.  * Window Messages
  1403.  */
  1404. #define WM_NULL                         0x0000
  1405. #define WM_CREATE                       0x0001
  1406. #define WM_DESTROY                      0x0002
  1407. #define WM_MOVE                         0x0003
  1408. #define WM_SIZE                         0x0005
  1409. #define WM_ACTIVATE                     0x0006
  1410. /*
  1411.  * WM_ACTIVATE state values
  1412.  */
  1413. #define     WA_INACTIVE     0
  1414. #define     WA_ACTIVE       1
  1415. #define     WA_CLICKACTIVE  2
  1416. #define WM_SETFOCUS                     0x0007
  1417. #define WM_KILLFOCUS                    0x0008
  1418. #define WM_ENABLE                       0x000A
  1419. #define WM_SETREDRAW                    0x000B
  1420. #define WM_SETTEXT                      0x000C
  1421. #define WM_GETTEXT                      0x000D
  1422. #define WM_GETTEXTLENGTH                0x000E
  1423. #define WM_PAINT                        0x000F
  1424. #define WM_CLOSE                        0x0010
  1425. #ifndef _WIN32_WCE
  1426. #define WM_QUERYENDSESSION              0x0011
  1427. #define WM_QUERYOPEN                    0x0013
  1428. #define WM_ENDSESSION                   0x0016
  1429. #endif
  1430. #define WM_QUIT                         0x0012
  1431. #define WM_ERASEBKGND                   0x0014
  1432. #define WM_SYSCOLORCHANGE               0x0015
  1433. #define WM_SHOWWINDOW                   0x0018
  1434. #define WM_WININICHANGE                 0x001A
  1435. #if(WINVER >= 0x0400)
  1436. #define WM_SETTINGCHANGE                WM_WININICHANGE
  1437. #endif /* WINVER >= 0x0400 */
  1438. #define WM_DEVMODECHANGE                0x001B
  1439. #define WM_ACTIVATEAPP                  0x001C
  1440. #define WM_FONTCHANGE                   0x001D
  1441. #define WM_TIMECHANGE                   0x001E
  1442. #define WM_CANCELMODE                   0x001F
  1443. #define WM_SETCURSOR                    0x0020
  1444. #define WM_MOUSEACTIVATE                0x0021
  1445. #define WM_CHILDACTIVATE                0x0022
  1446. #define WM_QUEUESYNC                    0x0023
  1447. #define WM_GETMINMAXINFO                0x0024
  1448. /*
  1449.  * Struct pointed to by WM_GETMINMAXINFO lParam
  1450.  */
  1451. typedef struct tagMINMAXINFO {
  1452.     POINT ptReserved;
  1453.     POINT ptMaxSize;
  1454.     POINT ptMaxPosition;
  1455.     POINT ptMinTrackSize;
  1456.     POINT ptMaxTrackSize;
  1457. } MINMAXINFO, *PMINMAXINFO, *LPMINMAXINFO;
  1458. #define WM_PAINTICON                    0x0026
  1459. #define WM_ICONERASEBKGND               0x0027
  1460. #define WM_NEXTDLGCTL                   0x0028
  1461. #define WM_SPOOLERSTATUS                0x002A
  1462. #define WM_DRAWITEM                     0x002B
  1463. #define WM_MEASUREITEM                  0x002C
  1464. #define WM_DELETEITEM                   0x002D
  1465. #define WM_VKEYTOITEM                   0x002E
  1466. #define WM_CHARTOITEM                   0x002F
  1467. #define WM_SETFONT                      0x0030
  1468. #define WM_GETFONT                      0x0031
  1469. #define WM_SETHOTKEY                    0x0032
  1470. #define WM_GETHOTKEY                    0x0033
  1471. #define WM_QUERYDRAGICON                0x0037
  1472. #define WM_COMPAREITEM                  0x0039
  1473. #if(WINVER >= 0x0500)
  1474. #ifndef _WIN32_WCE
  1475. #define WM_GETOBJECT                    0x003D
  1476. #endif
  1477. #endif /* WINVER >= 0x0500 */
  1478. #define WM_COMPACTING                   0x0041
  1479. #define WM_COMMNOTIFY                   0x0044  /* no longer suported */
  1480. #define WM_WINDOWPOSCHANGING            0x0046
  1481. #define WM_WINDOWPOSCHANGED             0x0047
  1482. #define WM_POWER                        0x0048
  1483. /*
  1484.  * wParam for WM_POWER window message and DRV_POWER driver notification
  1485.  */
  1486. #define PWR_OK              1
  1487. #define PWR_FAIL            (-1)
  1488. #define PWR_SUSPENDREQUEST  1
  1489. #define PWR_SUSPENDRESUME   2
  1490. #define PWR_CRITICALRESUME  3
  1491. #define WM_COPYDATA                     0x004A
  1492. #define WM_CANCELJOURNAL                0x004B
  1493. /*
  1494.  * lParam of WM_COPYDATA message points to...
  1495.  */
  1496. typedef struct tagCOPYDATASTRUCT {
  1497.     ULONG_PTR dwData;
  1498.     DWORD cbData;
  1499.     PVOID lpData;
  1500. } COPYDATASTRUCT, *PCOPYDATASTRUCT;
  1501. #if(WINVER >= 0x0400)
  1502. typedef struct tagMDINEXTMENU
  1503. {
  1504.     HMENU   hmenuIn;
  1505.     HMENU   hmenuNext;
  1506.     HWND    hwndNext;
  1507. } MDINEXTMENU, * PMDINEXTMENU, FAR * LPMDINEXTMENU;
  1508. #endif /* WINVER >= 0x0400 */
  1509. #if(WINVER >= 0x0400)
  1510. #define WM_NOTIFY                       0x004E
  1511. #define WM_INPUTLANGCHANGEREQUEST       0x0050
  1512. #define WM_INPUTLANGCHANGE              0x0051
  1513. #define WM_TCARD                        0x0052
  1514. #define WM_HELP                         0x0053
  1515. #define WM_USERCHANGED                  0x0054
  1516. #define WM_NOTIFYFORMAT                 0x0055
  1517. #define NFR_ANSI                             1
  1518. #define NFR_UNICODE                          2
  1519. #define NF_QUERY                             3
  1520. #define NF_REQUERY                           4
  1521. #define WM_CONTEXTMENU                  0x007B
  1522. #define WM_STYLECHANGING                0x007C
  1523. #define WM_STYLECHANGED                 0x007D
  1524. #define WM_DISPLAYCHANGE                0x007E
  1525. #define WM_GETICON                      0x007F
  1526. #define WM_SETICON                      0x0080
  1527. #endif /* WINVER >= 0x0400 */
  1528. #define WM_NCCREATE                     0x0081
  1529. #define WM_NCDESTROY                    0x0082
  1530. #define WM_NCCALCSIZE                   0x0083
  1531. #define WM_NCHITTEST                    0x0084
  1532. #define WM_NCPAINT                      0x0085
  1533. #define WM_NCACTIVATE                   0x0086
  1534. #define WM_GETDLGCODE                   0x0087
  1535. #ifndef _WIN32_WCE
  1536. #define WM_SYNCPAINT                    0x0088
  1537. #endif
  1538. #define WM_NCMOUSEMOVE                  0x00A0
  1539. #define WM_NCLBUTTONDOWN                0x00A1
  1540. #define WM_NCLBUTTONUP                  0x00A2
  1541. #define WM_NCLBUTTONDBLCLK              0x00A3
  1542. #define WM_NCRBUTTONDOWN                0x00A4
  1543. #define WM_NCRBUTTONUP                  0x00A5
  1544. #define WM_NCRBUTTONDBLCLK              0x00A6
  1545. #define WM_NCMBUTTONDOWN                0x00A7
  1546. #define WM_NCMBUTTONUP                  0x00A8
  1547. #define WM_NCMBUTTONDBLCLK              0x00A9
  1548. #if(_WIN32_WINNT >= 0x0500)
  1549. #define WM_NCXBUTTONDOWN                0x00AB
  1550. #define WM_NCXBUTTONUP                  0x00AC
  1551. #define WM_NCXBUTTONDBLCLK              0x00AD
  1552. #endif /* _WIN32_WINNT >= 0x0500 */
  1553. #if(_WIN32_WINNT >= 0x0501)
  1554. #define WM_INPUT                        0x00FF
  1555. #endif /* _WIN32_WINNT >= 0x0501 */
  1556. #define WM_KEYFIRST                     0x0100
  1557. #define WM_KEYDOWN                      0x0100
  1558. #define WM_KEYUP                        0x0101
  1559. #define WM_CHAR                         0x0102
  1560. #define WM_DEADCHAR                     0x0103
  1561. #define WM_SYSKEYDOWN                   0x0104
  1562. #define WM_SYSKEYUP                     0x0105
  1563. #define WM_SYSCHAR                      0x0106
  1564. #define WM_SYSDEADCHAR                  0x0107
  1565. #if(_WIN32_WINNT >= 0x0501)
  1566. #define WM_UNICHAR                      0x0109
  1567. #define WM_KEYLAST                      0x0109
  1568. #define UNICODE_NOCHAR                  0xFFFF
  1569. #else
  1570. #define WM_KEYLAST                      0x0108
  1571. #endif /* _WIN32_WINNT >= 0x0501 */
  1572. #if(WINVER >= 0x0400)
  1573. #define WM_IME_STARTCOMPOSITION         0x010D
  1574. #define WM_IME_ENDCOMPOSITION           0x010E
  1575. #define WM_IME_COMPOSITION              0x010F
  1576. #define WM_IME_KEYLAST                  0x010F
  1577. #endif /* WINVER >= 0x0400 */
  1578. #define WM_INITDIALOG                   0x0110
  1579. #define WM_COMMAND                      0x0111
  1580. #define WM_SYSCOMMAND                   0x0112
  1581. #define WM_TIMER                        0x0113
  1582. #define WM_HSCROLL                      0x0114
  1583. #define WM_VSCROLL                      0x0115
  1584. #define WM_INITMENU                     0x0116
  1585. #define WM_INITMENUPOPUP                0x0117
  1586. #define WM_MENUSELECT                   0x011F
  1587. #define WM_MENUCHAR                     0x0120
  1588. #define WM_ENTERIDLE                    0x0121
  1589. #if(WINVER >= 0x0500)
  1590. #ifndef _WIN32_WCE
  1591. #define WM_MENURBUTTONUP                0x0122
  1592. #define WM_MENUDRAG                     0x0123
  1593. #define WM_MENUGETOBJECT                0x0124
  1594. #define WM_UNINITMENUPOPUP              0x0125
  1595. #define WM_MENUCOMMAND                  0x0126
  1596. #ifndef _WIN32_WCE
  1597. #if(_WIN32_WINNT >= 0x0500)
  1598. #define WM_CHANGEUISTATE                0x0127
  1599. #define WM_UPDATEUISTATE                0x0128
  1600. #define WM_QUERYUISTATE                 0x0129
  1601. /*
  1602.  * LOWORD(wParam) values in WM_*UISTATE*
  1603.  */
  1604. #define UIS_SET                         1
  1605. #define UIS_CLEAR                       2
  1606. #define UIS_INITIALIZE                  3
  1607. /*
  1608.  * HIWORD(wParam) values in WM_*UISTATE*
  1609.  */
  1610. #define UISF_HIDEFOCUS                  0x1
  1611. #define UISF_HIDEACCEL                  0x2
  1612. #if(_WIN32_WINNT >= 0x0501)
  1613. #define UISF_ACTIVE                     0x4
  1614. #endif /* _WIN32_WINNT >= 0x0501 */
  1615. #endif /* _WIN32_WINNT >= 0x0500 */
  1616. #endif
  1617. #endif
  1618. #endif /* WINVER >= 0x0500 */
  1619. #define WM_CTLCOLORMSGBOX               0x0132
  1620. #define WM_CTLCOLOREDIT                 0x0133
  1621. #define WM_CTLCOLORLISTBOX              0x0134
  1622. #define WM_CTLCOLORBTN                  0x0135
  1623. #define WM_CTLCOLORDLG                  0x0136
  1624. #define WM_CTLCOLORSCROLLBAR            0x0137
  1625. #define WM_CTLCOLORSTATIC               0x0138
  1626. #define WM_MOUSEFIRST                   0x0200
  1627. #define WM_MOUSEMOVE                    0x0200
  1628. #define WM_LBUTTONDOWN                  0x0201
  1629. #define WM_LBUTTONUP                    0x0202
  1630. #define WM_LBUTTONDBLCLK                0x0203
  1631. #define WM_RBUTTONDOWN                  0x0204
  1632. #define WM_RBUTTONUP                    0x0205
  1633. #define WM_RBUTTONDBLCLK                0x0206
  1634. #define WM_MBUTTONDOWN                  0x0207
  1635. #define WM_MBUTTONUP                    0x0208
  1636. #define WM_MBUTTONDBLCLK                0x0209
  1637. #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
  1638. #define WM_MOUSEWHEEL                   0x020A
  1639. #endif
  1640. #if (_WIN32_WINNT >= 0x0500)
  1641. #define WM_XBUTTONDOWN                  0x020B
  1642. #define WM_XBUTTONUP                    0x020C
  1643. #define WM_XBUTTONDBLCLK                0x020D
  1644. #endif
  1645. #if (_WIN32_WINNT >= 0x0500)
  1646. #define WM_MOUSELAST                    0x020D
  1647. #elif (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
  1648. #define WM_MOUSELAST                    0x020A
  1649. #else
  1650. #define WM_MOUSELAST                    0x0209
  1651. #endif /* (_WIN32_WINNT >= 0x0500) */
  1652. #if(_WIN32_WINNT >= 0x0400)
  1653. /* Value for rolling one detent */
  1654. #define WHEEL_DELTA                     120
  1655. #define GET_WHEEL_DELTA_WPARAM(wParam)  ((short)HIWORD(wParam))
  1656. /* Setting to scroll one page for SPI_GET/SETWHEELSCROLLLINES */
  1657. #define WHEEL_PAGESCROLL                (UINT_MAX)
  1658. #endif /* _WIN32_WINNT >= 0x0400 */
  1659. #if(_WIN32_WINNT >= 0x0500)
  1660. #define GET_KEYSTATE_WPARAM(wParam)     (LOWORD(wParam))
  1661. #define GET_NCHITTEST_WPARAM(wParam)    ((short)LOWORD(wParam))
  1662. #define GET_XBUTTON_WPARAM(wParam)      (HIWORD(wParam))
  1663. /* XButton values are WORD flags */
  1664. #define XBUTTON1      0x0001
  1665. #define XBUTTON2      0x0002
  1666. /* Were there to be an XBUTTON3, its value would be 0x0004 */
  1667. #endif /* _WIN32_WINNT >= 0x0500 */
  1668. #define WM_PARENTNOTIFY                 0x0210
  1669. #define WM_ENTERMENULOOP                0x0211
  1670. #define WM_EXITMENULOOP                 0x0212
  1671. #if(WINVER >= 0x0400)
  1672. #define WM_NEXTMENU                     0x0213
  1673. #define WM_SIZING                       0x0214
  1674. #define WM_CAPTURECHANGED               0x0215
  1675. #define WM_MOVING                       0x0216
  1676. #endif /* WINVER >= 0x0400 */
  1677. #if(WINVER >= 0x0400)
  1678. #define WM_POWERBROADCAST               0x0218
  1679. #ifndef _WIN32_WCE
  1680. #define PBT_APMQUERYSUSPEND             0x0000
  1681. #define PBT_APMQUERYSTANDBY             0x0001
  1682. #define PBT_APMQUERYSUSPENDFAILED       0x0002
  1683. #define PBT_APMQUERYSTANDBYFAILED       0x0003
  1684. #define PBT_APMSUSPEND                  0x0004
  1685. #define PBT_APMSTANDBY                  0x0005
  1686. #define PBT_APMRESUMECRITICAL           0x0006
  1687. #define PBT_APMRESUMESUSPEND            0x0007
  1688. #define PBT_APMRESUMESTANDBY            0x0008
  1689. #define PBTF_APMRESUMEFROMFAILURE       0x00000001
  1690. #define PBT_APMBATTERYLOW               0x0009
  1691. #define PBT_APMPOWERSTATUSCHANGE        0x000A
  1692. #define PBT_APMOEMEVENT                 0x000B
  1693. #define PBT_APMRESUMEAUTOMATIC          0x0012
  1694. #endif
  1695. #endif /* WINVER >= 0x0400 */
  1696. #if(WINVER >= 0x0400)
  1697. #define WM_DEVICECHANGE                 0x0219
  1698. #endif /* WINVER >= 0x0400 */
  1699. #define WM_MDICREATE                    0x0220
  1700. #define WM_MDIDESTROY                   0x0221
  1701. #define WM_MDIACTIVATE                  0x0222
  1702. #define WM_MDIRESTORE                   0x0223
  1703. #define WM_MDINEXT                      0x0224
  1704. #define WM_MDIMAXIMIZE                  0x0225
  1705. #define WM_MDITILE                      0x0226
  1706. #define WM_MDICASCADE                   0x0227
  1707. #define WM_MDIICONARRANGE               0x0228
  1708. #define WM_MDIGETACTIVE                 0x0229
  1709. #define WM_MDISETMENU                   0x0230
  1710. #define WM_ENTERSIZEMOVE                0x0231
  1711. #define WM_EXITSIZEMOVE                 0x0232
  1712. #define WM_DROPFILES                    0x0233
  1713. #define WM_MDIREFRESHMENU               0x0234
  1714. #if(WINVER >= 0x0400)
  1715. #define WM_IME_SETCONTEXT               0x0281
  1716. #define WM_IME_NOTIFY                   0x0282
  1717. #define WM_IME_CONTROL                  0x0283
  1718. #define WM_IME_COMPOSITIONFULL          0x0284
  1719. #define WM_IME_SELECT                   0x0285
  1720. #define WM_IME_CHAR                     0x0286
  1721. #endif /* WINVER >= 0x0400 */
  1722. #if(WINVER >= 0x0500)
  1723. #define WM_IME_REQUEST                  0x0288
  1724. #endif /* WINVER >= 0x0500 */
  1725. #if(WINVER >= 0x0400)
  1726. #define WM_IME_KEYDOWN                  0x0290
  1727. #define WM_IME_KEYUP                    0x0291
  1728. #endif /* WINVER >= 0x0400 */
  1729. #if((_WIN32_WINNT >= 0x0400) || (WINVER >= 0x0500))
  1730. #define WM_MOUSEHOVER                   0x02A1
  1731. #define WM_MOUSELEAVE                   0x02A3
  1732. #endif
  1733. #if(WINVER >= 0x0500)
  1734. #define WM_NCMOUSEHOVER                 0x02A0
  1735. #define WM_NCMOUSELEAVE                 0x02A2
  1736. #endif /* WINVER >= 0x0500 */
  1737. #if(_WIN32_WINNT >= 0x0501)
  1738. #define WM_WTSSESSION_CHANGE            0x02B1
  1739. #define WM_TABLET_FIRST                 0x02c0
  1740. #define WM_TABLET_LAST                  0x02df
  1741. #endif /* _WIN32_WINNT >= 0x0501 */
  1742. #define WM_CUT                          0x0300
  1743. #define WM_COPY                         0x0301
  1744. #define WM_PASTE                        0x0302
  1745. #define WM_CLEAR                        0x0303
  1746. #define WM_UNDO                         0x0304
  1747. #define WM_RENDERFORMAT                 0x0305
  1748. #define WM_RENDERALLFORMATS             0x0306
  1749. #define WM_DESTROYCLIPBOARD             0x0307
  1750. #define WM_DRAWCLIPBOARD                0x0308
  1751. #define WM_PAINTCLIPBOARD               0x0309
  1752. #define WM_VSCROLLCLIPBOARD             0x030A
  1753. #define WM_SIZECLIPBOARD                0x030B
  1754. #define WM_ASKCBFORMATNAME              0x030C
  1755. #define WM_CHANGECBCHAIN                0x030D
  1756. #define WM_HSCROLLCLIPBOARD             0x030E
  1757. #define WM_QUERYNEWPALETTE              0x030F
  1758. #define WM_PALETTEISCHANGING            0x0310
  1759. #define WM_PALETTECHANGED               0x0311
  1760. #define WM_HOTKEY                       0x0312
  1761. #if(WINVER >= 0x0400)
  1762. #define WM_PRINT                        0x0317
  1763. #define WM_PRINTCLIENT                  0x0318
  1764. #endif /* WINVER >= 0x0400 */
  1765. #if(_WIN32_WINNT >= 0x0500)
  1766. #define WM_APPCOMMAND                   0x0319
  1767. #endif /* _WIN32_WINNT >= 0x0500 */
  1768. #if(_WIN32_WINNT >= 0x0501)
  1769. #define WM_THEMECHANGED                 0x031A
  1770. #endif /* _WIN32_WINNT >= 0x0501 */
  1771. #if(WINVER >= 0x0400)
  1772. #define WM_HANDHELDFIRST                0x0358
  1773. #define WM_HANDHELDLAST                 0x035F
  1774. #define WM_AFXFIRST                     0x0360
  1775. #define WM_AFXLAST                      0x037F
  1776. #endif /* WINVER >= 0x0400 */
  1777. #define WM_PENWINFIRST                  0x0380
  1778. #define WM_PENWINLAST                   0x038F
  1779. #if(WINVER >= 0x0400)
  1780. #define WM_APP                          0x8000
  1781. #endif /* WINVER >= 0x0400 */
  1782. /*
  1783.  * NOTE: All Message Numbers below 0x0400 are RESERVED.
  1784.  *
  1785.  * Private Window Messages Start Here:
  1786.  */
  1787. #define WM_USER                         0x0400
  1788. #if(WINVER >= 0x0400)
  1789. /*  wParam for WM_SIZING message  */
  1790. #define WMSZ_LEFT           1
  1791. #define WMSZ_RIGHT          2
  1792. #define WMSZ_TOP            3
  1793. #define WMSZ_TOPLEFT        4
  1794. #define WMSZ_TOPRIGHT       5
  1795. #define WMSZ_BOTTOM         6
  1796. #define WMSZ_BOTTOMLEFT     7
  1797. #define WMSZ_BOTTOMRIGHT    8
  1798. #endif /* WINVER >= 0x0400 */
  1799. #ifndef NONCMESSAGES
  1800. /*
  1801.  * WM_NCHITTEST and MOUSEHOOKSTRUCT Mouse Position Codes
  1802.  */
  1803. #define HTERROR             (-2)
  1804. #define HTTRANSPARENT       (-1)
  1805. #define HTNOWHERE           0
  1806. #define HTCLIENT            1
  1807. #define HTCAPTION           2
  1808. #define HTSYSMENU           3
  1809. #define HTGROWBOX           4
  1810. #define HTSIZE              HTGROWBOX
  1811. #define HTMENU              5
  1812. #define HTHSCROLL           6
  1813. #define HTVSCROLL           7
  1814. #define HTMINBUTTON         8
  1815. #define HTMAXBUTTON         9
  1816. #define HTLEFT              10
  1817. #define HTRIGHT             11
  1818. #define HTTOP               12
  1819. #define HTTOPLEFT           13
  1820. #define HTTOPRIGHT          14
  1821. #define HTBOTTOM            15
  1822. #define HTBOTTOMLEFT        16
  1823. #define HTBOTTOMRIGHT       17
  1824. #define HTBORDER            18
  1825. #define HTREDUCE            HTMINBUTTON
  1826. #define HTZOOM              HTMAXBUTTON
  1827. #define HTSIZEFIRST         HTLEFT
  1828. #define HTSIZELAST          HTBOTTOMRIGHT
  1829. #if(WINVER >= 0x0400)
  1830. #define HTOBJECT            19
  1831. #define HTCLOSE             20
  1832. #define HTHELP              21
  1833. #endif /* WINVER >= 0x0400 */
  1834. /*
  1835.  * SendMessageTimeout values
  1836.  */
  1837. #define SMTO_NORMAL         0x0000
  1838. #define SMTO_BLOCK          0x0001
  1839. #define SMTO_ABORTIFHUNG    0x0002
  1840. #if(WINVER >= 0x0500)
  1841. #define SMTO_NOTIMEOUTIFNOTHUNG 0x0008
  1842. #endif /* WINVER >= 0x0500 */
  1843. #endif /* !NONCMESSAGES */
  1844. /*
  1845.  * WM_MOUSEACTIVATE Return Codes
  1846.  */
  1847. #define MA_ACTIVATE         1
  1848. #define MA_ACTIVATEANDEAT   2
  1849. #define MA_NOACTIVATE       3
  1850. #define MA_NOACTIVATEANDEAT 4
  1851. /*
  1852.  * WM_SETICON / WM_GETICON Type Codes
  1853.  */
  1854. #define ICON_SMALL          0
  1855. #define ICON_BIG            1
  1856. #if(_WIN32_WINNT >= 0x0501)
  1857. #define ICON_SMALL2         2
  1858. #endif /* _WIN32_WINNT >= 0x0501 */
  1859. WINUSERAPI
  1860. UINT
  1861. WINAPI
  1862. RegisterWindowMessageA(
  1863.     IN LPCSTR lpString);
  1864. WINUSERAPI
  1865. UINT
  1866. WINAPI
  1867. RegisterWindowMessageW(
  1868.     IN LPCWSTR lpString);
  1869. #ifdef UNICODE
  1870. #define RegisterWindowMessage  RegisterWindowMessageW
  1871. #else
  1872. #define RegisterWindowMessage  RegisterWindowMessageA
  1873. #endif // !UNICODE
  1874. /*
  1875.  * WM_SIZE message wParam values
  1876.  */
  1877. #define SIZE_RESTORED       0
  1878. #define SIZE_MINIMIZED      1
  1879. #define SIZE_MAXIMIZED      2
  1880. #define SIZE_MAXSHOW        3
  1881. #define SIZE_MAXHIDE        4
  1882. /*
  1883.  * Obsolete constant names
  1884.  */
  1885. #define SIZENORMAL          SIZE_RESTORED
  1886. #define SIZEICONIC          SIZE_MINIMIZED
  1887. #define SIZEFULLSCREEN      SIZE_MAXIMIZED
  1888. #define SIZEZOOMSHOW        SIZE_MAXSHOW
  1889. #define SIZEZOOMHIDE        SIZE_MAXHIDE
  1890. /*
  1891.  * WM_WINDOWPOSCHANGING/CHANGED struct pointed to by lParam
  1892.  */
  1893. typedef struct tagWINDOWPOS {
  1894.     HWND    hwnd;
  1895.     HWND    hwndInsertAfter;
  1896.     int     x;
  1897.     int     y;
  1898.     int     cx;
  1899.     int     cy;
  1900.     UINT    flags;
  1901. } WINDOWPOS, *LPWINDOWPOS, *PWINDOWPOS;
  1902. /*
  1903.  * WM_NCCALCSIZE parameter structure
  1904.  */
  1905. typedef struct tagNCCALCSIZE_PARAMS {
  1906.     RECT       rgrc[3];
  1907.     PWINDOWPOS lppos;
  1908. } NCCALCSIZE_PARAMS, *LPNCCALCSIZE_PARAMS;
  1909. /*
  1910.  * WM_NCCALCSIZE "window valid rect" return values
  1911.  */
  1912. #define WVR_ALIGNTOP        0x0010
  1913. #define WVR_ALIGNLEFT       0x0020
  1914. #define WVR_ALIGNBOTTOM     0x0040
  1915. #define WVR_ALIGNRIGHT      0x0080
  1916. #define WVR_HREDRAW         0x0100
  1917. #define WVR_VREDRAW         0x0200
  1918. #define WVR_REDRAW         (WVR_HREDRAW | 
  1919.                             WVR_VREDRAW)
  1920. #define WVR_VALIDRECTS      0x0400
  1921. #ifndef NOKEYSTATES
  1922. /*
  1923.  * Key State Masks for Mouse Messages
  1924.  */
  1925. #define MK_LBUTTON          0x0001
  1926. #define MK_RBUTTON          0x0002
  1927. #define MK_SHIFT            0x0004
  1928. #define MK_CONTROL          0x0008
  1929. #define MK_MBUTTON          0x0010
  1930. #if(_WIN32_WINNT >= 0x0500)
  1931. #define MK_XBUTTON1         0x0020
  1932. #define MK_XBUTTON2         0x0040
  1933. #endif /* _WIN32_WINNT >= 0x0500 */
  1934. #endif /* !NOKEYSTATES */
  1935. #if(_WIN32_WINNT >= 0x0400)
  1936. #ifndef NOTRACKMOUSEEVENT
  1937. #define TME_HOVER       0x00000001
  1938. #define TME_LEAVE       0x00000002
  1939. #if(WINVER >= 0x0500)
  1940. #define TME_NONCLIENT   0x00000010
  1941. #endif /* WINVER >= 0x0500 */
  1942. #define TME_QUERY       0x40000000
  1943. #define TME_CANCEL      0x80000000
  1944. #define HOVER_DEFAULT   0xFFFFFFFF
  1945. #endif /* _WIN32_WINNT >= 0x0400 */
  1946. #if(_WIN32_WINNT >= 0x0400)
  1947. typedef struct tagTRACKMOUSEEVENT {
  1948.     DWORD cbSize;
  1949.     DWORD dwFlags;
  1950.     HWND  hwndTrack;
  1951.     DWORD dwHoverTime;
  1952. } TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT;
  1953. WINUSERAPI
  1954. BOOL
  1955. WINAPI
  1956. TrackMouseEvent(
  1957.     IN OUT LPTRACKMOUSEEVENT lpEventTrack);
  1958. #endif /* _WIN32_WINNT >= 0x0400 */
  1959. #if(_WIN32_WINNT >= 0x0400)
  1960. #endif /* !NOTRACKMOUSEEVENT */
  1961. #endif /* _WIN32_WINNT >= 0x0400 */
  1962. #endif /* !NOWINMESSAGES */
  1963. #ifndef NOWINSTYLES
  1964. /*
  1965.  * Window Styles
  1966.  */
  1967. #define WS_OVERLAPPED       0x00000000L
  1968. #define WS_POPUP            0x80000000L
  1969. #define WS_CHILD            0x40000000L
  1970. #define WS_MINIMIZE         0x20000000L
  1971. #define WS_VISIBLE          0x10000000L
  1972. #define WS_DISABLED         0x08000000L
  1973. #define WS_CLIPSIBLINGS     0x04000000L
  1974. #define WS_CLIPCHILDREN     0x02000000L
  1975. #define WS_MAXIMIZE         0x01000000L
  1976. #define WS_CAPTION          0x00C00000L     /* WS_BORDER | WS_DLGFRAME  */
  1977. #define WS_BORDER           0x00800000L
  1978. #define WS_DLGFRAME         0x00400000L
  1979. #define WS_VSCROLL          0x00200000L
  1980. #define WS_HSCROLL          0x00100000L
  1981. #define WS_SYSMENU          0x00080000L
  1982. #define WS_THICKFRAME       0x00040000L
  1983. #define WS_GROUP            0x00020000L
  1984. #define WS_TABSTOP          0x00010000L
  1985. #define WS_MINIMIZEBOX      0x00020000L
  1986. #define WS_MAXIMIZEBOX      0x00010000L
  1987. #define WS_TILED            WS_OVERLAPPED
  1988. #define WS_ICONIC           WS_MINIMIZE
  1989. #define WS_SIZEBOX          WS_THICKFRAME
  1990. #define WS_TILEDWINDOW      WS_OVERLAPPEDWINDOW
  1991. /*
  1992.  * Common Window Styles
  1993.  */
  1994. #define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED     | 
  1995.                              WS_CAPTION        | 
  1996.                              WS_SYSMENU        | 
  1997.                              WS_THICKFRAME     | 
  1998.                              WS_MINIMIZEBOX    | 
  1999.                              WS_MAXIMIZEBOX)
  2000. #define WS_POPUPWINDOW      (WS_POPUP          | 
  2001.                              WS_BORDER         | 
  2002.                              WS_SYSMENU)
  2003. #define WS_CHILDWINDOW      (WS_CHILD)
  2004. /*
  2005.  * Extended Window Styles
  2006.  */
  2007. #define WS_EX_DLGMODALFRAME     0x00000001L
  2008. #define WS_EX_NOPARENTNOTIFY    0x00000004L
  2009. #define WS_EX_TOPMOST           0x00000008L
  2010. #define WS_EX_ACCEPTFILES       0x00000010L
  2011. #define WS_EX_TRANSPARENT       0x00000020L
  2012. #if(WINVER >= 0x0400)
  2013. #define WS_EX_MDICHILD          0x00000040L
  2014. #define WS_EX_TOOLWINDOW        0x00000080L
  2015. #define WS_EX_WINDOWEDGE        0x00000100L
  2016. #define WS_EX_CLIENTEDGE        0x00000200L
  2017. #define WS_EX_CONTEXTHELP       0x00000400L
  2018. #endif /* WINVER >= 0x0400 */
  2019. #if(WINVER >= 0x0400)
  2020. #define WS_EX_RIGHT             0x00001000L
  2021. #define WS_EX_LEFT              0x00000000L
  2022. #define WS_EX_RTLREADING        0x00002000L
  2023. #define WS_EX_LTRREADING        0x00000000L
  2024. #define WS_EX_LEFTSCROLLBAR     0x00004000L
  2025. #define WS_EX_RIGHTSCROLLBAR    0x00000000L
  2026. #define WS_EX_CONTROLPARENT     0x00010000L
  2027. #define WS_EX_STATICEDGE        0x00020000L
  2028. #define WS_EX_APPWINDOW         0x00040000L
  2029. #define WS_EX_OVERLAPPEDWINDOW  (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE)
  2030. #define WS_EX_PALETTEWINDOW     (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST)
  2031. #endif /* WINVER >= 0x0400 */
  2032. #if(_WIN32_WINNT >= 0x0500)
  2033. #define WS_EX_LAYERED           0x00080000
  2034. #endif /* _WIN32_WINNT >= 0x0500 */
  2035. #if(WINVER >= 0x0500)
  2036. #define WS_EX_NOINHERITLAYOUT   0x00100000L // Disable inheritence of mirroring by children
  2037. #define WS_EX_LAYOUTRTL         0x00400000L // Right to left mirroring
  2038. #endif /* WINVER >= 0x0500 */
  2039. #if(_WIN32_WINNT >= 0x0501)
  2040. #define WS_EX_COMPOSITED        0x02000000L
  2041. #endif /* _WIN32_WINNT >= 0x0501 */
  2042. #if(_WIN32_WINNT >= 0x0500)
  2043. #define WS_EX_NOACTIVATE        0x08000000L
  2044. #endif /* _WIN32_WINNT >= 0x0500 */
  2045. /*
  2046.  * Class styles
  2047.  */
  2048. #define CS_VREDRAW          0x0001
  2049. #define CS_HREDRAW          0x0002
  2050. #define CS_DBLCLKS          0x0008
  2051. #define CS_OWNDC            0x0020
  2052. #define CS_CLASSDC          0x0040
  2053. #define CS_PARENTDC         0x0080
  2054. #define CS_NOCLOSE          0x0200
  2055. #define CS_SAVEBITS         0x0800
  2056. #define CS_BYTEALIGNCLIENT  0x1000
  2057. #define CS_BYTEALIGNWINDOW  0x2000
  2058. #define CS_GLOBALCLASS      0x4000
  2059. #define CS_IME              0x00010000
  2060. #if(_WIN32_WINNT >= 0x0501)
  2061. #define CS_DROPSHADOW       0x00020000
  2062. #endif /* _WIN32_WINNT >= 0x0501 */
  2063. #endif /* !NOWINSTYLES */
  2064. #if(WINVER >= 0x0400)
  2065. /* WM_PRINT flags */
  2066. #define PRF_CHECKVISIBLE    0x00000001L
  2067. #define PRF_NONCLIENT       0x00000002L
  2068. #define PRF_CLIENT          0x00000004L
  2069. #define PRF_ERASEBKGND      0x00000008L
  2070. #define PRF_CHILDREN        0x00000010L
  2071. #define PRF_OWNED           0x00000020L
  2072. /* 3D border styles */
  2073. #define BDR_RAISEDOUTER 0x0001
  2074. #define BDR_SUNKENOUTER 0x0002
  2075. #define BDR_RAISEDINNER 0x0004
  2076. #define BDR_SUNKENINNER 0x0008
  2077. #define BDR_OUTER       (BDR_RAISEDOUTER | BDR_SUNKENOUTER)
  2078. #define BDR_INNER       (BDR_RAISEDINNER | BDR_SUNKENINNER)
  2079. #define BDR_RAISED      (BDR_RAISEDOUTER | BDR_RAISEDINNER)
  2080. #define BDR_SUNKEN      (BDR_SUNKENOUTER | BDR_SUNKENINNER)
  2081. #define EDGE_RAISED     (BDR_RAISEDOUTER | BDR_RAISEDINNER)
  2082. #define EDGE_SUNKEN     (BDR_SUNKENOUTER | BDR_SUNKENINNER)
  2083. #define EDGE_ETCHED     (BDR_SUNKENOUTER | BDR_RAISEDINNER)
  2084. #define EDGE_BUMP       (BDR_RAISEDOUTER | BDR_SUNKENINNER)
  2085. /* Border flags */
  2086. #define BF_LEFT         0x0001
  2087. #define BF_TOP          0x0002
  2088. #define BF_RIGHT        0x0004
  2089. #define BF_BOTTOM       0x0008
  2090. #define BF_TOPLEFT      (BF_TOP | BF_LEFT)
  2091. #define BF_TOPRIGHT     (BF_TOP | BF_RIGHT)
  2092. #define BF_BOTTOMLEFT   (BF_BOTTOM | BF_LEFT)
  2093. #define BF_BOTTOMRIGHT  (BF_BOTTOM | BF_RIGHT)
  2094. #define BF_RECT         (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM)
  2095. #define BF_DIAGONAL     0x0010
  2096. // For diagonal lines, the BF_RECT flags specify the end point of the
  2097. // vector bounded by the rectangle parameter.
  2098. #define BF_DIAGONAL_ENDTOPRIGHT     (BF_DIAGONAL | BF_TOP | BF_RIGHT)
  2099. #define BF_DIAGONAL_ENDTOPLEFT      (BF_DIAGONAL | BF_TOP | BF_LEFT)
  2100. #define BF_DIAGONAL_ENDBOTTOMLEFT   (BF_DIAGONAL | BF_BOTTOM | BF_LEFT)
  2101. #define BF_DIAGONAL_ENDBOTTOMRIGHT  (BF_DIAGONAL | BF_BOTTOM | BF_RIGHT)
  2102. #define BF_MIDDLE       0x0800  /* Fill in the middle */
  2103. #define BF_SOFT         0x1000  /* For softer buttons */
  2104. #define BF_ADJUST       0x2000  /* Calculate the space left over */
  2105. #define BF_FLAT         0x4000  /* For flat rather than 3D borders */
  2106. #define BF_MONO         0x8000  /* For monochrome borders */
  2107. WINUSERAPI
  2108. BOOL
  2109. WINAPI
  2110. DrawEdge(
  2111.     IN HDC hdc,
  2112.     IN OUT LPRECT qrc,
  2113.     IN UINT edge,
  2114.     IN UINT grfFlags);
  2115. /* flags for DrawFrameControl */
  2116. #define DFC_CAPTION             1
  2117. #define DFC_MENU                2
  2118. #define DFC_SCROLL              3
  2119. #define DFC_BUTTON              4
  2120. #if(WINVER >= 0x0500)
  2121. #define DFC_POPUPMENU           5
  2122. #endif /* WINVER >= 0x0500 */
  2123. #define DFCS_CAPTIONCLOSE       0x0000
  2124. #define DFCS_CAPTIONMIN         0x0001
  2125. #define DFCS_CAPTIONMAX         0x0002
  2126. #define DFCS_CAPTIONRESTORE     0x0003
  2127. #define DFCS_CAPTIONHELP        0x0004
  2128. #define DFCS_MENUARROW          0x0000
  2129. #define DFCS_MENUCHECK          0x0001
  2130. #define DFCS_MENUBULLET         0x0002
  2131. #define DFCS_MENUARROWRIGHT     0x0004
  2132. #define DFCS_SCROLLUP           0x0000
  2133. #define DFCS_SCROLLDOWN         0x0001
  2134. #define DFCS_SCROLLLEFT         0x0002
  2135. #define DFCS_SCROLLRIGHT        0x0003
  2136. #define DFCS_SCROLLCOMBOBOX     0x0005
  2137. #define DFCS_SCROLLSIZEGRIP     0x0008
  2138. #define DFCS_SCROLLSIZEGRIPRIGHT 0x0010
  2139. #define DFCS_BUTTONCHECK        0x0000
  2140. #define DFCS_BUTTONRADIOIMAGE   0x0001
  2141. #define DFCS_BUTTONRADIOMASK    0x0002
  2142. #define DFCS_BUTTONRADIO        0x0004
  2143. #define DFCS_BUTTON3STATE       0x0008
  2144. #define DFCS_BUTTONPUSH         0x0010
  2145. #define DFCS_INACTIVE           0x0100
  2146. #define DFCS_PUSHED             0x0200
  2147. #define DFCS_CHECKED            0x0400
  2148. #if(WINVER >= 0x0500)
  2149. #define DFCS_TRANSPARENT        0x0800
  2150. #define DFCS_HOT                0x1000
  2151. #endif /* WINVER >= 0x0500 */
  2152. #define DFCS_ADJUSTRECT         0x2000
  2153. #define DFCS_FLAT               0x4000
  2154. #define DFCS_MONO               0x8000
  2155. WINUSERAPI
  2156. BOOL
  2157. WINAPI
  2158. DrawFrameControl(
  2159.     IN HDC,
  2160.     IN OUT LPRECT,
  2161.     IN UINT,
  2162.     IN UINT);
  2163. /* flags for DrawCaption */
  2164. #define DC_ACTIVE           0x0001
  2165. #define DC_SMALLCAP         0x0002
  2166. #define DC_ICON             0x0004
  2167. #define DC_TEXT             0x0008
  2168. #define DC_INBUTTON         0x0010
  2169. #if(WINVER >= 0x0500)
  2170. #define DC_GRADIENT         0x0020
  2171. #endif /* WINVER >= 0x0500 */
  2172. #if(_WIN32_WINNT >= 0x0501)
  2173. #define DC_BUTTONS          0x1000
  2174. #endif /* _WIN32_WINNT >= 0x0501 */
  2175. WINUSERAPI
  2176. BOOL
  2177. WINAPI
  2178. DrawCaption(IN HWND, IN HDC, IN CONST RECT *, IN UINT);
  2179. #define IDANI_OPEN          1
  2180. #define IDANI_CAPTION       3
  2181. WINUSERAPI
  2182. BOOL
  2183. WINAPI
  2184. DrawAnimatedRects(
  2185.     IN HWND hwnd,
  2186.     IN int idAni,
  2187.     IN CONST RECT * lprcFrom,
  2188.     IN CONST RECT * lprcTo);
  2189. #endif /* WINVER >= 0x0400 */
  2190. #ifndef NOCLIPBOARD
  2191. /*
  2192.  * Predefined Clipboard Formats
  2193.  */
  2194. #define CF_TEXT             1
  2195. #define CF_BITMAP           2
  2196. #define CF_METAFILEPICT     3
  2197. #define CF_SYLK             4
  2198. #define CF_DIF              5
  2199. #define CF_TIFF             6
  2200. #define CF_OEMTEXT          7
  2201. #define CF_DIB              8
  2202. #define CF_PALETTE          9
  2203. #define CF_PENDATA          10
  2204. #define CF_RIFF             11
  2205. #define CF_WAVE             12
  2206. #define CF_UNICODETEXT      13
  2207. #define CF_ENHMETAFILE      14
  2208. #if(WINVER >= 0x0400)
  2209. #define CF_HDROP            15
  2210. #define CF_LOCALE           16
  2211. #endif /* WINVER >= 0x0400 */
  2212. #if(WINVER >= 0x0500)
  2213. #define CF_DIBV5            17
  2214. #endif /* WINVER >= 0x0500 */
  2215. #if(WINVER >= 0x0500)
  2216. #define CF_MAX              18
  2217. #elif(WINVER >= 0x0400)
  2218. #define CF_MAX              17
  2219. #else
  2220. #define CF_MAX              15
  2221. #endif
  2222. #define CF_OWNERDISPLAY     0x0080
  2223. #define CF_DSPTEXT          0x0081
  2224. #define CF_DSPBITMAP        0x0082
  2225. #define CF_DSPMETAFILEPICT  0x0083
  2226. #define CF_DSPENHMETAFILE   0x008E
  2227. /*
  2228.  * "Private" formats don't get GlobalFree()'d
  2229.  */
  2230. #define CF_PRIVATEFIRST     0x0200
  2231. #define CF_PRIVATELAST      0x02FF
  2232. /*
  2233.  * "GDIOBJ" formats do get DeleteObject()'d
  2234.  */
  2235. #define CF_GDIOBJFIRST      0x0300
  2236. #define CF_GDIOBJLAST       0x03FF
  2237. #endif /* !NOCLIPBOARD */
  2238. /*
  2239.  * Defines for the fVirt field of the Accelerator table structure.
  2240.  */
  2241. #define FVIRTKEY  TRUE          /* Assumed to be == TRUE */
  2242. #define FNOINVERT 0x02
  2243. #define FSHIFT    0x04
  2244. #define FCONTROL  0x08
  2245. #define FALT      0x10
  2246. typedef struct tagACCEL {
  2247. #ifndef _MAC
  2248.     BYTE   fVirt;               /* Also called the flags field */
  2249.     WORD   key;
  2250.     WORD   cmd;
  2251. #else
  2252.     WORD   fVirt;               /* Also called the flags field */
  2253.     WORD   key;
  2254.     DWORD  cmd;
  2255. #endif
  2256. } ACCEL, *LPACCEL;
  2257. typedef struct tagPAINTSTRUCT {
  2258.     HDC         hdc;
  2259.     BOOL        fErase;
  2260.     RECT        rcPaint;
  2261.     BOOL        fRestore;
  2262.     BOOL        fIncUpdate;
  2263.     BYTE        rgbReserved[32];
  2264. } PAINTSTRUCT, *PPAINTSTRUCT, *NPPAINTSTRUCT, *LPPAINTSTRUCT;
  2265. typedef struct tagCREATESTRUCTA {
  2266.     LPVOID      lpCreateParams;
  2267.     HINSTANCE   hInstance;
  2268.     HMENU       hMenu;
  2269.     HWND        hwndParent;
  2270.     int         cy;
  2271.     int         cx;
  2272.     int         y;
  2273.     int         x;
  2274.     LONG        style;
  2275.     LPCSTR      lpszName;
  2276.     LPCSTR      lpszClass;
  2277.     DWORD       dwExStyle;
  2278. } CREATESTRUCTA, *LPCREATESTRUCTA;
  2279. typedef struct tagCREATESTRUCTW {
  2280.     LPVOID      lpCreateParams;
  2281.     HINSTANCE   hInstance;
  2282.     HMENU       hMenu;
  2283.     HWND        hwndParent;
  2284.     int         cy;
  2285.     int         cx;
  2286.     int         y;
  2287.     int         x;
  2288.     LONG        style;
  2289.     LPCWSTR     lpszName;
  2290.     LPCWSTR     lpszClass;
  2291.     DWORD       dwExStyle;
  2292. } CREATESTRUCTW, *LPCREATESTRUCTW;
  2293. #ifdef UNICODE
  2294. typedef CREATESTRUCTW CREATESTRUCT;
  2295. typedef LPCREATESTRUCTW LPCREATESTRUCT;
  2296. #else
  2297. typedef CREATESTRUCTA CREATESTRUCT;
  2298. typedef LPCREATESTRUCTA LPCREATESTRUCT;
  2299. #endif // UNICODE
  2300. typedef struct tagWINDOWPLACEMENT {
  2301.     UINT  length;
  2302.     UINT  flags;
  2303.     UINT  showCmd;
  2304.     POINT ptMinPosition;
  2305.     POINT ptMaxPosition;
  2306.     RECT  rcNormalPosition;
  2307. #ifdef _MAC
  2308.     RECT  rcDevice;
  2309. #endif
  2310. } WINDOWPLACEMENT;
  2311. typedef WINDOWPLACEMENT *PWINDOWPLACEMENT, *LPWINDOWPLACEMENT;
  2312. #define WPF_SETMINPOSITION          0x0001
  2313. #define WPF_RESTORETOMAXIMIZED      0x0002
  2314. #if(_WIN32_WINNT >= 0x0500)
  2315. #define WPF_ASYNCWINDOWPLACEMENT    0x0004
  2316. #endif /* _WIN32_WINNT >= 0x0500 */
  2317. #if(WINVER >= 0x0400)
  2318. typedef struct tagNMHDR
  2319. {
  2320.     HWND      hwndFrom;
  2321.     UINT_PTR  idFrom;
  2322.     UINT      code;         // NM_ code
  2323. }   NMHDR;
  2324. typedef NMHDR FAR * LPNMHDR;
  2325. typedef struct tagSTYLESTRUCT
  2326. {
  2327.     DWORD   styleOld;
  2328.     DWORD   styleNew;
  2329. } STYLESTRUCT, * LPSTYLESTRUCT;
  2330. #endif /* WINVER >= 0x0400 */
  2331. /*
  2332.  * Owner draw control types
  2333.  */
  2334. #define ODT_MENU        1
  2335. #define ODT_LISTBOX     2
  2336. #define ODT_COMBOBOX    3
  2337. #define ODT_BUTTON      4
  2338. #if(WINVER >= 0x0400)
  2339. #define ODT_STATIC      5
  2340. #endif /* WINVER >= 0x0400 */
  2341. /*
  2342.  * Owner draw actions
  2343.  */
  2344. #define ODA_DRAWENTIRE  0x0001
  2345. #define ODA_SELECT      0x0002
  2346. #define ODA_FOCUS       0x0004
  2347. /*
  2348.  * Owner draw state
  2349.  */
  2350. #define ODS_SELECTED    0x0001
  2351. #define ODS_GRAYED      0x0002
  2352. #define ODS_DISABLED    0x0004
  2353. #define ODS_CHECKED     0x0008
  2354. #define ODS_FOCUS       0x0010
  2355. #if(WINVER >= 0x0400)
  2356. #define ODS_DEFAULT         0x0020
  2357. #define ODS_COMBOBOXEDIT    0x1000
  2358. #endif /* WINVER >= 0x0400 */
  2359. #if(WINVER >= 0x0500)
  2360. #define ODS_HOTLIGHT        0x0040
  2361. #define ODS_INACTIVE        0x0080
  2362. #if(_WIN32_WINNT >= 0x0500)
  2363. #define ODS_NOACCEL         0x0100
  2364. #define ODS_NOFOCUSRECT     0x0200
  2365. #endif /* _WIN32_WINNT >= 0x0500 */
  2366. #endif /* WINVER >= 0x0500 */
  2367. /*
  2368.  * MEASUREITEMSTRUCT for ownerdraw
  2369.  */
  2370. typedef struct tagMEASUREITEMSTRUCT {
  2371.     UINT       CtlType;
  2372.     UINT       CtlID;
  2373.     UINT       itemID;
  2374.     UINT       itemWidth;
  2375.     UINT       itemHeight;
  2376.     ULONG_PTR  itemData;
  2377. } MEASUREITEMSTRUCT, NEAR *PMEASUREITEMSTRUCT, FAR *LPMEASUREITEMSTRUCT;
  2378. /*
  2379.  * DRAWITEMSTRUCT for ownerdraw
  2380.  */
  2381. typedef struct tagDRAWITEMSTRUCT {
  2382.     UINT        CtlType;
  2383.     UINT        CtlID;
  2384.     UINT        itemID;
  2385.     UINT        itemAction;
  2386.     UINT        itemState;
  2387.     HWND        hwndItem;
  2388.     HDC         hDC;
  2389.     RECT        rcItem;
  2390.     ULONG_PTR   itemData;
  2391. } DRAWITEMSTRUCT, NEAR *PDRAWITEMSTRUCT, FAR *LPDRAWITEMSTRUCT;
  2392. /*
  2393.  * DELETEITEMSTRUCT for ownerdraw
  2394.  */
  2395. typedef struct tagDELETEITEMSTRUCT {
  2396.     UINT       CtlType;
  2397.     UINT       CtlID;
  2398.     UINT       itemID;
  2399.     HWND       hwndItem;
  2400.     ULONG_PTR  itemData;
  2401. } DELETEITEMSTRUCT, NEAR *PDELETEITEMSTRUCT, FAR *LPDELETEITEMSTRUCT;
  2402. /*
  2403.  * COMPAREITEMSTUCT for ownerdraw sorting
  2404.  */
  2405. typedef struct tagCOMPAREITEMSTRUCT {
  2406.     UINT        CtlType;
  2407.     UINT        CtlID;
  2408.     HWND        hwndItem;
  2409.     UINT        itemID1;
  2410.     ULONG_PTR   itemData1;
  2411.     UINT        itemID2;
  2412.     ULONG_PTR   itemData2;
  2413.     DWORD       dwLocaleId;
  2414. } COMPAREITEMSTRUCT, NEAR *PCOMPAREITEMSTRUCT, FAR *LPCOMPAREITEMSTRUCT;
  2415. #ifndef NOMSG
  2416. /*
  2417.  * Message Function Templates
  2418.  */
  2419. WINUSERAPI
  2420. BOOL
  2421. WINAPI
  2422. GetMessageA(
  2423.     OUT LPMSG lpMsg,
  2424.     IN HWND hWnd,
  2425.     IN UINT wMsgFilterMin,
  2426.     IN UINT wMsgFilterMax);
  2427. WINUSERAPI
  2428. BOOL
  2429. WINAPI
  2430. GetMessageW(
  2431.     OUT LPMSG lpMsg,
  2432.     IN HWND hWnd,
  2433.     IN UINT wMsgFilterMin,
  2434.     IN UINT wMsgFilterMax);
  2435. #ifdef UNICODE
  2436. #define GetMessage  GetMessageW
  2437. #else
  2438. #define GetMessage  GetMessageA
  2439. #endif // !UNICODE
  2440. WINUSERAPI
  2441. BOOL
  2442. WINAPI
  2443. TranslateMessage(
  2444.     IN CONST MSG *lpMsg);
  2445. WINUSERAPI
  2446. LRESULT
  2447. WINAPI
  2448. DispatchMessageA(
  2449.     IN CONST MSG *lpMsg);
  2450. WINUSERAPI
  2451. LRESULT
  2452. WINAPI
  2453. DispatchMessageW(
  2454.     IN CONST MSG *lpMsg);
  2455. #ifdef UNICODE
  2456. #define DispatchMessage  DispatchMessageW
  2457. #else
  2458. #define DispatchMessage  DispatchMessageA
  2459. #endif // !UNICODE
  2460. WINUSERAPI
  2461. BOOL
  2462. WINAPI
  2463. SetMessageQueue(
  2464.     IN int cMessagesMax);
  2465. WINUSERAPI
  2466. BOOL
  2467. WINAPI
  2468. PeekMessageA(
  2469.     OUT LPMSG lpMsg,
  2470.     IN HWND hWnd,
  2471.     IN UINT wMsgFilterMin,
  2472.     IN UINT wMsgFilterMax,
  2473.     IN UINT wRemoveMsg);
  2474. WINUSERAPI
  2475. BOOL
  2476. WINAPI
  2477. PeekMessageW(
  2478.     OUT LPMSG lpMsg,
  2479.     IN HWND hWnd,
  2480.     IN UINT wMsgFilterMin,
  2481.     IN UINT wMsgFilterMax,
  2482.     IN UINT wRemoveMsg);
  2483. #ifdef UNICODE
  2484. #define PeekMessage  PeekMessageW
  2485. #else
  2486. #define PeekMessage  PeekMessageA
  2487. #endif // !UNICODE
  2488. /*
  2489.  * PeekMessage() Options
  2490.  */
  2491. #define PM_NOREMOVE         0x0000
  2492. #define PM_REMOVE           0x0001
  2493. #define PM_NOYIELD          0x0002
  2494. #if(WINVER >= 0x0500)
  2495. #define PM_QS_INPUT         (QS_INPUT << 16)
  2496. #define PM_QS_POSTMESSAGE   ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16)
  2497. #define PM_QS_PAINT         (QS_PAINT << 16)
  2498. #define PM_QS_SENDMESSAGE   (QS_SENDMESSAGE << 16)
  2499. #endif /* WINVER >= 0x0500 */
  2500. #endif /* !NOMSG */
  2501. WINUSERAPI
  2502. BOOL
  2503. WINAPI
  2504. RegisterHotKey(
  2505.     IN HWND hWnd,
  2506.     IN int id,
  2507.     IN UINT fsModifiers,
  2508.     IN UINT vk);
  2509. WINUSERAPI
  2510. BOOL
  2511. WINAPI
  2512. UnregisterHotKey(
  2513.     IN HWND hWnd,
  2514.     IN int id);
  2515. #define MOD_ALT         0x0001
  2516. #define MOD_CONTROL     0x0002
  2517. #define MOD_SHIFT       0x0004
  2518. #define MOD_WIN         0x0008
  2519. #define IDHOT_SNAPWINDOW        (-1)    /* SHIFT-PRINTSCRN  */
  2520. #define IDHOT_SNAPDESKTOP       (-2)    /* PRINTSCRN        */
  2521. #ifdef WIN_INTERNAL
  2522.     #ifndef LSTRING
  2523.     #define NOLSTRING
  2524.     #endif /* LSTRING */
  2525.     #ifndef LFILEIO
  2526.     #define NOLFILEIO
  2527.     #endif /* LFILEIO */
  2528. #endif /* WIN_INTERNAL */
  2529. #if(WINVER >= 0x0400)
  2530. #define ENDSESSION_LOGOFF    0x80000000
  2531. #endif /* WINVER >= 0x0400 */
  2532. #define EWX_LOGOFF          0
  2533. #define EWX_SHUTDOWN        0x00000001
  2534. #define EWX_REBOOT          0x00000002
  2535. #define EWX_FORCE           0x00000004
  2536. #define EWX_POWEROFF        0x00000008
  2537. #if(_WIN32_WINNT >= 0x0500)
  2538. #define EWX_FORCEIFHUNG     0x00000010
  2539. #endif /* _WIN32_WINNT >= 0x0500 */
  2540. #define ExitWindows(dwReserved, Code) ExitWindowsEx(EWX_LOGOFF, 0xFFFFFFFF)
  2541. WINUSERAPI
  2542. BOOL
  2543. WINAPI
  2544. ExitWindowsEx(
  2545.     IN UINT uFlags,
  2546.     IN DWORD dwReserved);
  2547. WINUSERAPI
  2548. BOOL
  2549. WINAPI
  2550. SwapMouseButton(
  2551.     IN BOOL fSwap);
  2552. WINUSERAPI
  2553. DWORD
  2554. WINAPI
  2555. GetMessagePos(
  2556.     VOID);
  2557. WINUSERAPI
  2558. LONG
  2559. WINAPI
  2560. GetMessageTime(
  2561.     VOID);
  2562. WINUSERAPI
  2563. LPARAM
  2564. WINAPI
  2565. GetMessageExtraInfo(
  2566.     VOID);
  2567. #if(WINVER >= 0x0400)
  2568. WINUSERAPI
  2569. LPARAM
  2570. WINAPI
  2571. SetMessageExtraInfo(
  2572.     IN LPARAM lParam);
  2573. #endif /* WINVER >= 0x0400 */
  2574. WINUSERAPI
  2575. LRESULT
  2576. WINAPI
  2577. SendMessageA(
  2578.     IN HWND hWnd,
  2579.     IN UINT Msg,
  2580.     IN WPARAM wParam,
  2581.     IN LPARAM lParam);
  2582. WINUSERAPI
  2583. LRESULT
  2584. WINAPI
  2585. SendMessageW(
  2586.     IN HWND hWnd,
  2587.     IN UINT Msg,
  2588.     IN WPARAM wParam,
  2589.     IN LPARAM lParam);
  2590. #ifdef UNICODE
  2591. #define SendMessage  SendMessageW
  2592. #else
  2593. #define SendMessage  SendMessageA
  2594. #endif // !UNICODE
  2595. WINUSERAPI
  2596. LRESULT
  2597. WINAPI
  2598. SendMessageTimeoutA(
  2599.     IN HWND hWnd,
  2600.     IN UINT Msg,
  2601.     IN WPARAM wParam,
  2602.     IN LPARAM lParam,
  2603.     IN UINT fuFlags,
  2604.     IN UINT uTimeout,
  2605.     OUT PDWORD_PTR lpdwResult);
  2606. WINUSERAPI
  2607. LRESULT
  2608. WINAPI
  2609. SendMessageTimeoutW(
  2610.     IN HWND hWnd,
  2611.     IN UINT Msg,
  2612.     IN WPARAM wParam,
  2613.     IN LPARAM lParam,
  2614.     IN UINT fuFlags,
  2615.     IN UINT uTimeout,
  2616.     OUT PDWORD_PTR lpdwResult);
  2617. #ifdef UNICODE
  2618. #define SendMessageTimeout  SendMessageTimeoutW
  2619. #else
  2620. #define SendMessageTimeout  SendMessageTimeoutA
  2621. #endif // !UNICODE
  2622. WINUSERAPI
  2623. BOOL
  2624. WINAPI
  2625. SendNotifyMessageA(
  2626.     IN HWND hWnd,
  2627.     IN UINT Msg,
  2628.     IN WPARAM wParam,
  2629.     IN LPARAM lParam);
  2630. WINUSERAPI
  2631. BOOL
  2632. WINAPI
  2633. SendNotifyMessageW(
  2634.     IN HWND hWnd,
  2635.     IN UINT Msg,
  2636.     IN WPARAM wParam,
  2637.     IN LPARAM lParam);
  2638. #ifdef UNICODE
  2639. #define SendNotifyMessage  SendNotifyMessageW
  2640. #else
  2641. #define SendNotifyMessage  SendNotifyMessageA
  2642. #endif // !UNICODE
  2643. WINUSERAPI
  2644. BOOL
  2645. WINAPI
  2646. SendMessageCallbackA(
  2647.     IN HWND hWnd,
  2648.     IN UINT Msg,
  2649.     IN WPARAM wParam,
  2650.     IN LPARAM lParam,
  2651.     IN SENDASYNCPROC lpResultCallBack,
  2652.     IN ULONG_PTR dwData);
  2653. WINUSERAPI
  2654. BOOL
  2655. WINAPI
  2656. SendMessageCallbackW(
  2657.     IN HWND hWnd,
  2658.     IN UINT Msg,
  2659.     IN WPARAM wParam,
  2660.     IN LPARAM lParam,
  2661.     IN SENDASYNCPROC lpResultCallBack,
  2662.     IN ULONG_PTR dwData);
  2663. #ifdef UNICODE
  2664. #define SendMessageCallback  SendMessageCallbackW
  2665. #else
  2666. #define SendMessageCallback  SendMessageCallbackA
  2667. #endif // !UNICODE
  2668. #if(_WIN32_WINNT >= 0x0501)
  2669. typedef struct {
  2670.     UINT  cbSize;
  2671.     HDESK hdesk;
  2672.     HWND  hwnd;
  2673.     LUID  luid;
  2674. } BSMINFO, *PBSMINFO;
  2675. WINUSERAPI
  2676. long
  2677. WINAPI
  2678. BroadcastSystemMessageExA(
  2679.     IN DWORD,
  2680.     IN LPDWORD,
  2681.     IN UINT,
  2682.     IN WPARAM,
  2683.     IN LPARAM,
  2684.     OUT PBSMINFO);
  2685. WINUSERAPI
  2686. long
  2687. WINAPI
  2688. BroadcastSystemMessageExW(
  2689.     IN DWORD,
  2690.     IN LPDWORD,
  2691.     IN UINT,
  2692.     IN WPARAM,
  2693.     IN LPARAM,
  2694.     OUT PBSMINFO);
  2695. #ifdef UNICODE
  2696. #define BroadcastSystemMessageEx  BroadcastSystemMessageExW
  2697. #else
  2698. #define BroadcastSystemMessageEx  BroadcastSystemMessageExA
  2699. #endif // !UNICODE
  2700. #endif /* _WIN32_WINNT >= 0x0501 */
  2701. #if(WINVER >= 0x0400)
  2702. #if defined(_WIN32_WINNT)
  2703. WINUSERAPI
  2704. long
  2705. WINAPI
  2706. BroadcastSystemMessageA(
  2707.     IN DWORD,
  2708.     IN LPDWORD,
  2709.     IN UINT,
  2710.     IN WPARAM,
  2711.     IN LPARAM);
  2712. WINUSERAPI
  2713. long
  2714. WINAPI
  2715. BroadcastSystemMessageW(
  2716.     IN DWORD,
  2717.     IN LPDWORD,
  2718.     IN UINT,
  2719.     IN WPARAM,
  2720.     IN LPARAM);
  2721. #ifdef UNICODE
  2722. #define BroadcastSystemMessage  BroadcastSystemMessageW
  2723. #else
  2724. #define BroadcastSystemMessage  BroadcastSystemMessageA
  2725. #endif // !UNICODE
  2726. #elif defined(_WIN32_WINDOWS)
  2727. // The Win95 version isn't A/W decorated
  2728. WINUSERAPI
  2729. long
  2730. WINAPI
  2731. BroadcastSystemMessage(
  2732.     IN DWORD,
  2733.     IN LPDWORD,
  2734.     IN UINT,
  2735.     IN WPARAM,
  2736.     IN LPARAM);
  2737. #endif
  2738. //Broadcast Special Message Recipient list
  2739. #define BSM_ALLCOMPONENTS       0x00000000
  2740. #define BSM_VXDS                0x00000001
  2741. #define BSM_NETDRIVER           0x00000002
  2742. #define BSM_INSTALLABLEDRIVERS  0x00000004
  2743. #define BSM_APPLICATIONS        0x00000008
  2744. #define BSM_ALLDESKTOPS         0x00000010
  2745. //Broadcast Special Message Flags
  2746. #define BSF_QUERY               0x00000001
  2747. #define BSF_IGNORECURRENTTASK   0x00000002
  2748. #define BSF_FLUSHDISK           0x00000004
  2749. #define BSF_NOHANG              0x00000008
  2750. #define BSF_POSTMESSAGE         0x00000010
  2751. #define BSF_FORCEIFHUNG         0x00000020
  2752. #define BSF_NOTIMEOUTIFNOTHUNG  0x00000040
  2753. #if(_WIN32_WINNT >= 0x0500)
  2754. #define BSF_ALLOWSFW            0x00000080
  2755. #define BSF_SENDNOTIFYMESSAGE   0x00000100
  2756. #endif /* _WIN32_WINNT >= 0x0500 */
  2757. #if(_WIN32_WINNT >= 0x0501)
  2758. #define BSF_RETURNHDESK         0x00000200
  2759. #define BSF_LUID                0x00000400
  2760. #endif /* _WIN32_WINNT >= 0x0501 */
  2761. #define BROADCAST_QUERY_DENY         0x424D5144  // Return this value to deny a query.
  2762. #endif /* WINVER >= 0x0400 */
  2763. // RegisterDeviceNotification
  2764. #if(WINVER >= 0x0500)
  2765. typedef  PVOID           HDEVNOTIFY;
  2766. typedef  HDEVNOTIFY     *PHDEVNOTIFY;
  2767. #define DEVICE_NOTIFY_WINDOW_HANDLE          0x00000000
  2768. #define DEVICE_NOTIFY_SERVICE_HANDLE         0x00000001
  2769. #if(_WIN32_WINNT >= 0x0501)
  2770. #define DEVICE_NOTIFY_ALL_INTERFACE_CLASSES  0x00000004
  2771. #endif /* _WIN32_WINNT >= 0x0501 */
  2772. WINUSERAPI
  2773. HDEVNOTIFY
  2774. WINAPI
  2775. RegisterDeviceNotificationA(
  2776.     IN HANDLE hRecipient,
  2777.     IN LPVOID NotificationFilter,
  2778.     IN DWORD Flags
  2779.     );
  2780. WINUSERAPI
  2781. HDEVNOTIFY
  2782. WINAPI
  2783. RegisterDeviceNotificationW(
  2784.     IN HANDLE hRecipient,
  2785.     IN LPVOID NotificationFilter,
  2786.     IN DWORD Flags
  2787.     );
  2788. #ifdef UNICODE
  2789. #define RegisterDeviceNotification  RegisterDeviceNotificationW
  2790. #else
  2791. #define RegisterDeviceNotification  RegisterDeviceNotificationA
  2792. #endif // !UNICODE
  2793. WINUSERAPI
  2794. BOOL
  2795. WINAPI
  2796. UnregisterDeviceNotification(
  2797.     IN HDEVNOTIFY Handle
  2798.     );
  2799. #endif /* WINVER >= 0x0500 */
  2800. WINUSERAPI
  2801. BOOL
  2802. WINAPI
  2803. PostMessageA(
  2804.     IN HWND hWnd,
  2805.     IN UINT Msg,
  2806.     IN WPARAM wParam,
  2807.     IN LPARAM lParam);
  2808. WINUSERAPI
  2809. BOOL
  2810. WINAPI
  2811. PostMessageW(
  2812.     IN HWND hWnd,
  2813.     IN UINT Msg,
  2814.     IN WPARAM wParam,
  2815.     IN LPARAM lParam);
  2816. #ifdef UNICODE
  2817. #define PostMessage  PostMessageW
  2818. #else
  2819. #define PostMessage  PostMessageA
  2820. #endif // !UNICODE
  2821. WINUSERAPI
  2822. BOOL
  2823. WINAPI
  2824. PostThreadMessageA(
  2825.     IN DWORD idThread,
  2826.     IN UINT Msg,
  2827.     IN WPARAM wParam,
  2828.     IN LPARAM lParam);
  2829. WINUSERAPI
  2830. BOOL
  2831. WINAPI
  2832. PostThreadMessageW(
  2833.     IN DWORD idThread,
  2834.     IN UINT Msg,
  2835.     IN WPARAM wParam,
  2836.     IN LPARAM lParam);
  2837. #ifdef UNICODE
  2838. #define PostThreadMessage  PostThreadMessageW
  2839. #else
  2840. #define PostThreadMessage  PostThreadMessageA
  2841. #endif // !UNICODE
  2842. #define PostAppMessageA(idThread, wMsg, wParam, lParam)
  2843.         PostThreadMessageA((DWORD)idThread, wMsg, wParam, lParam)
  2844. #define PostAppMessageW(idThread, wMsg, wParam, lParam)
  2845.         PostThreadMessageW((DWORD)idThread, wMsg, wParam, lParam)
  2846. #ifdef UNICODE
  2847. #define PostAppMessage  PostAppMessageW
  2848. #else
  2849. #define PostAppMessage  PostAppMessageA
  2850. #endif // !UNICODE
  2851. /*
  2852.  * Special HWND value for use with PostMessage() and SendMessage()
  2853.  */
  2854. #define HWND_BROADCAST  ((HWND)0xffff)
  2855. #if(WINVER >= 0x0500)
  2856. #define HWND_MESSAGE     ((HWND)-3)
  2857. #endif /* WINVER >= 0x0500 */
  2858. WINUSERAPI
  2859. BOOL
  2860. WINAPI
  2861. AttachThreadInput(
  2862.     IN DWORD idAttach,
  2863.     IN DWORD idAttachTo,
  2864.     IN BOOL fAttach);
  2865. WINUSERAPI
  2866. BOOL
  2867. WINAPI
  2868. ReplyMessage(
  2869.     IN LRESULT lResult);
  2870. WINUSERAPI
  2871. BOOL
  2872. WINAPI
  2873. WaitMessage(
  2874.     VOID);
  2875. WINUSERAPI
  2876. DWORD
  2877. WINAPI
  2878. WaitForInputIdle(
  2879.     IN HANDLE hProcess,
  2880.     IN DWORD dwMilliseconds);
  2881. WINUSERAPI
  2882. #ifndef _MAC
  2883. LRESULT
  2884. WINAPI
  2885. #else
  2886. LRESULT
  2887. CALLBACK
  2888. #endif
  2889. DefWindowProcA(
  2890.     IN HWND hWnd,
  2891.     IN UINT Msg,
  2892.     IN WPARAM wParam,
  2893.     IN LPARAM lParam);
  2894. WINUSERAPI
  2895. #ifndef _MAC
  2896. LRESULT
  2897. WINAPI
  2898. #else
  2899. LRESULT
  2900. CALLBACK
  2901. #endif
  2902. DefWindowProcW(
  2903.     IN HWND hWnd,
  2904.     IN UINT Msg,
  2905.     IN WPARAM wParam,
  2906.     IN LPARAM lParam);
  2907. #ifdef UNICODE
  2908. #define DefWindowProc  DefWindowProcW
  2909. #else
  2910. #define DefWindowProc  DefWindowProcA
  2911. #endif // !UNICODE
  2912. WINUSERAPI
  2913. VOID
  2914. WINAPI
  2915. PostQuitMessage(
  2916.     IN int nExitCode);
  2917. #ifdef STRICT
  2918. WINUSERAPI
  2919. LRESULT
  2920. WINAPI
  2921. CallWindowProcA(
  2922.     IN WNDPROC lpPrevWndFunc,
  2923.     IN HWND hWnd,
  2924.     IN UINT Msg,
  2925.     IN WPARAM wParam,
  2926.     IN LPARAM lParam);
  2927. WINUSERAPI
  2928. LRESULT
  2929. WINAPI
  2930. CallWindowProcW(
  2931.     IN WNDPROC lpPrevWndFunc,
  2932.     IN HWND hWnd,
  2933.     IN UINT Msg,
  2934.     IN WPARAM wParam,
  2935.     IN LPARAM lParam);
  2936. #ifdef UNICODE
  2937. #define CallWindowProc  CallWindowProcW
  2938. #else
  2939. #define CallWindowProc  CallWindowProcA
  2940. #endif // !UNICODE
  2941. #else /* !STRICT */
  2942. WINUSERAPI
  2943. LRESULT
  2944. WINAPI
  2945. CallWindowProcA(
  2946.     IN FARPROC lpPrevWndFunc,
  2947.     IN HWND hWnd,
  2948.     IN UINT Msg,
  2949.     IN WPARAM wParam,
  2950.     IN LPARAM lParam);
  2951. WINUSERAPI
  2952. LRESULT
  2953. WINAPI
  2954. CallWindowProcW(
  2955.     IN FARPROC lpPrevWndFunc,
  2956.     IN HWND hWnd,
  2957.     IN UINT Msg,
  2958.     IN WPARAM wParam,
  2959.     IN LPARAM lParam);
  2960. #ifdef UNICODE
  2961. #define CallWindowProc  CallWindowProcW
  2962. #else
  2963. #define CallWindowProc  CallWindowProcA
  2964. #endif // !UNICODE
  2965. #endif /* !STRICT */
  2966. WINUSERAPI
  2967. BOOL
  2968. WINAPI
  2969. InSendMessage(
  2970.     VOID);
  2971. #if(WINVER >= 0x0500)
  2972. WINUSERAPI
  2973. DWORD
  2974. WINAPI
  2975. InSendMessageEx(
  2976.     IN LPVOID lpReserved);
  2977. /*
  2978.  * InSendMessageEx return value
  2979.  */
  2980. #define ISMEX_NOSEND      0x00000000
  2981. #define ISMEX_SEND        0x00000001
  2982. #define ISMEX_NOTIFY      0x00000002
  2983. #define ISMEX_CALLBACK    0x00000004
  2984. #define ISMEX_REPLIED     0x00000008
  2985. #endif /* WINVER >= 0x0500 */
  2986. WINUSERAPI
  2987. UINT
  2988. WINAPI
  2989. GetDoubleClickTime(
  2990.     VOID);
  2991. WINUSERAPI
  2992. BOOL
  2993. WINAPI
  2994. SetDoubleClickTime(
  2995.     IN UINT);
  2996. WINUSERAPI
  2997. ATOM
  2998. WINAPI
  2999. RegisterClassA(
  3000.     IN CONST WNDCLASSA *lpWndClass);
  3001. WINUSERAPI
  3002. ATOM
  3003. WINAPI
  3004. RegisterClassW(
  3005.     IN CONST WNDCLASSW *lpWndClass);
  3006. #ifdef UNICODE
  3007. #define RegisterClass  RegisterClassW
  3008. #else
  3009. #define RegisterClass  RegisterClassA
  3010. #endif // !UNICODE
  3011. WINUSERAPI
  3012. BOOL
  3013. WINAPI
  3014. UnregisterClassA(
  3015.     IN LPCSTR lpClassName,
  3016.     IN HINSTANCE hInstance);
  3017. WINUSERAPI
  3018. BOOL
  3019. WINAPI
  3020. UnregisterClassW(
  3021.     IN LPCWSTR lpClassName,
  3022.     IN HINSTANCE hInstance);
  3023. #ifdef UNICODE
  3024. #define UnregisterClass  UnregisterClassW
  3025. #else
  3026. #define UnregisterClass  UnregisterClassA
  3027. #endif // !UNICODE
  3028. WINUSERAPI
  3029. BOOL
  3030. WINAPI
  3031. GetClassInfoA(
  3032.     IN HINSTANCE hInstance,
  3033.     IN LPCSTR lpClassName,
  3034.     OUT LPWNDCLASSA lpWndClass);
  3035. WINUSERAPI
  3036. BOOL
  3037. WINAPI
  3038. GetClassInfoW(
  3039.     IN HINSTANCE hInstance,
  3040.     IN LPCWSTR lpClassName,
  3041.     OUT LPWNDCLASSW lpWndClass);
  3042. #ifdef UNICODE
  3043. #define GetClassInfo  GetClassInfoW
  3044. #else
  3045. #define GetClassInfo  GetClassInfoA
  3046. #endif // !UNICODE
  3047. #if(WINVER >= 0x0400)
  3048. WINUSERAPI
  3049. ATOM
  3050. WINAPI
  3051. RegisterClassExA(
  3052.     IN CONST WNDCLASSEXA *);
  3053. WINUSERAPI
  3054. ATOM
  3055. WINAPI
  3056. RegisterClassExW(
  3057.     IN CONST WNDCLASSEXW *);
  3058. #ifdef UNICODE
  3059. #define RegisterClassEx  RegisterClassExW
  3060. #else
  3061. #define RegisterClassEx  RegisterClassExA
  3062. #endif // !UNICODE
  3063. WINUSERAPI
  3064. BOOL
  3065. WINAPI
  3066. GetClassInfoExA(
  3067.     IN HINSTANCE,
  3068.     IN LPCSTR,
  3069.     OUT LPWNDCLASSEXA);
  3070. WINUSERAPI
  3071. BOOL
  3072. WINAPI
  3073. GetClassInfoExW(
  3074.     IN HINSTANCE,
  3075.     IN LPCWSTR,
  3076.     OUT LPWNDCLASSEXW);
  3077. #ifdef UNICODE
  3078. #define GetClassInfoEx  GetClassInfoExW
  3079. #else
  3080. #define GetClassInfoEx  GetClassInfoExA
  3081. #endif // !UNICODE
  3082. #endif /* WINVER >= 0x0400 */
  3083. #define CW_USEDEFAULT       ((int)0x80000000)
  3084. /*
  3085.  * Special value for CreateWindow, et al.
  3086.  */
  3087. #define HWND_DESKTOP        ((HWND)0)
  3088. #if(_WIN32_WINNT >= 0x0501)
  3089. typedef BOOLEAN (WINAPI * PREGISTERCLASSNAMEW)(LPCWSTR);
  3090. #endif /* _WIN32_WINNT >= 0x0501 */
  3091. WINUSERAPI
  3092. HWND
  3093. WINAPI
  3094. CreateWindowExA(
  3095.     IN DWORD dwExStyle,
  3096.     IN LPCSTR lpClassName,
  3097.     IN LPCSTR lpWindowName,
  3098.     IN DWORD dwStyle,
  3099.     IN int X,
  3100.     IN int Y,
  3101.     IN int nWidth,
  3102.     IN int nHeight,
  3103.     IN HWND hWndParent,
  3104.     IN HMENU hMenu,
  3105.     IN HINSTANCE hInstance,
  3106.     IN LPVOID lpParam);
  3107. WINUSERAPI
  3108. HWND
  3109. WINAPI
  3110. CreateWindowExW(
  3111.     IN DWORD dwExStyle,
  3112.     IN LPCWSTR lpClassName,
  3113.     IN LPCWSTR lpWindowName,
  3114.     IN DWORD dwStyle,
  3115.     IN int X,
  3116.     IN int Y,
  3117.     IN int nWidth,
  3118.     IN int nHeight,
  3119.     IN HWND hWndParent,
  3120.     IN HMENU hMenu,
  3121.     IN HINSTANCE hInstance,
  3122.     IN LPVOID lpParam);
  3123. #ifdef UNICODE
  3124. #define CreateWindowEx  CreateWindowExW
  3125. #else
  3126. #define CreateWindowEx  CreateWindowExA
  3127. #endif // !UNICODE
  3128. #define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y,
  3129. nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
  3130. CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y,
  3131. nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
  3132. #define CreateWindowW(lpClassName, lpWindowName, dwStyle, x, y,
  3133. nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
  3134. CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y,
  3135. nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
  3136. #ifdef UNICODE
  3137. #define CreateWindow  CreateWindowW
  3138. #else
  3139. #define CreateWindow  CreateWindowA
  3140. #endif // !UNICODE
  3141. WINUSERAPI
  3142. BOOL
  3143. WINAPI
  3144. IsWindow(
  3145.     IN HWND hWnd);
  3146. WINUSERAPI
  3147. BOOL
  3148. WINAPI
  3149. IsMenu(
  3150.     IN HMENU hMenu);
  3151. WINUSERAPI
  3152. BOOL
  3153. WINAPI
  3154. IsChild(
  3155.     IN HWND hWndParent,
  3156.     IN HWND hWnd);
  3157. WINUSERAPI
  3158. BOOL
  3159. WINAPI
  3160. DestroyWindow(
  3161.     IN HWND hWnd);
  3162. WINUSERAPI
  3163. BOOL
  3164. WINAPI
  3165. ShowWindow(
  3166.     IN HWND hWnd,
  3167.     IN int nCmdShow);
  3168. #if(WINVER >= 0x0500)
  3169. WINUSERAPI
  3170. BOOL
  3171. WINAPI
  3172. AnimateWindow(
  3173.     IN HWND hWnd,
  3174.     IN DWORD dwTime,
  3175.     IN DWORD dwFlags);
  3176. #endif /* WINVER >= 0x0500 */
  3177. #if(_WIN32_WINNT >= 0x0500)
  3178. #if defined(_WINGDI_) && !defined (NOGDI)
  3179. WINUSERAPI
  3180. BOOL
  3181. WINAPI
  3182. UpdateLayeredWindow(
  3183.     HWND hWnd,
  3184.     HDC hdcDst,
  3185.     POINT *pptDst,
  3186.     SIZE *psize,
  3187.     HDC hdcSrc,
  3188.     POINT *pptSrc,
  3189.     COLORREF crKey,
  3190.     BLENDFUNCTION *pblend,
  3191.     DWORD dwFlags);
  3192. #endif
  3193. #if(_WIN32_WINNT >= 0x0501)
  3194. WINUSERAPI
  3195. BOOL
  3196. WINAPI
  3197. GetLayeredWindowAttributes(
  3198.     HWND hwnd,
  3199.     COLORREF *pcrKey,
  3200.     BYTE *pbAlpha,
  3201.     DWORD *pdwFlags);
  3202. #define PW_CLIENTONLY           0x00000001
  3203. WINUSERAPI
  3204. BOOL
  3205. WINAPI
  3206. PrintWindow(
  3207.     IN HWND hwnd,
  3208.     IN HDC hdcBlt,
  3209.     IN UINT nFlags);
  3210. #endif /* _WIN32_WINNT >= 0x0501 */
  3211. WINUSERAPI
  3212. BOOL
  3213. WINAPI
  3214. SetLayeredWindowAttributes(
  3215.     HWND hwnd,
  3216.     COLORREF crKey,
  3217.     BYTE bAlpha,
  3218.     DWORD dwFlags);
  3219. #define LWA_COLORKEY            0x00000001
  3220. #define LWA_ALPHA               0x00000002
  3221. #define ULW_COLORKEY            0x00000001
  3222. #define ULW_ALPHA               0x00000002
  3223. #define ULW_OPAQUE              0x00000004
  3224. #endif /* _WIN32_WINNT >= 0x0500 */
  3225. #if(WINVER >= 0x0400)
  3226. WINUSERAPI
  3227. BOOL
  3228. WINAPI
  3229. ShowWindowAsync(
  3230.     IN HWND hWnd,
  3231.     IN int nCmdShow);
  3232. #endif /* WINVER >= 0x0400 */
  3233. WINUSERAPI
  3234. BOOL
  3235. WINAPI
  3236. FlashWindow(
  3237.     IN HWND hWnd,
  3238.     IN BOOL bInvert);
  3239. #if(WINVER >= 0x0500)
  3240. typedef struct {
  3241.     UINT  cbSize;
  3242.     HWND  hwnd;
  3243.     DWORD dwFlags;
  3244.     UINT  uCount;
  3245.     DWORD dwTimeout;
  3246. } FLASHWINFO, *PFLASHWINFO;
  3247. WINUSERAPI
  3248. BOOL
  3249. WINAPI
  3250. FlashWindowEx(
  3251.     PFLASHWINFO pfwi);
  3252. #define FLASHW_STOP         0
  3253. #define FLASHW_CAPTION      0x00000001
  3254. #define FLASHW_TRAY         0x00000002
  3255. #define FLASHW_ALL          (FLASHW_CAPTION | FLASHW_TRAY)
  3256. #define FLASHW_TIMER        0x00000004
  3257. #define FLASHW_TIMERNOFG    0x0000000C
  3258. #endif /* WINVER >= 0x0500 */
  3259. WINUSERAPI
  3260. BOOL
  3261. WINAPI
  3262. ShowOwnedPopups(
  3263.     IN HWND hWnd,
  3264.     IN BOOL fShow);
  3265. WINUSERAPI
  3266. BOOL
  3267. WINAPI
  3268. OpenIcon(
  3269.     IN HWND hWnd);
  3270. WINUSERAPI
  3271. BOOL
  3272. WINAPI
  3273. CloseWindow(
  3274.     IN HWND hWnd);
  3275. WINUSERAPI
  3276. BOOL
  3277. WINAPI
  3278. MoveWindow(
  3279.     IN HWND hWnd,
  3280.     IN int X,
  3281.     IN int Y,
  3282.     IN int nWidth,
  3283.     IN int nHeight,
  3284.     IN BOOL bRepaint);
  3285. WINUSERAPI
  3286. BOOL
  3287. WINAPI
  3288. SetWindowPos(
  3289.     IN HWND hWnd,
  3290.     IN HWND hWndInsertAfter,
  3291.     IN int X,
  3292.     IN int Y,
  3293.     IN int cx,
  3294.     IN int cy,
  3295.     IN UINT uFlags);
  3296. WINUSERAPI
  3297. BOOL
  3298. WINAPI
  3299. GetWindowPlacement(
  3300.     IN HWND hWnd,
  3301.     OUT WINDOWPLACEMENT *lpwndpl);
  3302. WINUSERAPI
  3303. BOOL
  3304. WINAPI
  3305. SetWindowPlacement(
  3306.     IN HWND hWnd,
  3307.     IN CONST WINDOWPLACEMENT *lpwndpl);
  3308. #ifndef NODEFERWINDOWPOS
  3309. WINUSERAPI
  3310. HDWP
  3311. WINAPI
  3312. BeginDeferWindowPos(
  3313.     IN int nNumWindows);
  3314. WINUSERAPI
  3315. HDWP
  3316. WINAPI
  3317. DeferWindowPos(
  3318.     IN HDWP hWinPosInfo,
  3319.     IN HWND hWnd,
  3320.     IN HWND hWndInsertAfter,
  3321.     IN int x,
  3322.     IN int y,
  3323.     IN int cx,
  3324.     IN int cy,
  3325.     IN UINT uFlags);
  3326. WINUSERAPI
  3327. BOOL
  3328. WINAPI
  3329. EndDeferWindowPos(
  3330.     IN HDWP hWinPosInfo);
  3331. #endif /* !NODEFERWINDOWPOS */
  3332. WINUSERAPI
  3333. BOOL
  3334. WINAPI
  3335. IsWindowVisible(
  3336.     IN HWND hWnd);
  3337. WINUSERAPI
  3338. BOOL
  3339. WINAPI
  3340. IsIconic(
  3341.     IN HWND hWnd);
  3342. WINUSERAPI
  3343. BOOL
  3344. WINAPI
  3345. AnyPopup(
  3346.     VOID);
  3347. WINUSERAPI
  3348. BOOL
  3349. WINAPI
  3350. BringWindowToTop(
  3351.     IN HWND hWnd);
  3352. WINUSERAPI
  3353. BOOL
  3354. WINAPI
  3355. IsZoomed(
  3356.     IN HWND hWnd);
  3357. /*
  3358.  * SetWindowPos Flags
  3359.  */
  3360. #define SWP_NOSIZE          0x0001
  3361. #define SWP_NOMOVE          0x0002
  3362. #define SWP_NOZORDER        0x0004
  3363. #define SWP_NOREDRAW        0x0008
  3364. #define SWP_NOACTIVATE      0x0010
  3365. #define SWP_FRAMECHANGED    0x0020  /* The frame changed: send WM_NCCALCSIZE */
  3366. #define SWP_SHOWWINDOW      0x0040
  3367. #define SWP_HIDEWINDOW      0x0080
  3368. #define SWP_NOCOPYBITS      0x0100
  3369. #define SWP_NOOWNERZORDER   0x0200  /* Don't do owner Z ordering */
  3370. #define SWP_NOSENDCHANGING  0x0400  /* Don't send WM_WINDOWPOSCHANGING */
  3371. #define SWP_DRAWFRAME       SWP_FRAMECHANGED
  3372. #define SWP_NOREPOSITION    SWP_NOOWNERZORDER
  3373. #if(WINVER >= 0x0400)
  3374. #define SWP_DEFERERASE      0x2000
  3375. #define SWP_ASYNCWINDOWPOS  0x4000