home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / winuser.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  260KB  |  11,005 lines

  1. /****************************************************************************
  2. *                                                                           *
  3. * winuser.h -- USER procedure declarations, constant definitions and macros *
  4. *                                                                           *
  5. * Copyright (c) 1985 - 1999, Microsoft Corporation                          *
  6. *                                                                           *
  7. ****************************************************************************/
  8.  
  9.  
  10. #ifndef _WINUSER_
  11. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  12. #define _WINUSER_
  13.  
  14.  
  15.  
  16. //
  17. // Define API decoration for direct importing of DLL references.
  18. //
  19.  
  20. #if !defined(_USER32_)
  21. #define WINUSERAPI DECLSPEC_IMPORT
  22. #else
  23. #define WINUSERAPI
  24. #endif
  25.  
  26. #ifdef _MAC
  27. #include <macwin32.h>
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif /* __cplusplus */
  33.  
  34. #ifndef WINVER
  35. #define WINVER  0x0500      /* version 5.0 */
  36. #endif /* !WINVER */
  37.  
  38. #include <stdarg.h>
  39.  
  40. #ifndef NOUSER
  41.  
  42. typedef HANDLE HDWP;
  43. typedef VOID MENUTEMPLATEA;
  44. typedef VOID MENUTEMPLATEW;
  45. #ifdef UNICODE
  46. typedef MENUTEMPLATEW MENUTEMPLATE;
  47. #else
  48. typedef MENUTEMPLATEA MENUTEMPLATE;
  49. #endif // UNICODE
  50. typedef PVOID LPMENUTEMPLATEA;
  51. typedef PVOID LPMENUTEMPLATEW;
  52. #ifdef UNICODE
  53. typedef LPMENUTEMPLATEW LPMENUTEMPLATE;
  54. #else
  55. typedef LPMENUTEMPLATEA LPMENUTEMPLATE;
  56. #endif // UNICODE
  57.  
  58. typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);
  59.  
  60. #ifdef STRICT
  61.  
  62. typedef INT_PTR (CALLBACK* DLGPROC)(HWND, UINT, WPARAM, LPARAM);
  63. typedef VOID (CALLBACK* TIMERPROC)(HWND, UINT, UINT_PTR, DWORD);
  64. typedef BOOL (CALLBACK* GRAYSTRINGPROC)(HDC, LPARAM, int);
  65. typedef BOOL (CALLBACK* WNDENUMPROC)(HWND, LPARAM);
  66. typedef LRESULT (CALLBACK* HOOKPROC)(int code, WPARAM wParam, LPARAM lParam);
  67. typedef VOID (CALLBACK* SENDASYNCPROC)(HWND, UINT, ULONG_PTR, LRESULT);
  68.  
  69. typedef BOOL (CALLBACK* PROPENUMPROCA)(HWND, LPCSTR, HANDLE);
  70. typedef BOOL (CALLBACK* PROPENUMPROCW)(HWND, LPCWSTR, HANDLE);
  71.  
  72. typedef BOOL (CALLBACK* PROPENUMPROCEXA)(HWND, LPSTR, HANDLE, ULONG_PTR);
  73. typedef BOOL (CALLBACK* PROPENUMPROCEXW)(HWND, LPWSTR, HANDLE, ULONG_PTR);
  74.  
  75. typedef int (CALLBACK* EDITWORDBREAKPROCA)(LPSTR lpch, int ichCurrent, int cch, int code);
  76. typedef int (CALLBACK* EDITWORDBREAKPROCW)(LPWSTR lpch, int ichCurrent, int cch, int code);
  77.  
  78. #if(WINVER >= 0x0400)
  79. typedef BOOL (CALLBACK* DRAWSTATEPROC)(HDC hdc, LPARAM lData, WPARAM wData, int cx, int cy);
  80. #endif /* WINVER >= 0x0400 */
  81. #else /* !STRICT */
  82.  
  83. typedef FARPROC DLGPROC;
  84. typedef FARPROC TIMERPROC;
  85. typedef FARPROC GRAYSTRINGPROC;
  86. typedef FARPROC WNDENUMPROC;
  87. typedef FARPROC HOOKPROC;
  88. typedef FARPROC SENDASYNCPROC;
  89.  
  90. typedef FARPROC EDITWORDBREAKPROCA;
  91. typedef FARPROC EDITWORDBREAKPROCW;
  92.  
  93. typedef FARPROC PROPENUMPROCA;
  94. typedef FARPROC PROPENUMPROCW;
  95.  
  96. typedef FARPROC PROPENUMPROCEXA;
  97. typedef FARPROC PROPENUMPROCEXW;
  98.  
  99. #if(WINVER >= 0x0400)
  100. typedef FARPROC DRAWSTATEPROC;
  101. #endif /* WINVER >= 0x0400 */
  102. #endif /* !STRICT */
  103.  
  104. #ifdef UNICODE
  105. typedef PROPENUMPROCW        PROPENUMPROC;
  106. typedef PROPENUMPROCEXW      PROPENUMPROCEX;
  107. typedef EDITWORDBREAKPROCW   EDITWORDBREAKPROC;
  108. #else  /* !UNICODE */
  109. typedef PROPENUMPROCA        PROPENUMPROC;
  110. typedef PROPENUMPROCEXA      PROPENUMPROCEX;
  111. typedef EDITWORDBREAKPROCA   EDITWORDBREAKPROC;
  112. #endif /* UNICODE */
  113.  
  114. #ifdef STRICT
  115.  
  116. typedef BOOL (CALLBACK* NAMEENUMPROCA)(LPSTR, LPARAM);
  117. typedef BOOL (CALLBACK* NAMEENUMPROCW)(LPWSTR, LPARAM);
  118.  
  119. typedef NAMEENUMPROCA   WINSTAENUMPROCA;
  120. typedef NAMEENUMPROCA   DESKTOPENUMPROCA;
  121. typedef NAMEENUMPROCW   WINSTAENUMPROCW;
  122. typedef NAMEENUMPROCW   DESKTOPENUMPROCW;
  123.  
  124.  
  125. #else /* !STRICT */
  126.  
  127. typedef FARPROC NAMEENUMPROCA;
  128. typedef FARPROC NAMEENUMPROCW;
  129. typedef FARPROC WINSTAENUMPROCA;
  130. typedef FARPROC DESKTOPENUMPROCA;
  131. typedef FARPROC WINSTAENUMPROCW;
  132. typedef FARPROC DESKTOPENUMPROCW;
  133.  
  134.  
  135. #endif /* !STRICT */
  136.  
  137. #ifdef UNICODE
  138. typedef WINSTAENUMPROCW     WINSTAENUMPROC;
  139. typedef DESKTOPENUMPROCW    DESKTOPENUMPROC;
  140.  
  141.  
  142. #else  /* !UNICODE */
  143. typedef WINSTAENUMPROCA     WINSTAENUMPROC;
  144. typedef DESKTOPENUMPROCA    DESKTOPENUMPROC;
  145.  
  146. #endif /* UNICODE */
  147.  
  148. #define IS_INTRESOURCE(_r) (((ULONG_PTR)(_r) >> 16) == 0)
  149. #define MAKEINTRESOURCEA(i) (LPSTR)((ULONG_PTR)((WORD)(i)))
  150. #define MAKEINTRESOURCEW(i) (LPWSTR)((ULONG_PTR)((WORD)(i)))
  151. #ifdef UNICODE
  152. #define MAKEINTRESOURCE  MAKEINTRESOURCEW
  153. #else
  154. #define MAKEINTRESOURCE  MAKEINTRESOURCEA
  155. #endif // !UNICODE
  156.  
  157. #ifndef NORESOURCE
  158.  
  159. /*
  160.  * Predefined Resource Types
  161.  */
  162. #define RT_CURSOR           MAKEINTRESOURCE(1)
  163. #define RT_BITMAP           MAKEINTRESOURCE(2)
  164. #define RT_ICON             MAKEINTRESOURCE(3)
  165. #define RT_MENU             MAKEINTRESOURCE(4)
  166. #define RT_DIALOG           MAKEINTRESOURCE(5)
  167. #define RT_STRING           MAKEINTRESOURCE(6)
  168. #define RT_FONTDIR          MAKEINTRESOURCE(7)
  169. #define RT_FONT             MAKEINTRESOURCE(8)
  170. #define RT_ACCELERATOR      MAKEINTRESOURCE(9)
  171. #define RT_RCDATA           MAKEINTRESOURCE(10)
  172. #define RT_MESSAGETABLE     MAKEINTRESOURCE(11)
  173.  
  174. #define DIFFERENCE          11
  175. #define RT_GROUP_CURSOR MAKEINTRESOURCE((ULONG_PTR)RT_CURSOR + DIFFERENCE)
  176. #define RT_GROUP_ICON   MAKEINTRESOURCE((ULONG_PTR)RT_ICON + DIFFERENCE)
  177. #define RT_VERSION      MAKEINTRESOURCE(16)
  178. #define RT_DLGINCLUDE   MAKEINTRESOURCE(17)
  179. #if(WINVER >= 0x0400)
  180. #define RT_PLUGPLAY     MAKEINTRESOURCE(19)
  181. #define RT_VXD          MAKEINTRESOURCE(20)
  182. #define RT_ANICURSOR    MAKEINTRESOURCE(21)
  183. #define RT_ANIICON      MAKEINTRESOURCE(22)
  184. #endif /* WINVER >= 0x0400 */
  185. #define RT_HTML         MAKEINTRESOURCE(23)
  186.  
  187. #endif /* !NORESOURCE */
  188.  
  189. WINUSERAPI
  190. int
  191. WINAPI
  192. wvsprintfA(
  193.     OUT LPSTR,
  194.     IN LPCSTR,
  195.     IN va_list arglist);
  196. WINUSERAPI
  197. int
  198. WINAPI
  199. wvsprintfW(
  200.     OUT LPWSTR,
  201.     IN LPCWSTR,
  202.     IN va_list arglist);
  203. #ifdef UNICODE
  204. #define wvsprintf  wvsprintfW
  205. #else
  206. #define wvsprintf  wvsprintfA
  207. #endif // !UNICODE
  208.  
  209. WINUSERAPI
  210. int
  211. WINAPIV
  212. wsprintfA(
  213.     OUT LPSTR,
  214.     IN LPCSTR,
  215.     ...);
  216. WINUSERAPI
  217. int
  218. WINAPIV
  219. wsprintfW(
  220.     OUT LPWSTR,
  221.     IN LPCWSTR,
  222.     ...);
  223. #ifdef UNICODE
  224. #define wsprintf  wsprintfW
  225. #else
  226. #define wsprintf  wsprintfA
  227. #endif // !UNICODE
  228.  
  229.  
  230. /*
  231.  * SPI_SETDESKWALLPAPER defined constants
  232.  */
  233. #define SETWALLPAPER_DEFAULT    ((LPWSTR)-1)
  234.  
  235. #ifndef NOSCROLL
  236.  
  237. /*
  238.  * Scroll Bar Constants
  239.  */
  240. #define SB_HORZ             0
  241. #define SB_VERT             1
  242. #define SB_CTL              2
  243. #define SB_BOTH             3
  244.  
  245. /*
  246.  * Scroll Bar Commands
  247.  */
  248. #define SB_LINEUP           0
  249. #define SB_LINELEFT         0
  250. #define SB_LINEDOWN         1
  251. #define SB_LINERIGHT        1
  252. #define SB_PAGEUP           2
  253. #define SB_PAGELEFT         2
  254. #define SB_PAGEDOWN         3
  255. #define SB_PAGERIGHT        3
  256. #define SB_THUMBPOSITION    4
  257. #define SB_THUMBTRACK       5
  258. #define SB_TOP              6
  259. #define SB_LEFT             6
  260. #define SB_BOTTOM           7
  261. #define SB_RIGHT            7
  262. #define SB_ENDSCROLL        8
  263.  
  264. #endif /* !NOSCROLL */
  265.  
  266. #ifndef NOSHOWWINDOW
  267.  
  268.  
  269. /*
  270.  * ShowWindow() Commands
  271.  */
  272. #define SW_HIDE             0
  273. #define SW_SHOWNORMAL       1
  274. #define SW_NORMAL           1
  275. #define SW_SHOWMINIMIZED    2
  276. #define SW_SHOWMAXIMIZED    3
  277. #define SW_MAXIMIZE         3
  278. #define SW_SHOWNOACTIVATE   4
  279. #define SW_SHOW             5
  280. #define SW_MINIMIZE         6
  281. #define SW_SHOWMINNOACTIVE  7
  282. #define SW_SHOWNA           8
  283. #define SW_RESTORE          9
  284. #define SW_SHOWDEFAULT      10
  285. #define SW_FORCEMINIMIZE    11
  286. #define SW_MAX              11
  287.  
  288. /*
  289.  * Old ShowWindow() Commands
  290.  */
  291. #define HIDE_WINDOW         0
  292. #define SHOW_OPENWINDOW     1
  293. #define SHOW_ICONWINDOW     2
  294. #define SHOW_FULLSCREEN     3
  295. #define SHOW_OPENNOACTIVATE 4
  296.  
  297. /*
  298.  * Identifiers for the WM_SHOWWINDOW message
  299.  */
  300. #define SW_PARENTCLOSING    1
  301. #define SW_OTHERZOOM        2
  302. #define SW_PARENTOPENING    3
  303. #define SW_OTHERUNZOOM      4
  304.  
  305.  
  306. #endif /* !NOSHOWWINDOW */
  307.  
  308. #if(WINVER >= 0x0500)
  309. /*
  310.  * AnimateWindow() Commands
  311.  */
  312. #define AW_HOR_POSITIVE             0x00000001
  313. #define AW_HOR_NEGATIVE             0x00000002
  314. #define AW_VER_POSITIVE             0x00000004
  315. #define AW_VER_NEGATIVE             0x00000008
  316. #define AW_CENTER                   0x00000010
  317. #define AW_HIDE                     0x00010000
  318. #define AW_ACTIVATE                 0x00020000
  319. #define AW_SLIDE                    0x00040000
  320. #define AW_BLEND                    0x00080000
  321.  
  322. #endif /* WINVER >= 0x0500 */
  323.  
  324.  
  325. /*
  326.  * WM_KEYUP/DOWN/CHAR HIWORD(lParam) flags
  327.  */
  328. #define KF_EXTENDED       0x0100
  329. #define KF_DLGMODE        0x0800
  330. #define KF_MENUMODE       0x1000
  331. #define KF_ALTDOWN        0x2000
  332. #define KF_REPEAT         0x4000
  333. #define KF_UP             0x8000
  334.  
  335. #ifndef NOVIRTUALKEYCODES
  336.  
  337.  
  338. /*
  339.  * Virtual Keys, Standard Set
  340.  */
  341. #define VK_LBUTTON        0x01
  342. #define VK_RBUTTON        0x02
  343. #define VK_CANCEL         0x03
  344. #define VK_MBUTTON        0x04    /* NOT contiguous with L & RBUTTON */
  345.  
  346. #if(_WIN32_WINNT >= 0x0500)
  347. #define VK_XBUTTON1       0x05    /* NOT contiguous with L & RBUTTON */
  348. #define VK_XBUTTON2       0x06    /* NOT contiguous with L & RBUTTON */
  349. #endif /* _WIN32_WINNT >= 0x0500 */
  350.  
  351. /*
  352.  * 0x07 : unassigned
  353.  */
  354.  
  355. #define VK_BACK           0x08
  356. #define VK_TAB            0x09
  357.  
  358. /*
  359.  * 0x0A - 0x0B : reserved
  360.  */
  361.  
  362. #define VK_CLEAR          0x0C
  363. #define VK_RETURN         0x0D
  364.  
  365. #define VK_SHIFT          0x10
  366. #define VK_CONTROL        0x11
  367. #define VK_MENU           0x12
  368. #define VK_PAUSE          0x13
  369. #define VK_CAPITAL        0x14
  370.  
  371. #define VK_KANA           0x15
  372. #define VK_HANGEUL        0x15  /* old name - should be here for compatibility */
  373. #define VK_HANGUL         0x15
  374. #define VK_JUNJA          0x17
  375. #define VK_FINAL          0x18
  376. #define VK_HANJA          0x19
  377. #define VK_KANJI          0x19
  378.  
  379. #define VK_ESCAPE         0x1B
  380.  
  381. #define VK_CONVERT        0x1C
  382. #define VK_NONCONVERT     0x1D
  383. #define VK_ACCEPT         0x1E
  384. #define VK_MODECHANGE     0x1F
  385.  
  386. #define VK_SPACE          0x20
  387. #define VK_PRIOR          0x21
  388. #define VK_NEXT           0x22
  389. #define VK_END            0x23
  390. #define VK_HOME           0x24
  391. #define VK_LEFT           0x25
  392. #define VK_UP             0x26
  393. #define VK_RIGHT          0x27
  394. #define VK_DOWN           0x28
  395. #define VK_SELECT         0x29
  396. #define VK_PRINT          0x2A
  397. #define VK_EXECUTE        0x2B
  398. #define VK_SNAPSHOT       0x2C
  399. #define VK_INSERT         0x2D
  400. #define VK_DELETE         0x2E
  401. #define VK_HELP           0x2F
  402.  
  403. /*
  404.  * VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39)
  405.  * 0x40 : unassigned
  406.  * VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A)
  407.  */
  408.  
  409. #define VK_LWIN           0x5B
  410. #define VK_RWIN           0x5C
  411. #define VK_APPS           0x5D
  412.  
  413. /*
  414.  * 0x5E : reserved
  415.  */
  416.  
  417. #define VK_SLEEP          0x5F
  418.  
  419. #define VK_NUMPAD0        0x60
  420. #define VK_NUMPAD1        0x61
  421. #define VK_NUMPAD2        0x62
  422. #define VK_NUMPAD3        0x63
  423. #define VK_NUMPAD4        0x64
  424. #define VK_NUMPAD5        0x65
  425. #define VK_NUMPAD6        0x66
  426. #define VK_NUMPAD7        0x67
  427. #define VK_NUMPAD8        0x68
  428. #define VK_NUMPAD9        0x69
  429. #define VK_MULTIPLY       0x6A
  430. #define VK_ADD            0x6B
  431. #define VK_SEPARATOR      0x6C
  432. #define VK_SUBTRACT       0x6D
  433. #define VK_DECIMAL        0x6E
  434. #define VK_DIVIDE         0x6F
  435. #define VK_F1             0x70
  436. #define VK_F2             0x71
  437. #define VK_F3             0x72
  438. #define VK_F4             0x73
  439. #define VK_F5             0x74
  440. #define VK_F6             0x75
  441. #define VK_F7             0x76
  442. #define VK_F8             0x77
  443. #define VK_F9             0x78
  444. #define VK_F10            0x79
  445. #define VK_F11            0x7A
  446. #define VK_F12            0x7B
  447. #define VK_F13            0x7C
  448. #define VK_F14            0x7D
  449. #define VK_F15            0x7E
  450. #define VK_F16            0x7F
  451. #define VK_F17            0x80
  452. #define VK_F18            0x81
  453. #define VK_F19            0x82
  454. #define VK_F20            0x83
  455. #define VK_F21            0x84
  456. #define VK_F22            0x85
  457. #define VK_F23            0x86
  458. #define VK_F24            0x87
  459.  
  460. /*
  461.  * 0x88 - 0x8F : unassigned
  462.  */
  463.  
  464. #define VK_NUMLOCK        0x90
  465. #define VK_SCROLL         0x91
  466.  
  467. /*
  468.  * NEC PC-9800 kbd definitions
  469.  */
  470. #define VK_OEM_NEC_EQUAL  0x92   // '=' key on numpad
  471.  
  472. /*
  473.  * Fujitsu/OASYS kbd definitions
  474.  */
  475. #define VK_OEM_FJ_JISHO   0x92   // 'Dictionary' key
  476. #define VK_OEM_FJ_MASSHOU 0x93   // 'Unregister word' key
  477. #define VK_OEM_FJ_TOUROKU 0x94   // 'Register word' key
  478. #define VK_OEM_FJ_LOYA    0x95   // 'Left OYAYUBI' key
  479. #define VK_OEM_FJ_ROYA    0x96   // 'Right OYAYUBI' key
  480.  
  481. /*
  482.  * 0x97 - 0x9F : unassigned
  483.  */
  484.  
  485. /*
  486.  * VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys.
  487.  * Used only as parameters to GetAsyncKeyState() and GetKeyState().
  488.  * No other API or message will distinguish left and right keys in this way.
  489.  */
  490. #define VK_LSHIFT         0xA0
  491. #define VK_RSHIFT         0xA1
  492. #define VK_LCONTROL       0xA2
  493. #define VK_RCONTROL       0xA3
  494. #define VK_LMENU          0xA4
  495. #define VK_RMENU          0xA5
  496.  
  497. #if(_WIN32_WINNT >= 0x0500)
  498. #define VK_BROWSER_BACK        0xA6
  499. #define VK_BROWSER_FORWARD     0xA7
  500. #define VK_BROWSER_REFRESH     0xA8
  501. #define VK_BROWSER_STOP        0xA9
  502. #define VK_BROWSER_SEARCH      0xAA
  503. #define VK_BROWSER_FAVORITES   0xAB
  504. #define VK_BROWSER_HOME        0xAC
  505.  
  506. #define VK_VOLUME_MUTE         0xAD
  507. #define VK_VOLUME_DOWN         0xAE
  508. #define VK_VOLUME_UP           0xAF
  509. #define VK_MEDIA_NEXT_TRACK    0xB0
  510. #define VK_MEDIA_PREV_TRACK    0xB1
  511. #define VK_MEDIA_STOP          0xB2
  512. #define VK_MEDIA_PLAY_PAUSE    0xB3
  513. #define VK_LAUNCH_MAIL         0xB4
  514. #define VK_LAUNCH_MEDIA_SELECT 0xB5
  515. #define VK_LAUNCH_APP1         0xB6
  516. #define VK_LAUNCH_APP2         0xB7
  517.  
  518. #endif /* _WIN32_WINNT >= 0x0500 */
  519.  
  520. /*
  521.  * 0xB8 - 0xB9 : reserved
  522.  */
  523.  
  524. #define VK_OEM_1          0xBA   // ';:' for US
  525. #define VK_OEM_PLUS       0xBB   // '+' any country
  526. #define VK_OEM_COMMA      0xBC   // ',' any country
  527. #define VK_OEM_MINUS      0xBD   // '-' any country
  528. #define VK_OEM_PERIOD     0xBE   // '.' any country
  529. #define VK_OEM_2          0xBF   // '/?' for US
  530. #define VK_OEM_3          0xC0   // '`~' for US
  531.  
  532. /*
  533.  * 0xC1 - 0xD7 : reserved
  534.  */
  535.  
  536. /*
  537.  * 0xD8 - 0xDA : unassigned
  538.  */
  539.  
  540. #define VK_OEM_4          0xDB  //  '[{' for US
  541. #define VK_OEM_5          0xDC  //  '\|' for US
  542. #define VK_OEM_6          0xDD  //  ']}' for US
  543. #define VK_OEM_7          0xDE  //  ''"' for US
  544. #define VK_OEM_8          0xDF
  545.  
  546. /*
  547.  * 0xE0 : reserved
  548.  */
  549.  
  550. /*
  551.  * Various extended or enhanced keyboards
  552.  */
  553. #define VK_OEM_AX         0xE1  //  'AX' key on Japanese AX kbd
  554. #define VK_OEM_102        0xE2  //  "<>" or "\|" on RT 102-key kbd.
  555. #define VK_ICO_HELP       0xE3  //  Help key on ICO
  556. #define VK_ICO_00         0xE4  //  00 key on ICO
  557.  
  558. #if(WINVER >= 0x0400)
  559. #define VK_PROCESSKEY     0xE5
  560. #endif /* WINVER >= 0x0400 */
  561.  
  562. #define VK_ICO_CLEAR      0xE6
  563.  
  564.  
  565. #if(_WIN32_WINNT >= 0x0500)
  566. #define VK_PACKET         0xE7
  567. #endif /* _WIN32_WINNT >= 0x0500 */
  568.  
  569. /*
  570.  * 0xE8 : unassigned
  571.  */
  572.  
  573. /*
  574.  * Nokia/Ericsson definitions
  575.  */
  576. #define VK_OEM_RESET      0xE9
  577. #define VK_OEM_JUMP       0xEA
  578. #define VK_OEM_PA1        0xEB
  579. #define VK_OEM_PA2        0xEC
  580. #define VK_OEM_PA3        0xED
  581. #define VK_OEM_WSCTRL     0xEE
  582. #define VK_OEM_CUSEL      0xEF
  583. #define VK_OEM_ATTN       0xF0
  584. #define VK_OEM_FINISH     0xF1
  585. #define VK_OEM_COPY       0xF2
  586. #define VK_OEM_AUTO       0xF3
  587. #define VK_OEM_ENLW       0xF4
  588. #define VK_OEM_BACKTAB    0xF5
  589.  
  590. #define VK_ATTN           0xF6
  591. #define VK_CRSEL          0xF7
  592. #define VK_EXSEL          0xF8
  593. #define VK_EREOF          0xF9
  594. #define VK_PLAY           0xFA
  595. #define VK_ZOOM           0xFB
  596. #define VK_NONAME         0xFC
  597. #define VK_PA1            0xFD
  598. #define VK_OEM_CLEAR      0xFE
  599.  
  600. /*
  601.  * 0xFF : reserved
  602.  */
  603.  
  604.  
  605. #endif /* !NOVIRTUALKEYCODES */
  606.  
  607. #ifndef NOWH
  608.  
  609. /*
  610.  * SetWindowsHook() codes
  611.  */
  612. #define WH_MIN              (-1)
  613. #define WH_MSGFILTER        (-1)
  614. #define WH_JOURNALRECORD    0
  615. #define WH_JOURNALPLAYBACK  1
  616. #define WH_KEYBOARD         2
  617. #define WH_GETMESSAGE       3
  618. #define WH_CALLWNDPROC      4
  619. #define WH_CBT              5
  620. #define WH_SYSMSGFILTER     6
  621. #define WH_MOUSE            7
  622. #if defined(_WIN32_WINDOWS)
  623. #define WH_HARDWARE         8
  624. #endif
  625. #define WH_DEBUG            9
  626. #define WH_SHELL           10
  627. #define WH_FOREGROUNDIDLE  11
  628. #if(WINVER >= 0x0400)
  629. #define WH_CALLWNDPROCRET  12
  630. #endif /* WINVER >= 0x0400 */
  631.  
  632. #if (_WIN32_WINNT >= 0x0400)
  633. #define WH_KEYBOARD_LL     13
  634. #define WH_MOUSE_LL        14
  635. #endif // (_WIN32_WINNT >= 0x0400)
  636.  
  637. #if(WINVER >= 0x0400)
  638. #if (_WIN32_WINNT >= 0x0400)
  639. #define WH_MAX             14
  640. #else
  641. #define WH_MAX             12
  642. #endif // (_WIN32_WINNT >= 0x0400)
  643. #else
  644. #define WH_MAX             11
  645. #endif
  646.  
  647. #define WH_MINHOOK         WH_MIN
  648. #define WH_MAXHOOK         WH_MAX
  649.  
  650. /*
  651.  * Hook Codes
  652.  */
  653. #define HC_ACTION           0
  654. #define HC_GETNEXT          1
  655. #define HC_SKIP             2
  656. #define HC_NOREMOVE         3
  657. #define HC_NOREM            HC_NOREMOVE
  658. #define HC_SYSMODALON       4
  659. #define HC_SYSMODALOFF      5
  660.  
  661. /*
  662.  * CBT Hook Codes
  663.  */
  664. #define HCBT_MOVESIZE       0
  665. #define HCBT_MINMAX         1
  666. #define HCBT_QS             2
  667. #define HCBT_CREATEWND      3
  668. #define HCBT_DESTROYWND     4
  669. #define HCBT_ACTIVATE       5
  670. #define HCBT_CLICKSKIPPED   6
  671. #define HCBT_KEYSKIPPED     7
  672. #define HCBT_SYSCOMMAND     8
  673. #define HCBT_SETFOCUS       9
  674.  
  675. /*
  676.  * HCBT_CREATEWND parameters pointed to by lParam
  677.  */
  678. typedef struct tagCBT_CREATEWNDA
  679. {
  680.     struct tagCREATESTRUCTA *lpcs;
  681.     HWND           hwndInsertAfter;
  682. } CBT_CREATEWNDA, *LPCBT_CREATEWNDA;
  683. /*
  684.  * HCBT_CREATEWND parameters pointed to by lParam
  685.  */
  686. typedef struct tagCBT_CREATEWNDW
  687. {
  688.     struct tagCREATESTRUCTW *lpcs;
  689.     HWND           hwndInsertAfter;
  690. } CBT_CREATEWNDW, *LPCBT_CREATEWNDW;
  691. #ifdef UNICODE
  692. typedef CBT_CREATEWNDW CBT_CREATEWND;
  693. typedef LPCBT_CREATEWNDW LPCBT_CREATEWND;
  694. #else
  695. typedef CBT_CREATEWNDA CBT_CREATEWND;
  696. typedef LPCBT_CREATEWNDA LPCBT_CREATEWND;
  697. #endif // UNICODE
  698.  
  699. /*
  700.  * HCBT_ACTIVATE structure pointed to by lParam
  701.  */
  702. typedef struct tagCBTACTIVATESTRUCT
  703. {
  704.     BOOL    fMouse;
  705.     HWND    hWndActive;
  706. } CBTACTIVATESTRUCT, *LPCBTACTIVATESTRUCT;
  707.  
  708. /*
  709.  * WH_MSGFILTER Filter Proc Codes
  710.  */
  711. #define MSGF_DIALOGBOX      0
  712. #define MSGF_MESSAGEBOX     1
  713. #define MSGF_MENU           2
  714. #define MSGF_SCROLLBAR      5
  715. #define MSGF_NEXTWINDOW     6
  716. #define MSGF_MAX            8                       // unused
  717. #define MSGF_USER           4096
  718.  
  719. /*
  720.  * Shell support
  721.  */
  722. #define HSHELL_WINDOWCREATED        1
  723. #define HSHELL_WINDOWDESTROYED      2
  724. #define HSHELL_ACTIVATESHELLWINDOW  3
  725.  
  726. #if(WINVER >= 0x0400)
  727. #define HSHELL_WINDOWACTIVATED      4
  728. #define HSHELL_GETMINRECT           5
  729. #define HSHELL_REDRAW               6
  730. #define HSHELL_TASKMAN              7
  731. #define HSHELL_LANGUAGE             8
  732. #endif /* WINVER >= 0x0400 */
  733. #if(_WIN32_WINNT >= 0x0500)
  734. #define HSHELL_ACCESSIBILITYSTATE   11
  735. #define HSHELL_APPCOMMAND           12
  736. #endif /* _WIN32_WINNT >= 0x0500 */
  737.  
  738.  
  739. #if(_WIN32_WINNT >= 0x0500)
  740. /* wparam for HSHELL_ACCESSIBILITYSTATE */
  741. #define    ACCESS_STICKYKEYS            0x0001
  742. #define    ACCESS_FILTERKEYS            0x0002
  743. #define    ACCESS_MOUSEKEYS             0x0003
  744.  
  745. /* cmd for HSHELL_APPCOMMAND and WM_APPCOMMAND */
  746. #define APPCOMMAND_BROWSER_BACKWARD       1
  747. #define APPCOMMAND_BROWSER_FORWARD        2
  748. #define APPCOMMAND_BROWSER_REFRESH        3
  749. #define APPCOMMAND_BROWSER_STOP           4
  750. #define APPCOMMAND_BROWSER_SEARCH         5
  751. #define APPCOMMAND_BROWSER_FAVORITES      6
  752. #define APPCOMMAND_BROWSER_HOME           7
  753. #define APPCOMMAND_VOLUME_MUTE            8
  754. #define APPCOMMAND_VOLUME_DOWN            9
  755. #define APPCOMMAND_VOLUME_UP              10
  756. #define APPCOMMAND_MEDIA_NEXTTRACK        11
  757. #define APPCOMMAND_MEDIA_PREVIOUSTRACK    12
  758. #define APPCOMMAND_MEDIA_STOP             13
  759. #define APPCOMMAND_MEDIA_PLAY_PAUSE       14
  760. #define APPCOMMAND_LAUNCH_MAIL            15
  761. #define APPCOMMAND_LAUNCH_MEDIA_SELECT    16
  762. #define APPCOMMAND_LAUNCH_APP1            17
  763. #define APPCOMMAND_LAUNCH_APP2            18
  764. #define APPCOMMAND_BASS_DOWN              19
  765. #define APPCOMMAND_BASS_BOOST             20
  766. #define APPCOMMAND_BASS_UP                21
  767. #define APPCOMMAND_TREBLE_DOWN            22
  768. #define APPCOMMAND_TREBLE_UP              23
  769.  
  770. #define FAPPCOMMAND_MOUSE 0x8000
  771. #define FAPPCOMMAND_KEY   0
  772. #define FAPPCOMMAND_OEM   0x1000
  773. #define FAPPCOMMAND_MASK  0xF000
  774.  
  775. #define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK))
  776. #define GET_DEVICE_LPARAM(lParam)     ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK))
  777. #define GET_MOUSEORKEY_LPARAM         GET_DEVICE_LPARAM
  778. #define GET_FLAGS_LPARAM(lParam)      (LOWORD(lParam))
  779. #define GET_KEYSTATE_LPARAM(lParam)   GET_FLAGS_LPARAM(lParam)
  780. #endif /* _WIN32_WINNT >= 0x0500 */
  781.  
  782.  
  783. /*
  784.  * Message Structure used in Journaling
  785.  */
  786. typedef struct tagEVENTMSG {
  787.     UINT    message;
  788.     UINT    paramL;
  789.     UINT    paramH;
  790.     DWORD    time;
  791.     HWND     hwnd;
  792. } EVENTMSG, *PEVENTMSGMSG, NEAR *NPEVENTMSGMSG, FAR *LPEVENTMSGMSG;
  793.  
  794. typedef struct tagEVENTMSG *PEVENTMSG, NEAR *NPEVENTMSG, FAR *LPEVENTMSG;
  795.  
  796. /*
  797.  * Message structure used by WH_CALLWNDPROC
  798.  */
  799. typedef struct tagCWPSTRUCT {
  800.     LPARAM  lParam;
  801.     WPARAM  wParam;
  802.     UINT    message;
  803.     HWND    hwnd;
  804. } CWPSTRUCT, *PCWPSTRUCT, NEAR *NPCWPSTRUCT, FAR *LPCWPSTRUCT;
  805.  
  806. #if(WINVER >= 0x0400)
  807. /*
  808.  * Message structure used by WH_CALLWNDPROCRET
  809.  */
  810. typedef struct tagCWPRETSTRUCT {
  811.     LRESULT lResult;
  812.     LPARAM  lParam;
  813.     WPARAM  wParam;
  814.     UINT    message;
  815.     HWND    hwnd;
  816. } CWPRETSTRUCT, *PCWPRETSTRUCT, NEAR *NPCWPRETSTRUCT, FAR *LPCWPRETSTRUCT;
  817.  
  818. #endif /* WINVER >= 0x0400 */
  819.  
  820. #if (_WIN32_WINNT >= 0x0400)
  821.  
  822. /*
  823.  * Low level hook flags
  824.  */
  825.  
  826. #define LLKHF_EXTENDED       (KF_EXTENDED >> 8)
  827. #define LLKHF_INJECTED       0x00000010
  828. #define LLKHF_ALTDOWN        (KF_ALTDOWN >> 8)
  829. #define LLKHF_UP             (KF_UP >> 8)
  830.  
  831. #define LLMHF_INJECTED       0x00000001
  832.  
  833. /*
  834.  * Structure used by WH_KEYBOARD_LL
  835.  */
  836. typedef struct tagKBDLLHOOKSTRUCT {
  837.     DWORD   vkCode;
  838.     DWORD   scanCode;
  839.     DWORD   flags;
  840.     DWORD   time;
  841.     ULONG_PTR dwExtraInfo;
  842. } KBDLLHOOKSTRUCT, FAR *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;
  843.  
  844. /*
  845.  * Structure used by WH_MOUSE_LL
  846.  */
  847. typedef struct tagMSLLHOOKSTRUCT {
  848.     POINT   pt;
  849.     DWORD   mouseData;
  850.     DWORD   flags;
  851.     DWORD   time;
  852.     ULONG_PTR dwExtraInfo;
  853. } MSLLHOOKSTRUCT, FAR *LPMSLLHOOKSTRUCT, *PMSLLHOOKSTRUCT;
  854.  
  855. #endif // (_WIN32_WINNT >= 0x0400)
  856.  
  857. /*
  858.  * Structure used by WH_DEBUG
  859.  */
  860. typedef struct tagDEBUGHOOKINFO
  861. {
  862.     DWORD   idThread;
  863.     DWORD   idThreadInstaller;
  864.     LPARAM  lParam;
  865.     WPARAM  wParam;
  866.     int     code;
  867. } DEBUGHOOKINFO, *PDEBUGHOOKINFO, NEAR *NPDEBUGHOOKINFO, FAR* LPDEBUGHOOKINFO;
  868.  
  869. /*
  870.  * Structure used by WH_MOUSE
  871.  */
  872. typedef struct tagMOUSEHOOKSTRUCT {
  873.     POINT   pt;
  874.     HWND    hwnd;
  875.     UINT    wHitTestCode;
  876.     ULONG_PTR dwExtraInfo;
  877. } MOUSEHOOKSTRUCT, FAR *LPMOUSEHOOKSTRUCT, *PMOUSEHOOKSTRUCT;
  878.  
  879. #if(_WIN32_WINNT >= 0x0500)
  880. #ifdef __cplusplus
  881. typedef struct tagMOUSEHOOKSTRUCTEX : public tagMOUSEHOOKSTRUCT
  882. {
  883.     DWORD   mouseData;
  884. } MOUSEHOOKSTRUCTEX, *LPMOUSEHOOKSTRUCTEX, *PMOUSEHOOKSTRUCTEX;
  885. #else // ndef __cplusplus
  886. typedef struct tagMOUSEHOOKSTRUCTEX
  887. {
  888.     MOUSEHOOKSTRUCT;
  889.     DWORD   mouseData;
  890. } MOUSEHOOKSTRUCTEX, *LPMOUSEHOOKSTRUCTEX, *PMOUSEHOOKSTRUCTEX;
  891. #endif
  892. #endif /* _WIN32_WINNT >= 0x0500 */
  893.  
  894. #if(WINVER >= 0x0400)
  895. /*
  896.  * Structure used by WH_HARDWARE
  897.  */
  898. typedef struct tagHARDWAREHOOKSTRUCT {
  899.     HWND    hwnd;
  900.     UINT    message;
  901.     WPARAM  wParam;
  902.     LPARAM  lParam;
  903. } HARDWAREHOOKSTRUCT, FAR *LPHARDWAREHOOKSTRUCT, *PHARDWAREHOOKSTRUCT;
  904. #endif /* WINVER >= 0x0400 */
  905. #endif /* !NOWH */
  906.  
  907. /*
  908.  * Keyboard Layout API
  909.  */
  910. #define HKL_PREV            0
  911. #define HKL_NEXT            1
  912.  
  913.  
  914. #define KLF_ACTIVATE        0x00000001
  915. #define KLF_SUBSTITUTE_OK   0x00000002
  916. #define KLF_REORDER         0x00000008
  917. #if(WINVER >= 0x0400)
  918. #define KLF_REPLACELANG     0x00000010
  919. #define KLF_NOTELLSHELL     0x00000080
  920. #endif /* WINVER >= 0x0400 */
  921. #define KLF_SETFORPROCESS   0x00000100
  922. #if(_WIN32_WINNT >= 0x0500)
  923. #define KLF_SHIFTLOCK       0x00010000
  924. #define KLF_RESET           0x40000000
  925. #endif /* _WIN32_WINNT >= 0x0500 */
  926.  
  927.  
  928. #if(WINVER >= 0x0500)
  929. /*
  930.  * Bits in wParam of WM_INPUTLANGCHANGEREQUEST message
  931.  */
  932. #define INPUTLANGCHANGE_SYSCHARSET 0x0001
  933. #define INPUTLANGCHANGE_FORWARD    0x0002
  934. #define INPUTLANGCHANGE_BACKWARD   0x0004
  935. #endif /* WINVER >= 0x0500 */
  936.  
  937. /*
  938.  * Size of KeyboardLayoutName (number of characters), including nul terminator
  939.  */
  940. #define KL_NAMELENGTH       9
  941.  
  942. WINUSERAPI
  943. HKL
  944. WINAPI
  945. LoadKeyboardLayoutA(
  946.     IN LPCSTR pwszKLID,
  947.     IN UINT Flags);
  948. WINUSERAPI
  949. HKL
  950. WINAPI
  951. LoadKeyboardLayoutW(
  952.     IN LPCWSTR pwszKLID,
  953.     IN UINT Flags);
  954. #ifdef UNICODE
  955. #define LoadKeyboardLayout  LoadKeyboardLayoutW
  956. #else
  957. #define LoadKeyboardLayout  LoadKeyboardLayoutA
  958. #endif // !UNICODE
  959.  
  960.  
  961. #if(WINVER >= 0x0400)
  962. WINUSERAPI
  963. HKL
  964. WINAPI
  965. ActivateKeyboardLayout(
  966.     IN HKL hkl,
  967.     IN UINT Flags);
  968. #else
  969. WINUSERAPI
  970. BOOL
  971. WINAPI
  972. ActivateKeyboardLayout(
  973.     IN HKL hkl,
  974.     IN UINT Flags);
  975. #endif /* WINVER >= 0x0400 */
  976.  
  977. #if(WINVER >= 0x0400)
  978. WINUSERAPI
  979. int
  980. WINAPI
  981. ToUnicodeEx(
  982.     IN UINT wVirtKey,
  983.     IN UINT wScanCode,
  984.     IN CONST BYTE *lpKeyState,
  985.     OUT LPWSTR pwszBuff,
  986.     IN int cchBuff,
  987.     IN UINT wFlags,
  988.     IN HKL dwhkl);
  989. #endif /* WINVER >= 0x0400 */
  990.  
  991. WINUSERAPI
  992. BOOL
  993. WINAPI
  994. UnloadKeyboardLayout(
  995.     IN HKL hkl);
  996.  
  997. WINUSERAPI
  998. BOOL
  999. WINAPI
  1000. GetKeyboardLayoutNameA(
  1001.     OUT LPSTR pwszKLID);
  1002. WINUSERAPI
  1003. BOOL
  1004. WINAPI
  1005. GetKeyboardLayoutNameW(
  1006.     OUT LPWSTR pwszKLID);
  1007. #ifdef UNICODE
  1008. #define GetKeyboardLayoutName  GetKeyboardLayoutNameW
  1009. #else
  1010. #define GetKeyboardLayoutName  GetKeyboardLayoutNameA
  1011. #endif // !UNICODE
  1012.  
  1013. #if(WINVER >= 0x0400)
  1014. WINUSERAPI
  1015. int
  1016. WINAPI
  1017. GetKeyboardLayoutList(
  1018.         IN int nBuff,
  1019.         OUT HKL FAR *lpList);
  1020.  
  1021. WINUSERAPI
  1022. HKL
  1023. WINAPI
  1024. GetKeyboardLayout(
  1025.     IN DWORD idThread
  1026. );
  1027. #endif /* WINVER >= 0x0400 */
  1028.  
  1029. #if(WINVER >= 0x0500)
  1030.  
  1031. typedef struct tagMOUSEMOVEPOINT {
  1032.     int   x;
  1033.     int   y;
  1034.     DWORD time;
  1035.     ULONG_PTR dwExtraInfo;
  1036. } MOUSEMOVEPOINT, *PMOUSEMOVEPOINT, FAR* LPMOUSEMOVEPOINT;
  1037.  
  1038. /*
  1039.  * Values for resolution parameter of GetMouseMovePointsEx
  1040.  */
  1041. #define GMMP_USE_DISPLAY_POINTS          1
  1042. #define GMMP_USE_HIGH_RESOLUTION_POINTS  2
  1043.  
  1044. WINUSERAPI
  1045. int
  1046. WINAPI
  1047. GetMouseMovePointsEx(
  1048.     IN UINT             cbSize,
  1049.     IN LPMOUSEMOVEPOINT lppt,
  1050.     IN LPMOUSEMOVEPOINT lpptBuf,
  1051.     IN int              nBufPoints,
  1052.     IN DWORD            resolution
  1053. );
  1054.  
  1055. #endif /* WINVER >= 0x0500 */
  1056.  
  1057. #ifndef NODESKTOP
  1058. /*
  1059.  * Desktop-specific access flags
  1060.  */
  1061. #define DESKTOP_READOBJECTS         0x0001L
  1062. #define DESKTOP_CREATEWINDOW        0x0002L
  1063. #define DESKTOP_CREATEMENU          0x0004L
  1064. #define DESKTOP_HOOKCONTROL         0x0008L
  1065. #define DESKTOP_JOURNALRECORD       0x0010L
  1066. #define DESKTOP_JOURNALPLAYBACK     0x0020L
  1067. #define DESKTOP_ENUMERATE           0x0040L
  1068. #define DESKTOP_WRITEOBJECTS        0x0080L
  1069. #define DESKTOP_SWITCHDESKTOP       0x0100L
  1070.  
  1071. /*
  1072.  * Desktop-specific control flags
  1073.  */
  1074. #define DF_ALLOWOTHERACCOUNTHOOK    0x0001L
  1075.  
  1076. #ifdef _WINGDI_
  1077. #ifndef NOGDI
  1078.  
  1079. WINUSERAPI
  1080. HDESK
  1081. WINAPI
  1082. CreateDesktopA(
  1083.     IN LPCSTR lpszDesktop,
  1084.     IN LPCSTR lpszDevice,
  1085.     IN LPDEVMODEA pDevmode,
  1086.     IN DWORD dwFlags,
  1087.     IN ACCESS_MASK dwDesiredAccess,
  1088.     IN LPSECURITY_ATTRIBUTES lpsa);
  1089. WINUSERAPI
  1090. HDESK
  1091. WINAPI
  1092. CreateDesktopW(
  1093.     IN LPCWSTR lpszDesktop,
  1094.     IN LPCWSTR lpszDevice,
  1095.     IN LPDEVMODEW pDevmode,
  1096.     IN DWORD dwFlags,
  1097.     IN ACCESS_MASK dwDesiredAccess,
  1098.     IN LPSECURITY_ATTRIBUTES lpsa);
  1099. #ifdef UNICODE
  1100. #define CreateDesktop  CreateDesktopW
  1101. #else
  1102. #define CreateDesktop  CreateDesktopA
  1103. #endif // !UNICODE
  1104.  
  1105. #endif /* NOGDI */
  1106. #endif /* _WINGDI_ */
  1107.  
  1108. WINUSERAPI
  1109. HDESK
  1110. WINAPI
  1111. OpenDesktopA(
  1112.     IN LPCSTR lpszDesktop,
  1113.     IN DWORD dwFlags,
  1114.     IN BOOL fInherit,
  1115.     IN ACCESS_MASK dwDesiredAccess);
  1116. WINUSERAPI
  1117. HDESK
  1118. WINAPI
  1119. OpenDesktopW(
  1120.     IN LPCWSTR lpszDesktop,
  1121.     IN DWORD dwFlags,
  1122.     IN BOOL fInherit,
  1123.     IN ACCESS_MASK dwDesiredAccess);
  1124. #ifdef UNICODE
  1125. #define OpenDesktop  OpenDesktopW
  1126. #else
  1127. #define OpenDesktop  OpenDesktopA
  1128. #endif // !UNICODE
  1129.  
  1130. WINUSERAPI
  1131. HDESK
  1132. WINAPI
  1133. OpenInputDesktop(
  1134.     IN DWORD dwFlags,
  1135.     IN BOOL fInherit,
  1136.     IN ACCESS_MASK dwDesiredAccess);
  1137.  
  1138. WINUSERAPI
  1139. BOOL
  1140. WINAPI
  1141. EnumDesktopsA(
  1142.     IN HWINSTA hwinsta,
  1143.     IN DESKTOPENUMPROCA lpEnumFunc,
  1144.     IN LPARAM lParam);
  1145. WINUSERAPI
  1146. BOOL
  1147. WINAPI
  1148. EnumDesktopsW(
  1149.     IN HWINSTA hwinsta,
  1150.     IN DESKTOPENUMPROCW lpEnumFunc,
  1151.     IN LPARAM lParam);
  1152. #ifdef UNICODE
  1153. #define EnumDesktops  EnumDesktopsW
  1154. #else
  1155. #define EnumDesktops  EnumDesktopsA
  1156. #endif // !UNICODE
  1157.  
  1158. WINUSERAPI
  1159. BOOL
  1160. WINAPI
  1161. EnumDesktopWindows(
  1162.     IN HDESK hDesktop,
  1163.     IN WNDENUMPROC lpfn,
  1164.     IN LPARAM lParam);
  1165.  
  1166. WINUSERAPI
  1167. BOOL
  1168. WINAPI
  1169. SwitchDesktop(
  1170.     IN HDESK hDesktop);
  1171.  
  1172. WINUSERAPI
  1173. BOOL
  1174. WINAPI
  1175. SetThreadDesktop(
  1176.     IN HDESK hDesktop);
  1177.  
  1178. WINUSERAPI
  1179. BOOL
  1180. WINAPI
  1181. CloseDesktop(
  1182.     IN HDESK hDesktop);
  1183.  
  1184. WINUSERAPI
  1185. HDESK
  1186. WINAPI
  1187. GetThreadDesktop(
  1188.     IN DWORD dwThreadId);
  1189. #endif  /* !NODESKTOP */
  1190.  
  1191. #ifndef NOWINDOWSTATION
  1192. /*
  1193.  * Windowstation-specific access flags
  1194.  */
  1195. #define WINSTA_ENUMDESKTOPS         0x0001L
  1196. #define WINSTA_READATTRIBUTES       0x0002L
  1197. #define WINSTA_ACCESSCLIPBOARD      0x0004L
  1198. #define WINSTA_CREATEDESKTOP        0x0008L
  1199. #define WINSTA_WRITEATTRIBUTES      0x0010L
  1200. #define WINSTA_ACCESSGLOBALATOMS    0x0020L
  1201. #define WINSTA_EXITWINDOWS          0x0040L
  1202. #define WINSTA_ENUMERATE            0x0100L
  1203. #define WINSTA_READSCREEN           0x0200L
  1204.  
  1205. /*
  1206.  * Windowstation-specific attribute flags
  1207.  */
  1208. #define WSF_VISIBLE                 0x0001L
  1209.  
  1210. WINUSERAPI
  1211. HWINSTA
  1212. WINAPI
  1213. CreateWindowStationA(
  1214.     IN LPCSTR              lpwinsta,
  1215.     IN DWORD                 dwReserved,
  1216.     IN ACCESS_MASK           dwDesiredAccess,
  1217.     IN LPSECURITY_ATTRIBUTES lpsa);
  1218. WINUSERAPI
  1219. HWINSTA
  1220. WINAPI
  1221. CreateWindowStationW(
  1222.     IN LPCWSTR              lpwinsta,
  1223.     IN DWORD                 dwReserved,
  1224.     IN ACCESS_MASK           dwDesiredAccess,
  1225.     IN LPSECURITY_ATTRIBUTES lpsa);
  1226. #ifdef UNICODE
  1227. #define CreateWindowStation  CreateWindowStationW
  1228. #else
  1229. #define CreateWindowStation  CreateWindowStationA
  1230. #endif // !UNICODE
  1231.  
  1232. WINUSERAPI
  1233. HWINSTA
  1234. WINAPI
  1235. OpenWindowStationA(
  1236.     IN LPCSTR lpszWinSta,
  1237.     IN BOOL fInherit,
  1238.     IN ACCESS_MASK dwDesiredAccess);
  1239. WINUSERAPI
  1240. HWINSTA
  1241. WINAPI
  1242. OpenWindowStationW(
  1243.     IN LPCWSTR lpszWinSta,
  1244.     IN BOOL fInherit,
  1245.     IN ACCESS_MASK dwDesiredAccess);
  1246. #ifdef UNICODE
  1247. #define OpenWindowStation  OpenWindowStationW
  1248. #else
  1249. #define OpenWindowStation  OpenWindowStationA
  1250. #endif // !UNICODE
  1251.  
  1252. WINUSERAPI
  1253. BOOL
  1254. WINAPI
  1255. EnumWindowStationsA(
  1256.     IN WINSTAENUMPROCA lpEnumFunc,
  1257.     IN LPARAM lParam);
  1258. WINUSERAPI
  1259. BOOL
  1260. WINAPI
  1261. EnumWindowStationsW(
  1262.     IN WINSTAENUMPROCW lpEnumFunc,
  1263.     IN LPARAM lParam);
  1264. #ifdef UNICODE
  1265. #define EnumWindowStations  EnumWindowStationsW
  1266. #else
  1267. #define EnumWindowStations  EnumWindowStationsA
  1268. #endif // !UNICODE
  1269.  
  1270.  
  1271. WINUSERAPI
  1272. BOOL
  1273. WINAPI
  1274. CloseWindowStation(
  1275.     IN HWINSTA hWinSta);
  1276.  
  1277. WINUSERAPI
  1278. BOOL
  1279. WINAPI
  1280. SetProcessWindowStation(
  1281.     IN HWINSTA hWinSta);
  1282.  
  1283. WINUSERAPI
  1284. HWINSTA
  1285. WINAPI
  1286. GetProcessWindowStation(
  1287.     VOID);
  1288. #endif  /* !NOWINDOWSTATION */
  1289.  
  1290. #ifndef NOSECURITY
  1291.  
  1292. WINUSERAPI
  1293. BOOL
  1294. WINAPI
  1295. SetUserObjectSecurity(
  1296.     IN HANDLE hObj,
  1297.     IN PSECURITY_INFORMATION pSIRequested,
  1298.     IN PSECURITY_DESCRIPTOR pSID);
  1299.  
  1300. WINUSERAPI
  1301. BOOL
  1302. WINAPI
  1303. GetUserObjectSecurity(
  1304.     IN HANDLE hObj,
  1305.     IN PSECURITY_INFORMATION pSIRequested,
  1306.     IN OUT PSECURITY_DESCRIPTOR pSID,
  1307.     IN DWORD nLength,
  1308.     OUT LPDWORD lpnLengthNeeded);
  1309.  
  1310. #define UOI_FLAGS       1
  1311. #define UOI_NAME        2
  1312. #define UOI_TYPE        3
  1313. #define UOI_USER_SID    4
  1314.  
  1315. typedef struct tagUSEROBJECTFLAGS {
  1316.     BOOL fInherit;
  1317.     BOOL fReserved;
  1318.     DWORD dwFlags;
  1319. } USEROBJECTFLAGS, *PUSEROBJECTFLAGS;
  1320.  
  1321. WINUSERAPI
  1322. BOOL
  1323. WINAPI
  1324. GetUserObjectInformationA(
  1325.     IN HANDLE hObj,
  1326.     IN int nIndex,
  1327.     OUT PVOID pvInfo,
  1328.     IN DWORD nLength,
  1329.     OUT LPDWORD lpnLengthNeeded);
  1330. WINUSERAPI
  1331. BOOL
  1332. WINAPI
  1333. GetUserObjectInformationW(
  1334.     IN HANDLE hObj,
  1335.     IN int nIndex,
  1336.     OUT PVOID pvInfo,
  1337.     IN DWORD nLength,
  1338.     OUT LPDWORD lpnLengthNeeded);
  1339. #ifdef UNICODE
  1340. #define GetUserObjectInformation  GetUserObjectInformationW
  1341. #else
  1342. #define GetUserObjectInformation  GetUserObjectInformationA
  1343. #endif // !UNICODE
  1344.  
  1345. WINUSERAPI
  1346. BOOL
  1347. WINAPI
  1348. SetUserObjectInformationA(
  1349.     IN HANDLE hObj,
  1350.     IN int nIndex,
  1351.     IN PVOID pvInfo,
  1352.     IN DWORD nLength);
  1353. WINUSERAPI
  1354. BOOL
  1355. WINAPI
  1356. SetUserObjectInformationW(
  1357.     IN HANDLE hObj,
  1358.     IN int nIndex,
  1359.     IN PVOID pvInfo,
  1360.     IN DWORD nLength);
  1361. #ifdef UNICODE
  1362. #define SetUserObjectInformation  SetUserObjectInformationW
  1363. #else
  1364. #define SetUserObjectInformation  SetUserObjectInformationA
  1365. #endif // !UNICODE
  1366.  
  1367. #endif  /* !NOSECURITY */
  1368.  
  1369. #if(WINVER >= 0x0400)
  1370. typedef struct tagWNDCLASSEXA {
  1371.     UINT        cbSize;
  1372.     /* Win 3.x */
  1373.     UINT        style;
  1374.     WNDPROC     lpfnWndProc;
  1375.     int         cbClsExtra;
  1376.     int         cbWndExtra;
  1377.     HINSTANCE   hInstance;
  1378.     HICON       hIcon;
  1379.     HCURSOR     hCursor;
  1380.     HBRUSH      hbrBackground;
  1381.     LPCSTR      lpszMenuName;
  1382.     LPCSTR      lpszClassName;
  1383.     /* Win 4.0 */
  1384.     HICON       hIconSm;
  1385. } WNDCLASSEXA, *PWNDCLASSEXA, NEAR *NPWNDCLASSEXA, FAR *LPWNDCLASSEXA;
  1386. typedef struct tagWNDCLASSEXW {
  1387.     UINT        cbSize;
  1388.     /* Win 3.x */
  1389.     UINT        style;
  1390.     WNDPROC     lpfnWndProc;
  1391.     int         cbClsExtra;
  1392.     int         cbWndExtra;
  1393.     HINSTANCE   hInstance;
  1394.     HICON       hIcon;
  1395.     HCURSOR     hCursor;
  1396.     HBRUSH      hbrBackground;
  1397.     LPCWSTR     lpszMenuName;
  1398.     LPCWSTR     lpszClassName;
  1399.     /* Win 4.0 */
  1400.     HICON       hIconSm;
  1401. } WNDCLASSEXW, *PWNDCLASSEXW, NEAR *NPWNDCLASSEXW, FAR *LPWNDCLASSEXW;
  1402. #ifdef UNICODE
  1403. typedef WNDCLASSEXW WNDCLASSEX;
  1404. typedef PWNDCLASSEXW PWNDCLASSEX;
  1405. typedef NPWNDCLASSEXW NPWNDCLASSEX;
  1406. typedef LPWNDCLASSEXW LPWNDCLASSEX;
  1407. #else
  1408. typedef WNDCLASSEXA WNDCLASSEX;
  1409. typedef PWNDCLASSEXA PWNDCLASSEX;
  1410. typedef NPWNDCLASSEXA NPWNDCLASSEX;
  1411. typedef LPWNDCLASSEXA LPWNDCLASSEX;
  1412. #endif // UNICODE
  1413. #endif /* WINVER >= 0x0400 */
  1414.  
  1415. typedef struct tagWNDCLASSA {
  1416.     UINT        style;
  1417.     WNDPROC     lpfnWndProc;
  1418.     int         cbClsExtra;
  1419.     int         cbWndExtra;
  1420.     HINSTANCE   hInstance;
  1421.     HICON       hIcon;
  1422.     HCURSOR     hCursor;
  1423.     HBRUSH      hbrBackground;
  1424.     LPCSTR      lpszMenuName;
  1425.     LPCSTR      lpszClassName;
  1426. } WNDCLASSA, *PWNDCLASSA, NEAR *NPWNDCLASSA, FAR *LPWNDCLASSA;
  1427. typedef struct tagWNDCLASSW {
  1428.     UINT        style;
  1429.     WNDPROC     lpfnWndProc;
  1430.     int         cbClsExtra;
  1431.     int         cbWndExtra;
  1432.     HINSTANCE   hInstance;
  1433.     HICON       hIcon;
  1434.     HCURSOR     hCursor;
  1435.     HBRUSH      hbrBackground;
  1436.     LPCWSTR     lpszMenuName;
  1437.     LPCWSTR     lpszClassName;
  1438. } WNDCLASSW, *PWNDCLASSW, NEAR *NPWNDCLASSW, FAR *LPWNDCLASSW;
  1439. #ifdef UNICODE
  1440. typedef WNDCLASSW WNDCLASS;
  1441. typedef PWNDCLASSW PWNDCLASS;
  1442. typedef NPWNDCLASSW NPWNDCLASS;
  1443. typedef LPWNDCLASSW LPWNDCLASS;
  1444. #else
  1445. typedef WNDCLASSA WNDCLASS;
  1446. typedef PWNDCLASSA PWNDCLASS;
  1447. typedef NPWNDCLASSA NPWNDCLASS;
  1448. typedef LPWNDCLASSA LPWNDCLASS;
  1449. #endif // UNICODE
  1450.  
  1451.  
  1452. #ifndef NOMSG
  1453.  
  1454. /*
  1455.  * Message structure
  1456.  */
  1457. typedef struct tagMSG {
  1458.     HWND        hwnd;
  1459.     UINT        message;
  1460.     WPARAM      wParam;
  1461.     LPARAM      lParam;
  1462.     DWORD       time;
  1463.     POINT       pt;
  1464. #ifdef _MAC
  1465.     DWORD       lPrivate;
  1466. #endif
  1467. } MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;
  1468.  
  1469. #define POINTSTOPOINT(pt, pts)                          \
  1470.         { (pt).x = (LONG)(SHORT)LOWORD(*(LONG*)&pts);   \
  1471.           (pt).y = (LONG)(SHORT)HIWORD(*(LONG*)&pts); }
  1472.  
  1473. #define POINTTOPOINTS(pt)      (MAKELONG((short)((pt).x), (short)((pt).y)))
  1474. #define MAKEWPARAM(l, h)      ((WPARAM)(DWORD)MAKELONG(l, h))
  1475. #define MAKELPARAM(l, h)      ((LPARAM)(DWORD)MAKELONG(l, h))
  1476. #define MAKELRESULT(l, h)     ((LRESULT)(DWORD)MAKELONG(l, h))
  1477.  
  1478.  
  1479. #endif /* !NOMSG */
  1480.  
  1481. #ifndef NOWINOFFSETS
  1482.  
  1483. /*
  1484.  * Window field offsets for GetWindowLong()
  1485.  */
  1486. #define GWL_WNDPROC         (-4)
  1487. #define GWL_HINSTANCE       (-6)
  1488. #define GWL_HWNDPARENT      (-8)
  1489. #define GWL_STYLE           (-16)
  1490. #define GWL_EXSTYLE         (-20)
  1491. #define GWL_USERDATA        (-21)
  1492. #define GWL_ID              (-12)
  1493.  
  1494. #ifdef _WIN64
  1495.  
  1496. #undef GWL_WNDPROC
  1497. #undef GWL_HINSTANCE
  1498. #undef GWL_HWNDPARENT
  1499. #undef GWL_USERDATA
  1500.  
  1501. #endif /* _WIN64 */
  1502.  
  1503. #define GWLP_WNDPROC        (-4)
  1504. #define GWLP_HINSTANCE      (-6)
  1505. #define GWLP_HWNDPARENT     (-8)
  1506. #define GWLP_USERDATA       (-21)
  1507. #define GWLP_ID             (-12)
  1508.  
  1509. /*
  1510.  * Class field offsets for GetClassLong()
  1511.  */
  1512. #define GCL_MENUNAME        (-8)
  1513. #define GCL_HBRBACKGROUND   (-10)
  1514. #define GCL_HCURSOR         (-12)
  1515. #define GCL_HICON           (-14)
  1516. #define GCL_HMODULE         (-16)
  1517. #define GCL_CBWNDEXTRA      (-18)
  1518. #define GCL_CBCLSEXTRA      (-20)
  1519. #define GCL_WNDPROC         (-24)
  1520. #define GCL_STYLE           (-26)
  1521. #define GCW_ATOM            (-32)
  1522.  
  1523. #if(WINVER >= 0x0400)
  1524. #define GCL_HICONSM         (-34)
  1525. #endif /* WINVER >= 0x0400 */
  1526.  
  1527. #ifdef _WIN64
  1528.  
  1529. #undef GCL_MENUNAME
  1530. #undef GCL_HBRBACKGROUND
  1531. #undef GCL_HCURSOR
  1532. #undef GCL_HICON
  1533. #undef GCL_HMODULE
  1534. #undef GCL_WNDPROC
  1535. #undef GCL_HICONSM
  1536.  
  1537. #endif /* _WIN64 */
  1538.  
  1539. #define GCLP_MENUNAME       (-8)
  1540. #define GCLP_HBRBACKGROUND  (-10)
  1541. #define GCLP_HCURSOR        (-12)
  1542. #define GCLP_HICON          (-14)
  1543. #define GCLP_HMODULE        (-16)
  1544. #define GCLP_WNDPROC        (-24)
  1545. #define GCLP_HICONSM        (-34)
  1546.  
  1547. #endif /* !NOWINOFFSETS */
  1548.  
  1549. #ifndef NOWINMESSAGES
  1550.  
  1551.  
  1552. /*
  1553.  * Window Messages
  1554.  */
  1555.  
  1556. #define WM_NULL                         0x0000
  1557. #define WM_CREATE                       0x0001
  1558. #define WM_DESTROY                      0x0002
  1559. #define WM_MOVE                         0x0003
  1560. #define WM_SIZE                         0x0005
  1561.  
  1562. #define WM_ACTIVATE                     0x0006
  1563. /*
  1564.  * WM_ACTIVATE state values
  1565.  */
  1566. #define     WA_INACTIVE     0
  1567. #define     WA_ACTIVE       1
  1568. #define     WA_CLICKACTIVE  2
  1569.  
  1570. #define WM_SETFOCUS                     0x0007
  1571. #define WM_KILLFOCUS                    0x0008
  1572. #define WM_ENABLE                       0x000A
  1573. #define WM_SETREDRAW                    0x000B
  1574. #define WM_SETTEXT                      0x000C
  1575. #define WM_GETTEXT                      0x000D
  1576. #define WM_GETTEXTLENGTH                0x000E
  1577. #define WM_PAINT                        0x000F
  1578. #define WM_CLOSE                        0x0010
  1579. #ifndef _WIN32_WCE
  1580. #define WM_QUERYENDSESSION              0x0011
  1581. #define WM_QUERYOPEN                    0x0013
  1582. #define WM_ENDSESSION                   0x0016
  1583. #endif
  1584. #define WM_QUIT                         0x0012
  1585. #define WM_ERASEBKGND                   0x0014
  1586. #define WM_SYSCOLORCHANGE               0x0015
  1587. #define WM_SHOWWINDOW                   0x0018
  1588. #define WM_WININICHANGE                 0x001A
  1589. #if(WINVER >= 0x0400)
  1590. #define WM_SETTINGCHANGE                WM_WININICHANGE
  1591. #endif /* WINVER >= 0x0400 */
  1592.  
  1593.  
  1594. #define WM_DEVMODECHANGE                0x001B
  1595. #define WM_ACTIVATEAPP                  0x001C
  1596. #define WM_FONTCHANGE                   0x001D
  1597. #define WM_TIMECHANGE                   0x001E
  1598. #define WM_CANCELMODE                   0x001F
  1599. #define WM_SETCURSOR                    0x0020
  1600. #define WM_MOUSEACTIVATE                0x0021
  1601. #define WM_CHILDACTIVATE                0x0022
  1602. #define WM_QUEUESYNC                    0x0023
  1603.  
  1604. #define WM_GETMINMAXINFO                0x0024
  1605. /*
  1606.  * Struct pointed to by WM_GETMINMAXINFO lParam
  1607.  */
  1608. typedef struct tagMINMAXINFO {
  1609.     POINT ptReserved;
  1610.     POINT ptMaxSize;
  1611.     POINT ptMaxPosition;
  1612.     POINT ptMinTrackSize;
  1613.     POINT ptMaxTrackSize;
  1614. } MINMAXINFO, *PMINMAXINFO, *LPMINMAXINFO;
  1615.  
  1616. #define WM_PAINTICON                    0x0026
  1617. #define WM_ICONERASEBKGND               0x0027
  1618. #define WM_NEXTDLGCTL                   0x0028
  1619. #define WM_SPOOLERSTATUS                0x002A
  1620. #define WM_DRAWITEM                     0x002B
  1621. #define WM_MEASUREITEM                  0x002C
  1622. #define WM_DELETEITEM                   0x002D
  1623. #define WM_VKEYTOITEM                   0x002E
  1624. #define WM_CHARTOITEM                   0x002F
  1625. #define WM_SETFONT                      0x0030
  1626. #define WM_GETFONT                      0x0031
  1627. #define WM_SETHOTKEY                    0x0032
  1628. #define WM_GETHOTKEY                    0x0033
  1629. #define WM_QUERYDRAGICON                0x0037
  1630. #define WM_COMPAREITEM                  0x0039
  1631. #if(WINVER >= 0x0500)
  1632. #ifndef _WIN32_WCE
  1633. #define WM_GETOBJECT                    0x003D
  1634. #endif
  1635. #endif /* WINVER >= 0x0500 */
  1636. #define WM_COMPACTING                   0x0041
  1637. #define WM_COMMNOTIFY                   0x0044  /* no longer suported */
  1638. #define WM_WINDOWPOSCHANGING            0x0046
  1639. #define WM_WINDOWPOSCHANGED             0x0047
  1640.  
  1641. #define WM_POWER                        0x0048
  1642. /*
  1643.  * wParam for WM_POWER window message and DRV_POWER driver notification
  1644.  */
  1645. #define PWR_OK              1
  1646. #define PWR_FAIL            (-1)
  1647. #define PWR_SUSPENDREQUEST  1
  1648. #define PWR_SUSPENDRESUME   2
  1649. #define PWR_CRITICALRESUME  3
  1650.  
  1651. #define WM_COPYDATA                     0x004A
  1652. #define WM_CANCELJOURNAL                0x004B
  1653.  
  1654.  
  1655. /*
  1656.  * lParam of WM_COPYDATA message points to...
  1657.  */
  1658. typedef struct tagCOPYDATASTRUCT {
  1659.     ULONG_PTR dwData;
  1660.     DWORD cbData;
  1661.     PVOID lpData;
  1662. } COPYDATASTRUCT, *PCOPYDATASTRUCT;
  1663.  
  1664. #if(WINVER >= 0x0400)
  1665. typedef struct tagMDINEXTMENU
  1666. {
  1667.     HMENU   hmenuIn;
  1668.     HMENU   hmenuNext;
  1669.     HWND    hwndNext;
  1670. } MDINEXTMENU, * PMDINEXTMENU, FAR * LPMDINEXTMENU;
  1671. #endif /* WINVER >= 0x0400 */
  1672.  
  1673.  
  1674. #if(WINVER >= 0x0400)
  1675. #define WM_NOTIFY                       0x004E
  1676. #define WM_INPUTLANGCHANGEREQUEST       0x0050
  1677. #define WM_INPUTLANGCHANGE              0x0051
  1678. #define WM_TCARD                        0x0052
  1679. #define WM_HELP                         0x0053
  1680. #define WM_USERCHANGED                  0x0054
  1681. #define WM_NOTIFYFORMAT                 0x0055
  1682.  
  1683. #define NFR_ANSI                             1
  1684. #define NFR_UNICODE                          2
  1685. #define NF_QUERY                             3
  1686. #define NF_REQUERY                           4
  1687.  
  1688. #define WM_CONTEXTMENU                  0x007B
  1689. #define WM_STYLECHANGING                0x007C
  1690. #define WM_STYLECHANGED                 0x007D
  1691. #define WM_DISPLAYCHANGE                0x007E
  1692. #define WM_GETICON                      0x007F
  1693. #define WM_SETICON                      0x0080
  1694. #endif /* WINVER >= 0x0400 */
  1695.  
  1696. #define WM_NCCREATE                     0x0081
  1697. #define WM_NCDESTROY                    0x0082
  1698. #define WM_NCCALCSIZE                   0x0083
  1699. #define WM_NCHITTEST                    0x0084
  1700. #define WM_NCPAINT                      0x0085
  1701. #define WM_NCACTIVATE                   0x0086
  1702. #define WM_GETDLGCODE                   0x0087
  1703. #ifndef _WIN32_WCE
  1704. #define WM_SYNCPAINT                    0x0088
  1705. #endif
  1706. #define WM_NCMOUSEMOVE                  0x00A0
  1707. #define WM_NCLBUTTONDOWN                0x00A1
  1708. #define WM_NCLBUTTONUP                  0x00A2
  1709. #define WM_NCLBUTTONDBLCLK              0x00A3
  1710. #define WM_NCRBUTTONDOWN                0x00A4
  1711. #define WM_NCRBUTTONUP                  0x00A5
  1712. #define WM_NCRBUTTONDBLCLK              0x00A6
  1713. #define WM_NCMBUTTONDOWN                0x00A7
  1714. #define WM_NCMBUTTONUP                  0x00A8
  1715. #define WM_NCMBUTTONDBLCLK              0x00A9
  1716.  
  1717.  
  1718. #if(_WIN32_WINNT >= 0x0500)
  1719. #define WM_NCXBUTTONDOWN                0x00AB
  1720. #define WM_NCXBUTTONUP                  0x00AC
  1721. #define WM_NCXBUTTONDBLCLK              0x00AD
  1722. #endif /* _WIN32_WINNT >= 0x0500 */
  1723.  
  1724.  
  1725. #define WM_KEYFIRST                     0x0100
  1726. #define WM_KEYDOWN                      0x0100
  1727. #define WM_KEYUP                        0x0101
  1728. #define WM_CHAR                         0x0102
  1729. #define WM_DEADCHAR                     0x0103
  1730. #define WM_SYSKEYDOWN                   0x0104
  1731. #define WM_SYSKEYUP                     0x0105
  1732. #define WM_SYSCHAR                      0x0106
  1733. #define WM_SYSDEADCHAR                  0x0107
  1734. #define WM_KEYLAST                      0x0108
  1735.  
  1736. #if(WINVER >= 0x0400)
  1737. #define WM_IME_STARTCOMPOSITION         0x010D
  1738. #define WM_IME_ENDCOMPOSITION           0x010E
  1739. #define WM_IME_COMPOSITION              0x010F
  1740. #define WM_IME_KEYLAST                  0x010F
  1741. #endif /* WINVER >= 0x0400 */
  1742.  
  1743. #define WM_INITDIALOG                   0x0110
  1744. #define WM_COMMAND                      0x0111
  1745. #define WM_SYSCOMMAND                   0x0112
  1746. #define WM_TIMER                        0x0113
  1747. #define WM_HSCROLL                      0x0114
  1748. #define WM_VSCROLL                      0x0115
  1749. #define WM_INITMENU                     0x0116
  1750. #define WM_INITMENUPOPUP                0x0117
  1751. #define WM_MENUSELECT                   0x011F
  1752. #define WM_MENUCHAR                     0x0120
  1753. #define WM_ENTERIDLE                    0x0121
  1754. #if(WINVER >= 0x0500)
  1755. #ifndef _WIN32_WCE
  1756. #define WM_MENURBUTTONUP                0x0122
  1757. #define WM_MENUDRAG                     0x0123
  1758. #define WM_MENUGETOBJECT                0x0124
  1759. #define WM_UNINITMENUPOPUP              0x0125
  1760. #define WM_MENUCOMMAND                  0x0126
  1761.  
  1762. #ifndef _WIN32_WCE
  1763. #if(_WIN32_WINNT >= 0x0500)
  1764. #define WM_CHANGEUISTATE                0x0127
  1765. #define WM_UPDATEUISTATE                0x0128
  1766. #define WM_QUERYUISTATE                 0x0129
  1767.  
  1768. /*
  1769.  * LOWORD(wParam) values in WM_*UISTATE*
  1770.  */
  1771. #define UIS_SET         1
  1772. #define UIS_CLEAR       2
  1773. #define UIS_INITIALIZE  3
  1774.  
  1775. /*
  1776.  * HIWORD(wParam) values in WM_*UISTATE*
  1777.  */
  1778. #define UISF_HIDEFOCUS   0x1
  1779. #define UISF_HIDEACCEL   0x2
  1780. #endif /* _WIN32_WINNT >= 0x0500 */
  1781. #endif
  1782.  
  1783. #endif
  1784. #endif /* WINVER >= 0x0500 */
  1785.  
  1786.  
  1787. #define WM_CTLCOLORMSGBOX               0x0132
  1788. #define WM_CTLCOLOREDIT                 0x0133
  1789. #define WM_CTLCOLORLISTBOX              0x0134
  1790. #define WM_CTLCOLORBTN                  0x0135
  1791. #define WM_CTLCOLORDLG                  0x0136
  1792. #define WM_CTLCOLORSCROLLBAR            0x0137
  1793. #define WM_CTLCOLORSTATIC               0x0138
  1794.  
  1795.  
  1796. #define WM_MOUSEFIRST                   0x0200
  1797. #define WM_MOUSEMOVE                    0x0200
  1798. #define WM_LBUTTONDOWN                  0x0201
  1799. #define WM_LBUTTONUP                    0x0202
  1800. #define WM_LBUTTONDBLCLK                0x0203
  1801. #define WM_RBUTTONDOWN                  0x0204
  1802. #define WM_RBUTTONUP                    0x0205
  1803. #define WM_RBUTTONDBLCLK                0x0206
  1804. #define WM_MBUTTONDOWN                  0x0207
  1805. #define WM_MBUTTONUP                    0x0208
  1806. #define WM_MBUTTONDBLCLK                0x0209
  1807. #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
  1808. #define WM_MOUSEWHEEL                   0x020A
  1809. #endif
  1810. #if (_WIN32_WINNT >= 0x0500)
  1811. #define WM_XBUTTONDOWN                  0x020B
  1812. #define WM_XBUTTONUP                    0x020C
  1813. #define WM_XBUTTONDBLCLK                0x020D
  1814. #endif
  1815. #if (_WIN32_WINNT >= 0x0500)
  1816. #define WM_MOUSELAST                    0x020D
  1817. #elif (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
  1818. #define WM_MOUSELAST                    0x020A
  1819. #else
  1820. #define WM_MOUSELAST                    0x0209
  1821. #endif /* (_WIN32_WINNT >= 0x0500) */
  1822.  
  1823.  
  1824. #if(_WIN32_WINNT >= 0x0400)
  1825. /* Value for rolling one detent */
  1826. #define WHEEL_DELTA                     120
  1827. #define GET_WHEEL_DELTA_WPARAM(wParam)  ((short)HIWORD(wParam))
  1828.  
  1829. /* Setting to scroll one page for SPI_GET/SETWHEELSCROLLLINES */
  1830. #define WHEEL_PAGESCROLL                (UINT_MAX)
  1831. #endif /* _WIN32_WINNT >= 0x0400 */
  1832.  
  1833. #if(_WIN32_WINNT >= 0x0500)
  1834. #define GET_KEYSTATE_WPARAM(wParam)     (LOWORD(wParam))
  1835. #define GET_NCHITTEST_WPARAM(wParam)    ((short)LOWORD(wParam))
  1836. #define GET_XBUTTON_WPARAM(wParam)      (HIWORD(wParam))
  1837.  
  1838. /* XButton values are WORD flags */
  1839. #define XBUTTON1      0x0001
  1840. #define XBUTTON2      0x0002
  1841. /* Were there to be an XBUTTON3, it's value would be 0x0004 */
  1842. #endif /* _WIN32_WINNT >= 0x0500 */
  1843.  
  1844. #define WM_PARENTNOTIFY                 0x0210
  1845. #define WM_ENTERMENULOOP                0x0211
  1846. #define WM_EXITMENULOOP                 0x0212
  1847.  
  1848. #if(WINVER >= 0x0400)
  1849. #define WM_NEXTMENU                     0x0213
  1850. #define WM_SIZING                       0x0214
  1851. #define WM_CAPTURECHANGED               0x0215
  1852. #define WM_MOVING                       0x0216
  1853. #endif /* WINVER >= 0x0400 */
  1854.  
  1855. #if(WINVER >= 0x0400)
  1856.  
  1857.  
  1858. #define WM_POWERBROADCAST               0x0218
  1859.  
  1860. #ifndef _WIN32_WCE
  1861. #define PBT_APMQUERYSUSPEND             0x0000
  1862. #define PBT_APMQUERYSTANDBY             0x0001
  1863.  
  1864. #define PBT_APMQUERYSUSPENDFAILED       0x0002
  1865. #define PBT_APMQUERYSTANDBYFAILED       0x0003
  1866.  
  1867. #define PBT_APMSUSPEND                  0x0004
  1868. #define PBT_APMSTANDBY                  0x0005
  1869.  
  1870. #define PBT_APMRESUMECRITICAL           0x0006
  1871. #define PBT_APMRESUMESUSPEND            0x0007
  1872. #define PBT_APMRESUMESTANDBY            0x0008
  1873.  
  1874. #define PBTF_APMRESUMEFROMFAILURE       0x00000001
  1875.  
  1876. #define PBT_APMBATTERYLOW               0x0009
  1877. #define PBT_APMPOWERSTATUSCHANGE        0x000A
  1878.  
  1879. #define PBT_APMOEMEVENT                 0x000B
  1880. #define PBT_APMRESUMEAUTOMATIC          0x0012
  1881. #endif
  1882.  
  1883. #endif /* WINVER >= 0x0400 */
  1884.  
  1885. #if(WINVER >= 0x0400)
  1886. #define WM_DEVICECHANGE                 0x0219
  1887. #endif /* WINVER >= 0x0400 */
  1888.  
  1889. #define WM_MDICREATE                    0x0220
  1890. #define WM_MDIDESTROY                   0x0221
  1891. #define WM_MDIACTIVATE                  0x0222
  1892. #define WM_MDIRESTORE                   0x0223
  1893. #define WM_MDINEXT                      0x0224
  1894. #define WM_MDIMAXIMIZE                  0x0225
  1895. #define WM_MDITILE                      0x0226
  1896. #define WM_MDICASCADE                   0x0227
  1897. #define WM_MDIICONARRANGE               0x0228
  1898. #define WM_MDIGETACTIVE                 0x0229
  1899.  
  1900.  
  1901. #define WM_MDISETMENU                   0x0230
  1902. #define WM_ENTERSIZEMOVE                0x0231
  1903. #define WM_EXITSIZEMOVE                 0x0232
  1904. #define WM_DROPFILES                    0x0233
  1905. #define WM_MDIREFRESHMENU               0x0234
  1906.  
  1907.  
  1908. #if(WINVER >= 0x0400)
  1909. #define WM_IME_SETCONTEXT               0x0281
  1910. #define WM_IME_NOTIFY                   0x0282
  1911. #define WM_IME_CONTROL                  0x0283
  1912. #define WM_IME_COMPOSITIONFULL          0x0284
  1913. #define WM_IME_SELECT                   0x0285
  1914. #define WM_IME_CHAR                     0x0286
  1915. #endif /* WINVER >= 0x0400 */
  1916. #if(WINVER >= 0x0500)
  1917. #define WM_IME_REQUEST                  0x0288
  1918. #endif /* WINVER >= 0x0500 */
  1919. #if(WINVER >= 0x0400)
  1920. #define WM_IME_KEYDOWN                  0x0290
  1921. #define WM_IME_KEYUP                    0x0291
  1922. #endif /* WINVER >= 0x0400 */
  1923.  
  1924. #if((_WIN32_WINNT >= 0x0400) || (WINVER >= 0x0500))
  1925. #define WM_MOUSEHOVER                   0x02A1
  1926. #define WM_MOUSELEAVE                   0x02A3
  1927. #endif
  1928. #if(WINVER >= 0x0500)
  1929. #define WM_NCMOUSEHOVER                 0x02A0
  1930. #define WM_NCMOUSELEAVE                 0x02A2
  1931. #endif /* WINVER >= 0x0500 */
  1932.  
  1933. #define WM_CUT                          0x0300
  1934. #define WM_COPY                         0x0301
  1935. #define WM_PASTE                        0x0302
  1936. #define WM_CLEAR                        0x0303
  1937. #define WM_UNDO                         0x0304
  1938. #define WM_RENDERFORMAT                 0x0305
  1939. #define WM_RENDERALLFORMATS             0x0306
  1940. #define WM_DESTROYCLIPBOARD             0x0307
  1941. #define WM_DRAWCLIPBOARD                0x0308
  1942. #define WM_PAINTCLIPBOARD               0x0309
  1943. #define WM_VSCROLLCLIPBOARD             0x030A
  1944. #define WM_SIZECLIPBOARD                0x030B
  1945. #define WM_ASKCBFORMATNAME              0x030C
  1946. #define WM_CHANGECBCHAIN                0x030D
  1947. #define WM_HSCROLLCLIPBOARD             0x030E
  1948. #define WM_QUERYNEWPALETTE              0x030F
  1949. #define WM_PALETTEISCHANGING            0x0310
  1950. #define WM_PALETTECHANGED               0x0311
  1951. #define WM_HOTKEY                       0x0312
  1952.  
  1953. #if(WINVER >= 0x0400)
  1954. #define WM_PRINT                        0x0317
  1955. #define WM_PRINTCLIENT                  0x0318
  1956. #endif /* WINVER >= 0x0400 */
  1957.  
  1958. #if(_WIN32_WINNT >= 0x0500)
  1959. #define WM_APPCOMMAND                   0x0319
  1960. #endif /* _WIN32_WINNT >= 0x0500 */
  1961.  
  1962. #if(WINVER >= 0x0400)
  1963.  
  1964. #define WM_HANDHELDFIRST                0x0358
  1965. #define WM_HANDHELDLAST                 0x035F
  1966.  
  1967. #define WM_AFXFIRST                     0x0360
  1968. #define WM_AFXLAST                      0x037F
  1969. #endif /* WINVER >= 0x0400 */
  1970.  
  1971. #define WM_PENWINFIRST                  0x0380
  1972. #define WM_PENWINLAST                   0x038F
  1973.  
  1974.  
  1975. #if(WINVER >= 0x0400)
  1976. #define WM_APP                          0x8000
  1977. #endif /* WINVER >= 0x0400 */
  1978.  
  1979.  
  1980. /*
  1981.  * NOTE: All Message Numbers below 0x0400 are RESERVED.
  1982.  *
  1983.  * Private Window Messages Start Here:
  1984.  */
  1985. #define WM_USER                         0x0400
  1986.  
  1987. #if(WINVER >= 0x0400)
  1988.  
  1989. /*  wParam for WM_SIZING message  */
  1990. #define WMSZ_LEFT           1
  1991. #define WMSZ_RIGHT          2
  1992. #define WMSZ_TOP            3
  1993. #define WMSZ_TOPLEFT        4
  1994. #define WMSZ_TOPRIGHT       5
  1995. #define WMSZ_BOTTOM         6
  1996. #define WMSZ_BOTTOMLEFT     7
  1997. #define WMSZ_BOTTOMRIGHT    8
  1998. #endif /* WINVER >= 0x0400 */
  1999.  
  2000. #ifndef NONCMESSAGES
  2001.  
  2002. /*
  2003.  * WM_NCHITTEST and MOUSEHOOKSTRUCT Mouse Position Codes
  2004.  */
  2005. #define HTERROR             (-2)
  2006. #define HTTRANSPARENT       (-1)
  2007. #define HTNOWHERE           0
  2008. #define HTCLIENT            1
  2009. #define HTCAPTION           2
  2010. #define HTSYSMENU           3
  2011. #define HTGROWBOX           4
  2012. #define HTSIZE              HTGROWBOX
  2013. #define HTMENU              5
  2014. #define HTHSCROLL           6
  2015. #define HTVSCROLL           7
  2016. #define HTMINBUTTON         8
  2017. #define HTMAXBUTTON         9
  2018. #define HTLEFT              10
  2019. #define HTRIGHT             11
  2020. #define HTTOP               12
  2021. #define HTTOPLEFT           13
  2022. #define HTTOPRIGHT          14
  2023. #define HTBOTTOM            15
  2024. #define HTBOTTOMLEFT        16
  2025. #define HTBOTTOMRIGHT       17
  2026. #define HTBORDER            18
  2027. #define HTREDUCE            HTMINBUTTON
  2028. #define HTZOOM              HTMAXBUTTON
  2029. #define HTSIZEFIRST         HTLEFT
  2030. #define HTSIZELAST          HTBOTTOMRIGHT
  2031. #if(WINVER >= 0x0400)
  2032. #define HTOBJECT            19
  2033. #define HTCLOSE             20
  2034. #define HTHELP              21
  2035. #endif /* WINVER >= 0x0400 */
  2036.  
  2037. /*
  2038.  * SendMessageTimeout values
  2039.  */
  2040. #define SMTO_NORMAL         0x0000
  2041. #define SMTO_BLOCK          0x0001
  2042. #define SMTO_ABORTIFHUNG    0x0002
  2043. #if(WINVER >= 0x0500)
  2044. #define SMTO_NOTIMEOUTIFNOTHUNG 0x0008
  2045. #endif /* WINVER >= 0x0500 */
  2046. #endif /* !NONCMESSAGES */
  2047.  
  2048. /*
  2049.  * WM_MOUSEACTIVATE Return Codes
  2050.  */
  2051. #define MA_ACTIVATE         1
  2052. #define MA_ACTIVATEANDEAT   2
  2053. #define MA_NOACTIVATE       3
  2054. #define MA_NOACTIVATEANDEAT 4
  2055.  
  2056. /*
  2057.  * WM_SETICON / WM_GETICON Type Codes
  2058.  */
  2059. #define ICON_SMALL          0
  2060. #define ICON_BIG            1
  2061.  
  2062.  
  2063. WINUSERAPI
  2064. UINT
  2065. WINAPI
  2066. RegisterWindowMessageA(
  2067.     IN LPCSTR lpString);
  2068. WINUSERAPI
  2069. UINT
  2070. WINAPI
  2071. RegisterWindowMessageW(
  2072.     IN LPCWSTR lpString);
  2073. #ifdef UNICODE
  2074. #define RegisterWindowMessage  RegisterWindowMessageW
  2075. #else
  2076. #define RegisterWindowMessage  RegisterWindowMessageA
  2077. #endif // !UNICODE
  2078.  
  2079.  
  2080. /*
  2081.  * WM_SIZE message wParam values
  2082.  */
  2083. #define SIZE_RESTORED       0
  2084. #define SIZE_MINIMIZED      1
  2085. #define SIZE_MAXIMIZED      2
  2086. #define SIZE_MAXSHOW        3
  2087. #define SIZE_MAXHIDE        4
  2088.  
  2089. /*
  2090.  * Obsolete constant names
  2091.  */
  2092. #define SIZENORMAL          SIZE_RESTORED
  2093. #define SIZEICONIC          SIZE_MINIMIZED
  2094. #define SIZEFULLSCREEN      SIZE_MAXIMIZED
  2095. #define SIZEZOOMSHOW        SIZE_MAXSHOW
  2096. #define SIZEZOOMHIDE        SIZE_MAXHIDE
  2097.  
  2098. /*
  2099.  * WM_WINDOWPOSCHANGING/CHANGED struct pointed to by lParam
  2100.  */
  2101. typedef struct tagWINDOWPOS {
  2102.     HWND    hwnd;
  2103.     HWND    hwndInsertAfter;
  2104.     int     x;
  2105.     int     y;
  2106.     int     cx;
  2107.     int     cy;
  2108.     UINT    flags;
  2109. } WINDOWPOS, *LPWINDOWPOS, *PWINDOWPOS;
  2110.  
  2111. /*
  2112.  * WM_NCCALCSIZE parameter structure
  2113.  */
  2114. typedef struct tagNCCALCSIZE_PARAMS {
  2115.     RECT       rgrc[3];
  2116.     PWINDOWPOS lppos;
  2117. } NCCALCSIZE_PARAMS, *LPNCCALCSIZE_PARAMS;
  2118.  
  2119. /*
  2120.  * WM_NCCALCSIZE "window valid rect" return values
  2121.  */
  2122. #define WVR_ALIGNTOP        0x0010
  2123. #define WVR_ALIGNLEFT       0x0020
  2124. #define WVR_ALIGNBOTTOM     0x0040
  2125. #define WVR_ALIGNRIGHT      0x0080
  2126. #define WVR_HREDRAW         0x0100
  2127. #define WVR_VREDRAW         0x0200
  2128. #define WVR_REDRAW         (WVR_HREDRAW | \
  2129.                             WVR_VREDRAW)
  2130. #define WVR_VALIDRECTS      0x0400
  2131.  
  2132.  
  2133. #ifndef NOKEYSTATES
  2134.  
  2135. /*
  2136.  * Key State Masks for Mouse Messages
  2137.  */
  2138. #define MK_LBUTTON          0x0001
  2139. #define MK_RBUTTON          0x0002
  2140. #define MK_SHIFT            0x0004
  2141. #define MK_CONTROL          0x0008
  2142. #define MK_MBUTTON          0x0010
  2143. #if(_WIN32_WINNT >= 0x0500)
  2144. #define MK_XBUTTON1         0x0020
  2145. #define MK_XBUTTON2         0x0040
  2146. #endif /* _WIN32_WINNT >= 0x0500 */
  2147.  
  2148. #endif /* !NOKEYSTATES */
  2149.  
  2150.  
  2151. #if(_WIN32_WINNT >= 0x0400)
  2152. #ifndef NOTRACKMOUSEEVENT
  2153.  
  2154. #define TME_HOVER       0x00000001
  2155. #define TME_LEAVE       0x00000002
  2156. #if(WINVER >= 0x0500)
  2157. #define TME_NONCLIENT   0x00000010
  2158. #endif /* WINVER >= 0x0500 */
  2159. #define TME_QUERY       0x40000000
  2160. #define TME_CANCEL      0x80000000
  2161.  
  2162.  
  2163. #define HOVER_DEFAULT   0xFFFFFFFF
  2164. #endif /* _WIN32_WINNT >= 0x0400 */
  2165.  
  2166. #if(_WIN32_WINNT >= 0x0400)
  2167. typedef struct tagTRACKMOUSEEVENT {
  2168.     DWORD cbSize;
  2169.     DWORD dwFlags;
  2170.     HWND  hwndTrack;
  2171.     DWORD dwHoverTime;
  2172. } TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT;
  2173.  
  2174. WINUSERAPI
  2175. BOOL
  2176. WINAPI
  2177. TrackMouseEvent(
  2178.     IN OUT LPTRACKMOUSEEVENT lpEventTrack);
  2179. #endif /* _WIN32_WINNT >= 0x0400 */
  2180.  
  2181. #if(_WIN32_WINNT >= 0x0400)
  2182.  
  2183. #endif /* !NOTRACKMOUSEEVENT */
  2184. #endif /* _WIN32_WINNT >= 0x0400 */
  2185.  
  2186.  
  2187. #endif /* !NOWINMESSAGES */
  2188.  
  2189. #ifndef NOWINSTYLES
  2190.  
  2191.  
  2192. /*
  2193.  * Window Styles
  2194.  */
  2195. #define WS_OVERLAPPED       0x00000000L
  2196. #define WS_POPUP            0x80000000L
  2197. #define WS_CHILD            0x40000000L
  2198. #define WS_MINIMIZE         0x20000000L
  2199. #define WS_VISIBLE          0x10000000L
  2200. #define WS_DISABLED         0x08000000L
  2201. #define WS_CLIPSIBLINGS     0x04000000L
  2202. #define WS_CLIPCHILDREN     0x02000000L
  2203. #define WS_MAXIMIZE         0x01000000L
  2204. #define WS_CAPTION          0x00C00000L     /* WS_BORDER | WS_DLGFRAME  */
  2205. #define WS_BORDER           0x00800000L
  2206. #define WS_DLGFRAME         0x00400000L
  2207. #define WS_VSCROLL          0x00200000L
  2208. #define WS_HSCROLL          0x00100000L
  2209. #define WS_SYSMENU          0x00080000L
  2210. #define WS_THICKFRAME       0x00040000L
  2211. #define WS_GROUP            0x00020000L
  2212. #define WS_TABSTOP          0x00010000L
  2213.  
  2214. #define WS_MINIMIZEBOX      0x00020000L
  2215. #define WS_MAXIMIZEBOX      0x00010000L
  2216.  
  2217.  
  2218. #define WS_TILED            WS_OVERLAPPED
  2219. #define WS_ICONIC           WS_MINIMIZE
  2220. #define WS_SIZEBOX          WS_THICKFRAME
  2221. #define WS_TILEDWINDOW      WS_OVERLAPPEDWINDOW
  2222.  
  2223. /*
  2224.  * Common Window Styles
  2225.  */
  2226. #define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED     | \
  2227.                              WS_CAPTION        | \
  2228.                              WS_SYSMENU        | \
  2229.                              WS_THICKFRAME     | \
  2230.                              WS_MINIMIZEBOX    | \
  2231.                              WS_MAXIMIZEBOX)
  2232.  
  2233. #define WS_POPUPWINDOW      (WS_POPUP          | \
  2234.                              WS_BORDER         | \
  2235.                              WS_SYSMENU)
  2236.  
  2237. #define WS_CHILDWINDOW      (WS_CHILD)
  2238.  
  2239. /*
  2240.  * Extended Window Styles
  2241.  */
  2242. #define WS_EX_DLGMODALFRAME     0x00000001L
  2243. #define WS_EX_NOPARENTNOTIFY    0x00000004L
  2244. #define WS_EX_TOPMOST           0x00000008L
  2245. #define WS_EX_ACCEPTFILES       0x00000010L
  2246. #define WS_EX_TRANSPARENT       0x00000020L
  2247. #if(WINVER >= 0x0400)
  2248. #define WS_EX_MDICHILD          0x00000040L
  2249. #define WS_EX_TOOLWINDOW        0x00000080L
  2250. #define WS_EX_WINDOWEDGE        0x00000100L
  2251. #define WS_EX_CLIENTEDGE        0x00000200L
  2252. #define WS_EX_CONTEXTHELP       0x00000400L
  2253.  
  2254. #define WS_EX_RIGHT             0x00001000L
  2255. #define WS_EX_LEFT              0x00000000L
  2256. #define WS_EX_RTLREADING        0x00002000L
  2257. #define WS_EX_LTRREADING        0x00000000L
  2258. #define WS_EX_LEFTSCROLLBAR     0x00004000L
  2259. #define WS_EX_RIGHTSCROLLBAR    0x00000000L
  2260.  
  2261. #define WS_EX_CONTROLPARENT     0x00010000L
  2262. #define WS_EX_STATICEDGE        0x00020000L
  2263. #define WS_EX_APPWINDOW         0x00040000L
  2264.  
  2265.  
  2266. #define WS_EX_OVERLAPPEDWINDOW  (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE)
  2267. #define WS_EX_PALETTEWINDOW     (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST)
  2268.  
  2269. #endif /* WINVER >= 0x0400 */
  2270.  
  2271. #if(_WIN32_WINNT >= 0x0500)
  2272. #define WS_EX_LAYERED           0x00080000
  2273. #endif /* _WIN32_WINNT >= 0x0500 */
  2274.  
  2275.  
  2276. #if(WINVER >= 0x0500)
  2277. #define WS_EX_NOINHERITLAYOUT   0x00100000L // Disable inheritence of mirroring by children
  2278. #define WS_EX_LAYOUTRTL         0x00400000L // Right to left mirroring
  2279. #endif /* WINVER >= 0x0500 */
  2280.  
  2281. #if(_WIN32_WINNT >= 0x0500)
  2282. #define WS_EX_NOACTIVATE        0x08000000L
  2283. #endif /* _WIN32_WINNT >= 0x0500 */
  2284.  
  2285.  
  2286. /*
  2287.  * Class styles
  2288.  */
  2289. #define CS_VREDRAW          0x0001
  2290. #define CS_HREDRAW          0x0002
  2291. #define CS_DBLCLKS          0x0008
  2292. #define CS_OWNDC            0x0020
  2293. #define CS_CLASSDC          0x0040
  2294. #define CS_PARENTDC         0x0080
  2295. #define CS_NOCLOSE          0x0200
  2296. #define CS_SAVEBITS         0x0800
  2297. #define CS_BYTEALIGNCLIENT  0x1000
  2298. #define CS_BYTEALIGNWINDOW  0x2000
  2299. #define CS_GLOBALCLASS      0x4000
  2300.  
  2301. #define CS_IME              0x00010000
  2302.  
  2303.  
  2304.  
  2305. #endif /* !NOWINSTYLES */
  2306. #if(WINVER >= 0x0400)
  2307. /* WM_PRINT flags */
  2308. #define PRF_CHECKVISIBLE    0x00000001L
  2309. #define PRF_NONCLIENT       0x00000002L
  2310. #define PRF_CLIENT          0x00000004L
  2311. #define PRF_ERASEBKGND      0x00000008L
  2312. #define PRF_CHILDREN        0x00000010L
  2313. #define PRF_OWNED           0x00000020L
  2314.  
  2315. /* 3D border styles */
  2316. #define BDR_RAISEDOUTER 0x0001
  2317. #define BDR_SUNKENOUTER 0x0002
  2318. #define BDR_RAISEDINNER 0x0004
  2319. #define BDR_SUNKENINNER 0x0008
  2320.  
  2321. #define BDR_OUTER       (BDR_RAISEDOUTER | BDR_SUNKENOUTER)
  2322. #define BDR_INNER       (BDR_RAISEDINNER | BDR_SUNKENINNER)
  2323. #define BDR_RAISED      (BDR_RAISEDOUTER | BDR_RAISEDINNER)
  2324. #define BDR_SUNKEN      (BDR_SUNKENOUTER | BDR_SUNKENINNER)
  2325.  
  2326.  
  2327. #define EDGE_RAISED     (BDR_RAISEDOUTER | BDR_RAISEDINNER)
  2328. #define EDGE_SUNKEN     (BDR_SUNKENOUTER | BDR_SUNKENINNER)
  2329. #define EDGE_ETCHED     (BDR_SUNKENOUTER | BDR_RAISEDINNER)
  2330. #define EDGE_BUMP       (BDR_RAISEDOUTER | BDR_SUNKENINNER)
  2331.  
  2332. /* Border flags */
  2333. #define BF_LEFT         0x0001
  2334. #define BF_TOP          0x0002
  2335. #define BF_RIGHT        0x0004
  2336. #define BF_BOTTOM       0x0008
  2337.  
  2338. #define BF_TOPLEFT      (BF_TOP | BF_LEFT)
  2339. #define BF_TOPRIGHT     (BF_TOP | BF_RIGHT)
  2340. #define BF_BOTTOMLEFT   (BF_BOTTOM | BF_LEFT)
  2341. #define BF_BOTTOMRIGHT  (BF_BOTTOM | BF_RIGHT)
  2342. #define BF_RECT         (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM)
  2343.  
  2344. #define BF_DIAGONAL     0x0010
  2345.  
  2346. // For diagonal lines, the BF_RECT flags specify the end point of the
  2347. // vector bounded by the rectangle parameter.
  2348. #define BF_DIAGONAL_ENDTOPRIGHT     (BF_DIAGONAL | BF_TOP | BF_RIGHT)
  2349. #define BF_DIAGONAL_ENDTOPLEFT      (BF_DIAGONAL | BF_TOP | BF_LEFT)
  2350. #define BF_DIAGONAL_ENDBOTTOMLEFT   (BF_DIAGONAL | BF_BOTTOM | BF_LEFT)
  2351. #define BF_DIAGONAL_ENDBOTTOMRIGHT  (BF_DIAGONAL | BF_BOTTOM | BF_RIGHT)
  2352.  
  2353.  
  2354. #define BF_MIDDLE       0x0800  /* Fill in the middle */
  2355. #define BF_SOFT         0x1000  /* For softer buttons */
  2356. #define BF_ADJUST       0x2000  /* Calculate the space left over */
  2357. #define BF_FLAT         0x4000  /* For flat rather than 3D borders */
  2358. #define BF_MONO         0x8000  /* For monochrome borders */
  2359.  
  2360.  
  2361. WINUSERAPI
  2362. BOOL
  2363. WINAPI
  2364. DrawEdge(
  2365.     IN HDC hdc,
  2366.     IN OUT LPRECT qrc,
  2367.     IN UINT edge,
  2368.     IN UINT grfFlags);
  2369.  
  2370. /* flags for DrawFrameControl */
  2371.  
  2372. #define DFC_CAPTION             1
  2373. #define DFC_MENU                2
  2374. #define DFC_SCROLL              3
  2375. #define DFC_BUTTON              4
  2376. #if(WINVER >= 0x0500)
  2377. #define DFC_POPUPMENU           5
  2378. #endif /* WINVER >= 0x0500 */
  2379.  
  2380. #define DFCS_CAPTIONCLOSE       0x0000
  2381. #define DFCS_CAPTIONMIN         0x0001
  2382. #define DFCS_CAPTIONMAX         0x0002
  2383. #define DFCS_CAPTIONRESTORE     0x0003
  2384. #define DFCS_CAPTIONHELP        0x0004
  2385.  
  2386. #define DFCS_MENUARROW          0x0000
  2387. #define DFCS_MENUCHECK          0x0001
  2388. #define DFCS_MENUBULLET         0x0002
  2389. #define DFCS_MENUARROWRIGHT     0x0004
  2390. #define DFCS_SCROLLUP           0x0000
  2391. #define DFCS_SCROLLDOWN         0x0001
  2392. #define DFCS_SCROLLLEFT         0x0002
  2393. #define DFCS_SCROLLRIGHT        0x0003
  2394. #define DFCS_SCROLLCOMBOBOX     0x0005
  2395. #define DFCS_SCROLLSIZEGRIP     0x0008
  2396. #define DFCS_SCROLLSIZEGRIPRIGHT 0x0010
  2397.  
  2398. #define DFCS_BUTTONCHECK        0x0000
  2399. #define DFCS_BUTTONRADIOIMAGE   0x0001
  2400. #define DFCS_BUTTONRADIOMASK    0x0002
  2401. #define DFCS_BUTTONRADIO        0x0004
  2402. #define DFCS_BUTTON3STATE       0x0008
  2403. #define DFCS_BUTTONPUSH         0x0010
  2404.  
  2405. #define DFCS_INACTIVE           0x0100
  2406. #define DFCS_PUSHED             0x0200
  2407. #define DFCS_CHECKED            0x0400
  2408.  
  2409. #if(WINVER >= 0x0500)
  2410. #define DFCS_TRANSPARENT        0x0800
  2411. #define DFCS_HOT                0x1000
  2412. #endif /* WINVER >= 0x0500 */
  2413.  
  2414. #define DFCS_ADJUSTRECT         0x2000
  2415. #define DFCS_FLAT               0x4000
  2416. #define DFCS_MONO               0x8000
  2417.  
  2418. WINUSERAPI
  2419. BOOL
  2420. WINAPI
  2421. DrawFrameControl(
  2422.     IN HDC,
  2423.     IN OUT LPRECT,
  2424.     IN UINT,
  2425.     IN UINT);
  2426.  
  2427.  
  2428. /* flags for DrawCaption */
  2429. #define DC_ACTIVE           0x0001
  2430. #define DC_SMALLCAP         0x0002
  2431. #define DC_ICON             0x0004
  2432. #define DC_TEXT             0x0008
  2433. #define DC_INBUTTON         0x0010
  2434. #if(WINVER >= 0x0500)
  2435. #define DC_GRADIENT         0x0020
  2436. #endif /* WINVER >= 0x0500 */
  2437.  
  2438. WINUSERAPI
  2439. BOOL
  2440. WINAPI
  2441. DrawCaption( IN HWND, IN HDC, IN CONST RECT *, IN UINT);
  2442.  
  2443.  
  2444. #define IDANI_OPEN          1
  2445.  
  2446. WINUSERAPI
  2447. BOOL
  2448. WINAPI
  2449. DrawAnimatedRects(
  2450.     IN HWND hwnd,
  2451.     IN int idAni,
  2452.     IN CONST RECT * lprcFrom,
  2453.     IN CONST RECT * lprcTo);
  2454.  
  2455. #endif /* WINVER >= 0x0400 */
  2456.  
  2457. #ifndef NOCLIPBOARD
  2458.  
  2459.  
  2460. /*
  2461.  * Predefined Clipboard Formats
  2462.  */
  2463. #define CF_TEXT             1
  2464. #define CF_BITMAP           2
  2465. #define CF_METAFILEPICT     3
  2466. #define CF_SYLK             4
  2467. #define CF_DIF              5
  2468. #define CF_TIFF             6
  2469. #define CF_OEMTEXT          7
  2470. #define CF_DIB              8
  2471. #define CF_PALETTE          9
  2472. #define CF_PENDATA          10
  2473. #define CF_RIFF             11
  2474. #define CF_WAVE             12
  2475. #define CF_UNICODETEXT      13
  2476. #define CF_ENHMETAFILE      14
  2477. #if(WINVER >= 0x0400)
  2478. #define CF_HDROP            15
  2479. #define CF_LOCALE           16
  2480. #endif /* WINVER >= 0x0400 */
  2481. #if(WINVER >= 0x0500)
  2482. #define CF_DIBV5            17
  2483. #endif /* WINVER >= 0x0500 */
  2484.  
  2485. #if(WINVER >= 0x0500)
  2486. #define CF_MAX              18
  2487. #elif(WINVER >= 0x0400)
  2488. #define CF_MAX              17
  2489. #else
  2490. #define CF_MAX              15
  2491. #endif
  2492.  
  2493. #define CF_OWNERDISPLAY     0x0080
  2494. #define CF_DSPTEXT          0x0081
  2495. #define CF_DSPBITMAP        0x0082
  2496. #define CF_DSPMETAFILEPICT  0x0083
  2497. #define CF_DSPENHMETAFILE   0x008E
  2498.  
  2499. /*
  2500.  * "Private" formats don't get GlobalFree()'d
  2501.  */
  2502. #define CF_PRIVATEFIRST     0x0200
  2503. #define CF_PRIVATELAST      0x02FF
  2504.  
  2505. /*
  2506.  * "GDIOBJ" formats do get DeleteObject()'d
  2507.  */
  2508. #define CF_GDIOBJFIRST      0x0300
  2509. #define CF_GDIOBJLAST       0x03FF
  2510.  
  2511.  
  2512. #endif /* !NOCLIPBOARD */
  2513.  
  2514. /*
  2515.  * Defines for the fVirt field of the Accelerator table structure.
  2516.  */
  2517. #define FVIRTKEY  TRUE          /* Assumed to be == TRUE */
  2518. #define FNOINVERT 0x02
  2519. #define FSHIFT    0x04
  2520. #define FCONTROL  0x08
  2521. #define FALT      0x10
  2522.  
  2523. typedef struct tagACCEL {
  2524. #ifndef _MAC
  2525.     BYTE   fVirt;               /* Also called the flags field */
  2526.     WORD   key;
  2527.     WORD   cmd;
  2528. #else
  2529.     WORD   fVirt;               /* Also called the flags field */
  2530.     WORD   key;
  2531.     DWORD  cmd;
  2532. #endif
  2533. } ACCEL, *LPACCEL;
  2534.  
  2535. typedef struct tagPAINTSTRUCT {
  2536.     HDC         hdc;
  2537.     BOOL        fErase;
  2538.     RECT        rcPaint;
  2539.     BOOL        fRestore;
  2540.     BOOL        fIncUpdate;
  2541.     BYTE        rgbReserved[32];
  2542. } PAINTSTRUCT, *PPAINTSTRUCT, *NPPAINTSTRUCT, *LPPAINTSTRUCT;
  2543.  
  2544. typedef struct tagCREATESTRUCTA {
  2545.     LPVOID      lpCreateParams;
  2546.     HINSTANCE   hInstance;
  2547.     HMENU       hMenu;
  2548.     HWND        hwndParent;
  2549.     int         cy;
  2550.     int         cx;
  2551.     int         y;
  2552.     int         x;
  2553.     LONG        style;
  2554.     LPCSTR      lpszName;
  2555.     LPCSTR      lpszClass;
  2556.     DWORD       dwExStyle;
  2557. } CREATESTRUCTA, *LPCREATESTRUCTA;
  2558. typedef struct tagCREATESTRUCTW {
  2559.     LPVOID      lpCreateParams;
  2560.     HINSTANCE   hInstance;
  2561.     HMENU       hMenu;
  2562.     HWND        hwndParent;
  2563.     int         cy;
  2564.     int         cx;
  2565.     int         y;
  2566.     int         x;
  2567.     LONG        style;
  2568.     LPCWSTR     lpszName;
  2569.     LPCWSTR     lpszClass;
  2570.     DWORD       dwExStyle;
  2571. } CREATESTRUCTW, *LPCREATESTRUCTW;
  2572. #ifdef UNICODE
  2573. typedef CREATESTRUCTW CREATESTRUCT;
  2574. typedef LPCREATESTRUCTW LPCREATESTRUCT;
  2575. #else
  2576. typedef CREATESTRUCTA CREATESTRUCT;
  2577. typedef LPCREATESTRUCTA LPCREATESTRUCT;
  2578. #endif // UNICODE
  2579.  
  2580. typedef struct tagWINDOWPLACEMENT {
  2581.     UINT  length;
  2582.     UINT  flags;
  2583.     UINT  showCmd;
  2584.     POINT ptMinPosition;
  2585.     POINT ptMaxPosition;
  2586.     RECT  rcNormalPosition;
  2587. #ifdef _MAC
  2588.     RECT  rcDevice;
  2589. #endif
  2590. } WINDOWPLACEMENT;
  2591. typedef WINDOWPLACEMENT *PWINDOWPLACEMENT, *LPWINDOWPLACEMENT;
  2592.  
  2593. #define WPF_SETMINPOSITION          0x0001
  2594. #define WPF_RESTORETOMAXIMIZED      0x0002
  2595. #if(_WIN32_WINNT >= 0x0500)
  2596. #define WPF_ASYNCWINDOWPLACEMENT    0x0004
  2597. #endif /* _WIN32_WINNT >= 0x0500 */
  2598.  
  2599. #if(WINVER >= 0x0400)
  2600. typedef struct tagNMHDR
  2601. {
  2602.     HWND      hwndFrom;
  2603.     UINT_PTR  idFrom;
  2604.     UINT      code;         // NM_ code
  2605. }   NMHDR;
  2606. typedef NMHDR FAR * LPNMHDR;
  2607.  
  2608. typedef struct tagSTYLESTRUCT
  2609. {
  2610.     DWORD   styleOld;
  2611.     DWORD   styleNew;
  2612. } STYLESTRUCT, * LPSTYLESTRUCT;
  2613. #endif /* WINVER >= 0x0400 */
  2614.  
  2615.  
  2616. /*
  2617.  * Owner draw control types
  2618.  */
  2619. #define ODT_MENU        1
  2620. #define ODT_LISTBOX     2
  2621. #define ODT_COMBOBOX    3
  2622. #define ODT_BUTTON      4
  2623. #if(WINVER >= 0x0400)
  2624. #define ODT_STATIC      5
  2625. #endif /* WINVER >= 0x0400 */
  2626.  
  2627. /*
  2628.  * Owner draw actions
  2629.  */
  2630. #define ODA_DRAWENTIRE  0x0001
  2631. #define ODA_SELECT      0x0002
  2632. #define ODA_FOCUS       0x0004
  2633.  
  2634. /*
  2635.  * Owner draw state
  2636.  */
  2637. #define ODS_SELECTED    0x0001
  2638. #define ODS_GRAYED      0x0002
  2639. #define ODS_DISABLED    0x0004
  2640. #define ODS_CHECKED     0x0008
  2641. #define ODS_FOCUS       0x0010
  2642. #if(WINVER >= 0x0400)
  2643. #define ODS_DEFAULT         0x0020
  2644. #define ODS_COMBOBOXEDIT    0x1000
  2645. #endif /* WINVER >= 0x0400 */
  2646. #if(WINVER >= 0x0500)
  2647. #define ODS_HOTLIGHT        0x0040
  2648. #define ODS_INACTIVE        0x0080
  2649. #if(_WIN32_WINNT >= 0x0500)
  2650. #define ODS_NOACCEL         0x0100
  2651. #define ODS_NOFOCUSRECT     0x0200
  2652. #endif /* _WIN32_WINNT >= 0x0500 */
  2653. #endif /* WINVER >= 0x0500 */
  2654.  
  2655. /*
  2656.  * MEASUREITEMSTRUCT for ownerdraw
  2657.  */
  2658. typedef struct tagMEASUREITEMSTRUCT {
  2659.     UINT       CtlType;
  2660.     UINT       CtlID;
  2661.     UINT       itemID;
  2662.     UINT       itemWidth;
  2663.     UINT       itemHeight;
  2664.     ULONG_PTR  itemData;
  2665. } MEASUREITEMSTRUCT, NEAR *PMEASUREITEMSTRUCT, FAR *LPMEASUREITEMSTRUCT;
  2666.  
  2667.  
  2668. /*
  2669.  * DRAWITEMSTRUCT for ownerdraw
  2670.  */
  2671. typedef struct tagDRAWITEMSTRUCT {
  2672.     UINT        CtlType;
  2673.     UINT        CtlID;
  2674.     UINT        itemID;
  2675.     UINT        itemAction;
  2676.     UINT        itemState;
  2677.     HWND        hwndItem;
  2678.     HDC         hDC;
  2679.     RECT        rcItem;
  2680.     ULONG_PTR   itemData;
  2681. } DRAWITEMSTRUCT, NEAR *PDRAWITEMSTRUCT, FAR *LPDRAWITEMSTRUCT;
  2682.  
  2683. /*
  2684.  * DELETEITEMSTRUCT for ownerdraw
  2685.  */
  2686. typedef struct tagDELETEITEMSTRUCT {
  2687.     UINT       CtlType;
  2688.     UINT       CtlID;
  2689.     UINT       itemID;
  2690.     HWND       hwndItem;
  2691.     ULONG_PTR  itemData;
  2692. } DELETEITEMSTRUCT, NEAR *PDELETEITEMSTRUCT, FAR *LPDELETEITEMSTRUCT;
  2693.  
  2694. /*
  2695.  * COMPAREITEMSTUCT for ownerdraw sorting
  2696.  */
  2697. typedef struct tagCOMPAREITEMSTRUCT {
  2698.     UINT        CtlType;
  2699.     UINT        CtlID;
  2700.     HWND        hwndItem;
  2701.     UINT        itemID1;
  2702.     ULONG_PTR   itemData1;
  2703.     UINT        itemID2;
  2704.     ULONG_PTR   itemData2;
  2705.     DWORD       dwLocaleId;
  2706. } COMPAREITEMSTRUCT, NEAR *PCOMPAREITEMSTRUCT, FAR *LPCOMPAREITEMSTRUCT;
  2707.  
  2708. #ifndef NOMSG
  2709.  
  2710. /*
  2711.  * Message Function Templates
  2712.  */
  2713.  
  2714. WINUSERAPI
  2715. BOOL
  2716. WINAPI
  2717. GetMessageA(
  2718.     OUT LPMSG lpMsg,
  2719.     IN HWND hWnd,
  2720.     IN UINT wMsgFilterMin,
  2721.     IN UINT wMsgFilterMax);
  2722. WINUSERAPI
  2723. BOOL
  2724. WINAPI
  2725. GetMessageW(
  2726.     OUT LPMSG lpMsg,
  2727.     IN HWND hWnd,
  2728.     IN UINT wMsgFilterMin,
  2729.     IN UINT wMsgFilterMax);
  2730. #ifdef UNICODE
  2731. #define GetMessage  GetMessageW
  2732. #else
  2733. #define GetMessage  GetMessageA
  2734. #endif // !UNICODE
  2735.  
  2736. WINUSERAPI
  2737. BOOL
  2738. WINAPI
  2739. TranslateMessage(
  2740.     IN CONST MSG *lpMsg);
  2741.  
  2742. WINUSERAPI
  2743. LRESULT
  2744. WINAPI
  2745. DispatchMessageA(
  2746.     IN CONST MSG *lpMsg);
  2747. WINUSERAPI
  2748. LRESULT
  2749. WINAPI
  2750. DispatchMessageW(
  2751.     IN CONST MSG *lpMsg);
  2752. #ifdef UNICODE
  2753. #define DispatchMessage  DispatchMessageW
  2754. #else
  2755. #define DispatchMessage  DispatchMessageA
  2756. #endif // !UNICODE
  2757.  
  2758.  
  2759. WINUSERAPI
  2760. BOOL
  2761. WINAPI
  2762. SetMessageQueue(
  2763.     IN int cMessagesMax);
  2764.  
  2765. WINUSERAPI
  2766. BOOL
  2767. WINAPI
  2768. PeekMessageA(
  2769.     OUT LPMSG lpMsg,
  2770.     IN HWND hWnd,
  2771.     IN UINT wMsgFilterMin,
  2772.     IN UINT wMsgFilterMax,
  2773.     IN UINT wRemoveMsg);
  2774. WINUSERAPI
  2775. BOOL
  2776. WINAPI
  2777. PeekMessageW(
  2778.     OUT LPMSG lpMsg,
  2779.     IN HWND hWnd,
  2780.     IN UINT wMsgFilterMin,
  2781.     IN UINT wMsgFilterMax,
  2782.     IN UINT wRemoveMsg);
  2783. #ifdef UNICODE
  2784. #define PeekMessage  PeekMessageW
  2785. #else
  2786. #define PeekMessage  PeekMessageA
  2787. #endif // !UNICODE
  2788.  
  2789. /*
  2790.  * PeekMessage() Options
  2791.  */
  2792. #define PM_NOREMOVE         0x0000
  2793. #define PM_REMOVE           0x0001
  2794. #define PM_NOYIELD          0x0002
  2795. #if(WINVER >= 0x0500)
  2796. #define PM_QS_INPUT         (QS_INPUT << 16)
  2797. #define PM_QS_POSTMESSAGE   ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16)
  2798. #define PM_QS_PAINT         (QS_PAINT << 16)
  2799. #define PM_QS_SENDMESSAGE   (QS_SENDMESSAGE << 16)
  2800. #endif /* WINVER >= 0x0500 */
  2801.  
  2802.  
  2803. #endif /* !NOMSG */
  2804.  
  2805. WINUSERAPI
  2806. BOOL
  2807. WINAPI
  2808. RegisterHotKey(
  2809.     IN HWND hWnd,
  2810.     IN int id,
  2811.     IN UINT fsModifiers,
  2812.     IN UINT vk);
  2813.  
  2814. WINUSERAPI
  2815. BOOL
  2816. WINAPI
  2817. UnregisterHotKey(
  2818.     IN HWND hWnd,
  2819.     IN int id);
  2820.  
  2821. #define MOD_ALT         0x0001
  2822. #define MOD_CONTROL     0x0002
  2823. #define MOD_SHIFT       0x0004
  2824. #define MOD_WIN         0x0008
  2825.  
  2826.  
  2827. #define IDHOT_SNAPWINDOW        (-1)    /* SHIFT-PRINTSCRN  */
  2828. #define IDHOT_SNAPDESKTOP       (-2)    /* PRINTSCRN        */
  2829.  
  2830. #ifdef WIN_INTERNAL
  2831.     #ifndef LSTRING
  2832.     #define NOLSTRING
  2833.     #endif /* LSTRING */
  2834.     #ifndef LFILEIO
  2835.     #define NOLFILEIO
  2836.     #endif /* LFILEIO */
  2837. #endif /* WIN_INTERNAL */
  2838.  
  2839. #if(WINVER >= 0x0400)
  2840.  
  2841. #define ENDSESSION_LOGOFF    0x80000000
  2842. #endif /* WINVER >= 0x0400 */
  2843.  
  2844. #define EWX_LOGOFF          0
  2845. #define EWX_SHUTDOWN        0x00000001
  2846. #define EWX_REBOOT          0x00000002
  2847. #define EWX_FORCE           0x00000004
  2848. #define EWX_POWEROFF        0x00000008
  2849. #if(_WIN32_WINNT >= 0x0500)
  2850. #define EWX_FORCEIFHUNG     0x00000010
  2851. #endif /* _WIN32_WINNT >= 0x0500 */
  2852.  
  2853.  
  2854. #define ExitWindows(dwReserved, Code) ExitWindowsEx(EWX_LOGOFF, 0xFFFFFFFF)
  2855.  
  2856. WINUSERAPI
  2857. BOOL
  2858. WINAPI
  2859. ExitWindowsEx(
  2860.     IN UINT uFlags,
  2861.     IN DWORD dwReserved);
  2862.  
  2863. WINUSERAPI
  2864. BOOL
  2865. WINAPI
  2866. SwapMouseButton(
  2867.     IN BOOL fSwap);
  2868.  
  2869. WINUSERAPI
  2870. DWORD
  2871. WINAPI
  2872. GetMessagePos(
  2873.     VOID);
  2874.  
  2875. WINUSERAPI
  2876. LONG
  2877. WINAPI
  2878. GetMessageTime(
  2879.     VOID);
  2880.  
  2881. WINUSERAPI
  2882. LPARAM
  2883. WINAPI
  2884. GetMessageExtraInfo(
  2885.     VOID);
  2886.  
  2887. #if(WINVER >= 0x0400)
  2888. WINUSERAPI
  2889. LPARAM
  2890. WINAPI
  2891. SetMessageExtraInfo(
  2892.     IN LPARAM lParam);
  2893. #endif /* WINVER >= 0x0400 */
  2894.  
  2895. WINUSERAPI
  2896. LRESULT
  2897. WINAPI
  2898. SendMessageA(
  2899.     IN HWND hWnd,
  2900.     IN UINT Msg,
  2901.     IN WPARAM wParam,
  2902.     IN LPARAM lParam);
  2903. WINUSERAPI
  2904. LRESULT
  2905. WINAPI
  2906. SendMessageW(
  2907.     IN HWND hWnd,
  2908.     IN UINT Msg,
  2909.     IN WPARAM wParam,
  2910.     IN LPARAM lParam);
  2911. #ifdef UNICODE
  2912. #define SendMessage  SendMessageW
  2913. #else
  2914. #define SendMessage  SendMessageA
  2915. #endif // !UNICODE
  2916.  
  2917. WINUSERAPI
  2918. LRESULT
  2919. WINAPI
  2920. SendMessageTimeoutA(
  2921.     IN HWND hWnd,
  2922.     IN UINT Msg,
  2923.     IN WPARAM wParam,
  2924.     IN LPARAM lParam,
  2925.     IN UINT fuFlags,
  2926.     IN UINT uTimeout,
  2927.     OUT PDWORD_PTR lpdwResult);
  2928. WINUSERAPI
  2929. LRESULT
  2930. WINAPI
  2931. SendMessageTimeoutW(
  2932.     IN HWND hWnd,
  2933.     IN UINT Msg,
  2934.     IN WPARAM wParam,
  2935.     IN LPARAM lParam,
  2936.     IN UINT fuFlags,
  2937.     IN UINT uTimeout,
  2938.     OUT PDWORD_PTR lpdwResult);
  2939. #ifdef UNICODE
  2940. #define SendMessageTimeout  SendMessageTimeoutW
  2941. #else
  2942. #define SendMessageTimeout  SendMessageTimeoutA
  2943. #endif // !UNICODE
  2944.  
  2945. WINUSERAPI
  2946. BOOL
  2947. WINAPI
  2948. SendNotifyMessageA(
  2949.     IN HWND hWnd,
  2950.     IN UINT Msg,
  2951.     IN WPARAM wParam,
  2952.     IN LPARAM lParam);
  2953. WINUSERAPI
  2954. BOOL
  2955. WINAPI
  2956. SendNotifyMessageW(
  2957.     IN HWND hWnd,
  2958.     IN UINT Msg,
  2959.     IN WPARAM wParam,
  2960.     IN LPARAM lParam);
  2961. #ifdef UNICODE
  2962. #define SendNotifyMessage  SendNotifyMessageW
  2963. #else
  2964. #define SendNotifyMessage  SendNotifyMessageA
  2965. #endif // !UNICODE
  2966.  
  2967. WINUSERAPI
  2968. BOOL
  2969. WINAPI
  2970. SendMessageCallbackA(
  2971.     IN HWND hWnd,
  2972.     IN UINT Msg,
  2973.     IN WPARAM wParam,
  2974.     IN LPARAM lParam,
  2975.     IN SENDASYNCPROC lpResultCallBack,
  2976.     IN ULONG_PTR dwData);
  2977. WINUSERAPI
  2978. BOOL
  2979. WINAPI
  2980. SendMessageCallbackW(
  2981.     IN HWND hWnd,
  2982.     IN UINT Msg,
  2983.     IN WPARAM wParam,
  2984.     IN LPARAM lParam,
  2985.     IN SENDASYNCPROC lpResultCallBack,
  2986.     IN ULONG_PTR dwData);
  2987. #ifdef UNICODE
  2988. #define SendMessageCallback  SendMessageCallbackW
  2989. #else
  2990. #define SendMessageCallback  SendMessageCallbackA
  2991. #endif // !UNICODE
  2992.  
  2993. #if(WINVER >= 0x0400)
  2994.  
  2995. #if defined(_WIN32_WINNT)
  2996. WINUSERAPI
  2997. long
  2998. WINAPI
  2999. BroadcastSystemMessageA(
  3000.     IN DWORD,
  3001.     IN LPDWORD,
  3002.     IN UINT,
  3003.     IN WPARAM,
  3004.     IN LPARAM);
  3005. WINUSERAPI
  3006. long
  3007. WINAPI
  3008. BroadcastSystemMessageW(
  3009.     IN DWORD,
  3010.     IN LPDWORD,
  3011.     IN UINT,
  3012.     IN WPARAM,
  3013.     IN LPARAM);
  3014. #ifdef UNICODE
  3015. #define BroadcastSystemMessage  BroadcastSystemMessageW
  3016. #else
  3017. #define BroadcastSystemMessage  BroadcastSystemMessageA
  3018. #endif // !UNICODE
  3019. #elif defined(_WIN32_WINDOWS)
  3020. // The Win95 version isn't A/W decorated
  3021. WINUSERAPI
  3022. long
  3023. WINAPI
  3024. BroadcastSystemMessage(
  3025.     IN DWORD,
  3026.     IN LPDWORD,
  3027.     IN UINT,
  3028.     IN WPARAM,
  3029.     IN LPARAM);
  3030. #endif
  3031.  
  3032. //Broadcast Special Message Recipient list
  3033. #define BSM_ALLCOMPONENTS       0x00000000
  3034. #define BSM_VXDS                0x00000001
  3035. #define BSM_NETDRIVER           0x00000002
  3036. #define BSM_INSTALLABLEDRIVERS  0x00000004
  3037. #define BSM_APPLICATIONS        0x00000008
  3038. #define BSM_ALLDESKTOPS         0x00000010
  3039.  
  3040. //Broadcast Special Message Flags
  3041. #define BSF_QUERY               0x00000001
  3042. #define BSF_IGNORECURRENTTASK   0x00000002
  3043. #define BSF_FLUSHDISK           0x00000004
  3044. #define BSF_NOHANG              0x00000008
  3045. #define BSF_POSTMESSAGE         0x00000010
  3046. #define BSF_FORCEIFHUNG         0x00000020
  3047. #define BSF_NOTIMEOUTIFNOTHUNG  0x00000040
  3048. #if(_WIN32_WINNT >= 0x0500)
  3049. #define BSF_ALLOWSFW            0x00000080
  3050. #define BSF_SENDNOTIFYMESSAGE   0x00000100
  3051. #endif /* _WIN32_WINNT >= 0x0500 */
  3052.  
  3053. #define BROADCAST_QUERY_DENY         0x424D5144  // Return this value to deny a query.
  3054. #endif /* WINVER >= 0x0400 */
  3055.  
  3056. // RegisterDeviceNotification
  3057.  
  3058. #if(WINVER >= 0x0500)
  3059. typedef  PVOID           HDEVNOTIFY;
  3060. typedef  HDEVNOTIFY     *PHDEVNOTIFY;
  3061.  
  3062. #define DEVICE_NOTIFY_WINDOW_HANDLE     0x00000000
  3063. #define DEVICE_NOTIFY_SERVICE_HANDLE    0x00000001
  3064.  
  3065. WINUSERAPI
  3066. HDEVNOTIFY
  3067. WINAPI
  3068. RegisterDeviceNotificationA(
  3069.     IN HANDLE hRecipient,
  3070.     IN LPVOID NotificationFilter,
  3071.     IN DWORD Flags
  3072.     );
  3073. WINUSERAPI
  3074. HDEVNOTIFY
  3075. WINAPI
  3076. RegisterDeviceNotificationW(
  3077.     IN HANDLE hRecipient,
  3078.     IN LPVOID NotificationFilter,
  3079.     IN DWORD Flags
  3080.     );
  3081. #ifdef UNICODE
  3082. #define RegisterDeviceNotification  RegisterDeviceNotificationW
  3083. #else
  3084. #define RegisterDeviceNotification  RegisterDeviceNotificationA
  3085. #endif // !UNICODE
  3086.  
  3087. WINUSERAPI
  3088. BOOL
  3089. WINAPI
  3090. UnregisterDeviceNotification(
  3091.     IN HDEVNOTIFY Handle
  3092.     );
  3093. #endif /* WINVER >= 0x0500 */
  3094.  
  3095.  
  3096. WINUSERAPI
  3097. BOOL
  3098. WINAPI
  3099. PostMessageA(
  3100.     IN HWND hWnd,
  3101.     IN UINT Msg,
  3102.     IN WPARAM wParam,
  3103.     IN LPARAM lParam);
  3104. WINUSERAPI
  3105. BOOL
  3106. WINAPI
  3107. PostMessageW(
  3108.     IN HWND hWnd,
  3109.     IN UINT Msg,
  3110.     IN WPARAM wParam,
  3111.     IN LPARAM lParam);
  3112. #ifdef UNICODE
  3113. #define PostMessage  PostMessageW
  3114. #else
  3115. #define PostMessage  PostMessageA
  3116. #endif // !UNICODE
  3117.  
  3118. WINUSERAPI
  3119. BOOL
  3120. WINAPI
  3121. PostThreadMessageA(
  3122.     IN DWORD idThread,
  3123.     IN UINT Msg,
  3124.     IN WPARAM wParam,
  3125.     IN LPARAM lParam);
  3126. WINUSERAPI
  3127. BOOL
  3128. WINAPI
  3129. PostThreadMessageW(
  3130.     IN DWORD idThread,
  3131.     IN UINT Msg,
  3132.     IN WPARAM wParam,
  3133.     IN LPARAM lParam);
  3134. #ifdef UNICODE
  3135. #define PostThreadMessage  PostThreadMessageW
  3136. #else
  3137. #define PostThreadMessage  PostThreadMessageA
  3138. #endif // !UNICODE
  3139.  
  3140. #define PostAppMessageA(idThread, wMsg, wParam, lParam)\
  3141.         PostThreadMessageA((DWORD)idThread, wMsg, wParam, lParam)
  3142. #define PostAppMessageW(idThread, wMsg, wParam, lParam)\
  3143.         PostThreadMessageW((DWORD)idThread, wMsg, wParam, lParam)
  3144. #ifdef UNICODE
  3145. #define PostAppMessage  PostAppMessageW
  3146. #else
  3147. #define PostAppMessage  PostAppMessageA
  3148. #endif // !UNICODE
  3149.  
  3150. /*
  3151.  * Special HWND value for use with PostMessage() and SendMessage()
  3152.  */
  3153. #define HWND_BROADCAST  ((HWND)0xffff)
  3154.  
  3155. #if(WINVER >= 0x0500)
  3156. #define HWND_MESSAGE     ((HWND)-3)
  3157. #endif /* WINVER >= 0x0500 */
  3158.  
  3159. WINUSERAPI
  3160. BOOL
  3161. WINAPI
  3162. AttachThreadInput(
  3163.     IN DWORD idAttach,
  3164.     IN DWORD idAttachTo,
  3165.     IN BOOL fAttach);
  3166.  
  3167.  
  3168. WINUSERAPI
  3169. BOOL
  3170. WINAPI
  3171. ReplyMessage(
  3172.     IN LRESULT lResult);
  3173.  
  3174. WINUSERAPI
  3175. BOOL
  3176. WINAPI
  3177. WaitMessage(
  3178.     VOID);
  3179.  
  3180. WINUSERAPI
  3181. DWORD
  3182. WINAPI
  3183. WaitForInputIdle(
  3184.     IN HANDLE hProcess,
  3185.     IN DWORD dwMilliseconds);
  3186.  
  3187. WINUSERAPI
  3188. #ifndef _MAC
  3189. LRESULT
  3190. WINAPI
  3191. #else
  3192. LRESULT
  3193. CALLBACK
  3194. #endif
  3195. DefWindowProcA(
  3196.     IN HWND hWnd,
  3197.     IN UINT Msg,
  3198.     IN WPARAM wParam,
  3199.     IN LPARAM lParam);
  3200. WINUSERAPI
  3201. #ifndef _MAC
  3202. LRESULT
  3203. WINAPI
  3204. #else
  3205. LRESULT
  3206. CALLBACK
  3207. #endif
  3208. DefWindowProcW(
  3209.     IN HWND hWnd,
  3210.     IN UINT Msg,
  3211.     IN WPARAM wParam,
  3212.     IN LPARAM lParam);
  3213. #ifdef UNICODE
  3214. #define DefWindowProc  DefWindowProcW
  3215. #else
  3216. #define DefWindowProc  DefWindowProcA
  3217. #endif // !UNICODE
  3218.  
  3219. WINUSERAPI
  3220. VOID
  3221. WINAPI
  3222. PostQuitMessage(
  3223.     IN int nExitCode);
  3224.  
  3225. #ifdef STRICT
  3226.  
  3227. WINUSERAPI
  3228. LRESULT
  3229. WINAPI
  3230. CallWindowProcA(
  3231.     IN WNDPROC lpPrevWndFunc,
  3232.     IN HWND hWnd,
  3233.     IN UINT Msg,
  3234.     IN WPARAM wParam,
  3235.     IN LPARAM lParam);
  3236. WINUSERAPI
  3237. LRESULT
  3238. WINAPI
  3239. CallWindowProcW(
  3240.     IN WNDPROC lpPrevWndFunc,
  3241.     IN HWND hWnd,
  3242.     IN UINT Msg,
  3243.     IN WPARAM wParam,
  3244.     IN LPARAM lParam);
  3245. #ifdef UNICODE
  3246. #define CallWindowProc  CallWindowProcW
  3247. #else
  3248. #define CallWindowProc  CallWindowProcA
  3249. #endif // !UNICODE
  3250.  
  3251. #else /* !STRICT */
  3252.  
  3253. WINUSERAPI
  3254. LRESULT
  3255. WINAPI
  3256. CallWindowProcA(
  3257.     IN FARPROC lpPrevWndFunc,
  3258.     IN HWND hWnd,
  3259.     IN UINT Msg,
  3260.     IN WPARAM wParam,
  3261.     IN LPARAM lParam);
  3262. WINUSERAPI
  3263. LRESULT
  3264. WINAPI
  3265. CallWindowProcW(
  3266.     IN FARPROC lpPrevWndFunc,
  3267.     IN HWND hWnd,
  3268.     IN UINT Msg,
  3269.     IN WPARAM wParam,
  3270.     IN LPARAM lParam);
  3271. #ifdef UNICODE
  3272. #define CallWindowProc  CallWindowProcW
  3273. #else
  3274. #define CallWindowProc  CallWindowProcA
  3275. #endif // !UNICODE
  3276.  
  3277. #endif /* !STRICT */
  3278.  
  3279. WINUSERAPI
  3280. BOOL
  3281. WINAPI
  3282. InSendMessage(
  3283.     VOID);
  3284.  
  3285. #if(WINVER >= 0x0500)
  3286. WINUSERAPI
  3287. DWORD
  3288. WINAPI
  3289. InSendMessageEx(
  3290.     IN LPVOID lpReserved);
  3291.  
  3292. /*
  3293.  * InSendMessageEx return value
  3294.  */
  3295. #define ISMEX_NOSEND      0x00000000
  3296. #define ISMEX_SEND        0x00000001
  3297. #define ISMEX_NOTIFY      0x00000002
  3298. #define ISMEX_CALLBACK    0x00000004
  3299. #define ISMEX_REPLIED     0x00000008
  3300. #endif /* WINVER >= 0x0500 */
  3301.  
  3302. WINUSERAPI
  3303. UINT
  3304. WINAPI
  3305. GetDoubleClickTime(
  3306.     VOID);
  3307.  
  3308. WINUSERAPI
  3309. BOOL
  3310. WINAPI
  3311. SetDoubleClickTime(
  3312.     IN UINT);
  3313.  
  3314. WINUSERAPI
  3315. ATOM
  3316. WINAPI
  3317. RegisterClassA(
  3318.     IN CONST WNDCLASSA *lpWndClass);
  3319. WINUSERAPI
  3320. ATOM
  3321. WINAPI
  3322. RegisterClassW(
  3323.     IN CONST WNDCLASSW *lpWndClass);
  3324. #ifdef UNICODE
  3325. #define RegisterClass  RegisterClassW
  3326. #else
  3327. #define RegisterClass  RegisterClassA
  3328. #endif // !UNICODE
  3329.  
  3330. WINUSERAPI
  3331. BOOL
  3332. WINAPI
  3333. UnregisterClassA(
  3334.     IN LPCSTR lpClassName,
  3335.     IN HINSTANCE hInstance);
  3336. WINUSERAPI
  3337. BOOL
  3338. WINAPI
  3339. UnregisterClassW(
  3340.     IN LPCWSTR lpClassName,
  3341.     IN HINSTANCE hInstance);
  3342. #ifdef UNICODE
  3343. #define UnregisterClass  UnregisterClassW
  3344. #else
  3345. #define UnregisterClass  UnregisterClassA
  3346. #endif // !UNICODE
  3347.  
  3348. WINUSERAPI
  3349. BOOL
  3350. WINAPI
  3351. GetClassInfoA(
  3352.     IN HINSTANCE hInstance,
  3353.     IN LPCSTR lpClassName,
  3354.     OUT LPWNDCLASSA lpWndClass);
  3355. WINUSERAPI
  3356. BOOL
  3357. WINAPI
  3358. GetClassInfoW(
  3359.     IN HINSTANCE hInstance,
  3360.     IN LPCWSTR lpClassName,
  3361.     OUT LPWNDCLASSW lpWndClass);
  3362. #ifdef UNICODE
  3363. #define GetClassInfo  GetClassInfoW
  3364. #else
  3365. #define GetClassInfo  GetClassInfoA
  3366. #endif // !UNICODE
  3367.  
  3368. #if(WINVER >= 0x0400)
  3369. WINUSERAPI
  3370. ATOM
  3371. WINAPI
  3372. RegisterClassExA(
  3373.     IN CONST WNDCLASSEXA *);
  3374. WINUSERAPI
  3375. ATOM
  3376. WINAPI
  3377. RegisterClassExW(
  3378.     IN CONST WNDCLASSEXW *);
  3379. #ifdef UNICODE
  3380. #define RegisterClassEx  RegisterClassExW
  3381. #else
  3382. #define RegisterClassEx  RegisterClassExA
  3383. #endif // !UNICODE
  3384.  
  3385. WINUSERAPI
  3386. BOOL
  3387. WINAPI
  3388. GetClassInfoExA(
  3389.     IN HINSTANCE,
  3390.     IN LPCSTR,
  3391.     OUT LPWNDCLASSEXA);
  3392. WINUSERAPI
  3393. BOOL
  3394. WINAPI
  3395. GetClassInfoExW(
  3396.     IN HINSTANCE,
  3397.     IN LPCWSTR,
  3398.     OUT LPWNDCLASSEXW);
  3399. #ifdef UNICODE
  3400. #define GetClassInfoEx  GetClassInfoExW
  3401. #else
  3402. #define GetClassInfoEx  GetClassInfoExA
  3403. #endif // !UNICODE
  3404.  
  3405. #endif /* WINVER >= 0x0400 */
  3406.  
  3407. #define CW_USEDEFAULT       ((int)0x80000000)
  3408.  
  3409. /*
  3410.  * Special value for CreateWindow, et al.
  3411.  */
  3412. #define HWND_DESKTOP        ((HWND)0)
  3413.  
  3414. WINUSERAPI
  3415. HWND
  3416. WINAPI
  3417. CreateWindowExA(
  3418.     IN DWORD dwExStyle,
  3419.     IN LPCSTR lpClassName,
  3420.     IN LPCSTR lpWindowName,
  3421.     IN DWORD dwStyle,
  3422.     IN int X,
  3423.     IN int Y,
  3424.     IN int nWidth,
  3425.     IN int nHeight,
  3426.     IN HWND hWndParent,
  3427.     IN HMENU hMenu,
  3428.     IN HINSTANCE hInstance,
  3429.     IN LPVOID lpParam);
  3430. WINUSERAPI
  3431. HWND
  3432. WINAPI
  3433. CreateWindowExW(
  3434.     IN DWORD dwExStyle,
  3435.     IN LPCWSTR lpClassName,
  3436.     IN LPCWSTR lpWindowName,
  3437.     IN DWORD dwStyle,
  3438.     IN int X,
  3439.     IN int Y,
  3440.     IN int nWidth,
  3441.     IN int nHeight,
  3442.     IN HWND hWndParent,
  3443.     IN HMENU hMenu,
  3444.     IN HINSTANCE hInstance,
  3445.     IN LPVOID lpParam);
  3446. #ifdef UNICODE
  3447. #define CreateWindowEx  CreateWindowExW
  3448. #else
  3449. #define CreateWindowEx  CreateWindowExA
  3450. #endif // !UNICODE
  3451.  
  3452. #define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y,\
  3453. nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
  3454. CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y,\
  3455. nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
  3456. #define CreateWindowW(lpClassName, lpWindowName, dwStyle, x, y,\
  3457. nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
  3458. CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y,\
  3459. nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
  3460. #ifdef UNICODE
  3461. #define CreateWindow  CreateWindowW
  3462. #else
  3463. #define CreateWindow  CreateWindowA
  3464. #endif // !UNICODE
  3465.  
  3466. WINUSERAPI
  3467. BOOL
  3468. WINAPI
  3469. IsWindow(
  3470.     IN HWND hWnd);
  3471.  
  3472. WINUSERAPI
  3473. BOOL
  3474. WINAPI
  3475. IsMenu(
  3476.     IN HMENU hMenu);
  3477.  
  3478. WINUSERAPI
  3479. BOOL
  3480. WINAPI
  3481. IsChild(
  3482.     IN HWND hWndParent,
  3483.     IN HWND hWnd);
  3484.  
  3485. WINUSERAPI
  3486. BOOL
  3487. WINAPI
  3488. DestroyWindow(
  3489.     IN HWND hWnd);
  3490.  
  3491. WINUSERAPI
  3492. BOOL
  3493. WINAPI
  3494. ShowWindow(
  3495.     IN HWND hWnd,
  3496.     IN int nCmdShow);
  3497.  
  3498. #if(WINVER >= 0x0500)
  3499. WINUSERAPI
  3500. BOOL
  3501. WINAPI
  3502. AnimateWindow(
  3503.     IN HWND hWnd,
  3504.     IN DWORD dwTime,
  3505.     IN DWORD dwFlags);
  3506. #endif /* WINVER >= 0x0500 */
  3507.  
  3508. #if(_WIN32_WINNT >= 0x0500)
  3509. #if defined(_WINGDI_) && !defined (NOGDI)
  3510.  
  3511. WINUSERAPI
  3512. BOOL
  3513. WINAPI
  3514. UpdateLayeredWindow(
  3515.     HWND hWnd,
  3516.     HDC hdcDst,
  3517.     POINT *pptDst,
  3518.     SIZE *psize,
  3519.     HDC hdcSrc,
  3520.     POINT *pptSrc,
  3521.     COLORREF crKey,
  3522.     BLENDFUNCTION *pblend,
  3523.     DWORD dwFlags);
  3524. #endif
  3525.  
  3526. WINUSERAPI
  3527. BOOL
  3528. WINAPI
  3529. SetLayeredWindowAttributes(
  3530.     HWND hwnd,
  3531.     COLORREF crKey,
  3532.     BYTE bAlpha,
  3533.     DWORD dwFlags);
  3534.  
  3535. #define LWA_COLORKEY            0x00000001
  3536. #define LWA_ALPHA               0x00000002
  3537.  
  3538.  
  3539. #define ULW_COLORKEY            0x00000001
  3540. #define ULW_ALPHA               0x00000002
  3541. #define ULW_OPAQUE              0x00000004
  3542.  
  3543. #endif /* _WIN32_WINNT >= 0x0500 */
  3544.  
  3545. #if(WINVER >= 0x0400)
  3546. WINUSERAPI
  3547. BOOL
  3548. WINAPI
  3549. ShowWindowAsync(
  3550.     IN HWND hWnd,
  3551.     IN int nCmdShow);
  3552. #endif /* WINVER >= 0x0400 */
  3553.  
  3554. WINUSERAPI
  3555. BOOL
  3556. WINAPI
  3557. FlashWindow(
  3558.     IN HWND hWnd,
  3559.     IN BOOL bInvert);
  3560.  
  3561. #if(WINVER >= 0x0500)
  3562. typedef struct {
  3563.     UINT  cbSize;
  3564.     HWND  hwnd;
  3565.     DWORD dwFlags;
  3566.     UINT  uCount;
  3567.     DWORD dwTimeout;
  3568. } FLASHWINFO, *PFLASHWINFO;
  3569.  
  3570. WINUSERAPI
  3571. BOOL
  3572. WINAPI
  3573. FlashWindowEx(
  3574.     PFLASHWINFO pfwi);
  3575.  
  3576. #define FLASHW_STOP         0
  3577. #define FLASHW_CAPTION      0x00000001
  3578. #define FLASHW_TRAY         0x00000002
  3579. #define FLASHW_ALL          (FLASHW_CAPTION | FLASHW_TRAY)
  3580. #define FLASHW_TIMER        0x00000004
  3581. #define FLASHW_TIMERNOFG    0x0000000C
  3582.  
  3583. #endif /* WINVER >= 0x0500 */
  3584.  
  3585. WINUSERAPI
  3586. BOOL
  3587. WINAPI
  3588. ShowOwnedPopups(
  3589.     IN HWND hWnd,
  3590.     IN BOOL fShow);
  3591.  
  3592. WINUSERAPI
  3593. BOOL
  3594. WINAPI
  3595. OpenIcon(
  3596.     IN HWND hWnd);
  3597.  
  3598. WINUSERAPI
  3599. BOOL
  3600. WINAPI
  3601. CloseWindow(
  3602.     IN HWND hWnd);
  3603.  
  3604. WINUSERAPI
  3605. BOOL
  3606. WINAPI
  3607. MoveWindow(
  3608.     IN HWND hWnd,
  3609.     IN int X,
  3610.     IN int Y,
  3611.     IN int nWidth,
  3612.     IN int nHeight,
  3613.     IN BOOL bRepaint);
  3614.  
  3615. WINUSERAPI
  3616. BOOL
  3617. WINAPI
  3618. SetWindowPos(
  3619.     IN HWND hWnd,
  3620.     IN HWND hWndInsertAfter,
  3621.     IN int X,
  3622.     IN int Y,
  3623.     IN int cx,
  3624.     IN int cy,
  3625.     IN UINT uFlags);
  3626.  
  3627. WINUSERAPI
  3628. BOOL
  3629. WINAPI
  3630. GetWindowPlacement(
  3631.     IN HWND hWnd,
  3632.     OUT WINDOWPLACEMENT *lpwndpl);
  3633.  
  3634. WINUSERAPI
  3635. BOOL
  3636. WINAPI
  3637. SetWindowPlacement(
  3638.     IN HWND hWnd,
  3639.     IN CONST WINDOWPLACEMENT *lpwndpl);
  3640.  
  3641.  
  3642. #ifndef NODEFERWINDOWPOS
  3643.  
  3644. WINUSERAPI
  3645. HDWP
  3646. WINAPI
  3647. BeginDeferWindowPos(
  3648.     IN int nNumWindows);
  3649.  
  3650. WINUSERAPI
  3651. HDWP
  3652. WINAPI
  3653. DeferWindowPos(
  3654.     IN HDWP hWinPosInfo,
  3655.     IN HWND hWnd,
  3656.     IN HWND hWndInsertAfter,
  3657.     IN int x,
  3658.     IN int y,
  3659.     IN int cx,
  3660.     IN int cy,
  3661.     IN UINT uFlags);
  3662.  
  3663. WINUSERAPI
  3664. BOOL
  3665. WINAPI
  3666. EndDeferWindowPos(
  3667.     IN HDWP hWinPosInfo);
  3668.  
  3669. #endif /* !NODEFERWINDOWPOS */
  3670.  
  3671. WINUSERAPI
  3672. BOOL
  3673. WINAPI
  3674. IsWindowVisible(
  3675.     IN HWND hWnd);
  3676.  
  3677. WINUSERAPI
  3678. BOOL
  3679. WINAPI
  3680. IsIconic(
  3681.     IN HWND hWnd);
  3682.  
  3683. WINUSERAPI
  3684. BOOL
  3685. WINAPI
  3686. AnyPopup(
  3687.     VOID);
  3688.  
  3689. WINUSERAPI
  3690. BOOL
  3691. WINAPI
  3692. BringWindowToTop(
  3693.     IN HWND hWnd);
  3694.  
  3695. WINUSERAPI
  3696. BOOL
  3697. WINAPI
  3698. IsZoomed(
  3699.     IN HWND hWnd);
  3700.  
  3701. /*
  3702.  * SetWindowPos Flags
  3703.  */
  3704. #define SWP_NOSIZE          0x0001
  3705. #define SWP_NOMOVE          0x0002
  3706. #define SWP_NOZORDER        0x0004
  3707. #define SWP_NOREDRAW        0x0008
  3708. #define SWP_NOACTIVATE      0x0010
  3709. #define SWP_FRAMECHANGED    0x0020  /* The frame changed: send WM_NCCALCSIZE */
  3710. #define SWP_SHOWWINDOW      0x0040
  3711. #define SWP_HIDEWINDOW      0x0080
  3712. #define SWP_NOCOPYBITS      0x0100
  3713. #define SWP_NOOWNERZORDER   0x0200  /* Don't do owner Z ordering */
  3714. #define SWP_NOSENDCHANGING  0x0400  /* Don't send WM_WINDOWPOSCHANGING */
  3715.  
  3716. #define SWP_DRAWFRAME       SWP_FRAMECHANGED
  3717. #define SWP_NOREPOSITION    SWP_NOOWNERZORDER
  3718.  
  3719. #if(WINVER >= 0x0400)
  3720. #define SWP_DEFERERASE      0x2000
  3721. #define SWP_ASYNCWINDOWPOS  0x4000
  3722. #endif /* WINVER >= 0x0400 */
  3723.  
  3724.  
  3725. #define HWND_TOP        ((HWND)0)
  3726. #define HWND_BOTTOM     ((HWND)1)
  3727. #define HWND_TOPMOST    ((HWND)-1)
  3728. #define HWND_NOTOPMOST  ((HWND)-2)
  3729.  
  3730. #ifndef NOCTLMGR
  3731.  
  3732. /*
  3733.  * WARNING:
  3734.  * The following structures must NOT be DWORD padded because they are
  3735.  * followed by strings, etc that do not have to be DWORD aligned.
  3736.  */
  3737. #include <pshpack2.h>
  3738.  
  3739. /*
  3740.  * original NT 32 bit dialog template:
  3741.  */
  3742. typedef struct {
  3743.     DWORD style;
  3744.     DWORD dwExtendedStyle;
  3745.     WORD cdit;
  3746.     short x;
  3747.     short y;
  3748.     short cx;
  3749.     short cy;
  3750. } DLGTEMPLATE;
  3751. typedef DLGTEMPLATE *LPDLGTEMPLATEA;
  3752. typedef DLGTEMPLATE *LPDLGTEMPLATEW;
  3753. #ifdef UNICODE
  3754. typedef LPDLGTEMPLATEW LPDLGTEMPLATE;
  3755. #else
  3756. typedef LPDLGTEMPLATEA LPDLGTEMPLATE;
  3757. #endif // UNICODE
  3758. typedef CONST DLGTEMPLATE *LPCDLGTEMPLATEA;
  3759. typedef CONST DLGTEMPLATE *LPCDLGTEMPLATEW;
  3760. #ifdef UNICODE
  3761. typedef LPCDLGTEMPLATEW LPCDLGTEMPLATE;
  3762. #else
  3763. typedef LPCDLGTEMPLATEA LPCDLGTEMPLATE;
  3764. #endif // UNICODE
  3765.  
  3766. /*
  3767.  * 32 bit Dialog item template.
  3768.  */
  3769. typedef struct {
  3770.     DWORD style;
  3771.     DWORD dwExtendedStyle;
  3772.     short x;
  3773.     short y;
  3774.     short cx;
  3775.     short cy;
  3776.     WORD id;
  3777. } DLGITEMTEMPLATE;
  3778. typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEA;
  3779. typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEW;
  3780. #ifdef UNICODE
  3781. typedef PDLGITEMTEMPLATEW PDLGITEMTEMPLATE;
  3782. #else
  3783. typedef PDLGITEMTEMPLATEA PDLGITEMTEMPLATE;
  3784. #endif // UNICODE
  3785. typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEA;
  3786. typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEW;
  3787. #ifdef UNICODE
  3788. typedef LPDLGITEMTEMPLATEW LPDLGITEMTEMPLATE;
  3789. #else
  3790. typedef LPDLGITEMTEMPLATEA LPDLGITEMTEMPLATE;
  3791. #endif // UNICODE
  3792.  
  3793.  
  3794. #include <poppack.h> /* Resume normal packing */
  3795.  
  3796. WINUSERAPI
  3797. HWND
  3798. WINAPI
  3799. CreateDialogParamA(
  3800.     IN HINSTANCE hInstance,
  3801.     IN LPCSTR lpTemplateName,
  3802.     IN HWND hWndParent,
  3803.     IN DLGPROC lpDialogFunc,
  3804.     IN LPARAM dwInitParam);
  3805. WINUSERAPI
  3806. HWND
  3807. WINAPI
  3808. CreateDialogParamW(
  3809.     IN HINSTANCE hInstance,
  3810.     IN LPCWSTR lpTemplateName,
  3811.     IN HWND hWndParent,
  3812.     IN DLGPROC lpDialogFunc,
  3813.     IN LPARAM dwInitParam);
  3814. #ifdef UNICODE
  3815. #define CreateDialogParam  CreateDialogParamW
  3816. #else
  3817. #define CreateDialogParam  CreateDialogParamA
  3818. #endif // !UNICODE
  3819.  
  3820. WINUSERAPI
  3821. HWND
  3822. WINAPI
  3823. CreateDialogIndirectParamA(
  3824.     IN HINSTANCE hInstance,
  3825.     IN LPCDLGTEMPLATEA lpTemplate,
  3826.     IN HWND hWndParent,
  3827.     IN DLGPROC lpDialogFunc,
  3828.     IN LPARAM dwInitParam);
  3829. WINUSERAPI
  3830. HWND
  3831. WINAPI
  3832. CreateDialogIndirectParamW(
  3833.     IN HINSTANCE hInstance,
  3834.     IN LPCDLGTEMPLATEW lpTemplate,
  3835.     IN HWND hWndParent,
  3836.     IN DLGPROC lpDialogFunc,
  3837.     IN LPARAM dwInitParam);
  3838. #ifdef UNICODE
  3839. #define CreateDialogIndirectParam  CreateDialogIndirectParamW
  3840. #else
  3841. #define CreateDialogIndirectParam  CreateDialogIndirectParamA
  3842. #endif // !UNICODE
  3843.  
  3844. #define CreateDialogA(hInstance, lpName, hWndParent, lpDialogFunc) \
  3845. CreateDialogParamA(hInstance, lpName, hWndParent, lpDialogFunc, 0L)
  3846. #define CreateDialogW(hInstance, lpName, hWndParent, lpDialogFunc) \
  3847. CreateDialogParamW(hInstance, lpName, hWndParent, lpDialogFunc, 0L)
  3848. #ifdef UNICODE
  3849. #define CreateDialog  CreateDialogW
  3850. #else
  3851. #define CreateDialog  CreateDialogA
  3852. #endif // !UNICODE
  3853.  
  3854. #define CreateDialogIndirectA(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
  3855. CreateDialogIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
  3856. #define CreateDialogIndirectW(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
  3857. CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
  3858. #ifdef UNICODE
  3859. #define CreateDialogIndirect  CreateDialogIndirectW
  3860. #else
  3861. #define CreateDialogIndirect  CreateDialogIndirectA
  3862. #endif // !UNICODE
  3863.  
  3864. WINUSERAPI
  3865. INT_PTR
  3866. WINAPI
  3867. DialogBoxParamA(
  3868.     IN HINSTANCE hInstance,
  3869.     IN LPCSTR lpTemplateName,
  3870.     IN HWND hWndParent,
  3871.     IN DLGPROC lpDialogFunc,
  3872.     IN LPARAM dwInitParam);
  3873. WINUSERAPI
  3874. INT_PTR
  3875. WINAPI
  3876. DialogBoxParamW(
  3877.     IN HINSTANCE hInstance,
  3878.     IN LPCWSTR lpTemplateName,
  3879.     IN HWND hWndParent,
  3880.     IN DLGPROC lpDialogFunc,
  3881.     IN LPARAM dwInitParam);
  3882. #ifdef UNICODE
  3883. #define DialogBoxParam  DialogBoxParamW
  3884. #else
  3885. #define DialogBoxParam  DialogBoxParamA
  3886. #endif // !UNICODE
  3887.  
  3888. WINUSERAPI
  3889. INT_PTR
  3890. WINAPI
  3891. DialogBoxIndirectParamA(
  3892.     IN HINSTANCE hInstance,
  3893.     IN LPCDLGTEMPLATEA hDialogTemplate,
  3894.     IN HWND hWndParent,
  3895.     IN DLGPROC lpDialogFunc,
  3896.     IN LPARAM dwInitParam);
  3897. WINUSERAPI
  3898. INT_PTR
  3899. WINAPI
  3900. DialogBoxIndirectParamW(
  3901.     IN HINSTANCE hInstance,
  3902.     IN LPCDLGTEMPLATEW hDialogTemplate,
  3903.     IN HWND hWndParent,
  3904.     IN DLGPROC lpDialogFunc,
  3905.     IN LPARAM dwInitParam);
  3906. #ifdef UNICODE
  3907. #define DialogBoxIndirectParam  DialogBoxIndirectParamW
  3908. #else
  3909. #define DialogBoxIndirectParam  DialogBoxIndirectParamA
  3910. #endif // !UNICODE
  3911.  
  3912. #define DialogBoxA(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
  3913. DialogBoxParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
  3914. #define DialogBoxW(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
  3915. DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
  3916. #ifdef UNICODE
  3917. #define DialogBox  DialogBoxW
  3918. #else
  3919. #define DialogBox  DialogBoxA
  3920. #endif // !UNICODE
  3921.  
  3922. #define DialogBoxIndirectA(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
  3923. DialogBoxIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
  3924. #define DialogBoxIndirectW(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
  3925. DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
  3926. #ifdef UNICODE
  3927. #define DialogBoxIndirect  DialogBoxIndirectW
  3928. #else
  3929. #define DialogBoxIndirect  DialogBoxIndirectA
  3930. #endif // !UNICODE
  3931.  
  3932. WINUSERAPI
  3933. BOOL
  3934. WINAPI
  3935. EndDialog(
  3936.     IN HWND hDlg,
  3937.     IN INT_PTR nResult);
  3938.  
  3939. WINUSERAPI
  3940. HWND
  3941. WINAPI
  3942. GetDlgItem(
  3943.     IN HWND hDlg,
  3944.     IN int nIDDlgItem);
  3945.  
  3946. WINUSERAPI
  3947. BOOL
  3948. WINAPI
  3949. SetDlgItemInt(
  3950.     IN HWND hDlg,
  3951.     IN int nIDDlgItem,
  3952.     IN UINT uValue,
  3953.     IN BOOL bSigned);
  3954.  
  3955. WINUSERAPI
  3956. UINT
  3957. WINAPI
  3958. GetDlgItemInt(
  3959.     IN HWND hDlg,
  3960.     IN int nIDDlgItem,
  3961.     OUT BOOL *lpTranslated,
  3962.     IN BOOL bSigned);
  3963.  
  3964. WINUSERAPI
  3965. BOOL
  3966. WINAPI
  3967. SetDlgItemTextA(
  3968.     IN HWND hDlg,
  3969.     IN int nIDDlgItem,
  3970.     IN LPCSTR lpString);
  3971. WINUSERAPI
  3972. BOOL
  3973. WINAPI
  3974. SetDlgItemTextW(
  3975.     IN HWND hDlg,
  3976.     IN int nIDDlgItem,
  3977.     IN LPCWSTR lpString);
  3978. #ifdef UNICODE
  3979. #define SetDlgItemText  SetDlgItemTextW
  3980. #else
  3981. #define SetDlgItemText  SetDlgItemTextA
  3982. #endif // !UNICODE
  3983.  
  3984. WINUSERAPI
  3985. UINT
  3986. WINAPI
  3987. GetDlgItemTextA(
  3988.     IN HWND hDlg,
  3989.     IN int nIDDlgItem,
  3990.     OUT LPSTR lpString,
  3991.     IN int nMaxCount);
  3992. WINUSERAPI
  3993. UINT
  3994. WINAPI
  3995. GetDlgItemTextW(
  3996.     IN HWND hDlg,
  3997.     IN int nIDDlgItem,
  3998.     OUT LPWSTR lpString,
  3999.     IN int nMaxCount);
  4000. #ifdef UNICODE
  4001. #define GetDlgItemText  GetDlgItemTextW
  4002. #else
  4003. #define GetDlgItemText  GetDlgItemTextA
  4004. #endif // !UNICODE
  4005.  
  4006. WINUSERAPI
  4007. BOOL
  4008. WINAPI
  4009. CheckDlgButton(
  4010.     IN HWND hDlg,
  4011.     IN int nIDButton,
  4012.     IN UINT uCheck);
  4013.  
  4014. WINUSERAPI
  4015. BOOL
  4016. WINAPI
  4017. CheckRadioButton(
  4018.     IN HWND hDlg,
  4019.     IN int nIDFirstButton,
  4020.     IN int nIDLastButton,
  4021.     IN int nIDCheckButton);
  4022.  
  4023. WINUSERAPI
  4024. UINT
  4025. WINAPI
  4026. IsDlgButtonChecked(
  4027.     IN HWND hDlg,
  4028.     IN int nIDButton);
  4029.  
  4030. WINUSERAPI
  4031. LRESULT
  4032. WINAPI
  4033. SendDlgItemMessageA(
  4034.     IN HWND hDlg,
  4035.     IN int nIDDlgItem,
  4036.     IN UINT Msg,
  4037.     IN WPARAM wParam,
  4038.     IN LPARAM lParam);
  4039. WINUSERAPI
  4040. LRESULT
  4041. WINAPI
  4042. SendDlgItemMessageW(
  4043.     IN HWND hDlg,
  4044.     IN int nIDDlgItem,
  4045.     IN UINT Msg,
  4046.     IN WPARAM wParam,
  4047.     IN LPARAM lParam);
  4048. #ifdef UNICODE
  4049. #define SendDlgItemMessage  SendDlgItemMessageW
  4050. #else
  4051. #define SendDlgItemMessage  SendDlgItemMessageA
  4052. #endif // !UNICODE
  4053.  
  4054. WINUSERAPI
  4055. HWND
  4056. WINAPI
  4057. GetNextDlgGroupItem(
  4058.     IN HWND hDlg,
  4059.     IN HWND hCtl,
  4060.     IN BOOL bPrevious);
  4061.  
  4062. WINUSERAPI
  4063. HWND
  4064. WINAPI
  4065. GetNextDlgTabItem(
  4066.     IN HWND hDlg,
  4067.     IN HWND hCtl,
  4068.     IN BOOL bPrevious);
  4069.  
  4070. WINUSERAPI
  4071. int
  4072. WINAPI
  4073. GetDlgCtrlID(
  4074.     IN HWND hWnd);
  4075.  
  4076. WINUSERAPI
  4077. long
  4078. WINAPI
  4079. GetDialogBaseUnits(VOID);
  4080.  
  4081. WINUSERAPI
  4082. #ifndef _MAC
  4083. LRESULT
  4084. WINAPI
  4085. #else
  4086. LRESULT
  4087. CALLBACK
  4088. #endif
  4089. DefDlgProcA(
  4090.     IN HWND hDlg,
  4091.     IN UINT Msg,
  4092.     IN WPARAM wParam,
  4093.     IN LPARAM lParam);
  4094. WINUSERAPI
  4095. #ifndef _MAC
  4096. LRESULT
  4097. WINAPI
  4098. #else
  4099. LRESULT
  4100. CALLBACK
  4101. #endif
  4102. DefDlgProcW(
  4103.     IN HWND hDlg,
  4104.     IN UINT Msg,
  4105.     IN WPARAM wParam,
  4106.     IN LPARAM lParam);
  4107. #ifdef UNICODE
  4108. #define DefDlgProc  DefDlgProcW
  4109. #else
  4110. #define DefDlgProc  DefDlgProcA
  4111. #endif // !UNICODE
  4112.  
  4113. /*
  4114.  * Window extra byted needed for private dialog classes.
  4115.  */
  4116. #ifndef _MAC
  4117. #define DLGWINDOWEXTRA 30
  4118. #else
  4119. #define DLGWINDOWEXTRA 48
  4120. #endif
  4121.  
  4122. #endif /* !NOCTLMGR */
  4123.  
  4124. #ifndef NOMSG
  4125.  
  4126. WINUSERAPI
  4127. BOOL
  4128. WINAPI
  4129. CallMsgFilterA(
  4130.     IN LPMSG lpMsg,
  4131.     IN int nCode);
  4132. WINUSERAPI
  4133. BOOL
  4134. WINAPI
  4135. CallMsgFilterW(
  4136.     IN LPMSG lpMsg,
  4137.     IN int nCode);
  4138. #ifdef UNICODE
  4139. #define CallMsgFilter  CallMsgFilterW
  4140. #else
  4141. #define CallMsgFilter  CallMsgFilterA
  4142. #endif // !UNICODE
  4143.  
  4144. #endif /* !NOMSG */
  4145.  
  4146. #ifndef NOCLIPBOARD
  4147.  
  4148. /*
  4149.  * Clipboard Manager Functions
  4150.  */
  4151.  
  4152. WINUSERAPI
  4153. BOOL
  4154. WINAPI
  4155. OpenClipboard(
  4156.     IN HWND hWndNewOwner);
  4157.  
  4158. WINUSERAPI
  4159. BOOL
  4160. WINAPI
  4161. CloseClipboard(
  4162.     VOID);
  4163.  
  4164.  
  4165. #if(WINVER >= 0x0500)
  4166.  
  4167. WINUSERAPI
  4168. DWORD
  4169. WINAPI
  4170. GetClipboardSequenceNumber(
  4171.     VOID);
  4172.  
  4173. #endif /* WINVER >= 0x0500 */
  4174.  
  4175. WINUSERAPI
  4176. HWND
  4177. WINAPI
  4178. GetClipboardOwner(
  4179.     VOID);
  4180.  
  4181. WINUSERAPI
  4182. HWND
  4183. WINAPI
  4184. SetClipboardViewer(
  4185.     IN HWND hWndNewViewer);
  4186.  
  4187. WINUSERAPI
  4188. HWND
  4189. WINAPI
  4190. GetClipboardViewer(
  4191.     VOID);
  4192.  
  4193. WINUSERAPI
  4194. BOOL
  4195. WINAPI
  4196. ChangeClipboardChain(
  4197.     IN HWND hWndRemove,
  4198.     IN HWND hWndNewNext);
  4199.  
  4200. WINUSERAPI
  4201. HANDLE
  4202. WINAPI
  4203. SetClipboardData(
  4204.     IN UINT uFormat,
  4205.     IN HANDLE hMem);
  4206.  
  4207. WINUSERAPI
  4208. HANDLE
  4209. WINAPI
  4210. GetClipboardData(
  4211.     IN UINT uFormat);
  4212.  
  4213. WINUSERAPI
  4214. UINT
  4215. WINAPI
  4216. RegisterClipboardFormatA(
  4217.     IN LPCSTR lpszFormat);
  4218. WINUSERAPI
  4219. UINT
  4220. WINAPI
  4221. RegisterClipboardFormatW(
  4222.     IN LPCWSTR lpszFormat);
  4223. #ifdef UNICODE
  4224. #define RegisterClipboardFormat  RegisterClipboardFormatW
  4225. #else
  4226. #define RegisterClipboardFormat  RegisterClipboardFormatA
  4227. #endif // !UNICODE
  4228.  
  4229. WINUSERAPI
  4230. int
  4231. WINAPI
  4232. CountClipboardFormats(
  4233.     VOID);
  4234.  
  4235. WINUSERAPI
  4236. UINT
  4237. WINAPI
  4238. EnumClipboardFormats(
  4239.     IN UINT format);
  4240.  
  4241. WINUSERAPI
  4242. int
  4243. WINAPI
  4244. GetClipboardFormatNameA(
  4245.     IN UINT format,
  4246.     OUT LPSTR lpszFormatName,
  4247.     IN int cchMaxCount);
  4248. WINUSERAPI
  4249. int
  4250. WINAPI
  4251. GetClipboardFormatNameW(
  4252.     IN UINT format,
  4253.     OUT LPWSTR lpszFormatName,
  4254.     IN int cchMaxCount);
  4255. #ifdef UNICODE
  4256. #define GetClipboardFormatName  GetClipboardFormatNameW
  4257. #else
  4258. #define GetClipboardFormatName  GetClipboardFormatNameA
  4259. #endif // !UNICODE
  4260.  
  4261. WINUSERAPI
  4262. BOOL
  4263. WINAPI
  4264. EmptyClipboard(
  4265.     VOID);
  4266.  
  4267. WINUSERAPI
  4268. BOOL
  4269. WINAPI
  4270. IsClipboardFormatAvailable(
  4271.     IN UINT format);
  4272.  
  4273. WINUSERAPI
  4274. int
  4275. WINAPI
  4276. GetPriorityClipboardFormat(
  4277.     OUT UINT *paFormatPriorityList,
  4278.     IN int cFormats);
  4279.  
  4280. WINUSERAPI
  4281. HWND
  4282. WINAPI
  4283. GetOpenClipboardWindow(
  4284.     VOID);
  4285.  
  4286. #endif /* !NOCLIPBOARD */
  4287.  
  4288. /*
  4289.  * Character Translation Routines
  4290.  */
  4291.  
  4292. WINUSERAPI
  4293. BOOL
  4294. WINAPI
  4295. CharToOemA(
  4296.     IN LPCSTR lpszSrc,
  4297.     OUT LPSTR lpszDst);
  4298. WINUSERAPI
  4299. BOOL
  4300. WINAPI
  4301. CharToOemW(
  4302.     IN LPCWSTR lpszSrc,
  4303.     OUT LPSTR lpszDst);
  4304. #ifdef UNICODE
  4305. #define CharToOem  CharToOemW
  4306. #else
  4307. #define CharToOem  CharToOemA
  4308. #endif // !UNICODE
  4309.  
  4310. WINUSERAPI
  4311. BOOL
  4312. WINAPI
  4313. OemToCharA(
  4314.     IN LPCSTR lpszSrc,
  4315.     OUT LPSTR lpszDst);
  4316. WINUSERAPI
  4317. BOOL
  4318. WINAPI
  4319. OemToCharW(
  4320.     IN LPCSTR lpszSrc,
  4321.     OUT LPWSTR lpszDst);
  4322. #ifdef UNICODE
  4323. #define OemToChar  OemToCharW
  4324. #else
  4325. #define OemToChar  OemToCharA
  4326. #endif // !UNICODE
  4327.  
  4328. WINUSERAPI
  4329. BOOL
  4330. WINAPI
  4331. CharToOemBuffA(
  4332.     IN LPCSTR lpszSrc,
  4333.     OUT LPSTR lpszDst,
  4334.     IN DWORD cchDstLength);
  4335. WINUSERAPI
  4336. BOOL
  4337. WINAPI
  4338. CharToOemBuffW(
  4339.     IN LPCWSTR lpszSrc,
  4340.     OUT LPSTR lpszDst,
  4341.     IN DWORD cchDstLength);
  4342. #ifdef UNICODE
  4343. #define CharToOemBuff  CharToOemBuffW
  4344. #else
  4345. #define CharToOemBuff  CharToOemBuffA
  4346. #endif // !UNICODE
  4347.  
  4348. WINUSERAPI
  4349. BOOL
  4350. WINAPI
  4351. OemToCharBuffA(
  4352.     IN LPCSTR lpszSrc,
  4353.     OUT LPSTR lpszDst,
  4354.     IN DWORD cchDstLength);
  4355. WINUSERAPI
  4356. BOOL
  4357. WINAPI
  4358. OemToCharBuffW(
  4359.     IN LPCSTR lpszSrc,
  4360.     OUT LPWSTR lpszDst,
  4361.     IN DWORD cchDstLength);
  4362. #ifdef UNICODE
  4363. #define OemToCharBuff  OemToCharBuffW
  4364. #else
  4365. #define OemToCharBuff  OemToCharBuffA
  4366. #endif // !UNICODE
  4367.  
  4368. WINUSERAPI
  4369. LPSTR
  4370. WINAPI
  4371. CharUpperA(
  4372.     IN OUT LPSTR lpsz);
  4373. WINUSERAPI
  4374. LPWSTR
  4375. WINAPI
  4376. CharUpperW(
  4377.     IN OUT LPWSTR lpsz);
  4378. #ifdef UNICODE
  4379. #define CharUpper  CharUpperW
  4380. #else
  4381. #define CharUpper  CharUpperA
  4382. #endif // !UNICODE
  4383.  
  4384. WINUSERAPI
  4385. DWORD
  4386. WINAPI
  4387. CharUpperBuffA(
  4388.     IN OUT LPSTR lpsz,
  4389.     IN DWORD cchLength);
  4390. WINUSERAPI
  4391. DWORD
  4392. WINAPI
  4393. CharUpperBuffW(
  4394.     IN OUT LPWSTR lpsz,
  4395.     IN DWORD cchLength);
  4396. #ifdef UNICODE
  4397. #define CharUpperBuff  CharUpperBuffW
  4398. #else
  4399. #define CharUpperBuff  CharUpperBuffA
  4400. #endif // !UNICODE
  4401.  
  4402. WINUSERAPI
  4403. LPSTR
  4404. WINAPI
  4405. CharLowerA(
  4406.     IN OUT LPSTR lpsz);
  4407. WINUSERAPI
  4408. LPWSTR
  4409. WINAPI
  4410. CharLowerW(
  4411.     IN OUT LPWSTR lpsz);
  4412. #ifdef UNICODE
  4413. #define CharLower  CharLowerW
  4414. #else
  4415. #define CharLower  CharLowerA
  4416. #endif // !UNICODE
  4417.  
  4418. WINUSERAPI
  4419. DWORD
  4420. WINAPI
  4421. CharLowerBuffA(
  4422.     IN OUT LPSTR lpsz,
  4423.     IN DWORD cchLength);
  4424. WINUSERAPI
  4425. DWORD
  4426. WINAPI
  4427. CharLowerBuffW(
  4428.     IN OUT LPWSTR lpsz,
  4429.     IN DWORD cchLength);
  4430. #ifdef UNICODE
  4431. #define CharLowerBuff  CharLowerBuffW
  4432. #else
  4433. #define CharLowerBuff  CharLowerBuffA
  4434. #endif // !UNICODE
  4435.  
  4436. WINUSERAPI
  4437. LPSTR
  4438. WINAPI
  4439. CharNextA(
  4440.     IN LPCSTR lpsz);
  4441. WINUSERAPI
  4442. LPWSTR
  4443. WINAPI
  4444. CharNextW(
  4445.     IN LPCWSTR lpsz);
  4446. #ifdef UNICODE
  4447. #define CharNext  CharNextW
  4448. #else
  4449. #define CharNext  CharNextA
  4450. #endif // !UNICODE
  4451.  
  4452. WINUSERAPI
  4453. LPSTR
  4454. WINAPI
  4455. CharPrevA(
  4456.     IN LPCSTR lpszStart,
  4457.     IN LPCSTR lpszCurrent);
  4458. WINUSERAPI
  4459. LPWSTR
  4460. WINAPI
  4461. CharPrevW(
  4462.     IN LPCWSTR lpszStart,
  4463.     IN LPCWSTR lpszCurrent);
  4464. #ifdef UNICODE
  4465. #define CharPrev  CharPrevW
  4466. #else
  4467. #define CharPrev  CharPrevA
  4468. #endif // !UNICODE
  4469.  
  4470. #if(WINVER >= 0x0400)
  4471. WINUSERAPI
  4472. LPSTR
  4473. WINAPI
  4474. CharNextExA(
  4475.      IN WORD CodePage,
  4476.      IN LPCSTR lpCurrentChar,
  4477.      IN DWORD dwFlags);
  4478.  
  4479. WINUSERAPI
  4480. LPSTR
  4481. WINAPI
  4482. CharPrevExA(
  4483.      IN WORD CodePage,
  4484.      IN LPCSTR lpStart,
  4485.      IN LPCSTR lpCurrentChar,
  4486.      IN DWORD dwFlags);
  4487. #endif /* WINVER >= 0x0400 */
  4488.  
  4489. /*
  4490.  * Compatibility defines for character translation routines
  4491.  */
  4492. #define AnsiToOem CharToOemA
  4493. #define OemToAnsi OemToCharA
  4494. #define AnsiToOemBuff CharToOemBuffA
  4495. #define OemToAnsiBuff OemToCharBuffA
  4496. #define AnsiUpper CharUpperA
  4497. #define AnsiUpperBuff CharUpperBuffA
  4498. #define AnsiLower CharLowerA
  4499. #define AnsiLowerBuff CharLowerBuffA
  4500. #define AnsiNext CharNextA
  4501. #define AnsiPrev CharPrevA
  4502.  
  4503. #ifndef  NOLANGUAGE
  4504. /*
  4505.  * Language dependent Routines
  4506.  */
  4507.  
  4508. WINUSERAPI
  4509. BOOL
  4510. WINAPI
  4511. IsCharAlphaA(
  4512.     IN CHAR ch);
  4513. WINUSERAPI
  4514. BOOL
  4515. WINAPI
  4516. IsCharAlphaW(
  4517.     IN WCHAR ch);
  4518. #ifdef UNICODE
  4519. #define IsCharAlpha  IsCharAlphaW
  4520. #else
  4521. #define IsCharAlpha  IsCharAlphaA
  4522. #endif // !UNICODE
  4523.  
  4524. WINUSERAPI
  4525. BOOL
  4526. WINAPI
  4527. IsCharAlphaNumericA(
  4528.     IN CHAR ch);
  4529. WINUSERAPI
  4530. BOOL
  4531. WINAPI
  4532. IsCharAlphaNumericW(
  4533.     IN WCHAR ch);
  4534. #ifdef UNICODE
  4535. #define IsCharAlphaNumeric  IsCharAlphaNumericW
  4536. #else
  4537. #define IsCharAlphaNumeric  IsCharAlphaNumericA
  4538. #endif // !UNICODE
  4539.  
  4540. WINUSERAPI
  4541. BOOL
  4542. WINAPI
  4543. IsCharUpperA(
  4544.     IN CHAR ch);
  4545. WINUSERAPI
  4546. BOOL
  4547. WINAPI
  4548. IsCharUpperW(
  4549.     IN WCHAR ch);
  4550. #ifdef UNICODE
  4551. #define IsCharUpper  IsCharUpperW
  4552. #else
  4553. #define IsCharUpper  IsCharUpperA
  4554. #endif // !UNICODE
  4555.  
  4556. WINUSERAPI
  4557. BOOL
  4558. WINAPI
  4559. IsCharLowerA(
  4560.     IN CHAR ch);
  4561. WINUSERAPI
  4562. BOOL
  4563. WINAPI
  4564. IsCharLowerW(
  4565.     IN WCHAR ch);
  4566. #ifdef UNICODE
  4567. #define IsCharLower  IsCharLowerW
  4568. #else
  4569. #define IsCharLower  IsCharLowerA
  4570. #endif // !UNICODE
  4571.  
  4572. #endif  /* !NOLANGUAGE */
  4573.  
  4574. WINUSERAPI
  4575. HWND
  4576. WINAPI
  4577. SetFocus(
  4578.     IN HWND hWnd);
  4579.  
  4580. WINUSERAPI
  4581. HWND
  4582. WINAPI
  4583. GetActiveWindow(
  4584.     VOID);
  4585.  
  4586. WINUSERAPI
  4587. HWND
  4588. WINAPI
  4589. GetFocus(
  4590.     VOID);
  4591.  
  4592. WINUSERAPI
  4593. UINT
  4594. WINAPI
  4595. GetKBCodePage(
  4596.     VOID);
  4597.  
  4598. WINUSERAPI
  4599. SHORT
  4600. WINAPI
  4601. GetKeyState(
  4602.     IN int nVirtKey);
  4603.  
  4604. WINUSERAPI
  4605. SHORT
  4606. WINAPI
  4607. GetAsyncKeyState(
  4608.     IN int vKey);
  4609.  
  4610. WINUSERAPI
  4611. BOOL
  4612. WINAPI
  4613. GetKeyboardState(
  4614.     OUT PBYTE lpKeyState);
  4615.  
  4616. WINUSERAPI
  4617. BOOL
  4618. WINAPI
  4619. SetKeyboardState(
  4620.     IN LPBYTE lpKeyState);
  4621.  
  4622. WINUSERAPI
  4623. int
  4624. WINAPI
  4625. GetKeyNameTextA(
  4626.     IN LONG lParam,
  4627.     OUT LPSTR lpString,
  4628.     IN int nSize
  4629.     );
  4630. WINUSERAPI
  4631. int
  4632. WINAPI
  4633. GetKeyNameTextW(
  4634.     IN LONG lParam,
  4635.     OUT LPWSTR lpString,
  4636.     IN int nSize
  4637.     );
  4638. #ifdef UNICODE
  4639. #define GetKeyNameText  GetKeyNameTextW
  4640. #else
  4641. #define GetKeyNameText  GetKeyNameTextA
  4642. #endif // !UNICODE
  4643.  
  4644. WINUSERAPI
  4645. int
  4646. WINAPI
  4647. GetKeyboardType(
  4648.     IN int nTypeFlag);
  4649.  
  4650. WINUSERAPI
  4651. int
  4652. WINAPI
  4653. ToAscii(
  4654.     IN UINT uVirtKey,
  4655.     IN UINT uScanCode,
  4656.     IN CONST BYTE *lpKeyState,
  4657.     OUT LPWORD lpChar,
  4658.     IN UINT uFlags);
  4659.  
  4660. #if(WINVER >= 0x0400)
  4661. WINUSERAPI
  4662. int
  4663. WINAPI
  4664. ToAsciiEx(
  4665.     IN UINT uVirtKey,
  4666.     IN UINT uScanCode,
  4667.     IN CONST BYTE *lpKeyState,
  4668.     OUT LPWORD lpChar,
  4669.     IN UINT uFlags,
  4670.     IN HKL dwhkl);
  4671. #endif /* WINVER >= 0x0400 */
  4672.  
  4673. WINUSERAPI
  4674. int
  4675. WINAPI
  4676. ToUnicode(
  4677.     IN UINT wVirtKey,
  4678.     IN UINT wScanCode,
  4679.     IN CONST BYTE *lpKeyState,
  4680.     OUT LPWSTR pwszBuff,
  4681.     IN int cchBuff,
  4682.     IN UINT wFlags);
  4683.  
  4684. WINUSERAPI
  4685. DWORD
  4686. WINAPI
  4687. OemKeyScan(
  4688.     IN WORD wOemChar);
  4689.  
  4690. WINUSERAPI
  4691. SHORT
  4692. WINAPI
  4693. VkKeyScanA(
  4694.     IN CHAR ch);
  4695. WINUSERAPI
  4696. SHORT
  4697. WINAPI
  4698. VkKeyScanW(
  4699.     IN WCHAR ch);
  4700. #ifdef UNICODE
  4701. #define VkKeyScan  VkKeyScanW
  4702. #else
  4703. #define VkKeyScan  VkKeyScanA
  4704. #endif // !UNICODE
  4705.  
  4706. #if(WINVER >= 0x0400)
  4707. WINUSERAPI
  4708. SHORT
  4709. WINAPI
  4710. VkKeyScanExA(
  4711.     IN CHAR  ch,
  4712.     IN HKL   dwhkl);
  4713. WINUSERAPI
  4714. SHORT
  4715. WINAPI
  4716. VkKeyScanExW(
  4717.     IN WCHAR  ch,
  4718.     IN HKL   dwhkl);
  4719. #ifdef UNICODE
  4720. #define VkKeyScanEx  VkKeyScanExW
  4721. #else
  4722. #define VkKeyScanEx  VkKeyScanExA
  4723. #endif // !UNICODE
  4724. #endif /* WINVER >= 0x0400 */
  4725. #define KEYEVENTF_EXTENDEDKEY 0x0001
  4726. #define KEYEVENTF_KEYUP       0x0002
  4727. #if(_WIN32_WINNT >= 0x0500)
  4728. #define KEYEVENTF_UNICODE     0x0004
  4729. #define KEYEVENTF_SCANCODE    0x0008
  4730. #endif /* _WIN32_WINNT >= 0x0500 */
  4731.  
  4732. WINUSERAPI
  4733. VOID
  4734. WINAPI
  4735. keybd_event(
  4736.     IN BYTE bVk,
  4737.     IN BYTE bScan,
  4738.     IN DWORD dwFlags,
  4739.     IN ULONG_PTR dwExtraInfo);
  4740.  
  4741. #define MOUSEEVENTF_MOVE        0x0001 /* mouse move */
  4742. #define MOUSEEVENTF_LEFTDOWN    0x0002 /* left button down */
  4743. #define MOUSEEVENTF_LEFTUP      0x0004 /* left button up */
  4744. #define MOUSEEVENTF_RIGHTDOWN   0x0008 /* right button down */
  4745. #define MOUSEEVENTF_RIGHTUP     0x0010 /* right button up */
  4746. #define MOUSEEVENTF_MIDDLEDOWN  0x0020 /* middle button down */
  4747. #define MOUSEEVENTF_MIDDLEUP    0x0040 /* middle button up */
  4748. #define MOUSEEVENTF_XDOWN       0x0080 /* x button down */
  4749. #define MOUSEEVENTF_XUP         0x0100 /* x button down */
  4750. #define MOUSEEVENTF_WHEEL       0x0800 /* wheel button rolled */
  4751. #define MOUSEEVENTF_VIRTUALDESK 0x4000 /* map to entire virtual desktop */
  4752. #define MOUSEEVENTF_ABSOLUTE    0x8000 /* absolute move */
  4753.  
  4754.  
  4755.  
  4756. WINUSERAPI
  4757. VOID
  4758. WINAPI
  4759. mouse_event(
  4760.     IN DWORD dwFlags,
  4761.     IN DWORD dx,
  4762.     IN DWORD dy,
  4763.     IN DWORD dwData,
  4764.     IN ULONG_PTR dwExtraInfo);
  4765.  
  4766. #if (_WIN32_WINNT > 0x0400)
  4767.  
  4768. typedef struct tagMOUSEINPUT {
  4769.     LONG    dx;
  4770.     LONG    dy;
  4771.     DWORD   mouseData;
  4772.     DWORD   dwFlags;
  4773.     DWORD   time;
  4774.     ULONG_PTR dwExtraInfo;
  4775. } MOUSEINPUT, *PMOUSEINPUT, FAR* LPMOUSEINPUT;
  4776.  
  4777. typedef struct tagKEYBDINPUT {
  4778.     WORD    wVk;
  4779.     WORD    wScan;
  4780.     DWORD   dwFlags;
  4781.     DWORD   time;
  4782.     ULONG_PTR dwExtraInfo;
  4783. } KEYBDINPUT, *PKEYBDINPUT, FAR* LPKEYBDINPUT;
  4784.  
  4785. typedef struct tagHARDWAREINPUT {
  4786.     DWORD   uMsg;
  4787.     WORD    wParamL;
  4788.     WORD    wParamH;
  4789. } HARDWAREINPUT, *PHARDWAREINPUT, FAR* LPHARDWAREINPUT;
  4790.  
  4791. #define INPUT_MOUSE     0
  4792. #define INPUT_KEYBOARD  1
  4793. #define INPUT_HARDWARE  2
  4794.  
  4795. typedef struct tagINPUT {
  4796.     DWORD   type;
  4797.  
  4798.     union
  4799.     {
  4800.         MOUSEINPUT      mi;
  4801.         KEYBDINPUT      ki;
  4802.         HARDWAREINPUT   hi;
  4803.     };
  4804. } INPUT, *PINPUT, FAR* LPINPUT;
  4805.  
  4806. WINUSERAPI
  4807. UINT
  4808. WINAPI
  4809. SendInput(
  4810.     IN UINT    cInputs,     // number of input in the array
  4811.     IN LPINPUT pInputs,     // array of inputs
  4812.     IN int     cbSize);     // sizeof(INPUT)
  4813.  
  4814. #endif // (_WIN32_WINNT > 0x0400)
  4815.  
  4816. #if(_WIN32_WINNT >= 0x0500)
  4817. typedef struct tagLASTINPUTINFO {
  4818.     UINT cbSize;
  4819.     DWORD dwTime;
  4820. } LASTINPUTINFO, * PLASTINPUTINFO;
  4821.  
  4822. WINUSERAPI
  4823. BOOL
  4824. WINAPI
  4825. GetLastInputInfo(
  4826.     OUT PLASTINPUTINFO plii);
  4827. #endif /* _WIN32_WINNT >= 0x0500 */
  4828.  
  4829. WINUSERAPI
  4830. UINT
  4831. WINAPI
  4832. MapVirtualKeyA(
  4833.     IN UINT uCode,
  4834.     IN UINT uMapType);
  4835. WINUSERAPI
  4836. UINT
  4837. WINAPI
  4838. MapVirtualKeyW(
  4839.     IN UINT uCode,
  4840.     IN UINT uMapType);
  4841. #ifdef UNICODE
  4842. #define MapVirtualKey  MapVirtualKeyW
  4843. #else
  4844. #define MapVirtualKey  MapVirtualKeyA
  4845. #endif // !UNICODE
  4846.  
  4847. #if(WINVER >= 0x0400)
  4848. WINUSERAPI
  4849. UINT
  4850. WINAPI
  4851. MapVirtualKeyExA(
  4852.     IN UINT uCode,
  4853.     IN UINT uMapType,
  4854.     IN HKL dwhkl);
  4855. WINUSERAPI
  4856. UINT
  4857. WINAPI
  4858. MapVirtualKeyExW(
  4859.     IN UINT uCode,
  4860.     IN UINT uMapType,
  4861.     IN HKL dwhkl);
  4862. #ifdef UNICODE
  4863. #define MapVirtualKeyEx  MapVirtualKeyExW
  4864. #else
  4865. #define MapVirtualKeyEx  MapVirtualKeyExA
  4866. #endif // !UNICODE
  4867. #endif /* WINVER >= 0x0400 */
  4868.  
  4869. WINUSERAPI
  4870. BOOL
  4871. WINAPI
  4872. GetInputState(
  4873.     VOID);
  4874.  
  4875. WINUSERAPI
  4876. DWORD
  4877. WINAPI
  4878. GetQueueStatus(
  4879.     IN UINT flags);
  4880.  
  4881. WINUSERAPI
  4882. HWND
  4883. WINAPI
  4884. GetCapture(
  4885.     VOID);
  4886.  
  4887. WINUSERAPI
  4888. HWND
  4889. WINAPI
  4890. SetCapture(
  4891.     IN HWND hWnd);
  4892.  
  4893. WINUSERAPI
  4894. BOOL
  4895. WINAPI
  4896. ReleaseCapture(
  4897.     VOID);
  4898.  
  4899. WINUSERAPI
  4900. DWORD
  4901. WINAPI
  4902. MsgWaitForMultipleObjects(
  4903.     IN DWORD nCount,
  4904.     IN CONST HANDLE *pHandles,
  4905.     IN BOOL fWaitAll,
  4906.     IN DWORD dwMilliseconds,
  4907.     IN DWORD dwWakeMask);
  4908.  
  4909. WINUSERAPI
  4910. DWORD
  4911. WINAPI
  4912. MsgWaitForMultipleObjectsEx(
  4913.     IN DWORD nCount,
  4914.     IN CONST HANDLE *pHandles,
  4915.     IN DWORD dwMilliseconds,
  4916.     IN DWORD dwWakeMask,
  4917.     IN DWORD dwFlags);
  4918.  
  4919. #define MWMO_WAITALL        0x0001
  4920. #define MWMO_ALERTABLE      0x0002
  4921. #define MWMO_INPUTAVAILABLE 0x0004
  4922.  
  4923. /*
  4924.  * Queue status flags for GetQueueStatus() and MsgWaitForMultipleObjects()
  4925.  */
  4926. #define QS_KEY              0x0001
  4927. #define QS_MOUSEMOVE        0x0002
  4928. #define QS_MOUSEBUTTON      0x0004
  4929. #define QS_POSTMESSAGE      0x0008
  4930. #define QS_TIMER            0x0010
  4931. #define QS_PAINT            0x0020
  4932. #define QS_SENDMESSAGE      0x0040
  4933. #define QS_HOTKEY           0x0080
  4934. #define QS_ALLPOSTMESSAGE   0x0100
  4935.  
  4936. #define QS_MOUSE           (QS_MOUSEMOVE     | \
  4937.                             QS_MOUSEBUTTON)
  4938.  
  4939. #define QS_INPUT           (QS_MOUSE         | \
  4940.                             QS_KEY)
  4941.  
  4942. #define QS_ALLEVENTS       (QS_INPUT         | \
  4943.                             QS_POSTMESSAGE   | \
  4944.                             QS_TIMER         | \
  4945.                             QS_PAINT         | \
  4946.                             QS_HOTKEY)
  4947.  
  4948. #define QS_ALLINPUT        (QS_INPUT         | \
  4949.                             QS_POSTMESSAGE   | \
  4950.                             QS_TIMER         | \
  4951.                             QS_PAINT         | \
  4952.                             QS_HOTKEY        | \
  4953.                             QS_SENDMESSAGE)
  4954.  
  4955.  
  4956. /*
  4957.  * Windows Functions
  4958.  */
  4959.  
  4960. WINUSERAPI
  4961. UINT_PTR
  4962. WINAPI
  4963. SetTimer(
  4964.     IN HWND hWnd,
  4965.     IN UINT_PTR nIDEvent,
  4966.     IN UINT uElapse,
  4967.     IN TIMERPROC lpTimerFunc);
  4968.  
  4969. WINUSERAPI
  4970. BOOL
  4971. WINAPI
  4972. KillTimer(
  4973.     IN HWND hWnd,
  4974.     IN UINT_PTR uIDEvent);
  4975.  
  4976. WINUSERAPI
  4977. BOOL
  4978. WINAPI
  4979. IsWindowUnicode(
  4980.     IN HWND hWnd);
  4981.  
  4982. WINUSERAPI
  4983. BOOL
  4984. WINAPI
  4985. EnableWindow(
  4986.     IN HWND hWnd,
  4987.     IN BOOL bEnable);
  4988.  
  4989. WINUSERAPI
  4990. BOOL
  4991. WINAPI
  4992. IsWindowEnabled(
  4993.     IN HWND hWnd);
  4994.  
  4995. WINUSERAPI
  4996. HACCEL
  4997. WINAPI
  4998. LoadAcceleratorsA(
  4999.     IN HINSTANCE hInstance,
  5000.     IN LPCSTR lpTableName);
  5001. WINUSERAPI
  5002. HACCEL
  5003. WINAPI
  5004. LoadAcceleratorsW(
  5005.     IN HINSTANCE hInstance,
  5006.     IN LPCWSTR lpTableName);
  5007. #ifdef UNICODE
  5008. #define LoadAccelerators  LoadAcceleratorsW
  5009. #else
  5010. #define LoadAccelerators  LoadAcceleratorsA
  5011. #endif // !UNICODE
  5012.  
  5013. WINUSERAPI
  5014. HACCEL
  5015. WINAPI
  5016. CreateAcceleratorTableA(
  5017.     IN LPACCEL, IN int);
  5018. WINUSERAPI
  5019. HACCEL
  5020. WINAPI
  5021. CreateAcceleratorTableW(
  5022.     IN LPACCEL, IN int);
  5023. #ifdef UNICODE
  5024. #define CreateAcceleratorTable  CreateAcceleratorTableW
  5025. #else
  5026. #define CreateAcceleratorTable  CreateAcceleratorTableA
  5027. #endif // !UNICODE
  5028.  
  5029. WINUSERAPI
  5030. BOOL
  5031. WINAPI
  5032. DestroyAcceleratorTable(
  5033.     IN HACCEL hAccel);
  5034.  
  5035. WINUSERAPI
  5036. int
  5037. WINAPI
  5038. CopyAcceleratorTableA(
  5039.     IN HACCEL hAccelSrc,
  5040.     OUT LPACCEL lpAccelDst,
  5041.     IN int cAccelEntries);
  5042. WINUSERAPI
  5043. int
  5044. WINAPI
  5045. CopyAcceleratorTableW(
  5046.     IN HACCEL hAccelSrc,
  5047.     OUT LPACCEL lpAccelDst,
  5048.     IN int cAccelEntries);
  5049. #ifdef UNICODE
  5050. #define CopyAcceleratorTable  CopyAcceleratorTableW
  5051. #else
  5052. #define CopyAcceleratorTable  CopyAcceleratorTableA
  5053. #endif // !UNICODE
  5054.  
  5055. #ifndef NOMSG
  5056.  
  5057. WINUSERAPI
  5058. int
  5059. WINAPI
  5060. TranslateAcceleratorA(
  5061.     IN HWND hWnd,
  5062.     IN HACCEL hAccTable,
  5063.     IN LPMSG lpMsg);
  5064. WINUSERAPI
  5065. int
  5066. WINAPI
  5067. TranslateAcceleratorW(
  5068.     IN HWND hWnd,
  5069.     IN HACCEL hAccTable,
  5070.     IN LPMSG lpMsg);
  5071. #ifdef UNICODE
  5072. #define TranslateAccelerator  TranslateAcceleratorW
  5073. #else
  5074. #define TranslateAccelerator  TranslateAcceleratorA
  5075. #endif // !UNICODE
  5076.  
  5077. #endif /* !NOMSG */
  5078.  
  5079. #ifndef NOSYSMETRICS
  5080.  
  5081. /*
  5082.  * GetSystemMetrics() codes
  5083.  */
  5084.  
  5085. #define SM_CXSCREEN             0
  5086. #define SM_CYSCREEN             1
  5087. #define SM_CXVSCROLL            2
  5088. #define SM_CYHSCROLL            3
  5089. #define SM_CYCAPTION            4
  5090. #define SM_CXBORDER             5
  5091. #define SM_CYBORDER             6
  5092. #define SM_CXDLGFRAME           7
  5093. #define SM_CYDLGFRAME           8
  5094. #define SM_CYVTHUMB             9
  5095. #define SM_CXHTHUMB             10
  5096. #define SM_CXICON               11
  5097. #define SM_CYICON               12
  5098. #define SM_CXCURSOR             13
  5099. #define SM_CYCURSOR             14
  5100. #define SM_CYMENU               15
  5101. #define SM_CXFULLSCREEN         16
  5102. #define SM_CYFULLSCREEN         17
  5103. #define SM_CYKANJIWINDOW        18
  5104. #define SM_MOUSEPRESENT         19
  5105. #define SM_CYVSCROLL            20
  5106. #define SM_CXHSCROLL            21
  5107. #define SM_DEBUG                22
  5108. #define SM_SWAPBUTTON           23
  5109. #define SM_RESERVED1            24
  5110. #define SM_RESERVED2            25
  5111. #define SM_RESERVED3            26
  5112. #define SM_RESERVED4            27
  5113. #define SM_CXMIN                28
  5114. #define SM_CYMIN                29
  5115. #define SM_CXSIZE               30
  5116. #define SM_CYSIZE               31
  5117. #define SM_CXFRAME              32
  5118. #define SM_CYFRAME              33
  5119. #define SM_CXMINTRACK           34
  5120. #define SM_CYMINTRACK           35
  5121. #define SM_CXDOUBLECLK          36
  5122. #define SM_CYDOUBLECLK          37
  5123. #define SM_CXICONSPACING        38
  5124. #define SM_CYICONSPACING        39
  5125. #define SM_MENUDROPALIGNMENT    40
  5126. #define SM_PENWINDOWS           41
  5127. #define SM_DBCSENABLED          42
  5128. #define SM_CMOUSEBUTTONS        43
  5129.  
  5130. #if(WINVER >= 0x0400)
  5131. #define SM_CXFIXEDFRAME           SM_CXDLGFRAME  /* ;win40 name change */
  5132. #define SM_CYFIXEDFRAME           SM_CYDLGFRAME  /* ;win40 name change */
  5133. #define SM_CXSIZEFRAME            SM_CXFRAME     /* ;win40 name change */
  5134. #define SM_CYSIZEFRAME            SM_CYFRAME     /* ;win40 name change */
  5135.  
  5136. #define SM_SECURE               44
  5137. #define SM_CXEDGE               45
  5138. #define SM_CYEDGE               46
  5139. #define SM_CXMINSPACING         47
  5140. #define SM_CYMINSPACING         48
  5141. #define SM_CXSMICON             49
  5142. #define SM_CYSMICON             50
  5143. #define SM_CYSMCAPTION          51
  5144. #define SM_CXSMSIZE             52
  5145. #define SM_CYSMSIZE             53
  5146. #define SM_CXMENUSIZE           54
  5147. #define SM_CYMENUSIZE           55
  5148. #define SM_ARRANGE              56
  5149. #define SM_CXMINIMIZED          57
  5150. #define SM_CYMINIMIZED          58
  5151. #define SM_CXMAXTRACK           59
  5152. #define SM_CYMAXTRACK           60
  5153. #define SM_CXMAXIMIZED          61
  5154. #define SM_CYMAXIMIZED          62
  5155. #define SM_NETWORK              63
  5156. #define SM_CLEANBOOT            67
  5157. #define SM_CXDRAG               68
  5158. #define SM_CYDRAG               69
  5159. #endif /* WINVER >= 0x0400 */
  5160. #define SM_SHOWSOUNDS           70
  5161. #if(WINVER >= 0x0400)
  5162. #define SM_CXMENUCHECK          71   /* Use instead of GetMenuCheckMarkDimensions()! */
  5163. #define SM_CYMENUCHECK          72
  5164. #define SM_SLOWMACHINE          73
  5165. #define SM_MIDEASTENABLED       74
  5166. #endif /* WINVER >= 0x0400 */
  5167.  
  5168. #if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
  5169. #define SM_MOUSEWHEELPRESENT    75
  5170. #endif
  5171. #if(WINVER >= 0x0500)
  5172. #define SM_XVIRTUALSCREEN       76
  5173. #define SM_YVIRTUALSCREEN       77
  5174. #define SM_CXVIRTUALSCREEN      78
  5175. #define SM_CYVIRTUALSCREEN      79
  5176. #define SM_CMONITORS            80
  5177. #define SM_SAMEDISPLAYFORMAT    81
  5178. #endif /* WINVER >= 0x0500 */
  5179. #if(_WIN32_WINNT >= 0x0500)
  5180. #define SM_IMMENABLED           82
  5181. #endif /* _WIN32_WINNT >= 0x0500 */
  5182.  
  5183. #if (WINVER < 0x0500) && (!defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0400))
  5184. #define SM_CMETRICS             76
  5185. #else
  5186. #define SM_CMETRICS             83
  5187. #endif
  5188.  
  5189. #if(WINVER >= 0x0500)
  5190. #define SM_REMOTESESSION        0x1000
  5191. #endif /* WINVER >= 0x0500 */
  5192.  
  5193.  
  5194. WINUSERAPI
  5195. int
  5196. WINAPI
  5197. GetSystemMetrics(
  5198.     IN int nIndex);
  5199.  
  5200. #endif /* !NOSYSMETRICS */
  5201.  
  5202. #ifndef NOMENUS
  5203.  
  5204. WINUSERAPI
  5205. HMENU
  5206. WINAPI
  5207. LoadMenuA(
  5208.     IN HINSTANCE hInstance,
  5209.     IN LPCSTR lpMenuName);
  5210. WINUSERAPI
  5211. HMENU
  5212. WINAPI
  5213. LoadMenuW(
  5214.     IN HINSTANCE hInstance,
  5215.     IN LPCWSTR lpMenuName);
  5216. #ifdef UNICODE
  5217. #define LoadMenu  LoadMenuW
  5218. #else
  5219. #define LoadMenu  LoadMenuA
  5220. #endif // !UNICODE
  5221.  
  5222. WINUSERAPI
  5223. HMENU
  5224. WINAPI
  5225. LoadMenuIndirectA(
  5226.     IN CONST MENUTEMPLATEA *lpMenuTemplate);
  5227. WINUSERAPI
  5228. HMENU
  5229. WINAPI
  5230. LoadMenuIndirectW(
  5231.     IN CONST MENUTEMPLATEW *lpMenuTemplate);
  5232. #ifdef UNICODE
  5233. #define LoadMenuIndirect  LoadMenuIndirectW
  5234. #else
  5235. #define LoadMenuIndirect  LoadMenuIndirectA
  5236. #endif // !UNICODE
  5237.  
  5238. WINUSERAPI
  5239. HMENU
  5240. WINAPI
  5241. GetMenu(
  5242.     IN HWND hWnd);
  5243.  
  5244. WINUSERAPI
  5245. BOOL
  5246. WINAPI
  5247. SetMenu(
  5248.     IN HWND hWnd,
  5249.     IN HMENU hMenu);
  5250.  
  5251. WINUSERAPI
  5252. BOOL
  5253. WINAPI
  5254. ChangeMenuA(
  5255.     IN HMENU hMenu,
  5256.     IN UINT cmd,
  5257.     IN LPCSTR lpszNewItem,
  5258.     IN UINT cmdInsert,
  5259.     IN UINT flags);
  5260. WINUSERAPI
  5261. BOOL
  5262. WINAPI
  5263. ChangeMenuW(
  5264.     IN HMENU hMenu,
  5265.     IN UINT cmd,
  5266.     IN LPCWSTR lpszNewItem,
  5267.     IN UINT cmdInsert,
  5268.     IN UINT flags);
  5269. #ifdef UNICODE
  5270. #define ChangeMenu  ChangeMenuW
  5271. #else
  5272. #define ChangeMenu  ChangeMenuA
  5273. #endif // !UNICODE
  5274.  
  5275. WINUSERAPI
  5276. BOOL
  5277. WINAPI
  5278. HiliteMenuItem(
  5279.     IN HWND hWnd,
  5280.     IN HMENU hMenu,
  5281.     IN UINT uIDHiliteItem,
  5282.     IN UINT uHilite);
  5283.  
  5284. WINUSERAPI
  5285. int
  5286. WINAPI
  5287. GetMenuStringA(
  5288.     IN HMENU hMenu,
  5289.     IN UINT uIDItem,
  5290.     OUT LPSTR lpString,
  5291.     IN int nMaxCount,
  5292.     IN UINT uFlag);
  5293. WINUSERAPI
  5294. int
  5295. WINAPI
  5296. GetMenuStringW(
  5297.     IN HMENU hMenu,
  5298.     IN UINT uIDItem,
  5299.     OUT LPWSTR lpString,
  5300.     IN int nMaxCount,
  5301.     IN UINT uFlag);
  5302. #ifdef UNICODE
  5303. #define GetMenuString  GetMenuStringW
  5304. #else
  5305. #define GetMenuString  GetMenuStringA
  5306. #endif // !UNICODE
  5307.  
  5308. WINUSERAPI
  5309. UINT
  5310. WINAPI
  5311. GetMenuState(
  5312.     IN HMENU hMenu,
  5313.     IN UINT uId,
  5314.     IN UINT uFlags);
  5315.  
  5316. WINUSERAPI
  5317. BOOL
  5318. WINAPI
  5319. DrawMenuBar(
  5320.     IN HWND hWnd);
  5321.  
  5322.  
  5323. WINUSERAPI
  5324. HMENU
  5325. WINAPI
  5326. GetSystemMenu(
  5327.     IN HWND hWnd,
  5328.     IN BOOL bRevert);
  5329.  
  5330.  
  5331. WINUSERAPI
  5332. HMENU
  5333. WINAPI
  5334. CreateMenu(
  5335.     VOID);
  5336.  
  5337. WINUSERAPI
  5338. HMENU
  5339. WINAPI
  5340. CreatePopupMenu(
  5341.     VOID);
  5342.  
  5343. WINUSERAPI
  5344. BOOL
  5345. WINAPI
  5346. DestroyMenu(
  5347.     IN HMENU hMenu);
  5348.  
  5349. WINUSERAPI
  5350. DWORD
  5351. WINAPI
  5352. CheckMenuItem(
  5353.     IN HMENU hMenu,
  5354.     IN UINT uIDCheckItem,
  5355.     IN UINT uCheck);
  5356.  
  5357. WINUSERAPI
  5358. BOOL
  5359. WINAPI
  5360. EnableMenuItem(
  5361.     IN HMENU hMenu,
  5362.     IN UINT uIDEnableItem,
  5363.     IN UINT uEnable);
  5364.  
  5365. WINUSERAPI
  5366. HMENU
  5367. WINAPI
  5368. GetSubMenu(
  5369.     IN HMENU hMenu,
  5370.     IN int nPos);
  5371.  
  5372. WINUSERAPI
  5373. UINT
  5374. WINAPI
  5375. GetMenuItemID(
  5376.     IN HMENU hMenu,
  5377.     IN int nPos);
  5378.  
  5379. WINUSERAPI
  5380. int
  5381. WINAPI
  5382. GetMenuItemCount(
  5383.     IN HMENU hMenu);
  5384.  
  5385. WINUSERAPI
  5386. BOOL
  5387. WINAPI
  5388. InsertMenuA(
  5389.     IN HMENU hMenu,
  5390.     IN UINT uPosition,
  5391.     IN UINT uFlags,
  5392.     IN UINT_PTR uIDNewItem,
  5393.     IN LPCSTR lpNewItem
  5394.     );
  5395. WINUSERAPI
  5396. BOOL
  5397. WINAPI
  5398. InsertMenuW(
  5399.     IN HMENU hMenu,
  5400.     IN UINT uPosition,
  5401.     IN UINT uFlags,
  5402.     IN UINT_PTR uIDNewItem,
  5403.     IN LPCWSTR lpNewItem
  5404.     );
  5405. #ifdef UNICODE
  5406. #define InsertMenu  InsertMenuW
  5407. #else
  5408. #define InsertMenu  InsertMenuA
  5409. #endif // !UNICODE
  5410.  
  5411. WINUSERAPI
  5412. BOOL
  5413. WINAPI
  5414. AppendMenuA(
  5415.     IN HMENU hMenu,
  5416.     IN UINT uFlags,
  5417.     IN UINT_PTR uIDNewItem,
  5418.     IN LPCSTR lpNewItem
  5419.     );
  5420. WINUSERAPI
  5421. BOOL
  5422. WINAPI
  5423. AppendMenuW(
  5424.     IN HMENU hMenu,
  5425.     IN UINT uFlags,
  5426.     IN UINT_PTR uIDNewItem,
  5427.     IN LPCWSTR lpNewItem
  5428.     );
  5429. #ifdef UNICODE
  5430. #define AppendMenu  AppendMenuW
  5431. #else
  5432. #define AppendMenu  AppendMenuA
  5433. #endif // !UNICODE
  5434.  
  5435. WINUSERAPI
  5436. BOOL
  5437. WINAPI
  5438. ModifyMenuA(
  5439.     IN HMENU hMnu,
  5440.     IN UINT uPosition,
  5441.     IN UINT uFlags,
  5442.     IN UINT_PTR uIDNewItem,
  5443.     IN LPCSTR lpNewItem
  5444.     );
  5445. WINUSERAPI
  5446. BOOL
  5447. WINAPI
  5448. ModifyMenuW(
  5449.     IN HMENU hMnu,
  5450.     IN UINT uPosition,
  5451.     IN UINT uFlags,
  5452.     IN UINT_PTR uIDNewItem,
  5453.     IN LPCWSTR lpNewItem
  5454.     );
  5455. #ifdef UNICODE
  5456. #define ModifyMenu  ModifyMenuW
  5457. #else
  5458. #define ModifyMenu  ModifyMenuA
  5459. #endif // !UNICODE
  5460.  
  5461. WINUSERAPI
  5462. BOOL
  5463. WINAPI RemoveMenu(
  5464.     IN HMENU hMenu,
  5465.     IN UINT uPosition,
  5466.     IN UINT uFlags);
  5467.  
  5468. WINUSERAPI
  5469. BOOL
  5470. WINAPI
  5471. DeleteMenu(
  5472.     IN HMENU hMenu,
  5473.     IN UINT uPosition,
  5474.     IN UINT uFlags);
  5475.  
  5476. WINUSERAPI
  5477. BOOL
  5478. WINAPI
  5479. SetMenuItemBitmaps(
  5480.     IN HMENU hMenu,
  5481.     IN UINT uPosition,
  5482.     IN UINT uFlags,
  5483.     IN HBITMAP hBitmapUnchecked,
  5484.     IN HBITMAP hBitmapChecked);
  5485.  
  5486. WINUSERAPI
  5487. LONG
  5488. WINAPI
  5489. GetMenuCheckMarkDimensions(
  5490.     VOID);
  5491.  
  5492. WINUSERAPI
  5493. BOOL
  5494. WINAPI
  5495. TrackPopupMenu(
  5496.     IN HMENU hMenu,
  5497.     IN UINT uFlags,
  5498.     IN int x,
  5499.     IN int y,
  5500.     IN int nReserved,
  5501.     IN HWND hWnd,
  5502.     IN CONST RECT *prcRect);
  5503.  
  5504. #if(WINVER >= 0x0400)
  5505. /* return codes for WM_MENUCHAR */
  5506. #define MNC_IGNORE  0
  5507. #define MNC_CLOSE   1
  5508. #define MNC_EXECUTE 2
  5509. #define MNC_SELECT  3
  5510.  
  5511. typedef struct tagTPMPARAMS
  5512. {
  5513.     UINT    cbSize;     /* Size of structure */
  5514.     RECT    rcExclude;  /* Screen coordinates of rectangle to exclude when positioning */
  5515. }   TPMPARAMS;
  5516. typedef TPMPARAMS FAR *LPTPMPARAMS;
  5517.  
  5518. WINUSERAPI
  5519. BOOL
  5520. WINAPI
  5521. TrackPopupMenuEx(
  5522.     IN HMENU,
  5523.     IN UINT,
  5524.     IN int,
  5525.     IN int,
  5526.     IN HWND,
  5527.     IN LPTPMPARAMS);
  5528. #endif /* WINVER >= 0x0400 */
  5529.  
  5530. #if(WINVER >= 0x0500)
  5531.  
  5532. #define MNS_NOCHECK         0x80000000
  5533. #define MNS_MODELESS        0x40000000
  5534. #define MNS_DRAGDROP        0x20000000
  5535. #define MNS_AUTODISMISS     0x10000000
  5536. #define MNS_NOTIFYBYPOS     0x08000000
  5537. #define MNS_CHECKORBMP      0x04000000
  5538.  
  5539. #define MIM_MAXHEIGHT               0x00000001
  5540. #define MIM_BACKGROUND              0x00000002
  5541. #define MIM_HELPID                  0x00000004
  5542. #define MIM_MENUDATA                0x00000008
  5543. #define MIM_STYLE                   0x00000010
  5544. #define MIM_APPLYTOSUBMENUS         0x80000000
  5545.  
  5546. typedef struct tagMENUINFO
  5547. {
  5548.     DWORD   cbSize;
  5549.     DWORD   fMask;
  5550.     DWORD   dwStyle;
  5551.     UINT    cyMax;
  5552.     HBRUSH  hbrBack;
  5553.     DWORD   dwContextHelpID;
  5554.     ULONG_PTR dwMenuData;
  5555. }   MENUINFO, FAR *LPMENUINFO;
  5556. typedef MENUINFO CONST FAR *LPCMENUINFO;
  5557.  
  5558. WINUSERAPI
  5559. BOOL
  5560. WINAPI
  5561. GetMenuInfo(
  5562.     IN HMENU,
  5563.     OUT LPMENUINFO);
  5564.  
  5565. WINUSERAPI
  5566. BOOL
  5567. WINAPI
  5568. SetMenuInfo(
  5569.     IN HMENU,
  5570.     IN LPCMENUINFO);
  5571.  
  5572. WINUSERAPI
  5573. BOOL
  5574. WINAPI
  5575. EndMenu(
  5576.         VOID);
  5577.  
  5578. /*
  5579.  * WM_MENUDRAG return values.
  5580.  */
  5581. #define MND_CONTINUE       0
  5582. #define MND_ENDMENU        1
  5583.  
  5584. typedef struct tagMENUGETOBJECTINFO
  5585. {
  5586.     DWORD dwFlags;
  5587.     UINT uPos;
  5588.     HMENU hmenu;
  5589.     PVOID riid;
  5590.     PVOID pvObj;
  5591. } MENUGETOBJECTINFO, * PMENUGETOBJECTINFO;
  5592.  
  5593. /*
  5594.  * MENUGETOBJECTINFO dwFlags values
  5595.  */
  5596. #define MNGOF_TOPGAP         0x00000001
  5597. #define MNGOF_BOTTOMGAP      0x00000002
  5598.  
  5599. /*
  5600.  * WM_MENUGETOBJECT return values
  5601.  */
  5602. #define MNGO_NOINTERFACE     0x00000000
  5603. #define MNGO_NOERROR         0x00000001
  5604. #endif /* WINVER >= 0x0500 */
  5605.  
  5606. #if(WINVER >= 0x0400)
  5607. #define MIIM_STATE       0x00000001
  5608. #define MIIM_ID          0x00000002
  5609. #define MIIM_SUBMENU     0x00000004
  5610. #define MIIM_CHECKMARKS  0x00000008
  5611. #define MIIM_TYPE        0x00000010
  5612. #define MIIM_DATA        0x00000020
  5613. #endif /* WINVER >= 0x0400 */
  5614.  
  5615. #if(WINVER >= 0x0500)
  5616. #define MIIM_STRING      0x00000040
  5617. #define MIIM_BITMAP      0x00000080
  5618. #define MIIM_FTYPE       0x00000100
  5619.  
  5620. #define HBMMENU_CALLBACK            ((HBITMAP) -1)
  5621. #define HBMMENU_SYSTEM              ((HBITMAP)  1)
  5622. #define HBMMENU_MBAR_RESTORE        ((HBITMAP)  2)
  5623. #define HBMMENU_MBAR_MINIMIZE       ((HBITMAP)  3)
  5624. #define HBMMENU_MBAR_CLOSE          ((HBITMAP)  5)
  5625. #define HBMMENU_MBAR_CLOSE_D        ((HBITMAP)  6)
  5626. #define HBMMENU_MBAR_MINIMIZE_D     ((HBITMAP)  7)
  5627. #define HBMMENU_POPUP_CLOSE         ((HBITMAP)  8)
  5628. #define HBMMENU_POPUP_RESTORE       ((HBITMAP)  9)
  5629. #define HBMMENU_POPUP_MAXIMIZE      ((HBITMAP) 10)
  5630. #define HBMMENU_POPUP_MINIMIZE      ((HBITMAP) 11)
  5631. #endif /* WINVER >= 0x0500 */
  5632.  
  5633. #if(WINVER >= 0x0400)
  5634. typedef struct tagMENUITEMINFOA
  5635. {
  5636.     UINT     cbSize;
  5637.     UINT     fMask;
  5638.     UINT     fType;         // used if MIIM_TYPE (4.0) or MIIM_FTYPE (>4.0)
  5639.     UINT     fState;        // used if MIIM_STATE
  5640.     UINT     wID;           // used if MIIM_ID
  5641.     HMENU    hSubMenu;      // used if MIIM_SUBMENU
  5642.     HBITMAP  hbmpChecked;   // used if MIIM_CHECKMARKS
  5643.     HBITMAP  hbmpUnchecked; // used if MIIM_CHECKMARKS
  5644.     ULONG_PTR dwItemData;   // used if MIIM_DATA
  5645.     LPSTR    dwTypeData;    // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)
  5646.     UINT     cch;           // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)
  5647. #if(WINVER >= 0x0500)
  5648.     HBITMAP  hbmpItem;      // used if MIIM_BITMAP
  5649. #endif /* WINVER >= 0x0500 */
  5650. }   MENUITEMINFOA, FAR *LPMENUITEMINFOA;
  5651. typedef struct tagMENUITEMINFOW
  5652. {
  5653.     UINT     cbSize;
  5654.     UINT     fMask;
  5655.     UINT     fType;         // used if MIIM_TYPE (4.0) or MIIM_FTYPE (>4.0)
  5656.     UINT     fState;        // used if MIIM_STATE
  5657.     UINT     wID;           // used if MIIM_ID
  5658.     HMENU    hSubMenu;      // used if MIIM_SUBMENU
  5659.     HBITMAP  hbmpChecked;   // used if MIIM_CHECKMARKS
  5660.     HBITMAP  hbmpUnchecked; // used if MIIM_CHECKMARKS
  5661.     ULONG_PTR dwItemData;   // used if MIIM_DATA
  5662.     LPWSTR   dwTypeData;    // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)
  5663.     UINT     cch;           // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)
  5664. #if(WINVER >= 0x0500)
  5665.     HBITMAP  hbmpItem;      // used if MIIM_BITMAP
  5666. #endif /* WINVER >= 0x0500 */
  5667. }   MENUITEMINFOW, FAR *LPMENUITEMINFOW;
  5668. #ifdef UNICODE
  5669. typedef MENUITEMINFOW MENUITEMINFO;
  5670. typedef LPMENUITEMINFOW LPMENUITEMINFO;
  5671. #else
  5672. typedef MENUITEMINFOA MENUITEMINFO;
  5673. typedef LPMENUITEMINFOA LPMENUITEMINFO;
  5674. #endif // UNICODE
  5675. typedef MENUITEMINFOA CONST FAR *LPCMENUITEMINFOA;
  5676. typedef MENUITEMINFOW CONST FAR *LPCMENUITEMINFOW;
  5677. #ifdef UNICODE
  5678. typedef LPCMENUITEMINFOW LPCMENUITEMINFO;
  5679. #else
  5680. typedef LPCMENUITEMINFOA LPCMENUITEMINFO;
  5681. #endif // UNICODE
  5682.  
  5683.  
  5684. WINUSERAPI
  5685. BOOL
  5686. WINAPI
  5687. InsertMenuItemA(
  5688.     IN HMENU,
  5689.     IN UINT,
  5690.     IN BOOL,
  5691.     IN LPCMENUITEMINFOA
  5692.     );
  5693. WINUSERAPI
  5694. BOOL
  5695. WINAPI
  5696. InsertMenuItemW(
  5697.     IN HMENU,
  5698.     IN UINT,
  5699.     IN BOOL,
  5700.     IN LPCMENUITEMINFOW
  5701.     );
  5702. #ifdef UNICODE
  5703. #define InsertMenuItem  InsertMenuItemW
  5704. #else
  5705. #define InsertMenuItem  InsertMenuItemA
  5706. #endif // !UNICODE
  5707.  
  5708. WINUSERAPI
  5709. BOOL
  5710. WINAPI
  5711. GetMenuItemInfoA(
  5712.     IN HMENU,
  5713.     IN UINT,
  5714.     IN BOOL,
  5715.     IN OUT LPMENUITEMINFOA
  5716.     );
  5717. WINUSERAPI
  5718. BOOL
  5719. WINAPI
  5720. GetMenuItemInfoW(
  5721.     IN HMENU,
  5722.     IN UINT,
  5723.     IN BOOL,
  5724.     IN OUT LPMENUITEMINFOW
  5725.     );
  5726. #ifdef UNICODE
  5727. #define GetMenuItemInfo  GetMenuItemInfoW
  5728. #else
  5729. #define GetMenuItemInfo  GetMenuItemInfoA
  5730. #endif // !UNICODE
  5731.  
  5732. WINUSERAPI
  5733. BOOL
  5734. WINAPI
  5735. SetMenuItemInfoA(
  5736.     IN HMENU,
  5737.     IN UINT,
  5738.     IN BOOL,
  5739.     IN LPCMENUITEMINFOA
  5740.     );
  5741. WINUSERAPI
  5742. BOOL
  5743. WINAPI
  5744. SetMenuItemInfoW(
  5745.     IN HMENU,
  5746.     IN UINT,
  5747.     IN BOOL,
  5748.     IN LPCMENUITEMINFOW
  5749.     );
  5750. #ifdef UNICODE
  5751. #define SetMenuItemInfo  SetMenuItemInfoW
  5752. #else
  5753. #define SetMenuItemInfo  SetMenuItemInfoA
  5754. #endif // !UNICODE
  5755.  
  5756.  
  5757. #define GMDI_USEDISABLED    0x0001L
  5758. #define GMDI_GOINTOPOPUPS   0x0002L
  5759.  
  5760. WINUSERAPI UINT    WINAPI GetMenuDefaultItem( IN HMENU hMenu, IN UINT fByPos, IN UINT gmdiFlags);
  5761. WINUSERAPI BOOL    WINAPI SetMenuDefaultItem( IN HMENU hMenu, IN UINT uItem,  IN UINT fByPos);
  5762.  
  5763. WINUSERAPI BOOL    WINAPI GetMenuItemRect( IN HWND hWnd, IN HMENU hMenu, IN UINT uItem, OUT LPRECT lprcItem);
  5764. WINUSERAPI int     WINAPI MenuItemFromPoint( IN HWND hWnd, IN HMENU hMenu, IN POINT ptScreen);
  5765. #endif /* WINVER >= 0x0400 */
  5766.  
  5767. /*
  5768.  * Flags for TrackPopupMenu
  5769.  */
  5770. #define TPM_LEFTBUTTON  0x0000L
  5771. #define TPM_RIGHTBUTTON 0x0002L
  5772. #define TPM_LEFTALIGN   0x0000L
  5773. #define TPM_CENTERALIGN 0x0004L
  5774. #define TPM_RIGHTALIGN  0x0008L
  5775. #if(WINVER >= 0x0400)
  5776. #define TPM_TOPALIGN        0x0000L
  5777. #define TPM_VCENTERALIGN    0x0010L
  5778. #define TPM_BOTTOMALIGN     0x0020L
  5779.  
  5780. #define TPM_HORIZONTAL      0x0000L     /* Horz alignment matters more */
  5781. #define TPM_VERTICAL        0x0040L     /* Vert alignment matters more */
  5782. #define TPM_NONOTIFY        0x0080L     /* Don't send any notification msgs */
  5783. #define TPM_RETURNCMD       0x0100L
  5784. #endif /* WINVER >= 0x0400 */
  5785. #if(WINVER >= 0x0500)
  5786. #define TPM_RECURSE         0x0001L
  5787. #define TPM_HORPOSANIMATION 0x0400L
  5788. #define TPM_HORNEGANIMATION 0x0800L
  5789. #define TPM_VERPOSANIMATION 0x1000L
  5790. #define TPM_VERNEGANIMATION 0x2000L
  5791. #if(_WIN32_WINNT >= 0x0500)
  5792. #define TPM_NOANIMATION     0x4000L
  5793. #endif /* _WIN32_WINNT >= 0x0500 */
  5794. #endif /* WINVER >= 0x0500 */
  5795.  
  5796.  
  5797. #endif /* !NOMENUS */
  5798.  
  5799.  
  5800. #if(WINVER >= 0x0400)
  5801. //
  5802. // Drag-and-drop support
  5803. // Obsolete - use OLE instead
  5804. //
  5805. typedef struct tagDROPSTRUCT
  5806. {
  5807.     HWND    hwndSource;
  5808.     HWND    hwndSink;
  5809.     DWORD   wFmt;
  5810.     ULONG_PTR dwData;
  5811.     POINT   ptDrop;
  5812.     DWORD   dwControlData;
  5813. } DROPSTRUCT, *PDROPSTRUCT, *LPDROPSTRUCT;
  5814.  
  5815. #define DOF_EXECUTABLE      0x8001      // wFmt flags
  5816. #define DOF_DOCUMENT        0x8002
  5817. #define DOF_DIRECTORY       0x8003
  5818. #define DOF_MULTIPLE        0x8004
  5819. #define DOF_PROGMAN         0x0001
  5820. #define DOF_SHELLDATA       0x0002
  5821.  
  5822. #define DO_DROPFILE         0x454C4946L
  5823. #define DO_PRINTFILE        0x544E5250L
  5824.  
  5825. WINUSERAPI
  5826. DWORD
  5827. WINAPI
  5828. DragObject(
  5829.     IN HWND,
  5830.     IN HWND,
  5831.     IN UINT,
  5832.     IN ULONG_PTR,
  5833.     IN HCURSOR);
  5834.  
  5835. WINUSERAPI
  5836. BOOL
  5837. WINAPI
  5838. DragDetect(
  5839.     IN HWND,
  5840.     IN POINT);
  5841. #endif /* WINVER >= 0x0400 */
  5842.  
  5843. WINUSERAPI
  5844. BOOL
  5845. WINAPI
  5846. DrawIcon(
  5847.     IN HDC hDC,
  5848.     IN int X,
  5849.     IN int Y,
  5850.     IN HICON hIcon);
  5851.  
  5852. #ifndef NODRAWTEXT
  5853.  
  5854. /*
  5855.  * DrawText() Format Flags
  5856.  */
  5857. #define DT_TOP                      0x00000000
  5858. #define DT_LEFT                     0x00000000
  5859. #define DT_CENTER                   0x00000001
  5860. #define DT_RIGHT                    0x00000002
  5861. #define DT_VCENTER                  0x00000004
  5862. #define DT_BOTTOM                   0x00000008
  5863. #define DT_WORDBREAK                0x00000010
  5864. #define DT_SINGLELINE               0x00000020
  5865. #define DT_EXPANDTABS               0x00000040
  5866. #define DT_TABSTOP                  0x00000080
  5867. #define DT_NOCLIP                   0x00000100
  5868. #define DT_EXTERNALLEADING          0x00000200
  5869. #define DT_CALCRECT                 0x00000400
  5870. #define DT_NOPREFIX                 0x00000800
  5871. #define DT_INTERNAL                 0x00001000
  5872.  
  5873. #if(WINVER >= 0x0400)
  5874. #define DT_EDITCONTROL              0x00002000
  5875. #define DT_PATH_ELLIPSIS            0x00004000
  5876. #define DT_END_ELLIPSIS             0x00008000
  5877. #define DT_MODIFYSTRING             0x00010000
  5878. #define DT_RTLREADING               0x00020000
  5879. #define DT_WORD_ELLIPSIS            0x00040000
  5880. #if(WINVER >= 0x0500)
  5881. #define DT_NOFULLWIDTHCHARBREAK     0x00080000
  5882. #if(_WIN32_WINNT >= 0x0500)
  5883. #define DT_HIDEPREFIX               0x00100000
  5884. #define DT_PREFIXONLY               0x00200000
  5885. #endif /* _WIN32_WINNT >= 0x0500 */
  5886. #endif /* WINVER >= 0x0500 */
  5887.  
  5888. typedef struct tagDRAWTEXTPARAMS
  5889. {
  5890.     UINT    cbSize;
  5891.     int     iTabLength;
  5892.     int     iLeftMargin;
  5893.     int     iRightMargin;
  5894.     UINT    uiLengthDrawn;
  5895. } DRAWTEXTPARAMS, FAR *LPDRAWTEXTPARAMS;
  5896. #endif /* WINVER >= 0x0400 */
  5897.  
  5898.  
  5899. WINUSERAPI
  5900. int
  5901. WINAPI
  5902. DrawTextA(
  5903.     IN HDC hDC,
  5904.     IN LPCSTR lpString,
  5905.     IN int nCount,
  5906.     IN OUT LPRECT lpRect,
  5907.     IN UINT uFormat);
  5908. WINUSERAPI
  5909. int
  5910. WINAPI
  5911. DrawTextW(
  5912.     IN HDC hDC,
  5913.     IN LPCWSTR lpString,
  5914.     IN int nCount,
  5915.     IN OUT LPRECT lpRect,
  5916.     IN UINT uFormat);
  5917. #ifdef UNICODE
  5918. #define DrawText  DrawTextW
  5919. #else
  5920. #define DrawText  DrawTextA
  5921. #endif // !UNICODE
  5922.  
  5923.  
  5924. #if(WINVER >= 0x0400)
  5925. WINUSERAPI
  5926. int
  5927. WINAPI
  5928. DrawTextExA(
  5929.     IN HDC,
  5930.     IN OUT LPSTR,
  5931.     IN int,
  5932.     IN OUT LPRECT,
  5933.     IN UINT,
  5934.     IN LPDRAWTEXTPARAMS);
  5935. WINUSERAPI
  5936. int
  5937. WINAPI
  5938. DrawTextExW(
  5939.     IN HDC,
  5940.     IN OUT LPWSTR,
  5941.     IN int,
  5942.     IN OUT LPRECT,
  5943.     IN UINT,
  5944.     IN LPDRAWTEXTPARAMS);
  5945. #ifdef UNICODE
  5946. #define DrawTextEx  DrawTextExW
  5947. #else
  5948. #define DrawTextEx  DrawTextExA
  5949. #endif // !UNICODE
  5950. #endif /* WINVER >= 0x0400 */
  5951.  
  5952. #endif /* !NODRAWTEXT */
  5953.  
  5954. WINUSERAPI
  5955. BOOL
  5956. WINAPI
  5957. GrayStringA(
  5958.     IN HDC hDC,
  5959.     IN HBRUSH hBrush,
  5960.     IN GRAYSTRINGPROC lpOutputFunc,
  5961.     IN LPARAM lpData,
  5962.     IN int nCount,
  5963.     IN int X,
  5964.     IN int Y,
  5965.     IN int nWidth,
  5966.     IN int nHeight);
  5967. WINUSERAPI
  5968. BOOL
  5969. WINAPI
  5970. GrayStringW(
  5971.     IN HDC hDC,
  5972.     IN HBRUSH hBrush,
  5973.     IN GRAYSTRINGPROC lpOutputFunc,
  5974.     IN LPARAM lpData,
  5975.     IN int nCount,
  5976.     IN int X,
  5977.     IN int Y,
  5978.     IN int nWidth,
  5979.     IN int nHeight);
  5980. #ifdef UNICODE
  5981. #define GrayString  GrayStringW
  5982. #else
  5983. #define GrayString  GrayStringA
  5984. #endif // !UNICODE
  5985.  
  5986. #if(WINVER >= 0x0400)
  5987. /* Monolithic state-drawing routine */
  5988. /* Image type */
  5989. #define DST_COMPLEX     0x0000
  5990. #define DST_TEXT        0x0001
  5991. #define DST_PREFIXTEXT  0x0002
  5992. #define DST_ICON        0x0003
  5993. #define DST_BITMAP      0x0004
  5994.  
  5995. /* State type */
  5996. #define DSS_NORMAL      0x0000
  5997. #define DSS_UNION       0x0010  /* Gray string appearance */
  5998. #define DSS_DISABLED    0x0020
  5999. #define DSS_MONO        0x0080
  6000. #if(_WIN32_WINNT >= 0x0500)
  6001. #define DSS_HIDEPREFIX  0x0200
  6002. #define DSS_PREFIXONLY  0x0400
  6003. #endif /* _WIN32_WINNT >= 0x0500 */
  6004. #define DSS_RIGHT       0x8000
  6005.  
  6006. WINUSERAPI
  6007. BOOL
  6008. WINAPI
  6009. DrawStateA(
  6010.     IN HDC,
  6011.     IN HBRUSH,
  6012.     IN DRAWSTATEPROC,
  6013.     IN LPARAM,
  6014.     IN WPARAM,
  6015.     IN int,
  6016.     IN int,
  6017.     IN int,
  6018.     IN int,
  6019.     IN UINT);
  6020. WINUSERAPI
  6021. BOOL
  6022. WINAPI
  6023. DrawStateW(
  6024.     IN HDC,
  6025.     IN HBRUSH,
  6026.     IN DRAWSTATEPROC,
  6027.     IN LPARAM,
  6028.     IN WPARAM,
  6029.     IN int,
  6030.     IN int,
  6031.     IN int,
  6032.     IN int,
  6033.     IN UINT);
  6034. #ifdef UNICODE
  6035. #define DrawState  DrawStateW
  6036. #else
  6037. #define DrawState  DrawStateA
  6038. #endif // !UNICODE
  6039. #endif /* WINVER >= 0x0400 */
  6040.  
  6041. WINUSERAPI
  6042. LONG
  6043. WINAPI
  6044. TabbedTextOutA(
  6045.     IN HDC hDC,
  6046.     IN int X,
  6047.     IN int Y,
  6048.     IN LPCSTR lpString,
  6049.     IN int nCount,
  6050.     IN int nTabPositions,
  6051.     IN CONST INT *lpnTabStopPositions,
  6052.     IN int nTabOrigin);
  6053. WINUSERAPI
  6054. LONG
  6055. WINAPI
  6056. TabbedTextOutW(
  6057.     IN HDC hDC,
  6058.     IN int X,
  6059.     IN int Y,
  6060.     IN LPCWSTR lpString,
  6061.     IN int nCount,
  6062.     IN int nTabPositions,
  6063.     IN CONST INT *lpnTabStopPositions,
  6064.     IN int nTabOrigin);
  6065. #ifdef UNICODE
  6066. #define TabbedTextOut  TabbedTextOutW
  6067. #else
  6068. #define TabbedTextOut  TabbedTextOutA
  6069. #endif // !UNICODE
  6070.  
  6071. WINUSERAPI
  6072. DWORD
  6073. WINAPI
  6074. GetTabbedTextExtentA(
  6075.     IN HDC hDC,
  6076.     IN LPCSTR lpString,
  6077.     IN int nCount,
  6078.     IN int nTabPositions,
  6079.     IN CONST INT *lpnTabStopPositions);
  6080. WINUSERAPI
  6081. DWORD
  6082. WINAPI
  6083. GetTabbedTextExtentW(
  6084.     IN HDC hDC,
  6085.     IN LPCWSTR lpString,
  6086.     IN int nCount,
  6087.     IN int nTabPositions,
  6088.     IN CONST INT *lpnTabStopPositions);
  6089. #ifdef UNICODE
  6090. #define GetTabbedTextExtent  GetTabbedTextExtentW
  6091. #else
  6092. #define GetTabbedTextExtent  GetTabbedTextExtentA
  6093. #endif // !UNICODE
  6094.  
  6095. WINUSERAPI
  6096. BOOL
  6097. WINAPI
  6098. UpdateWindow(
  6099.     IN HWND hWnd);
  6100.  
  6101. WINUSERAPI
  6102. HWND
  6103. WINAPI
  6104. SetActiveWindow(
  6105.     IN HWND hWnd);
  6106.  
  6107. WINUSERAPI
  6108. HWND
  6109. WINAPI
  6110. GetForegroundWindow(
  6111.     VOID);
  6112.  
  6113. #if(WINVER >= 0x0400)
  6114. WINUSERAPI
  6115. BOOL
  6116. WINAPI
  6117. PaintDesktop(
  6118.     IN HDC hdc);
  6119.  
  6120. #endif /* WINVER >= 0x0400 */
  6121.  
  6122. WINUSERAPI
  6123. BOOL
  6124. WINAPI
  6125. SetForegroundWindow(
  6126.     IN HWND hWnd);
  6127.  
  6128. #if(_WIN32_WINNT >= 0x0500)
  6129. WINUSERAPI
  6130. BOOL
  6131. WINAPI
  6132. AllowSetForegroundWindow(
  6133.     DWORD dwProcessId);
  6134.  
  6135. #define ASFW_ANY    ((DWORD)-1)
  6136.  
  6137. WINUSERAPI
  6138. BOOL
  6139. WINAPI
  6140. LockSetForegroundWindow(
  6141.     UINT uLockCode);
  6142.  
  6143. #define LSFW_LOCK       1
  6144. #define LSFW_UNLOCK     2
  6145.  
  6146. #endif /* _WIN32_WINNT >= 0x0500 */
  6147.  
  6148. WINUSERAPI
  6149. HWND
  6150. WINAPI
  6151. WindowFromDC(
  6152.     IN HDC hDC);
  6153.  
  6154. WINUSERAPI
  6155. HDC
  6156. WINAPI
  6157. GetDC(
  6158.     IN HWND hWnd);
  6159.  
  6160. WINUSERAPI
  6161. HDC
  6162. WINAPI
  6163. GetDCEx(
  6164.     IN HWND hWnd,
  6165.     IN HRGN hrgnClip,
  6166.     IN DWORD flags);
  6167.  
  6168. /*
  6169.  * GetDCEx() flags
  6170.  */
  6171. #define DCX_WINDOW           0x00000001L
  6172. #define DCX_CACHE            0x00000002L
  6173. #define DCX_NORESETATTRS     0x00000004L
  6174. #define DCX_CLIPCHILDREN     0x00000008L
  6175. #define DCX_CLIPSIBLINGS     0x00000010L
  6176. #define DCX_PARENTCLIP       0x00000020L
  6177. #define DCX_EXCLUDERGN       0x00000040L
  6178. #define DCX_INTERSECTRGN     0x00000080L
  6179. #define DCX_EXCLUDEUPDATE    0x00000100L
  6180. #define DCX_INTERSECTUPDATE  0x00000200L
  6181. #define DCX_LOCKWINDOWUPDATE 0x00000400L
  6182.  
  6183. #define DCX_VALIDATE         0x00200000L
  6184.  
  6185. WINUSERAPI
  6186. HDC
  6187. WINAPI
  6188. GetWindowDC(
  6189.     IN HWND hWnd);
  6190.  
  6191. WINUSERAPI
  6192. int
  6193. WINAPI
  6194. ReleaseDC(
  6195.     IN HWND hWnd,
  6196.     IN HDC hDC);
  6197.  
  6198. WINUSERAPI
  6199. HDC
  6200. WINAPI
  6201. BeginPaint(
  6202.     IN HWND hWnd,
  6203.     OUT LPPAINTSTRUCT lpPaint);
  6204.  
  6205. WINUSERAPI
  6206. BOOL
  6207. WINAPI
  6208. EndPaint(
  6209.     IN HWND hWnd,
  6210.     IN CONST PAINTSTRUCT *lpPaint);
  6211.  
  6212. WINUSERAPI
  6213. BOOL
  6214. WINAPI
  6215. GetUpdateRect(
  6216.     IN HWND hWnd,
  6217.     OUT LPRECT lpRect,
  6218.     IN BOOL bErase);
  6219.  
  6220. WINUSERAPI
  6221. int
  6222. WINAPI
  6223. GetUpdateRgn(
  6224.     IN HWND hWnd,
  6225.     IN HRGN hRgn,
  6226.     IN BOOL bErase);
  6227.  
  6228. WINUSERAPI
  6229. int
  6230. WINAPI
  6231. SetWindowRgn(
  6232.     IN HWND hWnd,
  6233.     IN HRGN hRgn,
  6234.     IN BOOL bRedraw);
  6235.  
  6236. WINUSERAPI
  6237. int
  6238. WINAPI
  6239. GetWindowRgn(
  6240.     IN HWND hWnd,
  6241.     IN HRGN hRgn);
  6242.  
  6243. WINUSERAPI
  6244. int
  6245. WINAPI
  6246. ExcludeUpdateRgn(
  6247.     IN HDC hDC,
  6248.     IN HWND hWnd);
  6249.  
  6250. WINUSERAPI
  6251. BOOL
  6252. WINAPI
  6253. InvalidateRect(
  6254.     IN HWND hWnd,
  6255.     IN CONST RECT *lpRect,
  6256.     IN BOOL bErase);
  6257.  
  6258. WINUSERAPI
  6259. BOOL
  6260. WINAPI
  6261. ValidateRect(
  6262.     IN HWND hWnd,
  6263.     IN CONST RECT *lpRect);
  6264.  
  6265. WINUSERAPI
  6266. BOOL
  6267. WINAPI
  6268. InvalidateRgn(
  6269.     IN HWND hWnd,
  6270.     IN HRGN hRgn,
  6271.     IN BOOL bErase);
  6272.  
  6273. WINUSERAPI
  6274. BOOL
  6275. WINAPI
  6276. ValidateRgn(
  6277.     IN HWND hWnd,
  6278.     IN HRGN hRgn);
  6279.  
  6280.  
  6281. WINUSERAPI
  6282. BOOL
  6283. WINAPI
  6284. RedrawWindow(
  6285.     IN HWND hWnd,
  6286.     IN CONST RECT *lprcUpdate,
  6287.     IN HRGN hrgnUpdate,
  6288.     IN UINT flags);
  6289.  
  6290. /*
  6291.  * RedrawWindow() flags
  6292.  */
  6293. #define RDW_INVALIDATE          0x0001
  6294. #define RDW_INTERNALPAINT       0x0002
  6295. #define RDW_ERASE               0x0004
  6296.  
  6297. #define RDW_VALIDATE            0x0008
  6298. #define RDW_NOINTERNALPAINT     0x0010
  6299. #define RDW_NOERASE             0x0020
  6300.  
  6301. #define RDW_NOCHILDREN          0x0040
  6302. #define RDW_ALLCHILDREN         0x0080
  6303.  
  6304. #define RDW_UPDATENOW           0x0100
  6305. #define RDW_ERASENOW            0x0200
  6306.  
  6307. #define RDW_FRAME               0x0400
  6308. #define RDW_NOFRAME             0x0800
  6309.  
  6310.  
  6311. /*
  6312.  * LockWindowUpdate API
  6313.  */
  6314.  
  6315. WINUSERAPI
  6316. BOOL
  6317. WINAPI
  6318. LockWindowUpdate(
  6319.     IN HWND hWndLock);
  6320.  
  6321. WINUSERAPI
  6322. BOOL
  6323. WINAPI
  6324. ScrollWindow(
  6325.     IN HWND hWnd,
  6326.     IN int XAmount,
  6327.     IN int YAmount,
  6328.     IN CONST RECT *lpRect,
  6329.     IN CONST RECT *lpClipRect);
  6330.  
  6331. WINUSERAPI
  6332. BOOL
  6333. WINAPI
  6334. ScrollDC(
  6335.     IN HDC hDC,
  6336.     IN int dx,
  6337.     IN int dy,
  6338.     IN CONST RECT *lprcScroll,
  6339.     IN CONST RECT *lprcClip,
  6340.     IN HRGN hrgnUpdate,
  6341.     OUT LPRECT lprcUpdate);
  6342.  
  6343. WINUSERAPI
  6344. int
  6345. WINAPI
  6346. ScrollWindowEx(
  6347.     IN HWND hWnd,
  6348.     IN int dx,
  6349.     IN int dy,
  6350.     IN CONST RECT *prcScroll,
  6351.     IN CONST RECT *prcClip,
  6352.     IN HRGN hrgnUpdate,
  6353.     OUT LPRECT prcUpdate,
  6354.     IN UINT flags);
  6355.  
  6356. #define SW_SCROLLCHILDREN   0x0001  /* Scroll children within *lprcScroll. */
  6357. #define SW_INVALIDATE       0x0002  /* Invalidate after scrolling */
  6358. #define SW_ERASE            0x0004  /* If SW_INVALIDATE, don't send WM_ERASEBACKGROUND */
  6359. #if(WINVER >= 0x0500)
  6360. #define SW_SMOOTHSCROLL     0x0010  /* Use smooth scrolling */
  6361. #endif /* WINVER >= 0x0500 */
  6362.  
  6363. #ifndef NOSCROLL
  6364.  
  6365. WINUSERAPI
  6366. int
  6367. WINAPI
  6368. SetScrollPos(
  6369.     IN HWND hWnd,
  6370.     IN int nBar,
  6371.     IN int nPos,
  6372.     IN BOOL bRedraw);
  6373.  
  6374. WINUSERAPI
  6375. int
  6376. WINAPI
  6377. GetScrollPos(
  6378.     IN HWND hWnd,
  6379.     IN int nBar);
  6380.  
  6381. WINUSERAPI
  6382. BOOL
  6383. WINAPI
  6384. SetScrollRange(
  6385.     IN HWND hWnd,
  6386.     IN int nBar,
  6387.     IN int nMinPos,
  6388.     IN int nMaxPos,
  6389.     IN BOOL bRedraw);
  6390.  
  6391. WINUSERAPI
  6392. BOOL
  6393. WINAPI
  6394. GetScrollRange(
  6395.     IN HWND hWnd,
  6396.     IN int nBar,
  6397.     OUT LPINT lpMinPos,
  6398.     OUT LPINT lpMaxPos);
  6399.  
  6400. WINUSERAPI
  6401. BOOL
  6402. WINAPI
  6403. ShowScrollBar(
  6404.     IN HWND hWnd,
  6405.     IN int wBar,
  6406.     IN BOOL bShow);
  6407.  
  6408. WINUSERAPI
  6409. BOOL
  6410. WINAPI
  6411. EnableScrollBar(
  6412.     IN HWND hWnd,
  6413.     IN UINT wSBflags,
  6414.     IN UINT wArrows);
  6415.  
  6416.  
  6417. /*
  6418.  * EnableScrollBar() flags
  6419.  */
  6420. #define ESB_ENABLE_BOTH     0x0000
  6421. #define ESB_DISABLE_BOTH    0x0003
  6422.  
  6423. #define ESB_DISABLE_LEFT    0x0001
  6424. #define ESB_DISABLE_RIGHT   0x0002
  6425.  
  6426. #define ESB_DISABLE_UP      0x0001
  6427. #define ESB_DISABLE_DOWN    0x0002
  6428.  
  6429. #define ESB_DISABLE_LTUP    ESB_DISABLE_LEFT
  6430. #define ESB_DISABLE_RTDN    ESB_DISABLE_RIGHT
  6431.  
  6432.  
  6433. #endif  /* !NOSCROLL */
  6434.  
  6435. WINUSERAPI
  6436. BOOL
  6437. WINAPI
  6438. SetPropA(
  6439.     IN HWND hWnd,
  6440.     IN LPCSTR lpString,
  6441.     IN HANDLE hData);
  6442. WINUSERAPI
  6443. BOOL
  6444. WINAPI
  6445. SetPropW(
  6446.     IN HWND hWnd,
  6447.     IN LPCWSTR lpString,
  6448.     IN HANDLE hData);
  6449. #ifdef UNICODE
  6450. #define SetProp  SetPropW
  6451. #else
  6452. #define SetProp  SetPropA
  6453. #endif // !UNICODE
  6454.  
  6455. WINUSERAPI
  6456. HANDLE
  6457. WINAPI
  6458. GetPropA(
  6459.     IN HWND hWnd,
  6460.     IN LPCSTR lpString);
  6461. WINUSERAPI
  6462. HANDLE
  6463. WINAPI
  6464. GetPropW(
  6465.     IN HWND hWnd,
  6466.     IN LPCWSTR lpString);
  6467. #ifdef UNICODE
  6468. #define GetProp  GetPropW
  6469. #else
  6470. #define GetProp  GetPropA
  6471. #endif // !UNICODE
  6472.  
  6473. WINUSERAPI
  6474. HANDLE
  6475. WINAPI
  6476. RemovePropA(
  6477.     IN HWND hWnd,
  6478.     IN LPCSTR lpString);
  6479. WINUSERAPI
  6480. HANDLE
  6481. WINAPI
  6482. RemovePropW(
  6483.     IN HWND hWnd,
  6484.     IN LPCWSTR lpString);
  6485. #ifdef UNICODE
  6486. #define RemoveProp  RemovePropW
  6487. #else
  6488. #define RemoveProp  RemovePropA
  6489. #endif // !UNICODE
  6490.  
  6491. WINUSERAPI
  6492. int
  6493. WINAPI
  6494. EnumPropsExA(
  6495.     IN HWND hWnd,
  6496.     IN PROPENUMPROCEXA lpEnumFunc,
  6497.     IN LPARAM lParam);
  6498. WINUSERAPI
  6499. int
  6500. WINAPI
  6501. EnumPropsExW(
  6502.     IN HWND hWnd,
  6503.     IN PROPENUMPROCEXW lpEnumFunc,
  6504.     IN LPARAM lParam);
  6505. #ifdef UNICODE
  6506. #define EnumPropsEx  EnumPropsExW
  6507. #else
  6508. #define EnumPropsEx  EnumPropsExA
  6509. #endif // !UNICODE
  6510.  
  6511. WINUSERAPI
  6512. int
  6513. WINAPI
  6514. EnumPropsA(
  6515.     IN HWND hWnd,
  6516.     IN PROPENUMPROCA lpEnumFunc);
  6517. WINUSERAPI
  6518. int
  6519. WINAPI
  6520. EnumPropsW(
  6521.     IN HWND hWnd,
  6522.     IN PROPENUMPROCW lpEnumFunc);
  6523. #ifdef UNICODE
  6524. #define EnumProps  EnumPropsW
  6525. #else
  6526. #define EnumProps  EnumPropsA
  6527. #endif // !UNICODE
  6528.  
  6529. WINUSERAPI
  6530. BOOL
  6531. WINAPI
  6532. SetWindowTextA(
  6533.     IN HWND hWnd,
  6534.     IN LPCSTR lpString);
  6535. WINUSERAPI
  6536. BOOL
  6537. WINAPI
  6538. SetWindowTextW(
  6539.     IN HWND hWnd,
  6540.     IN LPCWSTR lpString);
  6541. #ifdef UNICODE
  6542. #define SetWindowText  SetWindowTextW
  6543. #else
  6544. #define SetWindowText  SetWindowTextA
  6545. #endif // !UNICODE
  6546.  
  6547. WINUSERAPI
  6548. int
  6549. WINAPI
  6550. GetWindowTextA(
  6551.     IN HWND hWnd,
  6552.     OUT LPSTR lpString,
  6553.     IN int nMaxCount);
  6554. WINUSERAPI
  6555. int
  6556. WINAPI
  6557. GetWindowTextW(
  6558.     IN HWND hWnd,
  6559.     OUT LPWSTR lpString,
  6560.     IN int nMaxCount);
  6561. #ifdef UNICODE
  6562. #define GetWindowText  GetWindowTextW
  6563. #else
  6564. #define GetWindowText  GetWindowTextA
  6565. #endif // !UNICODE
  6566.  
  6567. WINUSERAPI
  6568. int
  6569. WINAPI
  6570. GetWindowTextLengthA(
  6571.     IN HWND hWnd);
  6572. WINUSERAPI
  6573. int
  6574. WINAPI
  6575. GetWindowTextLengthW(
  6576.     IN HWND hWnd);
  6577. #ifdef UNICODE
  6578. #define GetWindowTextLength  GetWindowTextLengthW
  6579. #else
  6580. #define GetWindowTextLength  GetWindowTextLengthA
  6581. #endif // !UNICODE
  6582.  
  6583. WINUSERAPI
  6584. BOOL
  6585. WINAPI
  6586. GetClientRect(
  6587.     IN HWND hWnd,
  6588.     OUT LPRECT lpRect);
  6589.  
  6590. WINUSERAPI
  6591. BOOL
  6592. WINAPI
  6593. GetWindowRect(
  6594.     IN HWND hWnd,
  6595.     OUT LPRECT lpRect);
  6596.  
  6597. WINUSERAPI
  6598. BOOL
  6599. WINAPI
  6600. AdjustWindowRect(
  6601.     IN OUT LPRECT lpRect,
  6602.     IN DWORD dwStyle,
  6603.     IN BOOL bMenu);
  6604.  
  6605. WINUSERAPI
  6606. BOOL
  6607. WINAPI
  6608. AdjustWindowRectEx(
  6609.     IN OUT LPRECT lpRect,
  6610.     IN DWORD dwStyle,
  6611.     IN BOOL bMenu,
  6612.     IN DWORD dwExStyle);
  6613.  
  6614. #if(WINVER >= 0x0400)
  6615. #define HELPINFO_WINDOW    0x0001
  6616. #define HELPINFO_MENUITEM  0x0002
  6617. typedef struct tagHELPINFO      /* Structure pointed to by lParam of WM_HELP */
  6618. {
  6619.     UINT    cbSize;             /* Size in bytes of this struct  */
  6620.     int     iContextType;       /* Either HELPINFO_WINDOW or HELPINFO_MENUITEM */
  6621.     int     iCtrlId;            /* Control Id or a Menu item Id. */
  6622.     HANDLE  hItemHandle;        /* hWnd of control or hMenu.     */
  6623.     DWORD_PTR dwContextId;      /* Context Id associated with this item */
  6624.     POINT   MousePos;           /* Mouse Position in screen co-ordinates */
  6625. }  HELPINFO, FAR *LPHELPINFO;
  6626.  
  6627. WINUSERAPI
  6628. BOOL
  6629. WINAPI
  6630. SetWindowContextHelpId(
  6631.     IN HWND,
  6632.     IN DWORD);
  6633.  
  6634. WINUSERAPI
  6635. DWORD
  6636. WINAPI
  6637. GetWindowContextHelpId(
  6638.     IN HWND);
  6639.  
  6640. WINUSERAPI
  6641. BOOL
  6642. WINAPI
  6643. SetMenuContextHelpId(
  6644.     IN HMENU,
  6645.     IN DWORD);
  6646.  
  6647. WINUSERAPI
  6648. DWORD
  6649. WINAPI
  6650. GetMenuContextHelpId(
  6651.     IN HMENU);
  6652.  
  6653. #endif /* WINVER >= 0x0400 */
  6654.  
  6655.  
  6656. #ifndef NOMB
  6657.  
  6658. /*
  6659.  * MessageBox() Flags
  6660.  */
  6661. #define MB_OK                       0x00000000L
  6662. #define MB_OKCANCEL                 0x00000001L
  6663. #define MB_ABORTRETRYIGNORE         0x00000002L
  6664. #define MB_YESNOCANCEL              0x00000003L
  6665. #define MB_YESNO                    0x00000004L
  6666. #define MB_RETRYCANCEL              0x00000005L
  6667. #if(WINVER >= 0x0500)
  6668. #define MB_CANCELTRYCONTINUE        0x00000006L
  6669. #endif /* WINVER >= 0x0500 */
  6670.  
  6671.  
  6672. #define MB_ICONHAND                 0x00000010L
  6673. #define MB_ICONQUESTION             0x00000020L
  6674. #define MB_ICONEXCLAMATION          0x00000030L
  6675. #define MB_ICONASTERISK             0x00000040L
  6676.  
  6677. #if(WINVER >= 0x0400)
  6678. #define MB_USERICON                 0x00000080L
  6679. #define MB_ICONWARNING              MB_ICONEXCLAMATION
  6680. #define MB_ICONERROR                MB_ICONHAND
  6681. #endif /* WINVER >= 0x0400 */
  6682.  
  6683. #define MB_ICONINFORMATION          MB_ICONASTERISK
  6684. #define MB_ICONSTOP                 MB_ICONHAND
  6685.  
  6686. #define MB_DEFBUTTON1               0x00000000L
  6687. #define MB_DEFBUTTON2               0x00000100L
  6688. #define MB_DEFBUTTON3               0x00000200L
  6689. #if(WINVER >= 0x0400)
  6690. #define MB_DEFBUTTON4               0x00000300L
  6691. #endif /* WINVER >= 0x0400 */
  6692.  
  6693. #define MB_APPLMODAL                0x00000000L
  6694. #define MB_SYSTEMMODAL              0x00001000L
  6695. #define MB_TASKMODAL                0x00002000L
  6696. #if(WINVER >= 0x0400)
  6697. #define MB_HELP                     0x00004000L // Help Button
  6698. #endif /* WINVER >= 0x0400 */
  6699.  
  6700. #define MB_NOFOCUS                  0x00008000L
  6701. #define MB_SETFOREGROUND            0x00010000L
  6702. #define MB_DEFAULT_DESKTOP_ONLY     0x00020000L
  6703.  
  6704. #if(WINVER >= 0x0400)
  6705. #define MB_TOPMOST                  0x00040000L
  6706. #define MB_RIGHT                    0x00080000L
  6707. #define MB_RTLREADING               0x00100000L
  6708.  
  6709.  
  6710. #endif /* WINVER >= 0x0400 */
  6711.  
  6712. #ifdef _WIN32_WINNT
  6713. #if (_WIN32_WINNT >= 0x0400)
  6714. #define MB_SERVICE_NOTIFICATION          0x00200000L
  6715. #else
  6716. #define MB_SERVICE_NOTIFICATION          0x00040000L
  6717. #endif
  6718. #define MB_SERVICE_NOTIFICATION_NT3X     0x00040000L
  6719. #endif
  6720.  
  6721. #define MB_TYPEMASK                 0x0000000FL
  6722. #define MB_ICONMASK                 0x000000F0L
  6723. #define MB_DEFMASK                  0x00000F00L
  6724. #define MB_MODEMASK                 0x00003000L
  6725. #define MB_MISCMASK                 0x0000C000L
  6726.  
  6727. WINUSERAPI
  6728. int
  6729. WINAPI
  6730. MessageBoxA(
  6731.     IN HWND hWnd,
  6732.     IN LPCSTR lpText,
  6733.     IN LPCSTR lpCaption,
  6734.     IN UINT uType);
  6735. WINUSERAPI
  6736. int
  6737. WINAPI
  6738. MessageBoxW(
  6739.     IN HWND hWnd,
  6740.     IN LPCWSTR lpText,
  6741.     IN LPCWSTR lpCaption,
  6742.     IN UINT uType);
  6743. #ifdef UNICODE
  6744. #define MessageBox  MessageBoxW
  6745. #else
  6746. #define MessageBox  MessageBoxA
  6747. #endif // !UNICODE
  6748.  
  6749. WINUSERAPI
  6750. int
  6751. WINAPI
  6752. MessageBoxExA(
  6753.     IN HWND hWnd,
  6754.     IN LPCSTR lpText,
  6755.     IN LPCSTR lpCaption,
  6756.     IN UINT uType,
  6757.     IN WORD wLanguageId);
  6758. WINUSERAPI
  6759. int
  6760. WINAPI
  6761. MessageBoxExW(
  6762.     IN HWND hWnd,
  6763.     IN LPCWSTR lpText,
  6764.     IN LPCWSTR lpCaption,
  6765.     IN UINT uType,
  6766.     IN WORD wLanguageId);
  6767. #ifdef UNICODE
  6768. #define MessageBoxEx  MessageBoxExW
  6769. #else
  6770. #define MessageBoxEx  MessageBoxExA
  6771. #endif // !UNICODE
  6772.  
  6773. #if(WINVER >= 0x0400)
  6774.  
  6775. typedef void (CALLBACK *MSGBOXCALLBACK)(LPHELPINFO lpHelpInfo);
  6776.  
  6777. typedef struct tagMSGBOXPARAMSA
  6778. {
  6779.     UINT        cbSize;
  6780.     HWND        hwndOwner;
  6781.     HINSTANCE   hInstance;
  6782.     LPCSTR      lpszText;
  6783.     LPCSTR      lpszCaption;
  6784.     DWORD       dwStyle;
  6785.     LPCSTR      lpszIcon;
  6786.     DWORD_PTR   dwContextHelpId;
  6787.     MSGBOXCALLBACK      lpfnMsgBoxCallback;
  6788.     DWORD   dwLanguageId;
  6789. } MSGBOXPARAMSA, *PMSGBOXPARAMSA, *LPMSGBOXPARAMSA;
  6790. typedef struct tagMSGBOXPARAMSW
  6791. {
  6792.     UINT        cbSize;
  6793.     HWND        hwndOwner;
  6794.     HINSTANCE   hInstance;
  6795.     LPCWSTR     lpszText;
  6796.     LPCWSTR     lpszCaption;
  6797.     DWORD       dwStyle;
  6798.     LPCWSTR     lpszIcon;
  6799.     DWORD_PTR   dwContextHelpId;
  6800.     MSGBOXCALLBACK      lpfnMsgBoxCallback;
  6801.     DWORD   dwLanguageId;
  6802. } MSGBOXPARAMSW, *PMSGBOXPARAMSW, *LPMSGBOXPARAMSW;
  6803. #ifdef UNICODE
  6804. typedef MSGBOXPARAMSW MSGBOXPARAMS;
  6805. typedef PMSGBOXPARAMSW PMSGBOXPARAMS;
  6806. typedef LPMSGBOXPARAMSW LPMSGBOXPARAMS;
  6807. #else
  6808. typedef MSGBOXPARAMSA MSGBOXPARAMS;
  6809. typedef PMSGBOXPARAMSA PMSGBOXPARAMS;
  6810. typedef LPMSGBOXPARAMSA LPMSGBOXPARAMS;
  6811. #endif // UNICODE
  6812.  
  6813.  
  6814. WINUSERAPI
  6815. int
  6816. WINAPI
  6817. MessageBoxIndirectA(
  6818.     IN CONST MSGBOXPARAMSA *);
  6819. WINUSERAPI
  6820. int
  6821. WINAPI
  6822. MessageBoxIndirectW(
  6823.     IN CONST MSGBOXPARAMSW *);
  6824. #ifdef UNICODE
  6825. #define MessageBoxIndirect  MessageBoxIndirectW
  6826. #else
  6827. #define MessageBoxIndirect  MessageBoxIndirectA
  6828. #endif // !UNICODE
  6829. #endif /* WINVER >= 0x0400 */
  6830.  
  6831.  
  6832.  
  6833. WINUSERAPI
  6834. BOOL
  6835. WINAPI
  6836. MessageBeep(
  6837.     IN UINT uType);
  6838.  
  6839. #endif /* !NOMB */
  6840.  
  6841. WINUSERAPI
  6842. int
  6843. WINAPI
  6844. ShowCursor(
  6845.     IN BOOL bShow);
  6846.  
  6847. WINUSERAPI
  6848. BOOL
  6849. WINAPI
  6850. SetCursorPos(
  6851.     IN int X,
  6852.     IN int Y);
  6853.  
  6854. WINUSERAPI
  6855. HCURSOR
  6856. WINAPI
  6857. SetCursor(
  6858.     IN HCURSOR hCursor);
  6859.  
  6860. WINUSERAPI
  6861. BOOL
  6862. WINAPI
  6863. GetCursorPos(
  6864.     OUT LPPOINT lpPoint);
  6865.  
  6866. WINUSERAPI
  6867. BOOL
  6868. WINAPI
  6869. ClipCursor(
  6870.     IN CONST RECT *lpRect);
  6871.  
  6872. WINUSERAPI
  6873. BOOL
  6874. WINAPI
  6875. GetClipCursor(
  6876.     OUT LPRECT lpRect);
  6877.  
  6878. WINUSERAPI
  6879. HCURSOR
  6880. WINAPI
  6881. GetCursor(
  6882.     VOID);
  6883.  
  6884. WINUSERAPI
  6885. BOOL
  6886. WINAPI
  6887. CreateCaret(
  6888.     IN HWND hWnd,
  6889.     IN HBITMAP hBitmap,
  6890.     IN int nWidth,
  6891.     IN int nHeight);
  6892.  
  6893. WINUSERAPI
  6894. UINT
  6895. WINAPI
  6896. GetCaretBlinkTime(
  6897.     VOID);
  6898.  
  6899. WINUSERAPI
  6900. BOOL
  6901. WINAPI
  6902. SetCaretBlinkTime(
  6903.     IN UINT uMSeconds);
  6904.  
  6905. WINUSERAPI
  6906. BOOL
  6907. WINAPI
  6908. DestroyCaret(
  6909.     VOID);
  6910.  
  6911. WINUSERAPI
  6912. BOOL
  6913. WINAPI
  6914. HideCaret(
  6915.     IN HWND hWnd);
  6916.  
  6917. WINUSERAPI
  6918. BOOL
  6919. WINAPI
  6920. ShowCaret(
  6921.     IN HWND hWnd);
  6922.  
  6923. WINUSERAPI
  6924. BOOL
  6925. WINAPI
  6926. SetCaretPos(
  6927.     IN int X,
  6928.     IN int Y);
  6929.  
  6930. WINUSERAPI
  6931. BOOL
  6932. WINAPI
  6933. GetCaretPos(
  6934.     OUT LPPOINT lpPoint);
  6935.  
  6936. WINUSERAPI
  6937. BOOL
  6938. WINAPI
  6939. ClientToScreen(
  6940.     IN HWND hWnd,
  6941.     IN OUT LPPOINT lpPoint);
  6942.  
  6943. WINUSERAPI
  6944. BOOL
  6945. WINAPI
  6946. ScreenToClient(
  6947.     IN HWND hWnd,
  6948.     IN OUT LPPOINT lpPoint);
  6949.  
  6950. WINUSERAPI
  6951. int
  6952. WINAPI
  6953. MapWindowPoints(
  6954.     IN HWND hWndFrom,
  6955.     IN HWND hWndTo,
  6956.     IN OUT LPPOINT lpPoints,
  6957.     IN UINT cPoints);
  6958.  
  6959. WINUSERAPI
  6960. HWND
  6961. WINAPI
  6962. WindowFromPoint(
  6963.     IN POINT Point);
  6964.  
  6965. WINUSERAPI
  6966. HWND
  6967. WINAPI
  6968. ChildWindowFromPoint(
  6969.     IN HWND hWndParent,
  6970.     IN POINT Point);
  6971.  
  6972. #if(WINVER >= 0x0400)
  6973. #define CWP_ALL             0x0000
  6974. #define CWP_SKIPINVISIBLE   0x0001
  6975. #define CWP_SKIPDISABLED    0x0002
  6976. #define CWP_SKIPTRANSPARENT 0x0004
  6977.  
  6978. WINUSERAPI HWND    WINAPI ChildWindowFromPointEx( IN HWND, IN POINT, IN UINT);
  6979. #endif /* WINVER >= 0x0400 */
  6980.  
  6981. #ifndef NOCOLOR
  6982.  
  6983. /*
  6984.  * Color Types
  6985.  */
  6986. #define CTLCOLOR_MSGBOX         0
  6987. #define CTLCOLOR_EDIT           1
  6988. #define CTLCOLOR_LISTBOX        2
  6989. #define CTLCOLOR_BTN            3
  6990. #define CTLCOLOR_DLG            4
  6991. #define CTLCOLOR_SCROLLBAR      5
  6992. #define CTLCOLOR_STATIC         6
  6993. #define CTLCOLOR_MAX            7
  6994.  
  6995. #define COLOR_SCROLLBAR         0
  6996. #define COLOR_BACKGROUND        1
  6997. #define COLOR_ACTIVECAPTION     2
  6998. #define COLOR_INACTIVECAPTION   3
  6999. #define COLOR_MENU              4
  7000. #define COLOR_WINDOW            5
  7001. #define COLOR_WINDOWFRAME       6
  7002. #define COLOR_MENUTEXT          7
  7003. #define COLOR_WINDOWTEXT        8
  7004. #define COLOR_CAPTIONTEXT       9
  7005. #define COLOR_ACTIVEBORDER      10
  7006. #define COLOR_INACTIVEBORDER    11
  7007. #define COLOR_APPWORKSPACE      12
  7008. #define COLOR_HIGHLIGHT         13
  7009. #define COLOR_HIGHLIGHTTEXT     14
  7010. #define COLOR_BTNFACE           15
  7011. #define COLOR_BTNSHADOW         16
  7012. #define COLOR_GRAYTEXT          17
  7013. #define COLOR_BTNTEXT           18
  7014. #define COLOR_INACTIVECAPTIONTEXT 19
  7015. #define COLOR_BTNHIGHLIGHT      20
  7016.  
  7017. #if(WINVER >= 0x0400)
  7018. #define COLOR_3DDKSHADOW        21
  7019. #define COLOR_3DLIGHT           22
  7020. #define COLOR_INFOTEXT          23
  7021. #define COLOR_INFOBK            24
  7022. #endif /* WINVER >= 0x0400 */
  7023.  
  7024. #if(WINVER >= 0x0500)
  7025. #define COLOR_HOTLIGHT          26
  7026. #define COLOR_GRADIENTACTIVECAPTION 27
  7027. #define COLOR_GRADIENTINACTIVECAPTION 28
  7028. #endif /* WINVER >= 0x0500 */
  7029.  
  7030. #if(WINVER >= 0x0400)
  7031. #define COLOR_DESKTOP           COLOR_BACKGROUND
  7032. #define COLOR_3DFACE            COLOR_BTNFACE
  7033. #define COLOR_3DSHADOW          COLOR_BTNSHADOW
  7034. #define COLOR_3DHIGHLIGHT       COLOR_BTNHIGHLIGHT
  7035. #define COLOR_3DHILIGHT         COLOR_BTNHIGHLIGHT
  7036. #define COLOR_BTNHILIGHT        COLOR_BTNHIGHLIGHT
  7037. #endif /* WINVER >= 0x0400 */
  7038.  
  7039.  
  7040. WINUSERAPI
  7041. DWORD
  7042. WINAPI
  7043. GetSysColor(
  7044.     IN int nIndex);
  7045.  
  7046. #if(WINVER >= 0x0400)
  7047. WINUSERAPI
  7048. HBRUSH
  7049. WINAPI
  7050. GetSysColorBrush(
  7051.     IN int nIndex);
  7052.  
  7053.  
  7054. #endif /* WINVER >= 0x0400 */
  7055.  
  7056. WINUSERAPI
  7057. BOOL
  7058. WINAPI
  7059. SetSysColors(
  7060.     IN int cElements,
  7061.     IN CONST INT * lpaElements,
  7062.     IN CONST COLORREF * lpaRgbValues);
  7063.  
  7064. #endif /* !NOCOLOR */
  7065.  
  7066. WINUSERAPI
  7067. BOOL
  7068. WINAPI
  7069. DrawFocusRect(
  7070.     IN HDC hDC,
  7071.     IN CONST RECT * lprc);
  7072.  
  7073. WINUSERAPI
  7074. int
  7075. WINAPI
  7076. FillRect(
  7077.     IN HDC hDC,
  7078.     IN CONST RECT *lprc,
  7079.     IN HBRUSH hbr);
  7080.  
  7081. WINUSERAPI
  7082. int
  7083. WINAPI
  7084. FrameRect(
  7085.     IN HDC hDC,
  7086.     IN CONST RECT *lprc,
  7087.     IN HBRUSH hbr);
  7088.  
  7089. WINUSERAPI
  7090. BOOL
  7091. WINAPI
  7092. InvertRect(
  7093.     IN HDC hDC,
  7094.     IN CONST RECT *lprc);
  7095.  
  7096. WINUSERAPI
  7097. BOOL
  7098. WINAPI
  7099. SetRect(
  7100.     OUT LPRECT lprc,
  7101.     IN int xLeft,
  7102.     IN int yTop,
  7103.     IN int xRight,
  7104.     IN int yBottom);
  7105.  
  7106. WINUSERAPI
  7107. BOOL
  7108. WINAPI
  7109. SetRectEmpty(
  7110.     OUT LPRECT lprc);
  7111.  
  7112. WINUSERAPI
  7113. BOOL
  7114. WINAPI
  7115. CopyRect(
  7116.     OUT LPRECT lprcDst,
  7117.     IN CONST RECT *lprcSrc);
  7118.  
  7119. WINUSERAPI
  7120. BOOL
  7121. WINAPI
  7122. InflateRect(
  7123.     IN OUT LPRECT lprc,
  7124.     IN int dx,
  7125.     IN int dy);
  7126.  
  7127. WINUSERAPI
  7128. BOOL
  7129. WINAPI
  7130. IntersectRect(
  7131.     OUT LPRECT lprcDst,
  7132.     IN CONST RECT *lprcSrc1,
  7133.     IN CONST RECT *lprcSrc2);
  7134.  
  7135. WINUSERAPI
  7136. BOOL
  7137. WINAPI
  7138. UnionRect(
  7139.     OUT LPRECT lprcDst,
  7140.     IN CONST RECT *lprcSrc1,
  7141.     IN CONST RECT *lprcSrc2);
  7142.  
  7143. WINUSERAPI
  7144. BOOL
  7145. WINAPI
  7146. SubtractRect(
  7147.     OUT LPRECT lprcDst,
  7148.     IN CONST RECT *lprcSrc1,
  7149.     IN CONST RECT *lprcSrc2);
  7150.  
  7151. WINUSERAPI
  7152. BOOL
  7153. WINAPI
  7154. OffsetRect(
  7155.     IN OUT LPRECT lprc,
  7156.     IN int dx,
  7157.     IN int dy);
  7158.  
  7159. WINUSERAPI
  7160. BOOL
  7161. WINAPI
  7162. IsRectEmpty(
  7163.     IN CONST RECT *lprc);
  7164.  
  7165. WINUSERAPI
  7166. BOOL
  7167. WINAPI
  7168. EqualRect(
  7169.     IN CONST RECT *lprc1,
  7170.     IN CONST RECT *lprc2);
  7171.  
  7172. WINUSERAPI
  7173. BOOL
  7174. WINAPI
  7175. PtInRect(
  7176.     IN CONST RECT *lprc,
  7177.     IN POINT pt);
  7178.  
  7179. #ifndef NOWINOFFSETS
  7180.  
  7181. WINUSERAPI
  7182. WORD
  7183. WINAPI
  7184. GetWindowWord(
  7185.     IN HWND hWnd,
  7186.     IN int nIndex);
  7187.  
  7188. WINUSERAPI
  7189. WORD
  7190. WINAPI
  7191. SetWindowWord(
  7192.     IN HWND hWnd,
  7193.     IN int nIndex,
  7194.     IN WORD wNewWord);
  7195.  
  7196. WINUSERAPI
  7197. LONG
  7198. WINAPI
  7199. GetWindowLongA(
  7200.     IN HWND hWnd,
  7201.     IN int nIndex);
  7202. WINUSERAPI
  7203. LONG
  7204. WINAPI
  7205. GetWindowLongW(
  7206.     IN HWND hWnd,
  7207.     IN int nIndex);
  7208. #ifdef UNICODE
  7209. #define GetWindowLong  GetWindowLongW
  7210. #else
  7211. #define GetWindowLong  GetWindowLongA
  7212. #endif // !UNICODE
  7213.  
  7214. WINUSERAPI
  7215. LONG
  7216. WINAPI
  7217. SetWindowLongA(
  7218.     IN HWND hWnd,
  7219.     IN int nIndex,
  7220.     IN LONG dwNewLong);
  7221. WINUSERAPI
  7222. LONG
  7223. WINAPI
  7224. SetWindowLongW(
  7225.     IN HWND hWnd,
  7226.     IN int nIndex,
  7227.     IN LONG dwNewLong);
  7228. #ifdef UNICODE
  7229. #define SetWindowLong  SetWindowLongW
  7230. #else
  7231. #define SetWindowLong  SetWindowLongA
  7232. #endif // !UNICODE
  7233.  
  7234. #ifdef _WIN64
  7235.  
  7236. WINUSERAPI
  7237. LONG_PTR
  7238. WINAPI
  7239. GetWindowLongPtrA(
  7240.     HWND hWnd,
  7241.     int nIndex);
  7242. WINUSERAPI
  7243. LONG_PTR
  7244. WINAPI
  7245. GetWindowLongPtrW(
  7246.     HWND hWnd,
  7247.     int nIndex);
  7248. #ifdef UNICODE
  7249. #define GetWindowLongPtr  GetWindowLongPtrW
  7250. #else
  7251. #define GetWindowLongPtr  GetWindowLongPtrA
  7252. #endif // !UNICODE
  7253.  
  7254. WINUSERAPI
  7255. LONG_PTR
  7256. WINAPI
  7257. SetWindowLongPtrA(
  7258.     HWND hWnd,
  7259.     int nIndex,
  7260.     LONG_PTR dwNewLong);
  7261. WINUSERAPI
  7262. LONG_PTR
  7263. WINAPI
  7264. SetWindowLongPtrW(
  7265.     HWND hWnd,
  7266.     int nIndex,
  7267.     LONG_PTR dwNewLong);
  7268. #ifdef UNICODE
  7269. #define SetWindowLongPtr  SetWindowLongPtrW
  7270. #else
  7271. #define SetWindowLongPtr  SetWindowLongPtrA
  7272. #endif // !UNICODE
  7273.  
  7274. #else  /* _WIN64 */
  7275.  
  7276. #define GetWindowLongPtrA   GetWindowLongA
  7277. #define GetWindowLongPtrW   GetWindowLongW
  7278. #ifdef UNICODE
  7279. #define GetWindowLongPtr  GetWindowLongPtrW
  7280. #else
  7281. #define GetWindowLongPtr  GetWindowLongPtrA
  7282. #endif // !UNICODE
  7283.  
  7284. #define SetWindowLongPtrA   SetWindowLongA
  7285. #define SetWindowLongPtrW   SetWindowLongW
  7286. #ifdef UNICODE
  7287. #define SetWindowLongPtr  SetWindowLongPtrW
  7288. #else
  7289. #define SetWindowLongPtr  SetWindowLongPtrA
  7290. #endif // !UNICODE
  7291.  
  7292. #endif /* _WIN64 */
  7293.  
  7294. WINUSERAPI
  7295. WORD
  7296. WINAPI
  7297. GetClassWord(
  7298.     IN HWND hWnd,
  7299.     IN int nIndex);
  7300.  
  7301. WINUSERAPI
  7302. WORD
  7303. WINAPI
  7304. SetClassWord(
  7305.     IN HWND hWnd,
  7306.     IN int nIndex,
  7307.     IN WORD wNewWord);
  7308.  
  7309. WINUSERAPI
  7310. DWORD
  7311. WINAPI
  7312. GetClassLongA(
  7313.     IN HWND hWnd,
  7314.     IN int nIndex);
  7315. WINUSERAPI
  7316. DWORD
  7317. WINAPI
  7318. GetClassLongW(
  7319.     IN HWND hWnd,
  7320.     IN int nIndex);
  7321. #ifdef UNICODE
  7322. #define GetClassLong  GetClassLongW
  7323. #else
  7324. #define GetClassLong  GetClassLongA
  7325. #endif // !UNICODE
  7326.  
  7327. WINUSERAPI
  7328. DWORD
  7329. WINAPI
  7330. SetClassLongA(
  7331.     IN HWND hWnd,
  7332.     IN int nIndex,
  7333.     IN LONG dwNewLong);
  7334. WINUSERAPI
  7335. DWORD
  7336. WINAPI
  7337. SetClassLongW(
  7338.     IN HWND hWnd,
  7339.     IN int nIndex,
  7340.     IN LONG dwNewLong);
  7341. #ifdef UNICODE
  7342. #define SetClassLong  SetClassLongW
  7343. #else
  7344. #define SetClassLong  SetClassLongA
  7345. #endif // !UNICODE
  7346.  
  7347. #ifdef _WIN64
  7348.  
  7349. WINUSERAPI
  7350. ULONG_PTR
  7351. WINAPI
  7352. GetClassLongPtrA(
  7353.     IN HWND hWnd,
  7354.     IN int nIndex);
  7355. WINUSERAPI
  7356. ULONG_PTR
  7357. WINAPI
  7358. GetClassLongPtrW(
  7359.     IN HWND hWnd,
  7360.     IN int nIndex);
  7361. #ifdef UNICODE
  7362. #define GetClassLongPtr  GetClassLongPtrW
  7363. #else
  7364. #define GetClassLongPtr  GetClassLongPtrA
  7365. #endif // !UNICODE
  7366.  
  7367. WINUSERAPI
  7368. ULONG_PTR
  7369. WINAPI
  7370. SetClassLongPtrA(
  7371.     IN HWND hWnd,
  7372.     IN int nIndex,
  7373.     IN LONG_PTR dwNewLong);
  7374. WINUSERAPI
  7375. ULONG_PTR
  7376. WINAPI
  7377. SetClassLongPtrW(
  7378.     IN HWND hWnd,
  7379.     IN int nIndex,
  7380.     IN LONG_PTR dwNewLong);
  7381. #ifdef UNICODE
  7382. #define SetClassLongPtr  SetClassLongPtrW
  7383. #else
  7384. #define SetClassLongPtr  SetClassLongPtrA
  7385. #endif // !UNICODE
  7386.  
  7387. #else  /* _WIN64 */
  7388.  
  7389. #define GetClassLongPtrA    GetClassLongA
  7390. #define GetClassLongPtrW    GetClassLongW
  7391. #ifdef UNICODE
  7392. #define GetClassLongPtr  GetClassLongPtrW
  7393. #else
  7394. #define GetClassLongPtr  GetClassLongPtrA
  7395. #endif // !UNICODE
  7396.  
  7397. #define SetClassLongPtrA    SetClassLongA
  7398. #define SetClassLongPtrW    SetClassLongW
  7399. #ifdef UNICODE
  7400. #define SetClassLongPtr  SetClassLongPtrW
  7401. #else
  7402. #define SetClassLongPtr  SetClassLongPtrA
  7403. #endif // !UNICODE
  7404.  
  7405. #endif /* _WIN64 */
  7406.  
  7407. #endif /* !NOWINOFFSETS */
  7408.  
  7409. #if(WINVER >= 0x0500)
  7410. WINUSERAPI
  7411. BOOL
  7412. WINAPI
  7413. GetProcessDefaultLayout(
  7414.     OUT DWORD *pdwDefaultLayout);
  7415.  
  7416. WINUSERAPI
  7417. BOOL
  7418. WINAPI
  7419. SetProcessDefaultLayout(
  7420.     IN DWORD dwDefaultLayout);
  7421. #endif /* WINVER >= 0x0500 */
  7422.  
  7423. WINUSERAPI
  7424. HWND
  7425. WINAPI
  7426. GetDesktopWindow(
  7427.     VOID);
  7428.  
  7429.  
  7430. WINUSERAPI
  7431. HWND
  7432. WINAPI
  7433. GetParent(
  7434.     IN HWND hWnd);
  7435.  
  7436. WINUSERAPI
  7437. HWND
  7438. WINAPI
  7439. SetParent(
  7440.     IN HWND hWndChild,
  7441.     IN HWND hWndNewParent);
  7442.  
  7443. WINUSERAPI
  7444. BOOL
  7445. WINAPI
  7446. EnumChildWindows(
  7447.     IN HWND hWndParent,
  7448.     IN WNDENUMPROC lpEnumFunc,
  7449.     IN LPARAM lParam);
  7450.  
  7451. WINUSERAPI
  7452. HWND
  7453. WINAPI
  7454. FindWindowA(
  7455.     IN LPCSTR lpClassName,
  7456.     IN LPCSTR lpWindowName);
  7457. WINUSERAPI
  7458. HWND
  7459. WINAPI
  7460. FindWindowW(
  7461.     IN LPCWSTR lpClassName,
  7462.     IN LPCWSTR lpWindowName);
  7463. #ifdef UNICODE
  7464. #define FindWindow  FindWindowW
  7465. #else
  7466. #define FindWindow  FindWindowA
  7467. #endif // !UNICODE
  7468.  
  7469. #if(WINVER >= 0x0400)
  7470. WINUSERAPI HWND    WINAPI FindWindowExA( IN HWND, IN HWND, IN LPCSTR, IN LPCSTR);
  7471. WINUSERAPI HWND    WINAPI FindWindowExW( IN HWND, IN HWND, IN LPCWSTR, IN LPCWSTR);
  7472. #ifdef UNICODE
  7473. #define FindWindowEx  FindWindowExW
  7474. #else
  7475. #define FindWindowEx  FindWindowExA
  7476. #endif // !UNICODE
  7477.  
  7478. #endif /* WINVER >= 0x0400 */
  7479.  
  7480.  
  7481. WINUSERAPI
  7482. BOOL
  7483. WINAPI
  7484. EnumWindows(
  7485.     IN WNDENUMPROC lpEnumFunc,
  7486.     IN LPARAM lParam);
  7487.  
  7488. WINUSERAPI
  7489. BOOL
  7490. WINAPI
  7491. EnumThreadWindows(
  7492.     IN DWORD dwThreadId,
  7493.     IN WNDENUMPROC lpfn,
  7494.     IN LPARAM lParam);
  7495.  
  7496. #define EnumTaskWindows(hTask, lpfn, lParam) EnumThreadWindows(HandleToUlong(hTask), lpfn, lParam)
  7497.  
  7498. WINUSERAPI
  7499. int
  7500. WINAPI
  7501. GetClassNameA(
  7502.     IN HWND hWnd,
  7503.     OUT LPSTR lpClassName,
  7504.     IN int nMaxCount);
  7505. WINUSERAPI
  7506. int
  7507. WINAPI
  7508. GetClassNameW(
  7509.     IN HWND hWnd,
  7510.     OUT LPWSTR lpClassName,
  7511.     IN int nMaxCount);
  7512. #ifdef UNICODE
  7513. #define GetClassName  GetClassNameW
  7514. #else
  7515. #define GetClassName  GetClassNameA
  7516. #endif // !UNICODE
  7517.  
  7518. WINUSERAPI
  7519. HWND
  7520. WINAPI
  7521. GetTopWindow(
  7522.     IN HWND hWnd);
  7523.  
  7524. #define GetNextWindow(hWnd, wCmd) GetWindow(hWnd, wCmd)
  7525. #define GetSysModalWindow() (NULL)
  7526. #define SetSysModalWindow(hWnd) (NULL)
  7527.  
  7528. WINUSERAPI
  7529. DWORD
  7530. WINAPI
  7531. GetWindowThreadProcessId(
  7532.     IN HWND hWnd,
  7533.     OUT LPDWORD lpdwProcessId);
  7534.  
  7535. #define GetWindowTask(hWnd) \
  7536.         ((HANDLE)GetWindowThreadProcessId(hWnd, NULL))
  7537.  
  7538. WINUSERAPI
  7539. HWND
  7540. WINAPI
  7541. GetLastActivePopup(
  7542.     IN HWND hWnd);
  7543.  
  7544. /*
  7545.  * GetWindow() Constants
  7546.  */
  7547. #define GW_HWNDFIRST        0
  7548. #define GW_HWNDLAST         1
  7549. #define GW_HWNDNEXT         2
  7550. #define GW_HWNDPREV         3
  7551. #define GW_OWNER            4
  7552. #define GW_CHILD            5
  7553. #if(WINVER <= 0x0400)
  7554. #define GW_MAX              5
  7555. #else
  7556. #define GW_ENABLEDPOPUP     6
  7557. #define GW_MAX              6
  7558. #endif
  7559.  
  7560. WINUSERAPI
  7561. HWND
  7562. WINAPI
  7563. GetWindow(
  7564.     IN HWND hWnd,
  7565.     IN UINT uCmd);
  7566.  
  7567.  
  7568.  
  7569. #ifndef NOWH
  7570.  
  7571. #ifdef STRICT
  7572.  
  7573. WINUSERAPI
  7574. HHOOK
  7575. WINAPI
  7576. SetWindowsHookA(
  7577.     IN int nFilterType,
  7578.     IN HOOKPROC pfnFilterProc);
  7579. WINUSERAPI
  7580. HHOOK
  7581. WINAPI
  7582. SetWindowsHookW(
  7583.     IN int nFilterType,
  7584.     IN HOOKPROC pfnFilterProc);
  7585. #ifdef UNICODE
  7586. #define SetWindowsHook  SetWindowsHookW
  7587. #else
  7588. #define SetWindowsHook  SetWindowsHookA
  7589. #endif // !UNICODE
  7590.  
  7591. #else /* !STRICT */
  7592.  
  7593. WINUSERAPI
  7594. HOOKPROC
  7595. WINAPI
  7596. SetWindowsHookA(
  7597.     IN int nFilterType,
  7598.     IN HOOKPROC pfnFilterProc);
  7599. WINUSERAPI
  7600. HOOKPROC
  7601. WINAPI
  7602. SetWindowsHookW(
  7603.     IN int nFilterType,
  7604.     IN HOOKPROC pfnFilterProc);
  7605. #ifdef UNICODE
  7606. #define SetWindowsHook  SetWindowsHookW
  7607. #else
  7608. #define SetWindowsHook  SetWindowsHookA
  7609. #endif // !UNICODE
  7610.  
  7611. #endif /* !STRICT */
  7612.  
  7613. WINUSERAPI
  7614. BOOL
  7615. WINAPI
  7616. UnhookWindowsHook(
  7617.     IN int nCode,
  7618.     IN HOOKPROC pfnFilterProc);
  7619.  
  7620. WINUSERAPI
  7621. HHOOK
  7622. WINAPI
  7623. SetWindowsHookExA(
  7624.     IN int idHook,
  7625.     IN HOOKPROC lpfn,
  7626.     IN HINSTANCE hmod,
  7627.     IN DWORD dwThreadId);
  7628. WINUSERAPI
  7629. HHOOK
  7630. WINAPI
  7631. SetWindowsHookExW(
  7632.     IN int idHook,
  7633.     IN HOOKPROC lpfn,
  7634.     IN HINSTANCE hmod,
  7635.     IN DWORD dwThreadId);
  7636. #ifdef UNICODE
  7637. #define SetWindowsHookEx  SetWindowsHookExW
  7638. #else
  7639. #define SetWindowsHookEx  SetWindowsHookExA
  7640. #endif // !UNICODE
  7641.  
  7642. WINUSERAPI
  7643. BOOL
  7644. WINAPI
  7645. UnhookWindowsHookEx(
  7646.     IN HHOOK hhk);
  7647.  
  7648. WINUSERAPI
  7649. LRESULT
  7650. WINAPI
  7651. CallNextHookEx(
  7652.     IN HHOOK hhk,
  7653.     IN int nCode,
  7654.     IN WPARAM wParam,
  7655.     IN LPARAM lParam);
  7656.  
  7657. /*
  7658.  * Macros for source-level compatibility with old functions.
  7659.  */
  7660. #ifdef STRICT
  7661. #define DefHookProc(nCode, wParam, lParam, phhk)\
  7662.         CallNextHookEx(*phhk, nCode, wParam, lParam)
  7663. #else
  7664. #define DefHookProc(nCode, wParam, lParam, phhk)\
  7665.         CallNextHookEx((HHOOK)*phhk, nCode, wParam, lParam)
  7666. #endif /* STRICT */
  7667.  
  7668. #endif /* !NOWH */
  7669.  
  7670. #ifndef NOMENUS
  7671.  
  7672.  
  7673. /* ;win40  -- A lot of MF_* flags have been renamed as MFT_* and MFS_* flags */
  7674. /*
  7675.  * Menu flags for Add/Check/EnableMenuItem()
  7676.  */
  7677. #define MF_INSERT           0x00000000L
  7678. #define MF_CHANGE           0x00000080L
  7679. #define MF_APPEND           0x00000100L
  7680. #define MF_DELETE           0x00000200L
  7681. #define MF_REMOVE           0x00001000L
  7682.  
  7683. #define MF_BYCOMMAND        0x00000000L
  7684. #define MF_BYPOSITION       0x00000400L
  7685.  
  7686. #define MF_SEPARATOR        0x00000800L
  7687.  
  7688. #define MF_ENABLED          0x00000000L
  7689. #define MF_GRAYED           0x00000001L
  7690. #define MF_DISABLED         0x00000002L
  7691.  
  7692. #define MF_UNCHECKED        0x00000000L
  7693. #define MF_CHECKED          0x00000008L
  7694. #define MF_USECHECKBITMAPS  0x00000200L
  7695.  
  7696. #define MF_STRING           0x00000000L
  7697. #define MF_BITMAP           0x00000004L
  7698. #define MF_OWNERDRAW        0x00000100L
  7699.  
  7700. #define MF_POPUP            0x00000010L
  7701. #define MF_MENUBARBREAK     0x00000020L
  7702. #define MF_MENUBREAK        0x00000040L
  7703.  
  7704. #define MF_UNHILITE         0x00000000L
  7705. #define MF_HILITE           0x00000080L
  7706.  
  7707. #if(WINVER >= 0x0400)
  7708. #define MF_DEFAULT          0x00001000L
  7709. #endif /* WINVER >= 0x0400 */
  7710. #define MF_SYSMENU          0x00002000L
  7711. #define MF_HELP             0x00004000L
  7712. #if(WINVER >= 0x0400)
  7713. #define MF_RIGHTJUSTIFY     0x00004000L
  7714. #endif /* WINVER >= 0x0400 */
  7715.  
  7716. #define MF_MOUSESELECT      0x00008000L
  7717. #if(WINVER >= 0x0400)
  7718. #define MF_END              0x00000080L  /* Obsolete -- only used by old RES files */
  7719. #endif /* WINVER >= 0x0400 */
  7720.  
  7721.  
  7722. #if(WINVER >= 0x0400)
  7723. #define MFT_STRING          MF_STRING
  7724. #define MFT_BITMAP          MF_BITMAP
  7725. #define MFT_MENUBARBREAK    MF_MENUBARBREAK
  7726. #define MFT_MENUBREAK       MF_MENUBREAK
  7727. #define MFT_OWNERDRAW       MF_OWNERDRAW
  7728. #define MFT_RADIOCHECK      0x00000200L
  7729. #define MFT_SEPARATOR       MF_SEPARATOR
  7730. #define MFT_RIGHTORDER      0x00002000L
  7731. #define MFT_RIGHTJUSTIFY    MF_RIGHTJUSTIFY
  7732.  
  7733. /* Menu flags for Add/Check/EnableMenuItem() */
  7734. #define MFS_GRAYED          0x00000003L
  7735. #define MFS_DISABLED        MFS_GRAYED
  7736. #define MFS_CHECKED         MF_CHECKED
  7737. #define MFS_HILITE          MF_HILITE
  7738. #define MFS_ENABLED         MF_ENABLED
  7739. #define MFS_UNCHECKED       MF_UNCHECKED
  7740. #define MFS_UNHILITE        MF_UNHILITE
  7741. #define MFS_DEFAULT         MF_DEFAULT
  7742. #endif /* WINVER >= 0x0400 */
  7743.  
  7744.  
  7745. #if(WINVER >= 0x0400)
  7746.  
  7747. WINUSERAPI
  7748. BOOL
  7749. WINAPI
  7750. CheckMenuRadioItem(
  7751.     IN HMENU,
  7752.     IN UINT,
  7753.     IN UINT,
  7754.     IN UINT,
  7755.     IN UINT);
  7756. #endif /* WINVER >= 0x0400 */
  7757.  
  7758. /*
  7759.  * Menu item resource format
  7760.  */
  7761. typedef struct {
  7762.     WORD versionNumber;
  7763.     WORD offset;
  7764. } MENUITEMTEMPLATEHEADER, *PMENUITEMTEMPLATEHEADER;
  7765.  
  7766. typedef struct {        // version 0
  7767.     WORD mtOption;
  7768.     WORD mtID;
  7769.     WCHAR mtString[1];
  7770. } MENUITEMTEMPLATE, *PMENUITEMTEMPLATE;
  7771. #define MF_END             0x00000080L
  7772.  
  7773. #endif /* !NOMENUS */
  7774.  
  7775. #ifndef NOSYSCOMMANDS
  7776.  
  7777. /*
  7778.  * System Menu Command Values
  7779.  */
  7780. #define SC_SIZE         0xF000
  7781. #define SC_MOVE         0xF010
  7782. #define SC_MINIMIZE     0xF020
  7783. #define SC_MAXIMIZE     0xF030
  7784. #define SC_NEXTWINDOW   0xF040
  7785. #define SC_PREVWINDOW   0xF050
  7786. #define SC_CLOSE        0xF060
  7787. #define SC_VSCROLL      0xF070
  7788. #define SC_HSCROLL      0xF080
  7789. #define SC_MOUSEMENU    0xF090
  7790. #define SC_KEYMENU      0xF100
  7791. #define SC_ARRANGE      0xF110
  7792. #define SC_RESTORE      0xF120
  7793. #define SC_TASKLIST     0xF130
  7794. #define SC_SCREENSAVE   0xF140
  7795. #define SC_HOTKEY       0xF150
  7796. #if(WINVER >= 0x0400)
  7797. #define SC_DEFAULT      0xF160
  7798. #define SC_MONITORPOWER 0xF170
  7799. #define SC_CONTEXTHELP  0xF180
  7800. #define SC_SEPARATOR    0xF00F
  7801. #endif /* WINVER >= 0x0400 */
  7802. /*
  7803.  * Obsolete names
  7804.  */
  7805. #define SC_ICON         SC_MINIMIZE
  7806. #define SC_ZOOM         SC_MAXIMIZE
  7807.  
  7808. #endif /* !NOSYSCOMMANDS */
  7809.  
  7810. /*
  7811.  * Resource Loading Routines
  7812.  */
  7813.  
  7814. WINUSERAPI
  7815. HBITMAP
  7816. WINAPI
  7817. LoadBitmapA(
  7818.     IN HINSTANCE hInstance,
  7819.     IN LPCSTR lpBitmapName);
  7820. WINUSERAPI
  7821. HBITMAP
  7822. WINAPI
  7823. LoadBitmapW(
  7824.     IN HINSTANCE hInstance,
  7825.     IN LPCWSTR lpBitmapName);
  7826. #ifdef UNICODE
  7827. #define LoadBitmap  LoadBitmapW
  7828. #else
  7829. #define LoadBitmap  LoadBitmapA
  7830. #endif // !UNICODE
  7831.  
  7832. WINUSERAPI
  7833. HCURSOR
  7834. WINAPI
  7835. LoadCursorA(
  7836.     IN HINSTANCE hInstance,
  7837.     IN LPCSTR lpCursorName);
  7838. WINUSERAPI
  7839. HCURSOR
  7840. WINAPI
  7841. LoadCursorW(
  7842.     IN HINSTANCE hInstance,
  7843.     IN LPCWSTR lpCursorName);
  7844. #ifdef UNICODE
  7845. #define LoadCursor  LoadCursorW
  7846. #else
  7847. #define LoadCursor  LoadCursorA
  7848. #endif // !UNICODE
  7849.  
  7850. WINUSERAPI
  7851. HCURSOR
  7852. WINAPI
  7853. LoadCursorFromFileA(
  7854.     IN LPCSTR lpFileName);
  7855. WINUSERAPI
  7856. HCURSOR
  7857. WINAPI
  7858. LoadCursorFromFileW(
  7859.     IN LPCWSTR lpFileName);
  7860. #ifdef UNICODE
  7861. #define LoadCursorFromFile  LoadCursorFromFileW
  7862. #else
  7863. #define LoadCursorFromFile  LoadCursorFromFileA
  7864. #endif // !UNICODE
  7865.  
  7866. WINUSERAPI
  7867. HCURSOR
  7868. WINAPI
  7869. CreateCursor(
  7870.     IN HINSTANCE hInst,
  7871.     IN int xHotSpot,
  7872.     IN int yHotSpot,
  7873.     IN int nWidth,
  7874.     IN int nHeight,
  7875.     IN CONST VOID *pvANDPlane,
  7876.     IN CONST VOID *pvXORPlane);
  7877.  
  7878. WINUSERAPI
  7879. BOOL
  7880. WINAPI
  7881. DestroyCursor(
  7882.     IN HCURSOR hCursor);
  7883.  
  7884. #ifndef _MAC
  7885. #define CopyCursor(pcur) ((HCURSOR)CopyIcon((HICON)(pcur)))
  7886. #else
  7887. WINUSERAPI
  7888. HCURSOR
  7889. WINAPI
  7890. CopyCursor(
  7891.     IN HCURSOR hCursor);
  7892. #endif
  7893.  
  7894. /*
  7895.  * Standard Cursor IDs
  7896.  */
  7897. #define IDC_ARROW           MAKEINTRESOURCE(32512)
  7898. #define IDC_IBEAM           MAKEINTRESOURCE(32513)
  7899. #define IDC_WAIT            MAKEINTRESOURCE(32514)
  7900. #define IDC_CROSS           MAKEINTRESOURCE(32515)
  7901. #define IDC_UPARROW         MAKEINTRESOURCE(32516)
  7902. #define IDC_SIZE            MAKEINTRESOURCE(32640)  /* OBSOLETE: use IDC_SIZEALL */
  7903. #define IDC_ICON            MAKEINTRESOURCE(32641)  /* OBSOLETE: use IDC_ARROW */
  7904. #define IDC_SIZENWSE        MAKEINTRESOURCE(32642)
  7905. #define IDC_SIZENESW        MAKEINTRESOURCE(32643)
  7906. #define IDC_SIZEWE          MAKEINTRESOURCE(32644)
  7907. #define IDC_SIZENS          MAKEINTRESOURCE(32645)
  7908. #define IDC_SIZEALL         MAKEINTRESOURCE(32646)
  7909. #define IDC_NO              MAKEINTRESOURCE(32648) /*not in win3.1 */
  7910. #if(WINVER >= 0x0500)
  7911. #define IDC_HAND            MAKEINTRESOURCE(32649)
  7912. #endif /* WINVER >= 0x0500 */
  7913. #define IDC_APPSTARTING     MAKEINTRESOURCE(32650) /*not in win3.1 */
  7914. #if(WINVER >= 0x0400)
  7915. #define IDC_HELP            MAKEINTRESOURCE(32651)
  7916. #endif /* WINVER >= 0x0400 */
  7917.  
  7918. WINUSERAPI
  7919. BOOL
  7920. WINAPI
  7921. SetSystemCursor(
  7922.     IN HCURSOR hcur,
  7923.     IN DWORD   id);
  7924.  
  7925. typedef struct _ICONINFO {
  7926.     BOOL    fIcon;
  7927.     DWORD   xHotspot;
  7928.     DWORD   yHotspot;
  7929.     HBITMAP hbmMask;
  7930.     HBITMAP hbmColor;
  7931. } ICONINFO;
  7932. typedef ICONINFO *PICONINFO;
  7933.  
  7934. WINUSERAPI
  7935. HICON
  7936. WINAPI
  7937. LoadIconA(
  7938.     IN HINSTANCE hInstance,
  7939.     IN LPCSTR lpIconName);
  7940. WINUSERAPI
  7941. HICON
  7942. WINAPI
  7943. LoadIconW(
  7944.     IN HINSTANCE hInstance,
  7945.     IN LPCWSTR lpIconName);
  7946. #ifdef UNICODE
  7947. #define LoadIcon  LoadIconW
  7948. #else
  7949. #define LoadIcon  LoadIconA
  7950. #endif // !UNICODE
  7951.  
  7952.  
  7953. WINUSERAPI
  7954. HICON
  7955. WINAPI
  7956. CreateIcon(
  7957.     IN HINSTANCE hInstance,
  7958.     IN int nWidth,
  7959.     IN int nHeight,
  7960.     IN BYTE cPlanes,
  7961.     IN BYTE cBitsPixel,
  7962.     IN CONST BYTE *lpbANDbits,
  7963.     IN CONST BYTE *lpbXORbits);
  7964.  
  7965. WINUSERAPI
  7966. BOOL
  7967. WINAPI
  7968. DestroyIcon(
  7969.     IN HICON hIcon);
  7970.  
  7971. WINUSERAPI
  7972. int
  7973. WINAPI
  7974. LookupIconIdFromDirectory(
  7975.     IN PBYTE presbits,
  7976.     IN BOOL fIcon);
  7977.  
  7978. #if(WINVER >= 0x0400)
  7979. WINUSERAPI
  7980. int
  7981. WINAPI
  7982. LookupIconIdFromDirectoryEx(
  7983.     IN PBYTE presbits,
  7984.     IN BOOL  fIcon,
  7985.     IN int   cxDesired,
  7986.     IN int   cyDesired,
  7987.     IN UINT  Flags);
  7988. #endif /* WINVER >= 0x0400 */
  7989.  
  7990. WINUSERAPI
  7991. HICON
  7992. WINAPI
  7993. CreateIconFromResource(
  7994.     IN PBYTE presbits,
  7995.     IN DWORD dwResSize,
  7996.     IN BOOL fIcon,
  7997.     IN DWORD dwVer);
  7998.  
  7999. #if(WINVER >= 0x0400)
  8000. WINUSERAPI
  8001. HICON
  8002. WINAPI
  8003. CreateIconFromResourceEx(
  8004.     IN PBYTE presbits,
  8005.     IN DWORD dwResSize,
  8006.     IN BOOL  fIcon,
  8007.     IN DWORD dwVer,
  8008.     IN int   cxDesired,
  8009.     IN int   cyDesired,
  8010.     IN UINT  Flags);
  8011.  
  8012. /* Icon/Cursor header */
  8013. typedef struct tagCURSORSHAPE
  8014. {
  8015.     int     xHotSpot;
  8016.     int     yHotSpot;
  8017.     int     cx;
  8018.     int     cy;
  8019.     int     cbWidth;
  8020.     BYTE    Planes;
  8021.     BYTE    BitsPixel;
  8022. } CURSORSHAPE, FAR *LPCURSORSHAPE;
  8023. #endif /* WINVER >= 0x0400 */
  8024.  
  8025. #define IMAGE_BITMAP        0
  8026. #define IMAGE_ICON          1
  8027. #define IMAGE_CURSOR        2
  8028. #if(WINVER >= 0x0400)
  8029. #define IMAGE_ENHMETAFILE   3
  8030.  
  8031. #define LR_DEFAULTCOLOR     0x0000
  8032. #define LR_MONOCHROME       0x0001
  8033. #define LR_COLOR            0x0002
  8034. #define LR_COPYRETURNORG    0x0004
  8035. #define LR_COPYDELETEORG    0x0008
  8036. #define LR_LOADFROMFILE     0x0010
  8037. #define LR_LOADTRANSPARENT  0x0020
  8038. #define LR_DEFAULTSIZE      0x0040
  8039. #define LR_VGACOLOR         0x0080
  8040. #define LR_LOADMAP3DCOLORS  0x1000
  8041. #define LR_CREATEDIBSECTION 0x2000
  8042. #define LR_COPYFROMRESOURCE 0x4000
  8043. #define LR_SHARED           0x8000
  8044.  
  8045. WINUSERAPI
  8046. HANDLE
  8047. WINAPI
  8048. LoadImageA(
  8049.     IN HINSTANCE,
  8050.     IN LPCSTR,
  8051.     IN UINT,
  8052.     IN int,
  8053.     IN int,
  8054.     IN UINT);
  8055. WINUSERAPI
  8056. HANDLE
  8057. WINAPI
  8058. LoadImageW(
  8059.     IN HINSTANCE,
  8060.     IN LPCWSTR,
  8061.     IN UINT,
  8062.     IN int,
  8063.     IN int,
  8064.     IN UINT);
  8065. #ifdef UNICODE
  8066. #define LoadImage  LoadImageW
  8067. #else
  8068. #define LoadImage  LoadImageA
  8069. #endif // !UNICODE
  8070.  
  8071. WINUSERAPI
  8072. HANDLE
  8073. WINAPI
  8074. CopyImage(
  8075.     IN HANDLE,
  8076.     IN UINT,
  8077.     IN int,
  8078.     IN int,
  8079.     IN UINT);
  8080.  
  8081. #define DI_MASK         0x0001
  8082. #define DI_IMAGE        0x0002
  8083. #define DI_NORMAL       0x0003
  8084. #define DI_COMPAT       0x0004
  8085. #define DI_DEFAULTSIZE  0x0008
  8086.  
  8087. WINUSERAPI BOOL WINAPI DrawIconEx( IN HDC hdc, IN int xLeft, IN int yTop,
  8088.               IN HICON hIcon, IN int cxWidth, IN int cyWidth,
  8089.               IN UINT istepIfAniCur, IN HBRUSH hbrFlickerFreeDraw, IN UINT diFlags);
  8090. #endif /* WINVER >= 0x0400 */
  8091.  
  8092. WINUSERAPI
  8093. HICON
  8094. WINAPI
  8095. CreateIconIndirect(
  8096.     IN PICONINFO piconinfo);
  8097.  
  8098. WINUSERAPI
  8099. HICON
  8100. WINAPI
  8101. CopyIcon(
  8102.     IN HICON hIcon);
  8103.  
  8104. WINUSERAPI
  8105. BOOL
  8106. WINAPI
  8107. GetIconInfo(
  8108.     IN HICON hIcon,
  8109.     OUT PICONINFO piconinfo);
  8110.  
  8111. #if(WINVER >= 0x0400)
  8112. #define RES_ICON    1
  8113. #define RES_CURSOR  2
  8114. #endif /* WINVER >= 0x0400 */
  8115.  
  8116. #ifdef OEMRESOURCE
  8117.  
  8118.  
  8119. /*
  8120.  * OEM Resource Ordinal Numbers
  8121.  */
  8122. #define OBM_CLOSE           32754
  8123. #define OBM_UPARROW         32753
  8124. #define OBM_DNARROW         32752
  8125. #define OBM_RGARROW         32751
  8126. #define OBM_LFARROW         32750
  8127. #define OBM_REDUCE          32749
  8128. #define OBM_ZOOM            32748
  8129. #define OBM_RESTORE         32747
  8130. #define OBM_REDUCED         32746
  8131. #define OBM_ZOOMD           32745
  8132. #define OBM_RESTORED        32744
  8133. #define OBM_UPARROWD        32743
  8134. #define OBM_DNARROWD        32742
  8135. #define OBM_RGARROWD        32741
  8136. #define OBM_LFARROWD        32740
  8137. #define OBM_MNARROW         32739
  8138. #define OBM_COMBO           32738
  8139. #define OBM_UPARROWI        32737
  8140. #define OBM_DNARROWI        32736
  8141. #define OBM_RGARROWI        32735
  8142. #define OBM_LFARROWI        32734
  8143.  
  8144. #define OBM_OLD_CLOSE       32767
  8145. #define OBM_SIZE            32766
  8146. #define OBM_OLD_UPARROW     32765
  8147. #define OBM_OLD_DNARROW     32764
  8148. #define OBM_OLD_RGARROW     32763
  8149. #define OBM_OLD_LFARROW     32762
  8150. #define OBM_BTSIZE          32761
  8151. #define OBM_CHECK           32760
  8152. #define OBM_CHECKBOXES      32759
  8153. #define OBM_BTNCORNERS      32758
  8154. #define OBM_OLD_REDUCE      32757
  8155. #define OBM_OLD_ZOOM        32756
  8156. #define OBM_OLD_RESTORE     32755
  8157.  
  8158.  
  8159. #define OCR_NORMAL          32512
  8160. #define OCR_IBEAM           32513
  8161. #define OCR_WAIT            32514
  8162. #define OCR_CROSS           32515
  8163. #define OCR_UP              32516
  8164. #define OCR_SIZE            32640   /* OBSOLETE: use OCR_SIZEALL */
  8165. #define OCR_ICON            32641   /* OBSOLETE: use OCR_NORMAL */
  8166. #define OCR_SIZENWSE        32642
  8167. #define OCR_SIZENESW        32643
  8168. #define OCR_SIZEWE          32644
  8169. #define OCR_SIZENS          32645
  8170. #define OCR_SIZEALL         32646
  8171. #define OCR_ICOCUR          32647   /* OBSOLETE: use OIC_WINLOGO */
  8172. #define OCR_NO              32648
  8173. #if(WINVER >= 0x0500)
  8174. #define OCR_HAND            32649
  8175. #endif /* WINVER >= 0x0500 */
  8176. #if(WINVER >= 0x0400)
  8177. #define OCR_APPSTARTING     32650
  8178. #endif /* WINVER >= 0x0400 */
  8179.  
  8180.  
  8181. #define OIC_SAMPLE          32512
  8182. #define OIC_HAND            32513
  8183. #define OIC_QUES            32514
  8184. #define OIC_BANG            32515
  8185. #define OIC_NOTE            32516
  8186. #if(WINVER >= 0x0400)
  8187. #define OIC_WINLOGO         32517
  8188. #define OIC_WARNING         OIC_BANG
  8189. #define OIC_ERROR           OIC_HAND
  8190. #define OIC_INFORMATION     OIC_NOTE
  8191. #endif /* WINVER >= 0x0400 */
  8192.  
  8193.  
  8194.  
  8195. #endif /* OEMRESOURCE */
  8196.  
  8197. #define ORD_LANGDRIVER    1     /* The ordinal number for the entry point of
  8198.                                 ** language drivers.
  8199.                                 */
  8200.  
  8201. #ifndef NOICONS
  8202.  
  8203. /*
  8204.  * Standard Icon IDs
  8205.  */
  8206. #ifdef RC_INVOKED
  8207. #define IDI_APPLICATION     32512
  8208. #define IDI_HAND            32513
  8209. #define IDI_QUESTION        32514
  8210. #define IDI_EXCLAMATION     32515
  8211. #define IDI_ASTERISK        32516
  8212. #if(WINVER >= 0x0400)
  8213. #define IDI_WINLOGO         32517
  8214. #endif /* WINVER >= 0x0400 */
  8215. #else
  8216. #define IDI_APPLICATION     MAKEINTRESOURCE(32512)
  8217. #define IDI_HAND            MAKEINTRESOURCE(32513)
  8218. #define IDI_QUESTION        MAKEINTRESOURCE(32514)
  8219. #define IDI_EXCLAMATION     MAKEINTRESOURCE(32515)
  8220. #define IDI_ASTERISK        MAKEINTRESOURCE(32516)
  8221. #if(WINVER >= 0x0400)
  8222. #define IDI_WINLOGO         MAKEINTRESOURCE(32517)
  8223. #endif /* WINVER >= 0x0400 */
  8224. #endif /* RC_INVOKED */
  8225.  
  8226. #if(WINVER >= 0x0400)
  8227. #define IDI_WARNING     IDI_EXCLAMATION
  8228. #define IDI_ERROR       IDI_HAND
  8229. #define IDI_INFORMATION IDI_ASTERISK
  8230. #endif /* WINVER >= 0x0400 */
  8231.  
  8232.  
  8233. #endif /* !NOICONS */
  8234.  
  8235. WINUSERAPI
  8236. int
  8237. WINAPI
  8238. LoadStringA(
  8239.     IN HINSTANCE hInstance,
  8240.     IN UINT uID,
  8241.     OUT LPSTR lpBuffer,
  8242.     IN int nBufferMax);
  8243. WINUSERAPI
  8244. int
  8245. WINAPI
  8246. LoadStringW(
  8247.     IN HINSTANCE hInstance,
  8248.     IN UINT uID,
  8249.     OUT LPWSTR lpBuffer,
  8250.     IN int nBufferMax);
  8251. #ifdef UNICODE
  8252. #define LoadString  LoadStringW
  8253. #else
  8254. #define LoadString  LoadStringA
  8255. #endif // !UNICODE
  8256.  
  8257.  
  8258. /*
  8259.  * Dialog Box Command IDs
  8260.  */
  8261. #define IDOK                1
  8262. #define IDCANCEL            2
  8263. #define IDABORT             3
  8264. #define IDRETRY             4
  8265. #define IDIGNORE            5
  8266. #define IDYES               6
  8267. #define IDNO                7
  8268. #if(WINVER >= 0x0400)
  8269. #define IDCLOSE         8
  8270. #define IDHELP          9
  8271. #endif /* WINVER >= 0x0400 */
  8272.  
  8273. #if(WINVER >= 0x0500)
  8274. #define IDTRYAGAIN      10
  8275. #define IDCONTINUE      11
  8276. #endif /* WINVER >= 0x0500 */
  8277.  
  8278.  
  8279. #ifndef NOCTLMGR
  8280.  
  8281. /*
  8282.  * Control Manager Structures and Definitions
  8283.  */
  8284.  
  8285. #ifndef NOWINSTYLES
  8286.  
  8287.  
  8288. /*
  8289.  * Edit Control Styles
  8290.  */
  8291. #define ES_LEFT             0x0000L
  8292. #define ES_CENTER           0x0001L
  8293. #define ES_RIGHT            0x0002L
  8294. #define ES_MULTILINE        0x0004L
  8295. #define ES_UPPERCASE        0x0008L
  8296. #define ES_LOWERCASE        0x0010L
  8297. #define ES_PASSWORD         0x0020L
  8298. #define ES_AUTOVSCROLL      0x0040L
  8299. #define ES_AUTOHSCROLL      0x0080L
  8300. #define ES_NOHIDESEL        0x0100L
  8301. #define ES_OEMCONVERT       0x0400L
  8302. #define ES_READONLY         0x0800L
  8303. #define ES_WANTRETURN       0x1000L
  8304. #if(WINVER >= 0x0400)
  8305. #define ES_NUMBER           0x2000L
  8306. #endif /* WINVER >= 0x0400 */
  8307.  
  8308.  
  8309. #endif /* !NOWINSTYLES */
  8310.  
  8311. /*
  8312.  * Edit Control Notification Codes
  8313.  */
  8314. #define EN_SETFOCUS         0x0100
  8315. #define EN_KILLFOCUS        0x0200
  8316. #define EN_CHANGE           0x0300
  8317. #define EN_UPDATE           0x0400
  8318. #define EN_ERRSPACE         0x0500
  8319. #define EN_MAXTEXT          0x0501
  8320. #define EN_HSCROLL          0x0601
  8321. #define EN_VSCROLL          0x0602
  8322.  
  8323. #if(_WIN32_WINNT >= 0x0500)
  8324. #define EN_ALIGN_LTR_EC     0x0700
  8325. #define EN_ALIGN_RTL_EC     0x0701
  8326. #endif /* _WIN32_WINNT >= 0x0500 */
  8327.  
  8328. #if(WINVER >= 0x0400)
  8329. /* Edit control EM_SETMARGIN parameters */
  8330. #define EC_LEFTMARGIN       0x0001
  8331. #define EC_RIGHTMARGIN      0x0002
  8332. #define EC_USEFONTINFO      0xffff
  8333. #endif /* WINVER >= 0x0400 */
  8334.  
  8335. #if(WINVER >= 0x0500)
  8336. /* wParam of EM_GET/SETIMESTATUS  */
  8337. #define EMSIS_COMPOSITIONSTRING        0x0001
  8338.  
  8339. /* lParam for EMSIS_COMPOSITIONSTRING  */
  8340. #define EIMES_GETCOMPSTRATONCE         0x0001
  8341. #define EIMES_CANCELCOMPSTRINFOCUS     0x0002
  8342. #define EIMES_COMPLETECOMPSTRKILLFOCUS 0x0004
  8343. #endif /* WINVER >= 0x0500 */
  8344.  
  8345. #ifndef NOWINMESSAGES
  8346.  
  8347.  
  8348. /*
  8349.  * Edit Control Messages
  8350.  */
  8351. #define EM_GETSEL               0x00B0
  8352. #define EM_SETSEL               0x00B1
  8353. #define EM_GETRECT              0x00B2
  8354. #define EM_SETRECT              0x00B3
  8355. #define EM_SETRECTNP            0x00B4
  8356. #define EM_SCROLL               0x00B5
  8357. #define EM_LINESCROLL           0x00B6
  8358. #define EM_SCROLLCARET          0x00B7
  8359. #define EM_GETMODIFY            0x00B8
  8360. #define EM_SETMODIFY            0x00B9
  8361. #define EM_GETLINECOUNT         0x00BA
  8362. #define EM_LINEINDEX            0x00BB
  8363. #define EM_SETHANDLE            0x00BC
  8364. #define EM_GETHANDLE            0x00BD
  8365. #define EM_GETTHUMB             0x00BE
  8366. #define EM_LINELENGTH           0x00C1
  8367. #define EM_REPLACESEL           0x00C2
  8368. #define EM_GETLINE              0x00C4
  8369. #define EM_LIMITTEXT            0x00C5
  8370. #define EM_CANUNDO              0x00C6
  8371. #define EM_UNDO                 0x00C7
  8372. #define EM_FMTLINES             0x00C8
  8373. #define EM_LINEFROMCHAR         0x00C9
  8374. #define EM_SETTABSTOPS          0x00CB
  8375. #define EM_SETPASSWORDCHAR      0x00CC
  8376. #define EM_EMPTYUNDOBUFFER      0x00CD
  8377. #define EM_GETFIRSTVISIBLELINE  0x00CE
  8378. #define EM_SETREADONLY          0x00CF
  8379. #define EM_SETWORDBREAKPROC     0x00D0
  8380. #define EM_GETWORDBREAKPROC     0x00D1
  8381. #define EM_GETPASSWORDCHAR      0x00D2
  8382. #if(WINVER >= 0x0400)
  8383. #define EM_SETMARGINS           0x00D3
  8384. #define EM_GETMARGINS           0x00D4
  8385. #define EM_SETLIMITTEXT         EM_LIMITTEXT   /* ;win40 Name change */
  8386. #define EM_GETLIMITTEXT         0x00D5
  8387. #define EM_POSFROMCHAR          0x00D6
  8388. #define EM_CHARFROMPOS          0x00D7
  8389. #endif /* WINVER >= 0x0400 */
  8390.  
  8391. #if(WINVER >= 0x0500)
  8392. #define EM_SETIMESTATUS         0x00D8
  8393. #define EM_GETIMESTATUS         0x00D9
  8394. #endif /* WINVER >= 0x0500 */
  8395.  
  8396.  
  8397. #endif /* !NOWINMESSAGES */
  8398.  
  8399. /*
  8400.  * EDITWORDBREAKPROC code values
  8401.  */
  8402. #define WB_LEFT            0
  8403. #define WB_RIGHT           1
  8404. #define WB_ISDELIMITER     2
  8405.  
  8406.  
  8407. /*
  8408.  * Button Control Styles
  8409.  */
  8410. #define BS_PUSHBUTTON       0x00000000L
  8411. #define BS_DEFPUSHBUTTON    0x00000001L
  8412. #define BS_CHECKBOX         0x00000002L
  8413. #define BS_AUTOCHECKBOX     0x00000003L
  8414. #define BS_RADIOBUTTON      0x00000004L
  8415. #define BS_3STATE           0x00000005L
  8416. #define BS_AUTO3STATE       0x00000006L
  8417. #define BS_GROUPBOX         0x00000007L
  8418. #define BS_USERBUTTON       0x00000008L
  8419. #define BS_AUTORADIOBUTTON  0x00000009L
  8420. #define BS_OWNERDRAW        0x0000000BL
  8421. #define BS_LEFTTEXT         0x00000020L
  8422. #if(WINVER >= 0x0400)
  8423. #define BS_TEXT             0x00000000L
  8424. #define BS_ICON             0x00000040L
  8425. #define BS_BITMAP           0x00000080L
  8426. #define BS_LEFT             0x00000100L
  8427. #define BS_RIGHT            0x00000200L
  8428. #define BS_CENTER           0x00000300L
  8429. #define BS_TOP              0x00000400L
  8430. #define BS_BOTTOM           0x00000800L
  8431. #define BS_VCENTER          0x00000C00L
  8432. #define BS_PUSHLIKE         0x00001000L
  8433. #define BS_MULTILINE        0x00002000L
  8434. #define BS_NOTIFY           0x00004000L
  8435. #define BS_FLAT             0x00008000L
  8436. #define BS_RIGHTBUTTON      BS_LEFTTEXT
  8437. #endif /* WINVER >= 0x0400 */
  8438.  
  8439. /*
  8440.  * User Button Notification Codes
  8441.  */
  8442. #define BN_CLICKED          0
  8443. #define BN_PAINT            1
  8444. #define BN_HILITE           2
  8445. #define BN_UNHILITE         3
  8446. #define BN_DISABLE          4
  8447. #define BN_DOUBLECLICKED    5
  8448. #if(WINVER >= 0x0400)
  8449. #define BN_PUSHED           BN_HILITE
  8450. #define BN_UNPUSHED         BN_UNHILITE
  8451. #define BN_DBLCLK           BN_DOUBLECLICKED
  8452. #define BN_SETFOCUS         6
  8453. #define BN_KILLFOCUS        7
  8454. #endif /* WINVER >= 0x0400 */
  8455.  
  8456. /*
  8457.  * Button Control Messages
  8458.  */
  8459. #define BM_GETCHECK        0x00F0
  8460. #define BM_SETCHECK        0x00F1
  8461. #define BM_GETSTATE        0x00F2
  8462. #define BM_SETSTATE        0x00F3
  8463. #define BM_SETSTYLE        0x00F4
  8464. #if(WINVER >= 0x0400)
  8465. #define BM_CLICK           0x00F5
  8466. #define BM_GETIMAGE        0x00F6
  8467. #define BM_SETIMAGE        0x00F7
  8468.  
  8469. #define BST_UNCHECKED      0x0000
  8470. #define BST_CHECKED        0x0001
  8471. #define BST_INDETERMINATE  0x0002
  8472. #define BST_PUSHED         0x0004
  8473. #define BST_FOCUS          0x0008
  8474. #endif /* WINVER >= 0x0400 */
  8475.  
  8476. /*
  8477.  * Static Control Constants
  8478.  */
  8479. #define SS_LEFT             0x00000000L
  8480. #define SS_CENTER           0x00000001L
  8481. #define SS_RIGHT            0x00000002L
  8482. #define SS_ICON             0x00000003L
  8483. #define SS_BLACKRECT        0x00000004L
  8484. #define SS_GRAYRECT         0x00000005L
  8485. #define SS_WHITERECT        0x00000006L
  8486. #define SS_BLACKFRAME       0x00000007L
  8487. #define SS_GRAYFRAME        0x00000008L
  8488. #define SS_WHITEFRAME       0x00000009L
  8489. #define SS_USERITEM         0x0000000AL
  8490. #define SS_SIMPLE           0x0000000BL
  8491. #define SS_LEFTNOWORDWRAP   0x0000000CL
  8492. #if(WINVER >= 0x0400)
  8493. #define SS_OWNERDRAW        0x0000000DL
  8494. #define SS_BITMAP           0x0000000EL
  8495. #define SS_ENHMETAFILE      0x0000000FL
  8496. #define SS_ETCHEDHORZ       0x00000010L
  8497. #define SS_ETCHEDVERT       0x00000011L
  8498. #define SS_ETCHEDFRAME      0x00000012L
  8499. #define SS_TYPEMASK         0x0000001FL
  8500. #endif /* WINVER >= 0x0400 */
  8501. #define SS_NOPREFIX         0x00000080L /* Don't do "&" character translation */
  8502. #if(WINVER >= 0x0400)
  8503. #define SS_NOTIFY           0x00000100L
  8504. #define SS_CENTERIMAGE      0x00000200L
  8505. #define SS_RIGHTJUST        0x00000400L
  8506. #define SS_REALSIZEIMAGE    0x00000800L
  8507. #define SS_SUNKEN           0x00001000L
  8508. #define SS_ENDELLIPSIS      0x00004000L
  8509. #define SS_PATHELLIPSIS     0x00008000L
  8510. #define SS_WORDELLIPSIS     0x0000C000L
  8511. #define SS_ELLIPSISMASK     0x0000C000L
  8512. #endif /* WINVER >= 0x0400 */
  8513.  
  8514.  
  8515.  
  8516. #ifndef NOWINMESSAGES
  8517. /*
  8518.  * Static Control Mesages
  8519.  */
  8520. #define STM_SETICON         0x0170
  8521. #define STM_GETICON         0x0171
  8522. #if(WINVER >= 0x0400)
  8523. #define STM_SETIMAGE        0x0172
  8524. #define STM_GETIMAGE        0x0173
  8525. #define STN_CLICKED         0
  8526. #define STN_DBLCLK          1
  8527. #define STN_ENABLE          2
  8528. #define STN_DISABLE         3
  8529. #endif /* WINVER >= 0x0400 */
  8530. #define STM_MSGMAX          0x0174
  8531. #endif /* !NOWINMESSAGES */
  8532.  
  8533. /*
  8534.  * Dialog window class
  8535.  */
  8536. #define WC_DIALOG       (MAKEINTATOM(0x8002))
  8537.  
  8538. /*
  8539.  * Get/SetWindowWord/Long offsets for use with WC_DIALOG windows
  8540.  */
  8541. #define DWL_MSGRESULT   0
  8542. #define DWL_DLGPROC     4
  8543. #define DWL_USER        8
  8544.  
  8545. #ifdef _WIN64
  8546.  
  8547. #undef DWL_MSGRESULT
  8548. #undef DWL_DLGPROC
  8549. #undef DWL_USER
  8550.  
  8551. #endif /* _WIN64 */
  8552.  
  8553. #define DWLP_MSGRESULT  0
  8554. #define DWLP_DLGPROC    DWLP_MSGRESULT + sizeof(LRESULT)
  8555. #define DWLP_USER       DWLP_DLGPROC + sizeof(DLGPROC)
  8556.  
  8557. /*
  8558.  * Dialog Manager Routines
  8559.  */
  8560.  
  8561. #ifndef NOMSG
  8562.  
  8563. WINUSERAPI
  8564. BOOL
  8565. WINAPI
  8566. IsDialogMessageA(
  8567.     IN HWND hDlg,
  8568.     IN LPMSG lpMsg);
  8569. WINUSERAPI
  8570. BOOL
  8571. WINAPI
  8572. IsDialogMessageW(
  8573.     IN HWND hDlg,
  8574.     IN LPMSG lpMsg);
  8575. #ifdef UNICODE
  8576. #define IsDialogMessage  IsDialogMessageW
  8577. #else
  8578. #define IsDialogMessage  IsDialogMessageA
  8579. #endif // !UNICODE
  8580.  
  8581. #endif /* !NOMSG */
  8582.  
  8583. WINUSERAPI
  8584. BOOL
  8585. WINAPI
  8586. MapDialogRect(
  8587.     IN HWND hDlg,
  8588.     IN OUT LPRECT lpRect);
  8589.  
  8590. WINUSERAPI
  8591. int
  8592. WINAPI
  8593. DlgDirListA(
  8594.     IN HWND hDlg,
  8595.     IN OUT LPSTR lpPathSpec,
  8596.     IN int nIDListBox,
  8597.     IN int nIDStaticPath,
  8598.     IN UINT uFileType);
  8599. WINUSERAPI
  8600. int
  8601. WINAPI
  8602. DlgDirListW(
  8603.     IN HWND hDlg,
  8604.     IN OUT LPWSTR lpPathSpec,
  8605.     IN int nIDListBox,
  8606.     IN int nIDStaticPath,
  8607.     IN UINT uFileType);
  8608. #ifdef UNICODE
  8609. #define DlgDirList  DlgDirListW
  8610. #else
  8611. #define DlgDirList  DlgDirListA
  8612. #endif // !UNICODE
  8613.  
  8614. /*
  8615.  * DlgDirList, DlgDirListComboBox flags values
  8616.  */
  8617. #define DDL_READWRITE       0x0000
  8618. #define DDL_READONLY        0x0001
  8619. #define DDL_HIDDEN          0x0002
  8620. #define DDL_SYSTEM          0x0004
  8621. #define DDL_DIRECTORY       0x0010
  8622. #define DDL_ARCHIVE         0x0020
  8623.  
  8624. #define DDL_POSTMSGS        0x2000
  8625. #define DDL_DRIVES          0x4000
  8626. #define DDL_EXCLUSIVE       0x8000
  8627.  
  8628. WINUSERAPI
  8629. BOOL
  8630. WINAPI
  8631. DlgDirSelectExA(
  8632.     IN HWND hDlg,
  8633.     OUT LPSTR lpString,
  8634.     IN int nCount,
  8635.     IN int nIDListBox);
  8636. WINUSERAPI
  8637. BOOL
  8638. WINAPI
  8639. DlgDirSelectExW(
  8640.     IN HWND hDlg,
  8641.     OUT LPWSTR lpString,
  8642.     IN int nCount,
  8643.     IN int nIDListBox);
  8644. #ifdef UNICODE
  8645. #define DlgDirSelectEx  DlgDirSelectExW
  8646. #else
  8647. #define DlgDirSelectEx  DlgDirSelectExA
  8648. #endif // !UNICODE
  8649.  
  8650. WINUSERAPI
  8651. int
  8652. WINAPI
  8653. DlgDirListComboBoxA(
  8654.     IN HWND hDlg,
  8655.     IN OUT LPSTR lpPathSpec,
  8656.     IN int nIDComboBox,
  8657.     IN int nIDStaticPath,
  8658.     IN UINT uFiletype);
  8659. WINUSERAPI
  8660. int
  8661. WINAPI
  8662. DlgDirListComboBoxW(
  8663.     IN HWND hDlg,
  8664.     IN OUT LPWSTR lpPathSpec,
  8665.     IN int nIDComboBox,
  8666.     IN int nIDStaticPath,
  8667.     IN UINT uFiletype);
  8668. #ifdef UNICODE
  8669. #define DlgDirListComboBox  DlgDirListComboBoxW
  8670. #else
  8671. #define DlgDirListComboBox  DlgDirListComboBoxA
  8672. #endif // !UNICODE
  8673.  
  8674. WINUSERAPI
  8675. BOOL
  8676. WINAPI
  8677. DlgDirSelectComboBoxExA(
  8678.     IN HWND hDlg,
  8679.     OUT LPSTR lpString,
  8680.     IN int nCount,
  8681.     IN int nIDComboBox);
  8682. WINUSERAPI
  8683. BOOL
  8684. WINAPI
  8685. DlgDirSelectComboBoxExW(
  8686.     IN HWND hDlg,
  8687.     OUT LPWSTR lpString,
  8688.     IN int nCount,
  8689.     IN int nIDComboBox);
  8690. #ifdef UNICODE
  8691. #define DlgDirSelectComboBoxEx  DlgDirSelectComboBoxExW
  8692. #else
  8693. #define DlgDirSelectComboBoxEx  DlgDirSelectComboBoxExA
  8694. #endif // !UNICODE
  8695.  
  8696.  
  8697.  
  8698. /*
  8699.  * Dialog Styles
  8700.  */
  8701. #define DS_ABSALIGN         0x01L
  8702. #define DS_SYSMODAL         0x02L
  8703. #define DS_LOCALEDIT        0x20L   /* Edit items get Local storage. */
  8704. #define DS_SETFONT          0x40L   /* User specified font for Dlg controls */
  8705. #define DS_MODALFRAME       0x80L   /* Can be combined with WS_CAPTION  */
  8706. #define DS_NOIDLEMSG        0x100L  /* WM_ENTERIDLE message will not be sent */
  8707. #define DS_SETFOREGROUND    0x200L  /* not in win3.1 */
  8708.  
  8709.  
  8710. #if(WINVER >= 0x0400)
  8711. #define DS_3DLOOK           0x0004L
  8712. #define DS_FIXEDSYS         0x0008L
  8713. #define DS_NOFAILCREATE     0x0010L
  8714. #define DS_CONTROL          0x0400L
  8715. #define DS_CENTER           0x0800L
  8716. #define DS_CENTERMOUSE      0x1000L
  8717. #define DS_CONTEXTHELP      0x2000L
  8718.  
  8719. #define DS_SHELLFONT        (DS_SETFONT | DS_FIXEDSYS)
  8720. #endif /* WINVER >= 0x0400 */
  8721.  
  8722.  
  8723. #define DM_GETDEFID         (WM_USER+0)
  8724. #define DM_SETDEFID         (WM_USER+1)
  8725.  
  8726. #if(WINVER >= 0x0400)
  8727. #define DM_REPOSITION       (WM_USER+2)
  8728. #endif /* WINVER >= 0x0400 */
  8729. /*
  8730.  * Returned in HIWORD() of DM_GETDEFID result if msg is supported
  8731.  */
  8732. #define DC_HASDEFID         0x534B
  8733.  
  8734. /*
  8735.  * Dialog Codes
  8736.  */
  8737. #define DLGC_WANTARROWS     0x0001      /* Control wants arrow keys         */
  8738. #define DLGC_WANTTAB        0x0002      /* Control wants tab keys           */
  8739. #define DLGC_WANTALLKEYS    0x0004      /* Control wants all keys           */
  8740. #define DLGC_WANTMESSAGE    0x0004      /* Pass message to control          */
  8741. #define DLGC_HASSETSEL      0x0008      /* Understands EM_SETSEL message    */
  8742. #define DLGC_DEFPUSHBUTTON  0x0010      /* Default pushbutton               */
  8743. #define DLGC_UNDEFPUSHBUTTON 0x0020     /* Non-default pushbutton           */
  8744. #define DLGC_RADIOBUTTON    0x0040      /* Radio button                     */
  8745. #define DLGC_WANTCHARS      0x0080      /* Want WM_CHAR messages            */
  8746. #define DLGC_STATIC         0x0100      /* Static item: don't include       */
  8747. #define DLGC_BUTTON         0x2000      /* Button item: can be checked      */
  8748.  
  8749. #define LB_CTLCODE          0L
  8750.  
  8751. /*
  8752.  * Listbox Return Values
  8753.  */
  8754. #define LB_OKAY             0
  8755. #define LB_ERR              (-1)
  8756. #define LB_ERRSPACE         (-2)
  8757.  
  8758. /*
  8759. **  The idStaticPath parameter to DlgDirList can have the following values
  8760. **  ORed if the list box should show other details of the files along with
  8761. **  the name of the files;
  8762. */
  8763.                                   /* all other details also will be returned */
  8764.  
  8765.  
  8766. /*
  8767.  * Listbox Notification Codes
  8768.  */
  8769. #define LBN_ERRSPACE        (-2)
  8770. #define LBN_SELCHANGE       1
  8771. #define LBN_DBLCLK          2
  8772. #define LBN_SELCANCEL       3
  8773. #define LBN_SETFOCUS        4
  8774. #define LBN_KILLFOCUS       5
  8775.  
  8776.  
  8777.  
  8778. #ifndef NOWINMESSAGES
  8779.  
  8780. /*
  8781.  * Listbox messages
  8782.  */
  8783. #define LB_ADDSTRING            0x0180
  8784. #define LB_INSERTSTRING         0x0181
  8785. #define LB_DELETESTRING         0x0182
  8786. #define LB_SELITEMRANGEEX       0x0183
  8787. #define LB_RESETCONTENT         0x0184
  8788. #define LB_SETSEL               0x0185
  8789. #define LB_SETCURSEL            0x0186
  8790. #define LB_GETSEL               0x0187
  8791. #define LB_GETCURSEL            0x0188
  8792. #define LB_GETTEXT              0x0189
  8793. #define LB_GETTEXTLEN           0x018A
  8794. #define LB_GETCOUNT             0x018B
  8795. #define LB_SELECTSTRING         0x018C
  8796. #define LB_DIR                  0x018D
  8797. #define LB_GETTOPINDEX          0x018E
  8798. #define LB_FINDSTRING           0x018F
  8799. #define LB_GETSELCOUNT          0x0190
  8800. #define LB_GETSELITEMS          0x0191
  8801. #define LB_SETTABSTOPS          0x0192
  8802. #define LB_GETHORIZONTALEXTENT  0x0193
  8803. #define LB_SETHORIZONTALEXTENT  0x0194
  8804. #define LB_SETCOLUMNWIDTH       0x0195
  8805. #define LB_ADDFILE              0x0196
  8806. #define LB_SETTOPINDEX          0x0197
  8807. #define LB_GETITEMRECT          0x0198
  8808. #define LB_GETITEMDATA          0x0199
  8809. #define LB_SETITEMDATA          0x019A
  8810. #define LB_SELITEMRANGE         0x019B
  8811. #define LB_SETANCHORINDEX       0x019C
  8812. #define LB_GETANCHORINDEX       0x019D
  8813. #define LB_SETCARETINDEX        0x019E
  8814. #define LB_GETCARETINDEX        0x019F
  8815. #define LB_SETITEMHEIGHT        0x01A0
  8816. #define LB_GETITEMHEIGHT        0x01A1
  8817. #define LB_FINDSTRINGEXACT      0x01A2
  8818. #define LB_SETLOCALE            0x01A5
  8819. #define LB_GETLOCALE            0x01A6
  8820. #define LB_SETCOUNT             0x01A7
  8821. #if(WINVER >= 0x0400)
  8822. #define LB_INITSTORAGE          0x01A8
  8823. #define LB_ITEMFROMPOINT        0x01A9
  8824. #endif /* WINVER >= 0x0400 */
  8825. #if(_WIN32_WCE >= 0x0400)
  8826. #define LB_MULTIPLEADDSTRING    0x01B1
  8827. #endif
  8828.  
  8829. #if(_WIN32_WCE >= 0x0400)
  8830. #define LB_MSGMAX               0x01B1
  8831. #elif(WINVER >= 0x0400)
  8832. #define LB_MSGMAX               0x01B0
  8833. #else
  8834. #define LB_MSGMAX               0x01A8
  8835. #endif
  8836.  
  8837. #endif /* !NOWINMESSAGES */
  8838.  
  8839. #ifndef NOWINSTYLES
  8840.  
  8841.  
  8842. /*
  8843.  * Listbox Styles
  8844.  */
  8845. #define LBS_NOTIFY            0x0001L
  8846. #define LBS_SORT              0x0002L
  8847. #define LBS_NOREDRAW          0x0004L
  8848. #define LBS_MULTIPLESEL       0x0008L
  8849. #define LBS_OWNERDRAWFIXED    0x0010L
  8850. #define LBS_OWNERDRAWVARIABLE 0x0020L
  8851. #define LBS_HASSTRINGS        0x0040L
  8852. #define LBS_USETABSTOPS       0x0080L
  8853. #define LBS_NOINTEGRALHEIGHT  0x0100L
  8854. #define LBS_MULTICOLUMN       0x0200L
  8855. #define LBS_WANTKEYBOARDINPUT 0x0400L
  8856. #define LBS_EXTENDEDSEL       0x0800L
  8857. #define LBS_DISABLENOSCROLL   0x1000L
  8858. #define LBS_NODATA            0x2000L
  8859. #if(WINVER >= 0x0400)
  8860. #define LBS_NOSEL             0x4000L
  8861. #endif /* WINVER >= 0x0400 */
  8862. #define LBS_STANDARD          (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
  8863.  
  8864.  
  8865. #endif /* !NOWINSTYLES */
  8866.  
  8867.  
  8868. /*
  8869.  * Combo Box return Values
  8870.  */
  8871. #define CB_OKAY             0
  8872. #define CB_ERR              (-1)
  8873. #define CB_ERRSPACE         (-2)
  8874.  
  8875.  
  8876. /*
  8877.  * Combo Box Notification Codes
  8878.  */
  8879. #define CBN_ERRSPACE        (-1)
  8880. #define CBN_SELCHANGE       1
  8881. #define CBN_DBLCLK          2
  8882. #define CBN_SETFOCUS        3
  8883. #define CBN_KILLFOCUS       4
  8884. #define CBN_EDITCHANGE      5
  8885. #define CBN_EDITUPDATE      6
  8886. #define CBN_DROPDOWN        7
  8887. #define CBN_CLOSEUP         8
  8888. #define CBN_SELENDOK        9
  8889. #define CBN_SELENDCANCEL    10
  8890.  
  8891. #ifndef NOWINSTYLES
  8892.  
  8893. /*
  8894.  * Combo Box styles
  8895.  */
  8896. #define CBS_SIMPLE            0x0001L
  8897. #define CBS_DROPDOWN          0x0002L
  8898. #define CBS_DROPDOWNLIST      0x0003L
  8899. #define CBS_OWNERDRAWFIXED    0x0010L
  8900. #define CBS_OWNERDRAWVARIABLE 0x0020L
  8901. #define CBS_AUTOHSCROLL       0x0040L
  8902. #define CBS_OEMCONVERT        0x0080L
  8903. #define CBS_SORT              0x0100L
  8904. #define CBS_HASSTRINGS        0x0200L
  8905. #define CBS_NOINTEGRALHEIGHT  0x0400L
  8906. #define CBS_DISABLENOSCROLL   0x0800L
  8907. #if(WINVER >= 0x0400)
  8908. #define CBS_UPPERCASE           0x2000L
  8909. #define CBS_LOWERCASE           0x4000L
  8910. #endif /* WINVER >= 0x0400 */
  8911.  
  8912. #endif  /* !NOWINSTYLES */
  8913.  
  8914.  
  8915. /*
  8916.  * Combo Box messages
  8917.  */
  8918. #ifndef NOWINMESSAGES
  8919. #define CB_GETEDITSEL               0x0140
  8920. #define CB_LIMITTEXT                0x0141
  8921. #define CB_SETEDITSEL               0x0142
  8922. #define CB_ADDSTRING                0x0143
  8923. #define CB_DELETESTRING             0x0144
  8924. #define CB_DIR                      0x0145
  8925. #define CB_GETCOUNT                 0x0146
  8926. #define CB_GETCURSEL                0x0147
  8927. #define CB_GETLBTEXT                0x0148
  8928. #define CB_GETLBTEXTLEN             0x0149
  8929. #define CB_INSERTSTRING             0x014A
  8930. #define CB_RESETCONTENT             0x014B
  8931. #define CB_FINDSTRING               0x014C
  8932. #define CB_SELECTSTRING             0x014D
  8933. #define CB_SETCURSEL                0x014E
  8934. #define CB_SHOWDROPDOWN             0x014F
  8935. #define CB_GETITEMDATA              0x0150
  8936. #define CB_SETITEMDATA              0x0151
  8937. #define CB_GETDROPPEDCONTROLRECT    0x0152
  8938. #define CB_SETITEMHEIGHT            0x0153
  8939. #define CB_GETITEMHEIGHT            0x0154
  8940. #define CB_SETEXTENDEDUI            0x0155
  8941. #define CB_GETEXTENDEDUI            0x0156
  8942. #define CB_GETDROPPEDSTATE          0x0157
  8943. #define CB_FINDSTRINGEXACT          0x0158
  8944. #define CB_SETLOCALE                0x0159
  8945. #define CB_GETLOCALE                0x015A
  8946. #if(WINVER >= 0x0400)
  8947. #define CB_GETTOPINDEX              0x015b
  8948. #define CB_SETTOPINDEX              0x015c
  8949. #define CB_GETHORIZONTALEXTENT      0x015d
  8950. #define CB_SETHORIZONTALEXTENT      0x015e
  8951. #define CB_GETDROPPEDWIDTH          0x015f
  8952. #define CB_SETDROPPEDWIDTH          0x0160
  8953. #define CB_INITSTORAGE              0x0161
  8954. #if(_WIN32_WCE >= 0x0400)
  8955. #define CB_MULTIPLEADDSTRING        0x0163
  8956. #endif
  8957. #endif /* WINVER >= 0x0400 */
  8958. #if(_WIN32_WCE >= 0x0400)
  8959. #define CB_MSGMAX                   0x0163
  8960. #elif(WINVER >= 0x0400)
  8961. #define CB_MSGMAX                   0x0162
  8962. #else
  8963. #define CB_MSGMAX                   0x015B
  8964. #endif
  8965. #endif  /* !NOWINMESSAGES */
  8966.  
  8967.  
  8968.  
  8969. #ifndef NOWINSTYLES
  8970.  
  8971.  
  8972. /*
  8973.  * Scroll Bar Styles
  8974.  */
  8975. #define SBS_HORZ                    0x0000L
  8976. #define SBS_VERT                    0x0001L
  8977. #define SBS_TOPALIGN                0x0002L
  8978. #define SBS_LEFTALIGN               0x0002L
  8979. #define SBS_BOTTOMALIGN             0x0004L
  8980. #define SBS_RIGHTALIGN              0x0004L
  8981. #define SBS_SIZEBOXTOPLEFTALIGN     0x0002L
  8982. #define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x0004L
  8983. #define SBS_SIZEBOX                 0x0008L
  8984. #if(WINVER >= 0x0400)
  8985. #define SBS_SIZEGRIP                0x0010L
  8986. #endif /* WINVER >= 0x0400 */
  8987.  
  8988.  
  8989. #endif /* !NOWINSTYLES */
  8990.  
  8991. /*
  8992.  * Scroll bar messages
  8993.  */
  8994. #ifndef NOWINMESSAGES
  8995. #define SBM_SETPOS                  0x00E0 /*not in win3.1 */
  8996. #define SBM_GETPOS                  0x00E1 /*not in win3.1 */
  8997. #define SBM_SETRANGE                0x00E2 /*not in win3.1 */
  8998. #define SBM_SETRANGEREDRAW          0x00E6 /*not in win3.1 */
  8999. #define SBM_GETRANGE                0x00E3 /*not in win3.1 */
  9000. #define SBM_ENABLE_ARROWS           0x00E4 /*not in win3.1 */
  9001. #if(WINVER >= 0x0400)
  9002. #define SBM_SETSCROLLINFO           0x00E9
  9003. #define SBM_GETSCROLLINFO           0x00EA
  9004.  
  9005. #define SIF_RANGE           0x0001
  9006. #define SIF_PAGE            0x0002
  9007. #define SIF_POS             0x0004
  9008. #define SIF_DISABLENOSCROLL 0x0008
  9009. #define SIF_TRACKPOS        0x0010
  9010. #define SIF_ALL             (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS)
  9011.  
  9012. typedef struct tagSCROLLINFO
  9013. {
  9014.     UINT    cbSize;
  9015.     UINT    fMask;
  9016.     int     nMin;
  9017.     int     nMax;
  9018.     UINT    nPage;
  9019.     int     nPos;
  9020.     int     nTrackPos;
  9021. }   SCROLLINFO, FAR *LPSCROLLINFO;
  9022. typedef SCROLLINFO CONST FAR *LPCSCROLLINFO;
  9023.  
  9024. WINUSERAPI int     WINAPI SetScrollInfo( IN HWND, IN int, IN LPCSCROLLINFO, IN BOOL);
  9025. WINUSERAPI BOOL    WINAPI GetScrollInfo( IN HWND, IN int, IN OUT LPSCROLLINFO);
  9026. #endif /* WINVER >= 0x0400 */
  9027. #endif /* !NOWINMESSAGES */
  9028. #endif /* !NOCTLMGR */
  9029.  
  9030. #ifndef NOMDI
  9031.  
  9032. /*
  9033.  * MDI client style bits
  9034.  */
  9035. #define MDIS_ALLCHILDSTYLES    0x0001
  9036.  
  9037. /*
  9038.  * wParam Flags for WM_MDITILE and WM_MDICASCADE messages.
  9039.  */
  9040. #define MDITILE_VERTICAL       0x0000 /*not in win3.1 */
  9041. #define MDITILE_HORIZONTAL     0x0001 /*not in win3.1 */
  9042. #define MDITILE_SKIPDISABLED   0x0002 /*not in win3.1 */
  9043. #if(_WIN32_WINNT >= 0x0500)
  9044. #define MDITILE_ZORDER         0x0004
  9045. #endif /* _WIN32_WINNT >= 0x0500 */
  9046.  
  9047. typedef struct tagMDICREATESTRUCTA {
  9048.     LPCSTR   szClass;
  9049.     LPCSTR   szTitle;
  9050.     HANDLE hOwner;
  9051.     int x;
  9052.     int y;
  9053.     int cx;
  9054.     int cy;
  9055.     DWORD style;
  9056.     LPARAM lParam;        /* app-defined stuff */
  9057. } MDICREATESTRUCTA, *LPMDICREATESTRUCTA;
  9058. typedef struct tagMDICREATESTRUCTW {
  9059.     LPCWSTR  szClass;
  9060.     LPCWSTR  szTitle;
  9061.     HANDLE hOwner;
  9062.     int x;
  9063.     int y;
  9064.     int cx;
  9065.     int cy;
  9066.     DWORD style;
  9067.     LPARAM lParam;        /* app-defined stuff */
  9068. } MDICREATESTRUCTW, *LPMDICREATESTRUCTW;
  9069. #ifdef UNICODE
  9070. typedef MDICREATESTRUCTW MDICREATESTRUCT;
  9071. typedef LPMDICREATESTRUCTW LPMDICREATESTRUCT;
  9072. #else
  9073. typedef MDICREATESTRUCTA MDICREATESTRUCT;
  9074. typedef LPMDICREATESTRUCTA LPMDICREATESTRUCT;
  9075. #endif // UNICODE
  9076.  
  9077. typedef struct tagCLIENTCREATESTRUCT {
  9078.     HANDLE hWindowMenu;
  9079.     UINT idFirstChild;
  9080. } CLIENTCREATESTRUCT, *LPCLIENTCREATESTRUCT;
  9081.  
  9082. WINUSERAPI
  9083. LRESULT
  9084. WINAPI
  9085. DefFrameProcA(
  9086.     IN HWND hWnd,
  9087.     IN HWND hWndMDIClient,
  9088.     IN UINT uMsg,
  9089.     IN WPARAM wParam,
  9090.     IN LPARAM lParam);
  9091. WINUSERAPI
  9092. LRESULT
  9093. WINAPI
  9094. DefFrameProcW(
  9095.     IN HWND hWnd,
  9096.     IN HWND hWndMDIClient,
  9097.     IN UINT uMsg,
  9098.     IN WPARAM wParam,
  9099.     IN LPARAM lParam);
  9100. #ifdef UNICODE
  9101. #define DefFrameProc  DefFrameProcW
  9102. #else
  9103. #define DefFrameProc  DefFrameProcA
  9104. #endif // !UNICODE
  9105.  
  9106. WINUSERAPI
  9107. #ifndef _MAC
  9108. LRESULT
  9109. WINAPI
  9110. #else
  9111. LRESULT
  9112. CALLBACK
  9113. #endif
  9114. DefMDIChildProcA(
  9115.     IN HWND hWnd,
  9116.     IN UINT uMsg,
  9117.     IN WPARAM wParam,
  9118.     IN LPARAM lParam);
  9119. WINUSERAPI
  9120. #ifndef _MAC
  9121. LRESULT
  9122. WINAPI
  9123. #else
  9124. LRESULT
  9125. CALLBACK
  9126. #endif
  9127. DefMDIChildProcW(
  9128.     IN HWND hWnd,
  9129.     IN UINT uMsg,
  9130.     IN WPARAM wParam,
  9131.     IN LPARAM lParam);
  9132. #ifdef UNICODE
  9133. #define DefMDIChildProc  DefMDIChildProcW
  9134. #else
  9135. #define DefMDIChildProc  DefMDIChildProcA
  9136. #endif // !UNICODE
  9137.  
  9138. #ifndef NOMSG
  9139.  
  9140. WINUSERAPI
  9141. BOOL
  9142. WINAPI
  9143. TranslateMDISysAccel(
  9144.     IN HWND hWndClient,
  9145.     IN LPMSG lpMsg);
  9146.  
  9147. #endif /* !NOMSG */
  9148.  
  9149. WINUSERAPI
  9150. UINT
  9151. WINAPI
  9152. ArrangeIconicWindows(
  9153.     IN HWND hWnd);
  9154.  
  9155. WINUSERAPI
  9156. HWND
  9157. WINAPI
  9158. CreateMDIWindowA(
  9159.     IN LPCSTR lpClassName,
  9160.     IN LPCSTR lpWindowName,
  9161.     IN DWORD dwStyle,
  9162.     IN int X,
  9163.     IN int Y,
  9164.     IN int nWidth,
  9165.     IN int nHeight,
  9166.     IN HWND hWndParent,
  9167.     IN HINSTANCE hInstance,
  9168.     IN LPARAM lParam
  9169.     );
  9170. WINUSERAPI
  9171. HWND
  9172. WINAPI
  9173. CreateMDIWindowW(
  9174.     IN LPCWSTR lpClassName,
  9175.     IN LPCWSTR lpWindowName,
  9176.     IN DWORD dwStyle,
  9177.     IN int X,
  9178.     IN int Y,
  9179.     IN int nWidth,
  9180.     IN int nHeight,
  9181.     IN HWND hWndParent,
  9182.     IN HINSTANCE hInstance,
  9183.     IN LPARAM lParam
  9184.     );
  9185. #ifdef UNICODE
  9186. #define CreateMDIWindow  CreateMDIWindowW
  9187. #else
  9188. #define CreateMDIWindow  CreateMDIWindowA
  9189. #endif // !UNICODE
  9190.  
  9191. #if(WINVER >= 0x0400)
  9192. WINUSERAPI WORD    WINAPI TileWindows( IN HWND hwndParent, IN UINT wHow, IN CONST RECT * lpRect, IN UINT cKids, IN const HWND FAR * lpKids);
  9193. WINUSERAPI WORD    WINAPI CascadeWindows( IN HWND hwndParent, IN UINT wHow, IN CONST RECT * lpRect, IN UINT cKids,  IN const HWND FAR * lpKids);
  9194. #endif /* WINVER >= 0x0400 */
  9195. #endif /* !NOMDI */
  9196.  
  9197. #endif /* !NOUSER */
  9198.  
  9199. /****** Help support ********************************************************/
  9200.  
  9201. #ifndef NOHELP
  9202.  
  9203. typedef DWORD HELPPOLY;
  9204. typedef struct tagMULTIKEYHELPA {
  9205. #ifndef _MAC
  9206.     DWORD  mkSize;
  9207. #else
  9208.     WORD   mkSize;
  9209. #endif
  9210.     CHAR   mkKeylist;
  9211.     CHAR   szKeyphrase[1];
  9212. } MULTIKEYHELPA, *PMULTIKEYHELPA, *LPMULTIKEYHELPA;
  9213. typedef struct tagMULTIKEYHELPW {
  9214. #ifndef _MAC
  9215.     DWORD  mkSize;
  9216. #else
  9217.     WORD   mkSize;
  9218. #endif
  9219.     WCHAR  mkKeylist;
  9220.     WCHAR  szKeyphrase[1];
  9221. } MULTIKEYHELPW, *PMULTIKEYHELPW, *LPMULTIKEYHELPW;
  9222. #ifdef UNICODE
  9223. typedef MULTIKEYHELPW MULTIKEYHELP;
  9224. typedef PMULTIKEYHELPW PMULTIKEYHELP;
  9225. typedef LPMULTIKEYHELPW LPMULTIKEYHELP;
  9226. #else
  9227. typedef MULTIKEYHELPA MULTIKEYHELP;
  9228. typedef PMULTIKEYHELPA PMULTIKEYHELP;
  9229. typedef LPMULTIKEYHELPA LPMULTIKEYHELP;
  9230. #endif // UNICODE
  9231.  
  9232. typedef struct tagHELPWININFOA {
  9233.     int  wStructSize;
  9234.     int  x;
  9235.     int  y;
  9236.     int  dx;
  9237.     int  dy;
  9238.     int  wMax;
  9239.     CHAR   rgchMember[2];
  9240. } HELPWININFOA, *PHELPWININFOA, *LPHELPWININFOA;
  9241. typedef struct tagHELPWININFOW {
  9242.     int  wStructSize;
  9243.     int  x;
  9244.     int  y;
  9245.     int  dx;
  9246.     int  dy;
  9247.     int  wMax;
  9248.     WCHAR  rgchMember[2];
  9249. } HELPWININFOW, *PHELPWININFOW, *LPHELPWININFOW;
  9250. #ifdef UNICODE
  9251. typedef HELPWININFOW HELPWININFO;
  9252. typedef PHELPWININFOW PHELPWININFO;
  9253. typedef LPHELPWININFOW LPHELPWININFO;
  9254. #else
  9255. typedef HELPWININFOA HELPWININFO;
  9256. typedef PHELPWININFOA PHELPWININFO;
  9257. typedef LPHELPWININFOA LPHELPWININFO;
  9258. #endif // UNICODE
  9259.  
  9260.  
  9261. /*
  9262.  * Commands to pass to WinHelp()
  9263.  */
  9264. #define HELP_CONTEXT      0x0001L  /* Display topic in ulTopic */
  9265. #define HELP_QUIT         0x0002L  /* Terminate help */
  9266. #define HELP_INDEX        0x0003L  /* Display index */
  9267. #define HELP_CONTENTS     0x0003L
  9268. #define HELP_HELPONHELP   0x0004L  /* Display help on using help */
  9269. #define HELP_SETINDEX     0x0005L  /* Set current Index for multi index help */
  9270. #define HELP_SETCONTENTS  0x0005L
  9271. #define HELP_CONTEXTPOPUP 0x0008L
  9272. #define HELP_FORCEFILE    0x0009L
  9273. #define HELP_KEY          0x0101L  /* Display topic for keyword in offabData */
  9274. #define HELP_COMMAND      0x0102L
  9275. #define HELP_PARTIALKEY   0x0105L
  9276. #define HELP_MULTIKEY     0x0201L
  9277. #define HELP_SETWINPOS    0x0203L
  9278. #if(WINVER >= 0x0400)
  9279. #define HELP_CONTEXTMENU  0x000a
  9280. #define HELP_FINDER       0x000b
  9281. #define HELP_WM_HELP      0x000c
  9282. #define HELP_SETPOPUP_POS 0x000d
  9283.  
  9284. #define HELP_TCARD              0x8000
  9285. #define HELP_TCARD_DATA         0x0010
  9286. #define HELP_TCARD_OTHER_CALLER 0x0011
  9287.  
  9288. // These are in winhelp.h in Win95.
  9289. #define IDH_NO_HELP                     28440
  9290. #define IDH_MISSING_CONTEXT             28441 // Control doesn't have matching help context
  9291. #define IDH_GENERIC_HELP_BUTTON         28442 // Property sheet help button
  9292. #define IDH_OK                          28443
  9293. #define IDH_CANCEL                      28444
  9294. #define IDH_HELP                        28445
  9295.  
  9296. #endif /* WINVER >= 0x0400 */
  9297.  
  9298.  
  9299.  
  9300. WINUSERAPI
  9301. BOOL
  9302. WINAPI
  9303. WinHelpA(
  9304.     IN HWND hWndMain,
  9305.     IN LPCSTR lpszHelp,
  9306.     IN UINT uCommand,
  9307.     IN ULONG_PTR dwData
  9308.     );
  9309. WINUSERAPI
  9310. BOOL
  9311. WINAPI
  9312. WinHelpW(
  9313.     IN HWND hWndMain,
  9314.     IN LPCWSTR lpszHelp,
  9315.     IN UINT uCommand,
  9316.     IN ULONG_PTR dwData
  9317.     );
  9318. #ifdef UNICODE
  9319. #define WinHelp  WinHelpW
  9320. #else
  9321. #define WinHelp  WinHelpA
  9322. #endif // !UNICODE
  9323.  
  9324. #endif /* !NOHELP */
  9325.  
  9326. #if(WINVER >= 0x0500)
  9327.  
  9328. #define GR_GDIOBJECTS     0       /* Count of GDI objects */
  9329. #define GR_USEROBJECTS    1       /* Count of USER objects */
  9330.  
  9331. WINUSERAPI
  9332. DWORD
  9333. WINAPI
  9334. GetGuiResources(
  9335.     IN HANDLE hProcess,
  9336.     IN DWORD uiFlags);
  9337.  
  9338. #endif /* WINVER >= 0x0500 */
  9339.  
  9340.  
  9341. #ifndef NOSYSPARAMSINFO
  9342.  
  9343. /*
  9344.  * Parameter for SystemParametersInfo()
  9345.  */
  9346.  
  9347. #define SPI_GETBEEP                 1
  9348. #define SPI_SETBEEP                 2
  9349. #define SPI_GETMOUSE                3
  9350. #define SPI_SETMOUSE                4
  9351. #define SPI_GETBORDER               5
  9352. #define SPI_SETBORDER               6
  9353. #define SPI_GETKEYBOARDSPEED       10
  9354. #define SPI_SETKEYBOARDSPEED       11
  9355. #define SPI_LANGDRIVER             12
  9356. #define SPI_ICONHORIZONTALSPACING  13
  9357. #define SPI_GETSCREENSAVETIMEOUT   14
  9358. #define SPI_SETSCREENSAVETIMEOUT   15
  9359. #define SPI_GETSCREENSAVEACTIVE    16
  9360. #define SPI_SETSCREENSAVEACTIVE    17
  9361. #define SPI_GETGRIDGRANULARITY     18
  9362. #define SPI_SETGRIDGRANULARITY     19
  9363. #define SPI_SETDESKWALLPAPER       20
  9364. #define SPI_SETDESKPATTERN         21
  9365. #define SPI_GETKEYBOARDDELAY       22
  9366. #define SPI_SETKEYBOARDDELAY       23
  9367. #define SPI_ICONVERTICALSPACING    24
  9368. #define SPI_GETICONTITLEWRAP       25
  9369. #define SPI_SETICONTITLEWRAP       26
  9370. #define SPI_GETMENUDROPALIGNMENT   27
  9371. #define SPI_SETMENUDROPALIGNMENT   28
  9372. #define SPI_SETDOUBLECLKWIDTH      29
  9373. #define SPI_SETDOUBLECLKHEIGHT     30
  9374. #define SPI_GETICONTITLELOGFONT    31
  9375. #define SPI_SETDOUBLECLICKTIME     32
  9376. #define SPI_SETMOUSEBUTTONSWAP     33
  9377. #define SPI_SETICONTITLELOGFONT    34
  9378. #define SPI_GETFASTTASKSWITCH      35
  9379. #define SPI_SETFASTTASKSWITCH      36
  9380. #if(WINVER >= 0x0400)
  9381. #define SPI_SETDRAGFULLWINDOWS     37
  9382. #define SPI_GETDRAGFULLWINDOWS     38
  9383. #define SPI_GETNONCLIENTMETRICS    41
  9384. #define SPI_SETNONCLIENTMETRICS    42
  9385. #define SPI_GETMINIMIZEDMETRICS    43
  9386. #define SPI_SETMINIMIZEDMETRICS    44
  9387. #define SPI_GETICONMETRICS         45
  9388. #define SPI_SETICONMETRICS         46
  9389. #define SPI_SETWORKAREA            47
  9390. #define SPI_GETWORKAREA            48
  9391. #define SPI_SETPENWINDOWS          49
  9392.  
  9393. #define SPI_GETHIGHCONTRAST        66
  9394. #define SPI_SETHIGHCONTRAST        67
  9395. #define SPI_GETKEYBOARDPREF        68
  9396. #define SPI_SETKEYBOARDPREF        69
  9397. #define SPI_GETSCREENREADER        70
  9398. #define SPI_SETSCREENREADER        71
  9399. #define SPI_GETANIMATION           72
  9400. #define SPI_SETANIMATION           73
  9401. #define SPI_GETFONTSMOOTHING       74
  9402. #define SPI_SETFONTSMOOTHING       75
  9403. #define SPI_SETDRAGWIDTH           76
  9404. #define SPI_SETDRAGHEIGHT          77
  9405. #define SPI_SETHANDHELD            78
  9406. #define SPI_GETLOWPOWERTIMEOUT     79
  9407. #define SPI_GETPOWEROFFTIMEOUT     80
  9408. #define SPI_SETLOWPOWERTIMEOUT     81
  9409. #define SPI_SETPOWEROFFTIMEOUT     82
  9410. #define SPI_GETLOWPOWERACTIVE      83
  9411. #define SPI_GETPOWEROFFACTIVE      84
  9412. #define SPI_SETLOWPOWERACTIVE      85
  9413. #define SPI_SETPOWEROFFACTIVE      86
  9414. #define SPI_SETCURSORS             87
  9415. #define SPI_SETICONS               88
  9416. #define SPI_GETDEFAULTINPUTLANG    89
  9417. #define SPI_SETDEFAULTINPUTLANG    90
  9418. #define SPI_SETLANGTOGGLE          91
  9419. #define SPI_GETWINDOWSEXTENSION    92
  9420. #define SPI_SETMOUSETRAILS         93
  9421. #define SPI_GETMOUSETRAILS         94
  9422. #define SPI_SETSCREENSAVERRUNNING  97
  9423. #define SPI_SCREENSAVERRUNNING     SPI_SETSCREENSAVERRUNNING
  9424. #endif /* WINVER >= 0x0400 */
  9425. #define SPI_GETFILTERKEYS          50
  9426. #define SPI_SETFILTERKEYS          51
  9427. #define SPI_GETTOGGLEKEYS          52
  9428. #define SPI_SETTOGGLEKEYS          53
  9429. #define SPI_GETMOUSEKEYS           54
  9430. #define SPI_SETMOUSEKEYS           55
  9431. #define SPI_GETSHOWSOUNDS          56
  9432. #define SPI_SETSHOWSOUNDS          57
  9433. #define SPI_GETSTICKYKEYS          58
  9434. #define SPI_SETSTICKYKEYS          59
  9435. #define SPI_GETACCESSTIMEOUT       60
  9436. #define SPI_SETACCESSTIMEOUT       61
  9437. #if(WINVER >= 0x0400)
  9438. #define SPI_GETSERIALKEYS          62
  9439. #define SPI_SETSERIALKEYS          63
  9440. #endif /* WINVER >= 0x0400 */
  9441. #define SPI_GETSOUNDSENTRY         64
  9442. #define SPI_SETSOUNDSENTRY         65
  9443. #if(_WIN32_WINNT >= 0x0400)
  9444. #define SPI_GETSNAPTODEFBUTTON     95
  9445. #define SPI_SETSNAPTODEFBUTTON     96
  9446. #endif /* _WIN32_WINNT >= 0x0400 */
  9447. #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
  9448. #define SPI_GETMOUSEHOVERWIDTH     98
  9449. #define SPI_SETMOUSEHOVERWIDTH     99
  9450. #define SPI_GETMOUSEHOVERHEIGHT   100
  9451. #define SPI_SETMOUSEHOVERHEIGHT   101
  9452. #define SPI_GETMOUSEHOVERTIME     102
  9453. #define SPI_SETMOUSEHOVERTIME     103
  9454. #define SPI_GETWHEELSCROLLLINES   104
  9455. #define SPI_SETWHEELSCROLLLINES   105
  9456. #define SPI_GETMENUSHOWDELAY      106
  9457. #define SPI_SETMENUSHOWDELAY      107
  9458.  
  9459.  
  9460. #define SPI_GETSHOWIMEUI          110
  9461. #define SPI_SETSHOWIMEUI          111
  9462. #endif
  9463.  
  9464.  
  9465. #if(WINVER >= 0x0500)
  9466. #define SPI_GETMOUSESPEED         112
  9467. #define SPI_SETMOUSESPEED         113
  9468. #define SPI_GETSCREENSAVERRUNNING 114
  9469. #define SPI_GETDESKWALLPAPER      115
  9470.  
  9471. #endif /* WINVER >= 0x0500 */
  9472.  
  9473.  
  9474. #if(WINVER >= 0x0500)
  9475. #define SPI_GETACTIVEWINDOWTRACKING         0x1000
  9476. #define SPI_SETACTIVEWINDOWTRACKING         0x1001
  9477. #define SPI_GETMENUANIMATION                0x1002
  9478. #define SPI_SETMENUANIMATION                0x1003
  9479. #define SPI_GETCOMBOBOXANIMATION            0x1004
  9480. #define SPI_SETCOMBOBOXANIMATION            0x1005
  9481. #define SPI_GETLISTBOXSMOOTHSCROLLING       0x1006
  9482. #define SPI_SETLISTBOXSMOOTHSCROLLING       0x1007
  9483. #define SPI_GETGRADIENTCAPTIONS             0x1008
  9484. #define SPI_SETGRADIENTCAPTIONS             0x1009
  9485. #define SPI_GETKEYBOARDCUES                 0x100A
  9486. #define SPI_SETKEYBOARDCUES                 0x100B
  9487. #define SPI_GETMENUUNDERLINES               SPI_GETKEYBOARDCUES
  9488. #define SPI_SETMENUUNDERLINES               SPI_SETKEYBOARDCUES
  9489. #define SPI_GETACTIVEWNDTRKZORDER           0x100C
  9490. #define SPI_SETACTIVEWNDTRKZORDER           0x100D
  9491. #define SPI_GETHOTTRACKING                  0x100E
  9492. #define SPI_SETHOTTRACKING                  0x100F
  9493. #define SPI_GETMENUFADE                     0x1012
  9494. #define SPI_SETMENUFADE                     0x1013
  9495. #define SPI_GETSELECTIONFADE                0x1014
  9496. #define SPI_SETSELECTIONFADE                0x1015
  9497. #define SPI_GETTOOLTIPANIMATION             0x1016
  9498. #define SPI_SETTOOLTIPANIMATION             0x1017
  9499. #define SPI_GETTOOLTIPFADE                  0x1018
  9500. #define SPI_SETTOOLTIPFADE                  0x1019
  9501. #define SPI_GETCURSORSHADOW                 0x101A
  9502. #define SPI_SETCURSORSHADOW                 0x101B
  9503.  
  9504. #define SPI_GETUIEFFECTS                    0x103E
  9505. #define SPI_SETUIEFFECTS                    0x103F
  9506.  
  9507. #define SPI_GETFOREGROUNDLOCKTIMEOUT        0x2000
  9508. #define SPI_SETFOREGROUNDLOCKTIMEOUT        0x2001
  9509. #define SPI_GETACTIVEWNDTRKTIMEOUT          0x2002
  9510. #define SPI_SETACTIVEWNDTRKTIMEOUT          0x2003
  9511. #define SPI_GETFOREGROUNDFLASHCOUNT         0x2004
  9512. #define SPI_SETFOREGROUNDFLASHCOUNT         0x2005
  9513. #define SPI_GETCARETWIDTH                   0x2006
  9514. #define SPI_SETCARETWIDTH                   0x2007
  9515. #endif /* WINVER >= 0x0500 */
  9516.  
  9517. /*
  9518.  * Flags
  9519.  */
  9520. #define SPIF_UPDATEINIFILE    0x0001
  9521. #define SPIF_SENDWININICHANGE 0x0002
  9522. #define SPIF_SENDCHANGE       SPIF_SENDWININICHANGE
  9523.  
  9524.  
  9525. #define METRICS_USEDEFAULT -1
  9526. #ifdef _WINGDI_
  9527. #ifndef NOGDI
  9528. typedef struct tagNONCLIENTMETRICSA
  9529. {
  9530.     UINT    cbSize;
  9531.     int     iBorderWidth;
  9532.     int     iScrollWidth;
  9533.     int     iScrollHeight;
  9534.     int     iCaptionWidth;
  9535.     int     iCaptionHeight;
  9536.     LOGFONTA lfCaptionFont;
  9537.     int     iSmCaptionWidth;
  9538.     int     iSmCaptionHeight;
  9539.     LOGFONTA lfSmCaptionFont;
  9540.     int     iMenuWidth;
  9541.     int     iMenuHeight;
  9542.     LOGFONTA lfMenuFont;
  9543.     LOGFONTA lfStatusFont;
  9544.     LOGFONTA lfMessageFont;
  9545. }   NONCLIENTMETRICSA, *PNONCLIENTMETRICSA, FAR* LPNONCLIENTMETRICSA;
  9546. typedef struct tagNONCLIENTMETRICSW
  9547. {
  9548.     UINT    cbSize;
  9549.     int     iBorderWidth;
  9550.     int     iScrollWidth;
  9551.     int     iScrollHeight;
  9552.     int     iCaptionWidth;
  9553.     int     iCaptionHeight;
  9554.     LOGFONTW lfCaptionFont;
  9555.     int     iSmCaptionWidth;
  9556.     int     iSmCaptionHeight;
  9557.     LOGFONTW lfSmCaptionFont;
  9558.     int     iMenuWidth;
  9559.     int     iMenuHeight;
  9560.     LOGFONTW lfMenuFont;
  9561.     LOGFONTW lfStatusFont;
  9562.     LOGFONTW lfMessageFont;
  9563. }   NONCLIENTMETRICSW, *PNONCLIENTMETRICSW, FAR* LPNONCLIENTMETRICSW;
  9564. #ifdef UNICODE
  9565. typedef NONCLIENTMETRICSW NONCLIENTMETRICS;
  9566. typedef PNONCLIENTMETRICSW PNONCLIENTMETRICS;
  9567. typedef LPNONCLIENTMETRICSW LPNONCLIENTMETRICS;
  9568. #else
  9569. typedef NONCLIENTMETRICSA NONCLIENTMETRICS;
  9570. typedef PNONCLIENTMETRICSA PNONCLIENTMETRICS;
  9571. typedef LPNONCLIENTMETRICSA LPNONCLIENTMETRICS;
  9572. #endif // UNICODE
  9573. #endif /* NOGDI */
  9574. #endif /* _WINGDI_ */
  9575.  
  9576. #define ARW_BOTTOMLEFT              0x0000L
  9577. #define ARW_BOTTOMRIGHT             0x0001L
  9578. #define ARW_TOPLEFT                 0x0002L
  9579. #define ARW_TOPRIGHT                0x0003L
  9580. #define ARW_STARTMASK               0x0003L
  9581. #define ARW_STARTRIGHT              0x0001L
  9582. #define ARW_STARTTOP                0x0002L
  9583.  
  9584. #define ARW_LEFT                    0x0000L
  9585. #define ARW_RIGHT                   0x0000L
  9586. #define ARW_UP                      0x0004L
  9587. #define ARW_DOWN                    0x0004L
  9588. #define ARW_HIDE                    0x0008L
  9589.  
  9590. typedef struct tagMINIMIZEDMETRICS
  9591. {
  9592.     UINT    cbSize;
  9593.     int     iWidth;
  9594.     int     iHorzGap;
  9595.     int     iVertGap;
  9596.     int     iArrange;
  9597. }   MINIMIZEDMETRICS, *PMINIMIZEDMETRICS, *LPMINIMIZEDMETRICS;
  9598.  
  9599. #ifdef _WINGDI_
  9600. #ifndef NOGDI
  9601. typedef struct tagICONMETRICSA
  9602. {
  9603.     UINT    cbSize;
  9604.     int     iHorzSpacing;
  9605.     int     iVertSpacing;
  9606.     int     iTitleWrap;
  9607.     LOGFONTA lfFont;
  9608. }   ICONMETRICSA, *PICONMETRICSA, *LPICONMETRICSA;
  9609. typedef struct tagICONMETRICSW
  9610. {
  9611.     UINT    cbSize;
  9612.     int     iHorzSpacing;
  9613.     int     iVertSpacing;
  9614.     int     iTitleWrap;
  9615.     LOGFONTW lfFont;
  9616. }   ICONMETRICSW, *PICONMETRICSW, *LPICONMETRICSW;
  9617. #ifdef UNICODE
  9618. typedef ICONMETRICSW ICONMETRICS;
  9619. typedef PICONMETRICSW PICONMETRICS;
  9620. typedef LPICONMETRICSW LPICONMETRICS;
  9621. #else
  9622. typedef ICONMETRICSA ICONMETRICS;
  9623. typedef PICONMETRICSA PICONMETRICS;
  9624. typedef LPICONMETRICSA LPICONMETRICS;
  9625. #endif // UNICODE
  9626. #endif /* NOGDI */
  9627. #endif /* _WINGDI_ */
  9628.  
  9629. typedef struct tagANIMATIONINFO
  9630. {
  9631.     UINT    cbSize;
  9632.     int     iMinAnimate;
  9633. }   ANIMATIONINFO, *LPANIMATIONINFO;
  9634.  
  9635. typedef struct tagSERIALKEYSA
  9636. {
  9637.     UINT    cbSize;
  9638.     DWORD   dwFlags;
  9639.     LPSTR     lpszActivePort;
  9640.     LPSTR     lpszPort;
  9641.     UINT    iBaudRate;
  9642.     UINT    iPortState;
  9643.     UINT    iActive;
  9644. }   SERIALKEYSA, *LPSERIALKEYSA;
  9645. typedef struct tagSERIALKEYSW
  9646. {
  9647.     UINT    cbSize;
  9648.     DWORD   dwFlags;
  9649.     LPWSTR    lpszActivePort;
  9650.     LPWSTR    lpszPort;
  9651.     UINT    iBaudRate;
  9652.     UINT    iPortState;
  9653.     UINT    iActive;
  9654. }   SERIALKEYSW, *LPSERIALKEYSW;
  9655. #ifdef UNICODE
  9656. typedef SERIALKEYSW SERIALKEYS;
  9657. typedef LPSERIALKEYSW LPSERIALKEYS;
  9658. #else
  9659. typedef SERIALKEYSA SERIALKEYS;
  9660. typedef LPSERIALKEYSA LPSERIALKEYS;
  9661. #endif // UNICODE
  9662.  
  9663. /* flags for SERIALKEYS dwFlags field */
  9664. #define SERKF_SERIALKEYSON  0x00000001
  9665. #define SERKF_AVAILABLE     0x00000002
  9666. #define SERKF_INDICATOR     0x00000004
  9667.  
  9668.  
  9669. typedef struct tagHIGHCONTRASTA
  9670. {
  9671.     UINT    cbSize;
  9672.     DWORD   dwFlags;
  9673.     LPSTR   lpszDefaultScheme;
  9674. }   HIGHCONTRASTA, *LPHIGHCONTRASTA;
  9675. typedef struct tagHIGHCONTRASTW
  9676. {
  9677.     UINT    cbSize;
  9678.     DWORD   dwFlags;
  9679.     LPWSTR  lpszDefaultScheme;
  9680. }   HIGHCONTRASTW, *LPHIGHCONTRASTW;
  9681. #ifdef UNICODE
  9682. typedef HIGHCONTRASTW HIGHCONTRAST;
  9683. typedef LPHIGHCONTRASTW LPHIGHCONTRAST;
  9684. #else
  9685. typedef HIGHCONTRASTA HIGHCONTRAST;
  9686. typedef LPHIGHCONTRASTA LPHIGHCONTRAST;
  9687. #endif // UNICODE
  9688.  
  9689. /* flags for HIGHCONTRAST dwFlags field */
  9690. #define HCF_HIGHCONTRASTON  0x00000001
  9691. #define HCF_AVAILABLE       0x00000002
  9692. #define HCF_HOTKEYACTIVE    0x00000004
  9693. #define HCF_CONFIRMHOTKEY   0x00000008
  9694. #define HCF_HOTKEYSOUND     0x00000010
  9695. #define HCF_INDICATOR       0x00000020
  9696. #define HCF_HOTKEYAVAILABLE 0x00000040
  9697.  
  9698. /* Flags for ChangeDisplaySettings */
  9699. #define CDS_UPDATEREGISTRY  0x00000001
  9700. #define CDS_TEST            0x00000002
  9701. #define CDS_FULLSCREEN      0x00000004
  9702. #define CDS_GLOBAL          0x00000008
  9703. #define CDS_SET_PRIMARY     0x00000010
  9704. #define CDS_VIDEOPARAMETERS 0x00000020
  9705. #define CDS_RESET           0x40000000
  9706. #define CDS_NORESET         0x10000000
  9707.  
  9708. #include <tvout.h>
  9709.  
  9710. /* Return values for ChangeDisplaySettings */
  9711. #define DISP_CHANGE_SUCCESSFUL       0
  9712. #define DISP_CHANGE_RESTART          1
  9713. #define DISP_CHANGE_FAILED          -1
  9714. #define DISP_CHANGE_BADMODE         -2
  9715. #define DISP_CHANGE_NOTUPDATED      -3
  9716. #define DISP_CHANGE_BADFLAGS        -4
  9717. #define DISP_CHANGE_BADPARAM        -5
  9718.  
  9719. #ifdef _WINGDI_
  9720. #ifndef NOGDI
  9721.  
  9722. WINUSERAPI
  9723. LONG
  9724. WINAPI
  9725. ChangeDisplaySettingsA(
  9726.     IN LPDEVMODEA  lpDevMode,
  9727.     IN DWORD       dwFlags);
  9728. WINUSERAPI
  9729. LONG
  9730. WINAPI
  9731. ChangeDisplaySettingsW(
  9732.     IN LPDEVMODEW  lpDevMode,
  9733.     IN DWORD       dwFlags);
  9734. #ifdef UNICODE
  9735. #define ChangeDisplaySettings  ChangeDisplaySettingsW
  9736. #else
  9737. #define ChangeDisplaySettings  ChangeDisplaySettingsA
  9738. #endif // !UNICODE
  9739.  
  9740. WINUSERAPI
  9741. LONG
  9742. WINAPI
  9743. ChangeDisplaySettingsExA(
  9744.     IN LPCSTR    lpszDeviceName,
  9745.     IN LPDEVMODEA  lpDevMode,
  9746.     IN HWND        hwnd,
  9747.     IN DWORD       dwflags,
  9748.     IN LPVOID      lParam);
  9749. WINUSERAPI
  9750. LONG
  9751. WINAPI
  9752. ChangeDisplaySettingsExW(
  9753.     IN LPCWSTR    lpszDeviceName,
  9754.     IN LPDEVMODEW  lpDevMode,
  9755.     IN HWND        hwnd,
  9756.     IN DWORD       dwflags,
  9757.     IN LPVOID      lParam);
  9758. #ifdef UNICODE
  9759. #define ChangeDisplaySettingsEx  ChangeDisplaySettingsExW
  9760. #else
  9761. #define ChangeDisplaySettingsEx  ChangeDisplaySettingsExA
  9762. #endif // !UNICODE
  9763.  
  9764. #define ENUM_CURRENT_SETTINGS       ((DWORD)-1)
  9765. #define ENUM_REGISTRY_SETTINGS      ((DWORD)-2)
  9766.  
  9767. WINUSERAPI
  9768. BOOL
  9769. WINAPI
  9770. EnumDisplaySettingsA(
  9771.     IN LPCSTR lpszDeviceName,
  9772.     IN DWORD iModeNum,
  9773.     OUT LPDEVMODEA lpDevMode);
  9774. WINUSERAPI
  9775. BOOL
  9776. WINAPI
  9777. EnumDisplaySettingsW(
  9778.     IN LPCWSTR lpszDeviceName,
  9779.     IN DWORD iModeNum,
  9780.     OUT LPDEVMODEW lpDevMode);
  9781. #ifdef UNICODE
  9782. #define EnumDisplaySettings  EnumDisplaySettingsW
  9783. #else
  9784. #define EnumDisplaySettings  EnumDisplaySettingsA
  9785. #endif // !UNICODE
  9786.  
  9787. #if(WINVER >= 0x0500)
  9788.  
  9789. WINUSERAPI
  9790. BOOL
  9791. WINAPI
  9792. EnumDisplaySettingsExA(
  9793.     IN LPCSTR lpszDeviceName,
  9794.     IN DWORD iModeNum,
  9795.     OUT LPDEVMODEA lpDevMode,
  9796.     IN DWORD dwFlags);
  9797. WINUSERAPI
  9798. BOOL
  9799. WINAPI
  9800. EnumDisplaySettingsExW(
  9801.     IN LPCWSTR lpszDeviceName,
  9802.     IN DWORD iModeNum,
  9803.     OUT LPDEVMODEW lpDevMode,
  9804.     IN DWORD dwFlags);
  9805. #ifdef UNICODE
  9806. #define EnumDisplaySettingsEx  EnumDisplaySettingsExW
  9807. #else
  9808. #define EnumDisplaySettingsEx  EnumDisplaySettingsExA
  9809. #endif // !UNICODE
  9810.  
  9811. /* Flags for EnumDisplaySettingsEx */
  9812. #define EDS_RAWMODE                   0x00000002
  9813.  
  9814. WINUSERAPI
  9815. BOOL
  9816. WINAPI
  9817. EnumDisplayDevicesA(
  9818.     IN LPCSTR lpDevice,
  9819.     IN DWORD iDevNum,
  9820.     OUT PDISPLAY_DEVICEA lpDisplayDevice,
  9821.     IN DWORD dwFlags);
  9822. WINUSERAPI
  9823. BOOL
  9824. WINAPI
  9825. EnumDisplayDevicesW(
  9826.     IN LPCWSTR lpDevice,
  9827.     IN DWORD iDevNum,
  9828.     OUT PDISPLAY_DEVICEW lpDisplayDevice,
  9829.     IN DWORD dwFlags);
  9830. #ifdef UNICODE
  9831. #define EnumDisplayDevices  EnumDisplayDevicesW
  9832. #else
  9833. #define EnumDisplayDevices  EnumDisplayDevicesA
  9834. #endif // !UNICODE
  9835. #endif /* WINVER >= 0x0500 */
  9836.  
  9837. #endif /* NOGDI */
  9838. #endif /* _WINGDI_ */
  9839.  
  9840.  
  9841. WINUSERAPI
  9842. BOOL
  9843. WINAPI
  9844. SystemParametersInfoA(
  9845.     IN UINT uiAction,
  9846.     IN UINT uiParam,
  9847.     IN OUT PVOID pvParam,
  9848.     IN UINT fWinIni);
  9849. WINUSERAPI
  9850. BOOL
  9851. WINAPI
  9852. SystemParametersInfoW(
  9853.     IN UINT uiAction,
  9854.     IN UINT uiParam,
  9855.     IN OUT PVOID pvParam,
  9856.     IN UINT fWinIni);
  9857. #ifdef UNICODE
  9858. #define SystemParametersInfo  SystemParametersInfoW
  9859. #else
  9860. #define SystemParametersInfo  SystemParametersInfoA
  9861. #endif // !UNICODE
  9862.  
  9863. #endif  /* !NOSYSPARAMSINFO  */
  9864.  
  9865. /*
  9866.  * Accessibility support
  9867.  */
  9868. typedef struct tagFILTERKEYS
  9869. {
  9870.     UINT  cbSize;
  9871.     DWORD dwFlags;
  9872.     DWORD iWaitMSec;            // Acceptance Delay
  9873.     DWORD iDelayMSec;           // Delay Until Repeat
  9874.     DWORD iRepeatMSec;          // Repeat Rate
  9875.     DWORD iBounceMSec;          // Debounce Time
  9876. } FILTERKEYS, *LPFILTERKEYS;
  9877.  
  9878. /*
  9879.  * FILTERKEYS dwFlags field
  9880.  */
  9881. #define FKF_FILTERKEYSON    0x00000001
  9882. #define FKF_AVAILABLE       0x00000002
  9883. #define FKF_HOTKEYACTIVE    0x00000004
  9884. #define FKF_CONFIRMHOTKEY   0x00000008
  9885. #define FKF_HOTKEYSOUND     0x00000010
  9886. #define FKF_INDICATOR       0x00000020
  9887. #define FKF_CLICKON         0x00000040
  9888.  
  9889. typedef struct tagSTICKYKEYS
  9890. {
  9891.     UINT  cbSize;
  9892.     DWORD dwFlags;
  9893. } STICKYKEYS, *LPSTICKYKEYS;
  9894.  
  9895. /*
  9896.  * STICKYKEYS dwFlags field
  9897.  */
  9898. #define SKF_STICKYKEYSON    0x00000001
  9899. #define SKF_AVAILABLE       0x00000002
  9900. #define SKF_HOTKEYACTIVE    0x00000004
  9901. #define SKF_CONFIRMHOTKEY   0x00000008
  9902. #define SKF_HOTKEYSOUND     0x00000010
  9903. #define SKF_INDICATOR       0x00000020
  9904. #define SKF_AUDIBLEFEEDBACK 0x00000040
  9905. #define SKF_TRISTATE        0x00000080
  9906. #define SKF_TWOKEYSOFF      0x00000100
  9907. #if(_WIN32_WINNT >= 0x0500)
  9908. #define SKF_LALTLATCHED       0x10000000
  9909. #define SKF_LCTLLATCHED       0x04000000
  9910. #define SKF_LSHIFTLATCHED     0x01000000
  9911. #define SKF_RALTLATCHED       0x20000000
  9912. #define SKF_RCTLLATCHED       0x08000000
  9913. #define SKF_RSHIFTLATCHED     0x02000000
  9914. #define SKF_LWINLATCHED       0x40000000
  9915. #define SKF_RWINLATCHED       0x80000000
  9916. #define SKF_LALTLOCKED        0x00100000
  9917. #define SKF_LCTLLOCKED        0x00040000
  9918. #define SKF_LSHIFTLOCKED      0x00010000
  9919. #define SKF_RALTLOCKED        0x00200000
  9920. #define SKF_RCTLLOCKED        0x00080000
  9921. #define SKF_RSHIFTLOCKED      0x00020000
  9922. #define SKF_LWINLOCKED        0x00400000
  9923. #define SKF_RWINLOCKED        0x00800000
  9924. #endif /* _WIN32_WINNT >= 0x0500 */
  9925.  
  9926. typedef struct tagMOUSEKEYS
  9927. {
  9928.     UINT cbSize;
  9929.     DWORD dwFlags;
  9930.     DWORD iMaxSpeed;
  9931.     DWORD iTimeToMaxSpeed;
  9932.     DWORD iCtrlSpeed;
  9933.     DWORD dwReserved1;
  9934.     DWORD dwReserved2;
  9935. } MOUSEKEYS, *LPMOUSEKEYS;
  9936.  
  9937. /*
  9938.  * MOUSEKEYS dwFlags field
  9939.  */
  9940. #define MKF_MOUSEKEYSON     0x00000001
  9941. #define MKF_AVAILABLE       0x00000002
  9942. #define MKF_HOTKEYACTIVE    0x00000004
  9943. #define MKF_CONFIRMHOTKEY   0x00000008
  9944. #define MKF_HOTKEYSOUND     0x00000010
  9945. #define MKF_INDICATOR       0x00000020
  9946. #define MKF_MODIFIERS       0x00000040
  9947. #define MKF_REPLACENUMBERS  0x00000080
  9948. #if(_WIN32_WINNT >= 0x0500)
  9949. #define MKF_LEFTBUTTONSEL   0x10000000
  9950. #define MKF_RIGHTBUTTONSEL  0x20000000
  9951. #define MKF_LEFTBUTTONDOWN  0x01000000
  9952. #define MKF_RIGHTBUTTONDOWN 0x02000000
  9953. #define MKF_MOUSEMODE       0x80000000
  9954. #endif /* _WIN32_WINNT >= 0x0500 */
  9955.  
  9956. typedef struct tagACCESSTIMEOUT
  9957. {
  9958.     UINT  cbSize;
  9959.     DWORD dwFlags;
  9960.     DWORD iTimeOutMSec;
  9961. } ACCESSTIMEOUT, *LPACCESSTIMEOUT;
  9962.  
  9963. /*
  9964.  * ACCESSTIMEOUT dwFlags field
  9965.  */
  9966. #define ATF_TIMEOUTON       0x00000001
  9967. #define ATF_ONOFFFEEDBACK   0x00000002
  9968.  
  9969. /* values for SOUNDSENTRY iFSGrafEffect field */
  9970. #define SSGF_NONE       0
  9971. #define SSGF_DISPLAY    3
  9972.  
  9973. /* values for SOUNDSENTRY iFSTextEffect field */
  9974. #define SSTF_NONE       0
  9975. #define SSTF_CHARS      1
  9976. #define SSTF_BORDER     2
  9977. #define SSTF_DISPLAY    3
  9978.  
  9979. /* values for SOUNDSENTRY iWindowsEffect field */
  9980. #define SSWF_NONE     0
  9981. #define SSWF_TITLE    1
  9982. #define SSWF_WINDOW   2
  9983. #define SSWF_DISPLAY  3
  9984. #define SSWF_CUSTOM   4
  9985.  
  9986. typedef struct tagSOUNDSENTRYA
  9987. {
  9988.     UINT cbSize;
  9989.     DWORD dwFlags;
  9990.     DWORD iFSTextEffect;
  9991.     DWORD iFSTextEffectMSec;
  9992.     DWORD iFSTextEffectColorBits;
  9993.     DWORD iFSGrafEffect;
  9994.     DWORD iFSGrafEffectMSec;
  9995.     DWORD iFSGrafEffectColor;
  9996.     DWORD iWindowsEffect;
  9997.     DWORD iWindowsEffectMSec;
  9998.     LPSTR   lpszWindowsEffectDLL;
  9999.     DWORD iWindowsEffectOrdinal;
  10000. } SOUNDSENTRYA, *LPSOUNDSENTRYA;
  10001. typedef struct tagSOUNDSENTRYW
  10002. {
  10003.     UINT cbSize;
  10004.     DWORD dwFlags;
  10005.     DWORD iFSTextEffect;
  10006.     DWORD iFSTextEffectMSec;
  10007.     DWORD iFSTextEffectColorBits;
  10008.     DWORD iFSGrafEffect;
  10009.     DWORD iFSGrafEffectMSec;
  10010.     DWORD iFSGrafEffectColor;
  10011.     DWORD iWindowsEffect;
  10012.     DWORD iWindowsEffectMSec;
  10013.     LPWSTR  lpszWindowsEffectDLL;
  10014.     DWORD iWindowsEffectOrdinal;
  10015. } SOUNDSENTRYW, *LPSOUNDSENTRYW;
  10016. #ifdef UNICODE
  10017. typedef SOUNDSENTRYW SOUNDSENTRY;
  10018. typedef LPSOUNDSENTRYW LPSOUNDSENTRY;
  10019. #else
  10020. typedef SOUNDSENTRYA SOUNDSENTRY;
  10021. typedef LPSOUNDSENTRYA LPSOUNDSENTRY;
  10022. #endif // UNICODE
  10023.  
  10024. /*
  10025.  * SOUNDSENTRY dwFlags field
  10026.  */
  10027. #define SSF_SOUNDSENTRYON   0x00000001
  10028. #define SSF_AVAILABLE       0x00000002
  10029. #define SSF_INDICATOR       0x00000004
  10030.  
  10031. typedef struct tagTOGGLEKEYS
  10032. {
  10033.     UINT cbSize;
  10034.     DWORD dwFlags;
  10035. } TOGGLEKEYS, *LPTOGGLEKEYS;
  10036.  
  10037. /*
  10038.  * TOGGLEKEYS dwFlags field
  10039.  */
  10040. #define TKF_TOGGLEKEYSON    0x00000001
  10041. #define TKF_AVAILABLE       0x00000002
  10042. #define TKF_HOTKEYACTIVE    0x00000004
  10043. #define TKF_CONFIRMHOTKEY   0x00000008
  10044. #define TKF_HOTKEYSOUND     0x00000010
  10045. #define TKF_INDICATOR       0x00000020
  10046.  
  10047. /*
  10048.  * Set debug level
  10049.  */
  10050.  
  10051. WINUSERAPI
  10052. VOID
  10053. WINAPI
  10054. SetDebugErrorLevel(
  10055.     IN DWORD dwLevel
  10056.     );
  10057.  
  10058. /*
  10059.  * SetLastErrorEx() types.
  10060.  */
  10061.  
  10062. #define SLE_ERROR       0x00000001
  10063. #define SLE_MINORERROR  0x00000002
  10064. #define SLE_WARNING     0x00000003
  10065.  
  10066. WINUSERAPI
  10067. VOID
  10068. WINAPI
  10069. SetLastErrorEx(
  10070.     IN DWORD dwErrCode,
  10071.     IN DWORD dwType
  10072.     );
  10073.  
  10074.  
  10075. #if(WINVER >= 0x0500)
  10076.  
  10077. /*
  10078.  * Multimonitor API.
  10079.  */
  10080.  
  10081. #define MONITOR_DEFAULTTONULL       0x00000000
  10082. #define MONITOR_DEFAULTTOPRIMARY    0x00000001
  10083. #define MONITOR_DEFAULTTONEAREST    0x00000002
  10084.  
  10085. WINUSERAPI
  10086. HMONITOR
  10087. WINAPI
  10088. MonitorFromPoint(
  10089.     IN POINT pt,
  10090.     IN DWORD dwFlags);
  10091.  
  10092. WINUSERAPI
  10093. HMONITOR
  10094. WINAPI
  10095. MonitorFromRect(
  10096.     IN LPCRECT lprc,
  10097.     IN DWORD dwFlags);
  10098.  
  10099. WINUSERAPI
  10100. HMONITOR
  10101. WINAPI
  10102. MonitorFromWindow( IN HWND hwnd, IN DWORD dwFlags);
  10103.  
  10104. #define MONITORINFOF_PRIMARY        0x00000001
  10105.  
  10106. #ifndef CCHDEVICENAME
  10107. #define CCHDEVICENAME 32
  10108. #endif
  10109.  
  10110. typedef struct tagMONITORINFO
  10111. {
  10112.     DWORD   cbSize;
  10113.     RECT    rcMonitor;
  10114.     RECT    rcWork;
  10115.     DWORD   dwFlags;
  10116. } MONITORINFO, *LPMONITORINFO;
  10117.  
  10118. #ifdef __cplusplus
  10119. typedef struct tagMONITORINFOEXA : public tagMONITORINFO
  10120. {
  10121.     CHAR        szDevice[CCHDEVICENAME];
  10122. } MONITORINFOEXA, *LPMONITORINFOEXA;
  10123. typedef struct tagMONITORINFOEXW : public tagMONITORINFO
  10124. {
  10125.     WCHAR       szDevice[CCHDEVICENAME];
  10126. } MONITORINFOEXW, *LPMONITORINFOEXW;
  10127. #ifdef UNICODE
  10128. typedef MONITORINFOEXW MONITORINFOEX;
  10129. typedef LPMONITORINFOEXW LPMONITORINFOEX;
  10130. #else
  10131. typedef MONITORINFOEXA MONITORINFOEX;
  10132. typedef LPMONITORINFOEXA LPMONITORINFOEX;
  10133. #endif // UNICODE
  10134. #else // ndef __cplusplus
  10135. typedef struct tagMONITORINFOEXA
  10136. {
  10137.     MONITORINFO;
  10138.     CHAR        szDevice[CCHDEVICENAME];
  10139. } MONITORINFOEXA, *LPMONITORINFOEXA;
  10140. typedef struct tagMONITORINFOEXW
  10141. {
  10142.     MONITORINFO;
  10143.     WCHAR       szDevice[CCHDEVICENAME];
  10144. } MONITORINFOEXW, *LPMONITORINFOEXW;
  10145. #ifdef UNICODE
  10146. typedef MONITORINFOEXW MONITORINFOEX;
  10147. typedef LPMONITORINFOEXW LPMONITORINFOEX;
  10148. #else
  10149. typedef MONITORINFOEXA MONITORINFOEX;
  10150. typedef LPMONITORINFOEXA LPMONITORINFOEX;
  10151. #endif // UNICODE
  10152. #endif
  10153.  
  10154. WINUSERAPI BOOL WINAPI GetMonitorInfoA( IN HMONITOR hMonitor, OUT LPMONITORINFO lpmi);
  10155. WINUSERAPI BOOL WINAPI GetMonitorInfoW( IN HMONITOR hMonitor, OUT LPMONITORINFO lpmi);
  10156. #ifdef UNICODE
  10157. #define GetMonitorInfo  GetMonitorInfoW
  10158. #else
  10159. #define GetMonitorInfo  GetMonitorInfoA
  10160. #endif // !UNICODE
  10161.  
  10162. typedef BOOL (CALLBACK* MONITORENUMPROC)(HMONITOR, HDC, LPRECT, LPARAM);
  10163.  
  10164. WINUSERAPI
  10165. BOOL
  10166. WINAPI
  10167. EnumDisplayMonitors(
  10168.     IN HDC             hdc,
  10169.     IN LPCRECT         lprcClip,
  10170.     IN MONITORENUMPROC lpfnEnum,
  10171.     IN LPARAM          dwData);
  10172.  
  10173.  
  10174. #ifndef NOWINABLE
  10175.  
  10176. /*
  10177.  * WinEvents - Active Accessibility hooks
  10178.  */
  10179.  
  10180. WINUSERAPI
  10181. VOID
  10182. WINAPI
  10183. NotifyWinEvent(
  10184.     IN DWORD event,
  10185.     IN HWND  hwnd,
  10186.     IN LONG  idObject,
  10187.     IN LONG  idChild);
  10188.  
  10189. typedef VOID (CALLBACK* WINEVENTPROC)(
  10190.     HWINEVENTHOOK hWinEventHook,
  10191.     DWORD         event,
  10192.     HWND          hwnd,
  10193.     LONG          idObject,
  10194.     LONG          idChild,
  10195.     DWORD         idEventThread,
  10196.     DWORD         dwmsEventTime);
  10197.  
  10198. WINUSERAPI
  10199. HWINEVENTHOOK
  10200. WINAPI
  10201. SetWinEventHook(
  10202.     IN DWORD        eventMin,
  10203.     IN DWORD        eventMax,
  10204.     IN HMODULE      hmodWinEventProc,
  10205.     IN WINEVENTPROC pfnWinEventProc,
  10206.     IN DWORD        idProcess,
  10207.     IN DWORD        idThread,
  10208.     IN DWORD        dwFlags);
  10209.  
  10210. /*
  10211.  * dwFlags for SetWinEventHook
  10212.  */
  10213. #define WINEVENT_OUTOFCONTEXT   0x0000  // Events are ASYNC
  10214. #define WINEVENT_SKIPOWNTHREAD  0x0001  // Don't call back for events on installer's thread
  10215. #define WINEVENT_SKIPOWNPROCESS 0x0002  // Don't call back for events on installer's process
  10216. #define WINEVENT_INCONTEXT      0x0004  // Events are SYNC, this causes your dll to be injected into every process
  10217.  
  10218. WINUSERAPI
  10219. BOOL
  10220. WINAPI
  10221. UnhookWinEvent(
  10222.     IN HWINEVENTHOOK hWinEventHook);
  10223.  
  10224. /*
  10225.  * idObject values for WinEventProc and NotifyWinEvent
  10226.  */
  10227.  
  10228. /*
  10229.  * hwnd + idObject can be used with OLEACC.DLL's OleGetObjectFromWindow()
  10230.  * to get an interface pointer to the container.  indexChild is the item
  10231.  * within the container in question.  Setup a VARIANT with vt VT_I4 and
  10232.  * lVal the indexChild and pass that in to all methods.  Then you
  10233.  * are raring to go.
  10234.  */
  10235.  
  10236.  
  10237. /*
  10238.  * Common object IDs (cookies, only for sending WM_GETOBJECT to get at the
  10239.  * thing in question).  Positive IDs are reserved for apps (app specific),
  10240.  * negative IDs are system things and are global, 0 means "just little old
  10241.  * me".
  10242.  */
  10243. #define     CHILDID_SELF        0
  10244. #define     INDEXID_OBJECT      0
  10245. #define     INDEXID_CONTAINER   0
  10246.  
  10247. /*
  10248.  * Reserved IDs for system objects
  10249.  */
  10250. #define     OBJID_WINDOW        0x00000000
  10251. #define     OBJID_SYSMENU       0xFFFFFFFF
  10252. #define     OBJID_TITLEBAR      0xFFFFFFFE
  10253. #define     OBJID_MENU          0xFFFFFFFD
  10254. #define     OBJID_CLIENT        0xFFFFFFFC
  10255. #define     OBJID_VSCROLL       0xFFFFFFFB
  10256. #define     OBJID_HSCROLL       0xFFFFFFFA
  10257. #define     OBJID_SIZEGRIP      0xFFFFFFF9
  10258. #define     OBJID_CARET         0xFFFFFFF8
  10259. #define     OBJID_CURSOR        0xFFFFFFF7
  10260. #define     OBJID_ALERT         0xFFFFFFF6
  10261. #define     OBJID_SOUND         0xFFFFFFF5
  10262. #define     OBJID_QUERYCLASSNAMEIDX 0xFFFFFFF4
  10263. #define     OBJID_NATIVEOM      0xFFFFFFF0
  10264.  
  10265. /*
  10266.  * EVENT DEFINITION
  10267.  */
  10268. #define EVENT_MIN           0x00000001
  10269. #define EVENT_MAX           0x7FFFFFFF
  10270.  
  10271.  
  10272. /*
  10273.  *  EVENT_SYSTEM_SOUND
  10274.  *  Sent when a sound is played.  Currently nothing is generating this, we
  10275.  *  this event when a system sound (for menus, etc) is played.  Apps
  10276.  *  generate this, if accessible, when a private sound is played.  For
  10277.  *  example, if Mail plays a "New Mail" sound.
  10278.  *
  10279.  *  System Sounds:
  10280.  *  (Generated by PlaySoundEvent in USER itself)
  10281.  *      hwnd            is NULL
  10282.  *      idObject        is OBJID_SOUND
  10283.  *      idChild         is sound child ID if one
  10284.  *  App Sounds:
  10285.  *  (PlaySoundEvent won't generate notification; up to app)
  10286.  *      hwnd + idObject gets interface pointer to Sound object
  10287.  *      idChild identifies the sound in question
  10288.  *  are going to be cleaning up the SOUNDSENTRY feature in the control panel
  10289.  *  and will use this at that time.  Applications implementing WinEvents
  10290.  *  are perfectly welcome to use it.  Clients of IAccessible* will simply
  10291.  *  turn around and get back a non-visual object that describes the sound.
  10292.  */
  10293. #define EVENT_SYSTEM_SOUND              0x0001
  10294.  
  10295. /*
  10296.  * EVENT_SYSTEM_ALERT
  10297.  * System Alerts:
  10298.  * (Generated by MessageBox() calls for example)
  10299.  *      hwnd            is hwndMessageBox
  10300.  *      idObject        is OBJID_ALERT
  10301.  * App Alerts:
  10302.  * (Generated whenever)
  10303.  *      hwnd+idObject gets interface pointer to Alert
  10304.  */
  10305. #define EVENT_SYSTEM_ALERT              0x0002
  10306.  
  10307. /*
  10308.  * EVENT_SYSTEM_FOREGROUND
  10309.  * Sent when the foreground (active) window changes, even if it is changing
  10310.  * to another window in the same thread as the previous one.
  10311.  *      hwnd            is hwndNewForeground
  10312.  *      idObject        is OBJID_WINDOW
  10313.  *      idChild    is INDEXID_OBJECT
  10314.  */
  10315. #define EVENT_SYSTEM_FOREGROUND         0x0003
  10316.  
  10317. /*
  10318.  * Menu
  10319.  *      hwnd            is window (top level window or popup menu window)
  10320.  *      idObject        is ID of control (OBJID_MENU, OBJID_SYSMENU, OBJID_SELF for popup)
  10321.  *      idChild         is CHILDID_SELF
  10322.  *
  10323.  * EVENT_SYSTEM_MENUSTART
  10324.  * EVENT_SYSTEM_MENUEND
  10325.  * For MENUSTART, hwnd+idObject+idChild refers to the control with the menu bar,
  10326.  *  or the control bringing up the context menu.
  10327.  *
  10328.  * Sent when entering into and leaving from menu mode (system, app bar, and
  10329.  * track popups).
  10330.  */
  10331. #define EVENT_SYSTEM_MENUSTART          0x0004
  10332. #define EVENT_SYSTEM_MENUEND            0x0005
  10333.  
  10334. /*
  10335.  * EVENT_SYSTEM_MENUPOPUPSTART
  10336.  * EVENT_SYSTEM_MENUPOPUPEND
  10337.  * Sent when a menu popup comes up and just before it is taken down.  Note
  10338.  * that for a call to TrackPopupMenu(), a client will see EVENT_SYSTEM_MENUSTART
  10339.  * followed almost immediately by EVENT_SYSTEM_MENUPOPUPSTART for the popup
  10340.  * being shown.
  10341.  *
  10342.  * For MENUPOPUP, hwnd+idObject+idChild refers to the NEW popup coming up, not the
  10343.  * parent item which is hierarchical.  You can get the parent menu/popup by
  10344.  * asking for the accParent object.
  10345.  */
  10346. #define EVENT_SYSTEM_MENUPOPUPSTART     0x0006
  10347. #define EVENT_SYSTEM_MENUPOPUPEND       0x0007
  10348.  
  10349.  
  10350. /*
  10351.  * EVENT_SYSTEM_CAPTURESTART
  10352.  * EVENT_SYSTEM_CAPTUREEND
  10353.  * Sent when a window takes the capture and releases the capture.
  10354.  */
  10355. #define EVENT_SYSTEM_CAPTURESTART       0x0008
  10356. #define EVENT_SYSTEM_CAPTUREEND         0x0009
  10357.  
  10358. /*
  10359.  * Move Size
  10360.  * EVENT_SYSTEM_MOVESIZESTART
  10361.  * EVENT_SYSTEM_MOVESIZEEND
  10362.  * Sent when a window enters and leaves move-size dragging mode.
  10363.  */
  10364. #define EVENT_SYSTEM_MOVESIZESTART      0x000A
  10365. #define EVENT_SYSTEM_MOVESIZEEND        0x000B
  10366.  
  10367. /*
  10368.  * Context Help
  10369.  * EVENT_SYSTEM_CONTEXTHELPSTART
  10370.  * EVENT_SYSTEM_CONTEXTHELPEND
  10371.  * Sent when a window enters and leaves context sensitive help mode.
  10372.  */
  10373. #define EVENT_SYSTEM_CONTEXTHELPSTART   0x000C
  10374. #define EVENT_SYSTEM_CONTEXTHELPEND     0x000D
  10375.  
  10376. /*
  10377.  * Drag & Drop
  10378.  * EVENT_SYSTEM_DRAGDROPSTART
  10379.  * EVENT_SYSTEM_DRAGDROPEND
  10380.  * Send the START notification just before going into drag&drop loop.  Send
  10381.  * the END notification just after canceling out.
  10382.  * Note that it is up to apps and OLE to generate this, since the system
  10383.  * doesn't know.  Like EVENT_SYSTEM_SOUND, it will be a while before this
  10384.  * is prevalent.
  10385.  */
  10386. #define EVENT_SYSTEM_DRAGDROPSTART      0x000E
  10387. #define EVENT_SYSTEM_DRAGDROPEND        0x000F
  10388.  
  10389. /*
  10390.  * Dialog
  10391.  * Send the START notification right after the dialog is completely
  10392.  *  initialized and visible.  Send the END right before the dialog
  10393.  *  is hidden and goes away.
  10394.  * EVENT_SYSTEM_DIALOGSTART
  10395.  * EVENT_SYSTEM_DIALOGEND
  10396.  */
  10397. #define EVENT_SYSTEM_DIALOGSTART        0x0010
  10398. #define EVENT_SYSTEM_DIALOGEND          0x0011
  10399.  
  10400. /*
  10401.  * EVENT_SYSTEM_SCROLLING
  10402.  * EVENT_SYSTEM_SCROLLINGSTART
  10403.  * EVENT_SYSTEM_SCROLLINGEND
  10404.  * Sent when beginning and ending the tracking of a scrollbar in a window,
  10405.  * and also for scrollbar controls.
  10406.  */
  10407. #define EVENT_SYSTEM_SCROLLINGSTART     0x0012
  10408. #define EVENT_SYSTEM_SCROLLINGEND       0x0013
  10409.  
  10410. /*
  10411.  * Alt-Tab Window
  10412.  * Send the START notification right after the switch window is initialized
  10413.  * and visible.  Send the END right before it is hidden and goes away.
  10414.  * EVENT_SYSTEM_SWITCHSTART
  10415.  * EVENT_SYSTEM_SWITCHEND
  10416.  */
  10417. #define EVENT_SYSTEM_SWITCHSTART        0x0014
  10418. #define EVENT_SYSTEM_SWITCHEND          0x0015
  10419.  
  10420. /*
  10421.  * EVENT_SYSTEM_MINIMIZESTART
  10422.  * EVENT_SYSTEM_MINIMIZEEND
  10423.  * Sent when a window minimizes and just before it restores.
  10424.  */
  10425. #define EVENT_SYSTEM_MINIMIZESTART      0x0016
  10426. #define EVENT_SYSTEM_MINIMIZEEND        0x0017
  10427.  
  10428.  
  10429.  
  10430. /*
  10431.  * Object events
  10432.  *
  10433.  * The system AND apps generate these.  The system generates these for
  10434.  * real windows.  Apps generate these for objects within their window which
  10435.  * act like a separate control, e.g. an item in a list view.
  10436.  *
  10437.  * When the system generate them, dwParam2 is always WMOBJID_SELF.  When
  10438.  * apps generate them, apps put the has-meaning-to-the-app-only ID value
  10439.  * in dwParam2.
  10440.  * For all events, if you want detailed accessibility information, callers
  10441.  * should
  10442.  *      * Call AccessibleObjectFromWindow() with the hwnd, idObject parameters
  10443.  *          of the event, and IID_IAccessible as the REFIID, to get back an
  10444.  *          IAccessible* to talk to
  10445.  *      * Initialize and fill in a VARIANT as VT_I4 with lVal the idChild
  10446.  *          parameter of the event.
  10447.  *      * If idChild isn't zero, call get_accChild() in the container to see
  10448.  *          if the child is an object in its own right.  If so, you will get
  10449.  *          back an IDispatch* object for the child.  You should release the
  10450.  *          parent, and call QueryInterface() on the child object to get its
  10451.  *          IAccessible*.  Then you talk directly to the child.  Otherwise,
  10452.  *          if get_accChild() returns you nothing, you should continue to
  10453.  *          use the child VARIANT.  You will ask the container for the properties
  10454.  *          of the child identified by the VARIANT.  In other words, the
  10455.  *          child in this case is accessible but not a full-blown object.
  10456.  *          Like a button on a titlebar which is 'small' and has no children.
  10457.  */
  10458.  
  10459. /*
  10460.  * For all EVENT_OBJECT events,
  10461.  *      hwnd is the dude to Send the WM_GETOBJECT message to (unless NULL,
  10462.  *          see above for system things)
  10463.  *      idObject is the ID of the object that can resolve any queries a
  10464.  *          client might have.  It's a way to deal with windowless controls,
  10465.  *          controls that are just drawn on the screen in some larger parent
  10466.  *          window (like SDM), or standard frame elements of a window.
  10467.  *      idChild is the piece inside of the object that is affected.  This
  10468.  *          allows clients to access things that are too small to have full
  10469.  *          blown objects in their own right.  Like the thumb of a scrollbar.
  10470.  *          The hwnd/idObject pair gets you to the container, the dude you
  10471.  *          probably want to talk to most of the time anyway.  The idChild
  10472.  *          can then be passed into the acc properties to get the name/value
  10473.  *          of it as needed.
  10474.  *
  10475.  * Example #1:
  10476.  *      System propagating a listbox selection change
  10477.  *      EVENT_OBJECT_SELECTION
  10478.  *          hwnd == listbox hwnd
  10479.  *          idObject == OBJID_WINDOW
  10480.  *          idChild == new selected item, or CHILDID_SELF if
  10481.  *              nothing now selected within container.
  10482.  *      Word '97 propagating a listbox selection change
  10483.  *          hwnd == SDM window
  10484.  *          idObject == SDM ID to get at listbox 'control'
  10485.  *          idChild == new selected item, or CHILDID_SELF if
  10486.  *              nothing
  10487.  *
  10488.  * Example #2:
  10489.  *      System propagating a menu item selection on the menu bar
  10490.  *      EVENT_OBJECT_SELECTION
  10491.  *          hwnd == top level window
  10492.  *          idObject == OBJID_MENU
  10493.  *          idChild == ID of child menu bar item selected
  10494.  *
  10495.  * Example #3:
  10496.  *      System propagating a dropdown coming off of said menu bar item
  10497.  *      EVENT_OBJECT_CREATE
  10498.  *          hwnd == popup item
  10499.  *          idObject == OBJID_WINDOW
  10500.  *          idChild == CHILDID_SELF
  10501.  *
  10502.  * Example #4:
  10503.  *
  10504.  * For EVENT_OBJECT_REORDER, the object referred to by hwnd/idObject is the
  10505.  * PARENT container in which the zorder is occurring.  This is because if
  10506.  * one child is zordering, all of them are changing their relative zorder.
  10507.  */
  10508. #define EVENT_OBJECT_CREATE                 0x8000  // hwnd + ID + idChild is created item
  10509. #define EVENT_OBJECT_DESTROY                0x8001  // hwnd + ID + idChild is destroyed item
  10510. #define EVENT_OBJECT_SHOW                   0x8002  // hwnd + ID + idChild is shown item
  10511. #define EVENT_OBJECT_HIDE                   0x8003  // hwnd + ID + idChild is hidden item
  10512. #define EVENT_OBJECT_REORDER                0x8004  // hwnd + ID + idChild is parent of zordering children
  10513. /*
  10514.  * NOTE:
  10515.  * Minimize the number of notifications!
  10516.  *
  10517.  * When you are hiding a parent object, obviously all child objects are no
  10518.  * longer visible on screen.  They still have the same "visible" status,
  10519.  * but are not truly visible.  Hence do not send HIDE notifications for the
  10520.  * children also.  One implies all.  The same goes for SHOW.
  10521.  */
  10522.  
  10523.  
  10524. #define EVENT_OBJECT_FOCUS                  0x8005  // hwnd + ID + idChild is focused item
  10525. #define EVENT_OBJECT_SELECTION              0x8006  // hwnd + ID + idChild is selected item (if only one), or idChild is OBJID_WINDOW if complex
  10526. #define EVENT_OBJECT_SELECTIONADD           0x8007  // hwnd + ID + idChild is item added
  10527. #define EVENT_OBJECT_SELECTIONREMOVE        0x8008  // hwnd + ID + idChild is item removed
  10528. #define EVENT_OBJECT_SELECTIONWITHIN        0x8009  // hwnd + ID + idChild is parent of changed selected items
  10529.  
  10530. /*
  10531.  * NOTES:
  10532.  * There is only one "focused" child item in a parent.  This is the place
  10533.  * keystrokes are going at a given moment.  Hence only send a notification
  10534.  * about where the NEW focus is going.  A NEW item getting the focus already
  10535.  * implies that the OLD item is losing it.
  10536.  *
  10537.  * SELECTION however can be multiple.  Hence the different SELECTION
  10538.  * notifications.  Here's when to use each:
  10539.  *
  10540.  * (1) Send a SELECTION notification in the simple single selection
  10541.  *     case (like the focus) when the item with the selection is
  10542.  *     merely moving to a different item within a container.  hwnd + ID
  10543.  *     is the container control, idChildItem is the new child with the
  10544.  *     selection.
  10545.  *
  10546.  * (2) Send a SELECTIONADD notification when a new item has simply been added
  10547.  *     to the selection within a container.  This is appropriate when the
  10548.  *     number of newly selected items is very small.  hwnd + ID is the
  10549.  *     container control, idChildItem is the new child added to the selection.
  10550.  *
  10551.  * (3) Send a SELECTIONREMOVE notification when a new item has simply been
  10552.  *     removed from the selection within a container.  This is appropriate
  10553.  *     when the number of newly selected items is very small, just like
  10554.  *     SELECTIONADD.  hwnd + ID is the container control, idChildItem is the
  10555.  *     new child removed from the selection.
  10556.  *
  10557.  * (4) Send a SELECTIONWITHIN notification when the selected items within a
  10558.  *     control have changed substantially.  Rather than propagate a large
  10559.  *     number of changes to reflect removal for some items, addition of
  10560.  *     others, just tell somebody who cares that a lot happened.  It will
  10561.  *     be faster an easier for somebody watching to just turn around and
  10562.  *     query the container control what the new bunch of selected items
  10563.  *     are.
  10564.  */
  10565.  
  10566. #define EVENT_OBJECT_STATECHANGE            0x800A  // hwnd + ID + idChild is item w/ state change
  10567. /*
  10568.  * Examples of when to send an EVENT_OBJECT_STATECHANGE include
  10569.  *      * It is being enabled/disabled (USER does for windows)
  10570.  *      * It is being pressed/released (USER does for buttons)
  10571.  *      * It is being checked/unchecked (USER does for radio/check buttons)
  10572.  */
  10573. #define EVENT_OBJECT_LOCATIONCHANGE         0x800B  // hwnd + ID + idChild is moved/sized item
  10574.  
  10575. /*
  10576.  * Note:
  10577.  * A LOCATIONCHANGE is not sent for every child object when the parent
  10578.  * changes shape/moves.  Send one notification for the topmost object
  10579.  * that is changing.  For example, if the user resizes a top level window,
  10580.  * USER will generate a LOCATIONCHANGE for it, but not for the menu bar,
  10581.  * title bar, scrollbars, etc.  that are also changing shape/moving.
  10582.  *
  10583.  * In other words, it only generates LOCATIONCHANGE notifications for
  10584.  * real windows that are moving/sizing.  It will not generate a LOCATIONCHANGE
  10585.  * for every non-floating child window when the parent moves (the children are
  10586.  * logically moving also on screen, but not relative to the parent).
  10587.  *
  10588.  * Now, if the app itself resizes child windows as a result of being
  10589.  * sized, USER will generate LOCATIONCHANGEs for those dudes also because
  10590.  * it doesn't know better.
  10591.  *
  10592.  * Note also that USER will generate LOCATIONCHANGE notifications for two
  10593.  * non-window sys objects:
  10594.  *      (1) System caret
  10595.  *      (2) Cursor
  10596.  */
  10597.  
  10598. #define EVENT_OBJECT_NAMECHANGE             0x800C  // hwnd + ID + idChild is item w/ name change
  10599. #define EVENT_OBJECT_DESCRIPTIONCHANGE      0x800D  // hwnd + ID + idChild is item w/ desc change
  10600. #define EVENT_OBJECT_VALUECHANGE            0x800E  // hwnd + ID + idChild is item w/ value change
  10601. #define EVENT_OBJECT_PARENTCHANGE           0x800F  // hwnd + ID + idChild is item w/ new parent
  10602. #define EVENT_OBJECT_HELPCHANGE             0x8010  // hwnd + ID + idChild is item w/ help change
  10603. #define EVENT_OBJECT_DEFACTIONCHANGE        0x8011  // hwnd + ID + idChild is item w/ def action change
  10604. #define EVENT_OBJECT_ACCELERATORCHANGE      0x8012  // hwnd + ID + idChild is item w/ keybd accel change
  10605.  
  10606. /*
  10607.  * Child IDs
  10608.  */
  10609.  
  10610. /*
  10611.  * System Sounds (idChild of system SOUND notification)
  10612.  */
  10613. #define SOUND_SYSTEM_STARTUP            1
  10614. #define SOUND_SYSTEM_SHUTDOWN           2
  10615. #define SOUND_SYSTEM_BEEP               3
  10616. #define SOUND_SYSTEM_ERROR              4
  10617. #define SOUND_SYSTEM_QUESTION           5
  10618. #define SOUND_SYSTEM_WARNING            6
  10619. #define SOUND_SYSTEM_INFORMATION        7
  10620. #define SOUND_SYSTEM_MAXIMIZE           8
  10621. #define SOUND_SYSTEM_MINIMIZE           9
  10622. #define SOUND_SYSTEM_RESTOREUP          10
  10623. #define SOUND_SYSTEM_RESTOREDOWN        11
  10624. #define SOUND_SYSTEM_APPSTART           12
  10625. #define SOUND_SYSTEM_FAULT              13
  10626. #define SOUND_SYSTEM_APPEND             14
  10627. #define SOUND_SYSTEM_MENUCOMMAND        15
  10628. #define SOUND_SYSTEM_MENUPOPUP          16
  10629. #define CSOUND_SYSTEM                   16
  10630.  
  10631. /*
  10632.  * System Alerts (indexChild of system ALERT notification)
  10633.  */
  10634. #define ALERT_SYSTEM_INFORMATIONAL      1       // MB_INFORMATION
  10635. #define ALERT_SYSTEM_WARNING            2       // MB_WARNING
  10636. #define ALERT_SYSTEM_ERROR              3       // MB_ERROR
  10637. #define ALERT_SYSTEM_QUERY              4       // MB_QUESTION
  10638. #define ALERT_SYSTEM_CRITICAL           5       // HardSysErrBox
  10639. #define CALERT_SYSTEM                   6
  10640.  
  10641. typedef struct tagGUITHREADINFO
  10642. {
  10643.     DWORD   cbSize;
  10644.     DWORD   flags;
  10645.     HWND    hwndActive;
  10646.     HWND    hwndFocus;
  10647.     HWND    hwndCapture;
  10648.     HWND    hwndMenuOwner;
  10649.     HWND    hwndMoveSize;
  10650.     HWND    hwndCaret;
  10651.     RECT    rcCaret;
  10652. } GUITHREADINFO, *PGUITHREADINFO, FAR * LPGUITHREADINFO;
  10653.  
  10654. #define GUI_CARETBLINKING   0x00000001
  10655. #define GUI_INMOVESIZE      0x00000002
  10656. #define GUI_INMENUMODE      0x00000004
  10657. #define GUI_SYSTEMMENUMODE  0x00000008
  10658. #define GUI_POPUPMENUMODE   0x00000010
  10659.  
  10660. WINUSERAPI
  10661. BOOL
  10662. WINAPI
  10663. GetGUIThreadInfo(
  10664.     IN DWORD idThread,
  10665.     OUT PGUITHREADINFO pgui);
  10666.  
  10667. WINUSERAPI
  10668. UINT
  10669. WINAPI
  10670. GetWindowModuleFileNameA(
  10671.     IN HWND     hwnd,
  10672.     OUT LPSTR pszFileName,
  10673.     IN UINT     cchFileNameMax);
  10674. WINUSERAPI
  10675. UINT
  10676. WINAPI
  10677. GetWindowModuleFileNameW(
  10678.     IN HWND     hwnd,
  10679.     OUT LPWSTR pszFileName,
  10680.     IN UINT     cchFileNameMax);
  10681. #ifdef UNICODE
  10682. #define GetWindowModuleFileName  GetWindowModuleFileNameW
  10683. #else
  10684. #define GetWindowModuleFileName  GetWindowModuleFileNameA
  10685. #endif // !UNICODE
  10686.  
  10687. #ifndef NO_STATE_FLAGS
  10688. #define STATE_SYSTEM_UNAVAILABLE        0x00000001  // Disabled
  10689. #define STATE_SYSTEM_SELECTED           0x00000002
  10690. #define STATE_SYSTEM_FOCUSED            0x00000004
  10691. #define STATE_SYSTEM_PRESSED            0x00000008
  10692. #define STATE_SYSTEM_CHECKED            0x00000010
  10693. #define STATE_SYSTEM_MIXED              0x00000020  // 3-state checkbox or toolbar button
  10694. #define STATE_SYSTEM_INDETERMINATE      STATE_SYSTEM_MIXED
  10695. #define STATE_SYSTEM_READONLY           0x00000040
  10696. #define STATE_SYSTEM_HOTTRACKED         0x00000080
  10697. #define STATE_SYSTEM_DEFAULT            0x00000100
  10698. #define STATE_SYSTEM_EXPANDED           0x00000200
  10699. #define STATE_SYSTEM_COLLAPSED          0x00000400
  10700. #define STATE_SYSTEM_BUSY               0x00000800
  10701. #define STATE_SYSTEM_FLOATING           0x00001000  // Children "owned" not "contained" by parent
  10702. #define STATE_SYSTEM_MARQUEED           0x00002000
  10703. #define STATE_SYSTEM_ANIMATED           0x00004000
  10704. #define STATE_SYSTEM_INVISIBLE          0x00008000
  10705. #define STATE_SYSTEM_OFFSCREEN          0x00010000
  10706. #define STATE_SYSTEM_SIZEABLE           0x00020000
  10707. #define STATE_SYSTEM_MOVEABLE           0x00040000
  10708. #define STATE_SYSTEM_SELFVOICING        0x00080000
  10709. #define STATE_SYSTEM_FOCUSABLE          0x00100000
  10710. #define STATE_SYSTEM_SELECTABLE         0x00200000
  10711. #define STATE_SYSTEM_LINKED             0x00400000
  10712. #define STATE_SYSTEM_TRAVERSED          0x00800000
  10713. #define STATE_SYSTEM_MULTISELECTABLE    0x01000000  // Supports multiple selection
  10714. #define STATE_SYSTEM_EXTSELECTABLE      0x02000000  // Supports extended selection
  10715. #define STATE_SYSTEM_ALERT_LOW          0x04000000  // This information is of low priority
  10716. #define STATE_SYSTEM_ALERT_MEDIUM       0x08000000  // This information is of medium priority
  10717. #define STATE_SYSTEM_ALERT_HIGH         0x10000000  // This information is of high priority
  10718. #define STATE_SYSTEM_PROTECTED          0x20000000  // access to this is restricted
  10719. #define STATE_SYSTEM_VALID              0x3FFFFFFF
  10720. #endif
  10721.  
  10722. #define CCHILDREN_TITLEBAR              5
  10723. #define CCHILDREN_SCROLLBAR             5
  10724.  
  10725. /*
  10726.  * Information about the global cursor.
  10727.  */
  10728. typedef struct tagCURSORINFO
  10729. {
  10730.     DWORD   cbSize;
  10731.     DWORD   flags;
  10732.     HCURSOR hCursor;
  10733.     POINT   ptScreenPos;
  10734. } CURSORINFO, *PCURSORINFO, *LPCURSORINFO;
  10735.  
  10736. #define CURSOR_SHOWING     0x00000001
  10737.  
  10738. WINUSERAPI
  10739. BOOL
  10740. WINAPI
  10741. GetCursorInfo(
  10742.     OUT PCURSORINFO pci
  10743. );
  10744.  
  10745. /*
  10746.  * Window information snapshot
  10747.  */
  10748. typedef struct tagWINDOWINFO
  10749. {
  10750.     DWORD cbSize;
  10751.     RECT  rcWindow;
  10752.     RECT  rcClient;
  10753.     DWORD dwStyle;
  10754.     DWORD dwExStyle;
  10755.     DWORD dwWindowStatus;
  10756.     UINT  cxWindowBorders;
  10757.     UINT  cyWindowBorders;
  10758.     ATOM  atomWindowType;
  10759.     WORD  wCreatorVersion;
  10760. } WINDOWINFO, *PWINDOWINFO, *LPWINDOWINFO;
  10761.  
  10762. #define WS_ACTIVECAPTION    0x0001
  10763.  
  10764. WINUSERAPI
  10765. BOOL
  10766. WINAPI
  10767. GetWindowInfo(
  10768.     IN HWND hwnd,
  10769.     OUT PWINDOWINFO pwi
  10770. );
  10771.  
  10772. /*
  10773.  * Titlebar information.
  10774.  */
  10775. typedef struct tagTITLEBARINFO
  10776. {
  10777.     DWORD cbSize;
  10778.     RECT  rcTitleBar;
  10779.     DWORD rgstate[CCHILDREN_TITLEBAR+1];
  10780. } TITLEBARINFO, *PTITLEBARINFO, *LPTITLEBARINFO;
  10781.  
  10782. WINUSERAPI
  10783. BOOL
  10784. WINAPI
  10785. GetTitleBarInfo(
  10786.     IN HWND hwnd,
  10787.     OUT PTITLEBARINFO pti
  10788. );
  10789.  
  10790. /*
  10791.  * Menubar information
  10792.  */
  10793. typedef struct tagMENUBARINFO
  10794. {
  10795.     DWORD cbSize;
  10796.     RECT  rcBar;          // rect of bar, popup, item
  10797.     HMENU hMenu;          // real menu handle of bar, popup
  10798.     HWND  hwndMenu;       // hwnd of item submenu if one
  10799.     BOOL  fBarFocused:1;  // bar, popup has the focus
  10800.     BOOL  fFocused:1;     // item has the focus
  10801. } MENUBARINFO, *PMENUBARINFO, *LPMENUBARINFO;
  10802.  
  10803. WINUSERAPI
  10804. BOOL
  10805. WINAPI
  10806. GetMenuBarInfo(
  10807.     IN HWND hwnd,
  10808.     IN LONG idObject,
  10809.     IN LONG idItem,
  10810.     OUT PMENUBARINFO pmbi
  10811. );
  10812.  
  10813. /*
  10814.  * Scrollbar information
  10815.  */
  10816. typedef struct tagSCROLLBARINFO
  10817. {
  10818.     DWORD cbSize;
  10819.     RECT  rcScrollBar;
  10820.     int   dxyLineButton;
  10821.     int   xyThumbTop;
  10822.     int   xyThumbBottom;
  10823.     int   reserved;
  10824.     DWORD rgstate[CCHILDREN_SCROLLBAR+1];
  10825. } SCROLLBARINFO, *PSCROLLBARINFO, *LPSCROLLBARINFO;
  10826.  
  10827. WINUSERAPI
  10828. BOOL
  10829. WINAPI
  10830. GetScrollBarInfo(
  10831.     IN HWND hwnd,
  10832.     IN LONG idObject,
  10833.     OUT PSCROLLBARINFO psbi
  10834. );
  10835.  
  10836. /*
  10837.  * Combobox information
  10838.  */
  10839. typedef struct tagCOMBOBOXINFO
  10840. {
  10841.     DWORD cbSize;
  10842.     RECT  rcItem;
  10843.     RECT  rcButton;
  10844.     DWORD stateButton;
  10845.     HWND  hwndCombo;
  10846.     HWND  hwndItem;
  10847.     HWND  hwndList;
  10848. } COMBOBOXINFO, *PCOMBOBOXINFO, *LPCOMBOBOXINFO;
  10849.  
  10850. WINUSERAPI
  10851. BOOL
  10852. WINAPI
  10853. GetComboBoxInfo(
  10854.     IN HWND hwndCombo,
  10855.     OUT PCOMBOBOXINFO pcbi
  10856. );
  10857.  
  10858. /*
  10859.  * The "real" ancestor window
  10860.  */
  10861. #define     GA_PARENT       1
  10862. #define     GA_ROOT         2
  10863. #define     GA_ROOTOWNER    3
  10864.  
  10865. WINUSERAPI
  10866. HWND
  10867. WINAPI
  10868. GetAncestor(
  10869.     IN HWND hwnd,
  10870.     IN UINT gaFlags
  10871. );
  10872.  
  10873.  
  10874. /*
  10875.  * This gets the REAL child window at the point.  If it is in the dead
  10876.  * space of a group box, it will try a sibling behind it.  But static
  10877.  * fields will get returned.  In other words, it is kind of a cross between
  10878.  * ChildWindowFromPointEx and WindowFromPoint.
  10879.  */
  10880. WINUSERAPI
  10881. HWND
  10882. WINAPI
  10883. RealChildWindowFromPoint(
  10884.     IN HWND hwndParent,
  10885.     IN POINT ptParentClientCoords
  10886. );
  10887.  
  10888.  
  10889. /*
  10890.  * This gets the name of the window TYPE, not class.  This allows us to
  10891.  * recognize ThunderButton32 et al.
  10892.  */
  10893. WINUSERAPI
  10894. UINT
  10895. WINAPI
  10896. RealGetWindowClassA(
  10897.     IN HWND  hwnd,
  10898.     OUT LPSTR pszType,
  10899.     IN UINT  cchType
  10900. );
  10901. /*
  10902.  * This gets the name of the window TYPE, not class.  This allows us to
  10903.  * recognize ThunderButton32 et al.
  10904.  */
  10905. WINUSERAPI
  10906. UINT
  10907. WINAPI
  10908. RealGetWindowClassW(
  10909.     IN HWND  hwnd,
  10910.     OUT LPWSTR pszType,
  10911.     IN UINT  cchType
  10912. );
  10913. #ifdef UNICODE
  10914. #define RealGetWindowClass  RealGetWindowClassW
  10915. #else
  10916. #define RealGetWindowClass  RealGetWindowClassA
  10917. #endif // !UNICODE
  10918.  
  10919. /*
  10920.  * Alt-Tab Switch window information.
  10921.  */
  10922. typedef struct tagALTTABINFO
  10923. {
  10924.     DWORD cbSize;
  10925.     int   cItems;
  10926.     int   cColumns;
  10927.     int   cRows;
  10928.     int   iColFocus;
  10929.     int   iRowFocus;
  10930.     int   cxItem;
  10931.     int   cyItem;
  10932.     POINT ptStart;
  10933. } ALTTABINFO, *PALTTABINFO, *LPALTTABINFO;
  10934.  
  10935. WINUSERAPI
  10936. BOOL
  10937. WINAPI
  10938. GetAltTabInfoA(
  10939.     IN HWND hwnd,
  10940.     IN int iItem,
  10941.     OUT PALTTABINFO pati,
  10942.     OUT LPSTR pszItemText,
  10943.     IN UINT cchItemText
  10944. );
  10945. WINUSERAPI
  10946. BOOL
  10947. WINAPI
  10948. GetAltTabInfoW(
  10949.     IN HWND hwnd,
  10950.     IN int iItem,
  10951.     OUT PALTTABINFO pati,
  10952.     OUT LPWSTR pszItemText,
  10953.     IN UINT cchItemText
  10954. );
  10955. #ifdef UNICODE
  10956. #define GetAltTabInfo  GetAltTabInfoW
  10957. #else
  10958. #define GetAltTabInfo  GetAltTabInfoA
  10959. #endif // !UNICODE
  10960.  
  10961. /*
  10962.  * Listbox information.
  10963.  * Returns the number of items per row.
  10964.  */
  10965. WINUSERAPI
  10966. DWORD
  10967. WINAPI
  10968. GetListBoxInfo(
  10969.     IN HWND hwnd
  10970. );
  10971.  
  10972. #endif /* NOWINABLE */
  10973. #endif /* WINVER >= 0x0500 */
  10974.  
  10975.  
  10976. #if(_WIN32_WINNT >= 0x0500)
  10977. WINUSERAPI
  10978. BOOL
  10979. WINAPI
  10980. LockWorkStation(
  10981.     VOID);
  10982. #endif /* _WIN32_WINNT >= 0x0500 */
  10983.  
  10984. #if(_WIN32_WINNT >= 0x0500)
  10985.  
  10986. WINUSERAPI
  10987. BOOL
  10988. WINAPI
  10989. UserHandleGrantAccess(
  10990.     HANDLE hUserHandle,
  10991.     HANDLE hJob,
  10992.     BOOL   bGrant);
  10993.  
  10994. #endif /* _WIN32_WINNT >= 0x0500 */
  10995.  
  10996.  
  10997. #ifdef __cplusplus
  10998. }
  10999. #endif  /* __cplusplus */
  11000.  
  11001. #pragma option pop /*P_O_Pop*/
  11002. #endif /* !_WINUSER_ */
  11003.  
  11004.  
  11005.