winuser.h
上传用户:gzccxsp
上传日期:2015-07-14
资源大小:182k
文件大小:238k
源码类别:

MacOS编程

开发平台:

Visual C++

  1. /****************************************************************************
  2. *                                                                           *
  3. * winuser.h -- USER procedure declarations, constant definitions and macros *
  4. *                                                                           *
  5. * Copyright (c) 1985-1999, Microsoft Corp. All rights reserved.             *
  6. *                                                                           *
  7. ****************************************************************************/
  8. #ifndef _WINUSER_
  9. #define _WINUSER_
  10. //
  11. // Define API decoration for direct importing of DLL references.
  12. //
  13. #if !defined(_USER32_)
  14. #define WINUSERAPI DECLSPEC_IMPORT
  15. #else
  16. #define WINUSERAPI
  17. #endif
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif /* __cplusplus */
  21. #ifndef WINVER
  22. #define WINVER  0x045A          /* version 4.90 */
  23. #endif /* !WINVER */
  24. #ifndef _WIN32_WINDOWS
  25. #define _WIN32_WINDOWS  0x045A  /* version 4.90 */
  26. #endif /* !_WIN32_WINDOWS */
  27. #include <stdarg.h>
  28. #ifndef NOUSER
  29. typedef HANDLE HDWP;
  30. typedef VOID MENUTEMPLATEA;
  31. typedef VOID MENUTEMPLATEW;
  32. #ifdef UNICODE
  33. typedef MENUTEMPLATEW MENUTEMPLATE;
  34. #else
  35. typedef MENUTEMPLATEA MENUTEMPLATE;
  36. #endif // UNICODE
  37. typedef PVOID LPMENUTEMPLATEA;
  38. typedef PVOID LPMENUTEMPLATEW;
  39. #ifdef UNICODE
  40. typedef LPMENUTEMPLATEW LPMENUTEMPLATE;
  41. #else
  42. typedef LPMENUTEMPLATEA LPMENUTEMPLATE;
  43. #endif // UNICODE
  44. typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);
  45. #ifdef STRICT
  46. typedef BOOL (CALLBACK* DLGPROC)(HWND, UINT, WPARAM, LPARAM);
  47. typedef VOID (CALLBACK* TIMERPROC)(HWND, UINT, UINT, DWORD);
  48. typedef BOOL (CALLBACK* GRAYSTRINGPROC)(HDC, LPARAM, int);
  49. typedef BOOL (CALLBACK* WNDENUMPROC)(HWND, LPARAM);
  50. typedef LRESULT (CALLBACK* HOOKPROC)(int code, WPARAM wParam, LPARAM lParam);
  51. typedef VOID (CALLBACK* SENDASYNCPROC)(HWND, UINT, DWORD, LRESULT);
  52. typedef BOOL (CALLBACK* PROPENUMPROCA)(HWND, LPCSTR, HANDLE);
  53. typedef BOOL (CALLBACK* PROPENUMPROCW)(HWND, LPCWSTR, HANDLE);
  54. typedef BOOL (CALLBACK* PROPENUMPROCEXA)(HWND, LPSTR, HANDLE, DWORD);
  55. typedef BOOL (CALLBACK* PROPENUMPROCEXW)(HWND, LPWSTR, HANDLE, DWORD);
  56. typedef int (CALLBACK* EDITWORDBREAKPROCA)(LPSTR lpch, int ichCurrent, int cch, int code);
  57. typedef int (CALLBACK* EDITWORDBREAKPROCW)(LPWSTR lpch, int ichCurrent, int cch, int code);
  58. #if(WINVER >= 0x0400)
  59. typedef BOOL (CALLBACK* DRAWSTATEPROC)(HDC hdc, LPARAM lData, WPARAM wData, int cx, int cy);
  60. #endif /* WINVER >= 0x0400 */
  61. #else /* !STRICT */
  62. typedef FARPROC DLGPROC;
  63. typedef FARPROC TIMERPROC;
  64. typedef FARPROC GRAYSTRINGPROC;
  65. typedef FARPROC WNDENUMPROC;
  66. typedef FARPROC HOOKPROC;
  67. typedef FARPROC SENDASYNCPROC;
  68. typedef FARPROC EDITWORDBREAKPROCA;
  69. typedef FARPROC EDITWORDBREAKPROCW;
  70. typedef FARPROC PROPENUMPROCA;
  71. typedef FARPROC PROPENUMPROCW;
  72. typedef FARPROC PROPENUMPROCEXA;
  73. typedef FARPROC PROPENUMPROCEXW;
  74. #if(WINVER >= 0x0400)
  75. typedef FARPROC DRAWSTATEPROC;
  76. #endif /* WINVER >= 0x0400 */
  77. #endif /* !STRICT */
  78. #ifdef UNICODE
  79. typedef PROPENUMPROCW        PROPENUMPROC;
  80. typedef PROPENUMPROCEXW      PROPENUMPROCEX;
  81. typedef EDITWORDBREAKPROCW   EDITWORDBREAKPROC;
  82. #else  /* !UNICODE */
  83. typedef PROPENUMPROCA        PROPENUMPROC;
  84. typedef PROPENUMPROCEXA      PROPENUMPROCEX;
  85. typedef EDITWORDBREAKPROCA   EDITWORDBREAKPROC;
  86. #endif /* UNICODE */
  87. #ifdef STRICT
  88. typedef BOOL (CALLBACK* NAMEENUMPROCA)(LPSTR, LPARAM);
  89. typedef BOOL (CALLBACK* NAMEENUMPROCW)(LPWSTR, LPARAM);
  90. typedef NAMEENUMPROCA   WINSTAENUMPROCA;
  91. typedef NAMEENUMPROCA   DESKTOPENUMPROCA;
  92. typedef NAMEENUMPROCW   WINSTAENUMPROCW;
  93. typedef NAMEENUMPROCW   DESKTOPENUMPROCW;
  94. #else /* !STRICT */
  95. typedef FARPROC NAMEENUMPROCA;
  96. typedef FARPROC NAMEENUMPROCW;
  97. typedef FARPROC WINSTAENUMPROCA;
  98. typedef FARPROC DESKTOPENUMPROCA;
  99. typedef FARPROC WINSTAENUMPROCW;
  100. typedef FARPROC DESKTOPENUMPROCW;
  101. #endif /* !STRICT */
  102. #ifdef UNICODE
  103. typedef WINSTAENUMPROCW     WINSTAENUMPROC;
  104. typedef DESKTOPENUMPROCW    DESKTOPENUMPROC;
  105. #else  /* !UNICODE */
  106. typedef WINSTAENUMPROCA     WINSTAENUMPROC;
  107. typedef DESKTOPENUMPROCA    DESKTOPENUMPROC;
  108. #endif /* UNICODE */
  109. #define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i)))
  110. #define MAKEINTRESOURCEW(i) (LPWSTR)((DWORD)((WORD)(i)))
  111. #ifdef UNICODE
  112. #define MAKEINTRESOURCE  MAKEINTRESOURCEW
  113. #else
  114. #define MAKEINTRESOURCE  MAKEINTRESOURCEA
  115. #endif // !UNICODE
  116. #ifndef NORESOURCE
  117. /*
  118.  * Predefined Resource Types
  119.  */
  120. #define RT_CURSOR           MAKEINTRESOURCE(1)
  121. #define RT_BITMAP           MAKEINTRESOURCE(2)
  122. #define RT_ICON             MAKEINTRESOURCE(3)
  123. #define RT_MENU             MAKEINTRESOURCE(4)
  124. #define RT_DIALOG           MAKEINTRESOURCE(5)
  125. #define RT_STRING           MAKEINTRESOURCE(6)
  126. #define RT_FONTDIR          MAKEINTRESOURCE(7)
  127. #define RT_FONT             MAKEINTRESOURCE(8)
  128. #define RT_ACCELERATOR      MAKEINTRESOURCE(9)
  129. #define RT_RCDATA           MAKEINTRESOURCE(10)
  130. #define RT_MESSAGETABLE     MAKEINTRESOURCE(11)
  131. #define DIFFERENCE          11
  132. #define RT_GROUP_CURSOR MAKEINTRESOURCE((DWORD)RT_CURSOR + DIFFERENCE)
  133. #define RT_GROUP_ICON   MAKEINTRESOURCE((DWORD)RT_ICON + DIFFERENCE)
  134. #define RT_VERSION      MAKEINTRESOURCE(16)
  135. #define RT_DLGINCLUDE   MAKEINTRESOURCE(17)
  136. #if(WINVER >= 0x0400)
  137. #define RT_PLUGPLAY     MAKEINTRESOURCE(19)
  138. #define RT_VXD          MAKEINTRESOURCE(20)
  139. #define RT_ANICURSOR    MAKEINTRESOURCE(21)
  140. #define RT_ANIICON      MAKEINTRESOURCE(22)
  141. #endif /* WINVER >= 0x0400 */
  142. #define RT_HTML         MAKEINTRESOURCE(23)
  143. #endif /* !NORESOURCE */
  144. WINUSERAPI
  145. int
  146. WINAPI
  147. wvsprintfA(
  148.     LPSTR,
  149.     LPCSTR,
  150.     va_list arglist);
  151. WINUSERAPI
  152. int
  153. WINAPI
  154. wvsprintfW(
  155.     LPWSTR,
  156.     LPCWSTR,
  157.     va_list arglist);
  158. #ifdef UNICODE
  159. #define wvsprintf  wvsprintfW
  160. #else
  161. #define wvsprintf  wvsprintfA
  162. #endif // !UNICODE
  163. WINUSERAPI int WINAPIV wsprintfA(LPSTR, LPCSTR, ...);
  164. WINUSERAPI int WINAPIV wsprintfW(LPWSTR, LPCWSTR, ...);
  165. #ifdef UNICODE
  166. #define wsprintf  wsprintfW
  167. #else
  168. #define wsprintf  wsprintfA
  169. #endif // !UNICODE
  170. #ifndef NOSCROLL
  171. /*
  172.  * Scroll Bar Constants
  173.  */
  174. #define SB_HORZ             0
  175. #define SB_VERT             1
  176. #define SB_CTL              2
  177. #define SB_BOTH             3
  178. /*
  179.  * Scroll Bar Commands
  180.  */
  181. #define SB_LINEUP           0
  182. #define SB_LINELEFT         0
  183. #define SB_LINEDOWN         1
  184. #define SB_LINERIGHT        1
  185. #define SB_PAGEUP           2
  186. #define SB_PAGELEFT         2
  187. #define SB_PAGEDOWN         3
  188. #define SB_PAGERIGHT        3
  189. #define SB_THUMBPOSITION    4
  190. #define SB_THUMBTRACK       5
  191. #define SB_TOP              6
  192. #define SB_LEFT             6
  193. #define SB_BOTTOM           7
  194. #define SB_RIGHT            7
  195. #define SB_ENDSCROLL        8
  196. #endif /* !NOSCROLL */
  197. #ifndef NOSHOWWINDOW
  198. // begin_r_winuser
  199. /*
  200.  * ShowWindow() Commands
  201.  */
  202. #define SW_HIDE             0
  203. #define SW_SHOWNORMAL       1
  204. #define SW_NORMAL           1
  205. #define SW_SHOWMINIMIZED    2
  206. #define SW_SHOWMAXIMIZED    3
  207. #define SW_MAXIMIZE         3
  208. #define SW_SHOWNOACTIVATE   4
  209. #define SW_SHOW             5
  210. #define SW_MINIMIZE         6
  211. #define SW_SHOWMINNOACTIVE  7
  212. #define SW_SHOWNA           8
  213. #define SW_RESTORE          9
  214. #define SW_SHOWDEFAULT      10
  215. #define SW_MAX              10
  216. /*
  217.  * Old ShowWindow() Commands
  218.  */
  219. #define HIDE_WINDOW         0
  220. #define SHOW_OPENWINDOW     1
  221. #define SHOW_ICONWINDOW     2
  222. #define SHOW_FULLSCREEN     3
  223. #define SHOW_OPENNOACTIVATE 4
  224. /*
  225.  * Identifiers for the WM_SHOWWINDOW message
  226.  */
  227. #define SW_PARENTCLOSING    1
  228. #define SW_OTHERZOOM        2
  229. #define SW_PARENTOPENING    3
  230. #define SW_OTHERUNZOOM      4
  231. // end_r_winuser
  232. #endif /* !NOSHOWWINDOW */
  233. #if (_WIN32_WINDOWS >= 0x040A)
  234. /*
  235.  * AnimateWindow() Commands
  236.  */
  237. #define AW_HOR_POSITIVE             0x00000001
  238. #define AW_HOR_NEGATIVE             0x00000002
  239. #define AW_VER_POSITIVE             0x00000004
  240. #define AW_VER_NEGATIVE             0x00000008
  241. #define AW_CENTER                   0x00000010
  242. #define AW_HIDE                     0x00010000
  243. #define AW_ACTIVATE                 0x00020000
  244. #define AW_SLIDE                    0x00040000
  245. #define AW_BLEND                    0x00080000
  246. #endif // (_WIN32_WINNT >= 0x040A)
  247. /*
  248.  * WM_KEYUP/DOWN/CHAR HIWORD(lParam) flags
  249.  */
  250. #define KF_EXTENDED         0x0100
  251. #define KF_DLGMODE          0x0800
  252. #define KF_MENUMODE         0x1000
  253. #define KF_ALTDOWN          0x2000
  254. #define KF_REPEAT           0x4000
  255. #define KF_UP               0x8000
  256. #ifndef NOVIRTUALKEYCODES
  257. // begin_r_winuser
  258. /*
  259.  * Virtual Keys, Standard Set
  260.  */
  261. #define VK_LBUTTON        0x01
  262. #define VK_RBUTTON        0x02
  263. #define VK_CANCEL         0x03
  264. #define VK_MBUTTON        0x04    /* NOT contiguous with L & RBUTTON */
  265. #if (_WIN32_WINDOWS >= 0x045A)
  266. #define VK_XBUTTON1       0x05    /* NOT contiguous with L & RBUTTON */
  267. #define VK_XBUTTON2       0x06    /* NOT contiguous with L & RBUTTON */
  268. #endif // (_WIN32_WINDOWS >= 0x045A)
  269. #define VK_BACK           0x08
  270. #define VK_TAB            0x09
  271. #define VK_CLEAR          0x0C
  272. #define VK_RETURN         0x0D
  273. #define VK_SHIFT          0x10
  274. #define VK_CONTROL        0x11
  275. #define VK_MENU           0x12
  276. #define VK_PAUSE          0x13
  277. #define VK_CAPITAL        0x14
  278. #define VK_KANA           0x15
  279. #define VK_HANGEUL        0x15  /* old name - should be here for compatibility */
  280. #define VK_HANGUL         0x15
  281. #define VK_JUNJA          0x17
  282. #define VK_FINAL          0x18
  283. #define VK_HANJA          0x19
  284. #define VK_KANJI          0x19
  285. #define VK_ESCAPE         0x1B
  286. #define VK_CONVERT        0x1C
  287. #define VK_NONCONVERT     0x1D
  288. #define VK_ACCEPT         0x1E
  289. #define VK_MODECHANGE     0x1F
  290. #define VK_SPACE          0x20
  291. #define VK_PRIOR          0x21
  292. #define VK_NEXT           0x22
  293. #define VK_END            0x23
  294. #define VK_HOME           0x24
  295. #define VK_LEFT           0x25
  296. #define VK_UP             0x26
  297. #define VK_RIGHT          0x27
  298. #define VK_DOWN           0x28
  299. #define VK_SELECT         0x29
  300. #define VK_PRINT          0x2A
  301. #define VK_EXECUTE        0x2B
  302. #define VK_SNAPSHOT       0x2C
  303. #define VK_INSERT         0x2D
  304. #define VK_DELETE         0x2E
  305. #define VK_HELP           0x2F
  306. /* VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39) */
  307. /* VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) */
  308. #define VK_LWIN           0x5B
  309. #define VK_RWIN           0x5C
  310. #define VK_APPS           0x5D
  311. #define VK_POWER          0x5E
  312. #define VK_SLEEP          0x5F
  313. #define VK_NUMPAD0        0x60
  314. #define VK_NUMPAD1        0x61
  315. #define VK_NUMPAD2        0x62
  316. #define VK_NUMPAD3        0x63
  317. #define VK_NUMPAD4        0x64
  318. #define VK_NUMPAD5        0x65
  319. #define VK_NUMPAD6        0x66
  320. #define VK_NUMPAD7        0x67
  321. #define VK_NUMPAD8        0x68
  322. #define VK_NUMPAD9        0x69
  323. #define VK_MULTIPLY       0x6A
  324. #define VK_ADD            0x6B
  325. #define VK_SEPARATOR      0x6C
  326. #define VK_SUBTRACT       0x6D
  327. #define VK_DECIMAL        0x6E
  328. #define VK_DIVIDE         0x6F
  329. #define VK_F1             0x70
  330. #define VK_F2             0x71
  331. #define VK_F3             0x72
  332. #define VK_F4             0x73
  333. #define VK_F5             0x74
  334. #define VK_F6             0x75
  335. #define VK_F7             0x76
  336. #define VK_F8             0x77
  337. #define VK_F9             0x78
  338. #define VK_F10            0x79
  339. #define VK_F11            0x7A
  340. #define VK_F12            0x7B
  341. #define VK_F13            0x7C
  342. #define VK_F14            0x7D
  343. #define VK_F15            0x7E
  344. #define VK_F16            0x7F
  345. #define VK_F17            0x80
  346. #define VK_F18            0x81
  347. #define VK_F19            0x82
  348. #define VK_F20            0x83
  349. #define VK_F21            0x84
  350. #define VK_F22            0x85
  351. #define VK_F23            0x86
  352. #define VK_F24            0x87
  353. #define VK_NUMLOCK        0x90
  354. #define VK_SCROLL         0x91
  355. /*
  356.  * VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys.
  357.  * Used only as parameters to GetAsyncKeyState() and GetKeyState().
  358.  * No other API or message will distinguish left and right keys in this way.
  359.  */
  360. #define VK_LSHIFT         0xA0
  361. #define VK_RSHIFT         0xA1
  362. #define VK_LCONTROL       0xA2
  363. #define VK_RCONTROL       0xA3
  364. #define VK_LMENU          0xA4
  365. #define VK_RMENU          0xA5
  366. #if (_WIN32_WINDOWS >= 0x045A)
  367. #define VK_BROWSER_BACK        0xA6
  368. #define VK_BROWSER_FORWARD     0xA7
  369. #define VK_BROWSER_REFRESH     0xA8
  370. #define VK_BROWSER_STOP        0xA9
  371. #define VK_BROWSER_SEARCH      0xAA
  372. #define VK_BROWSER_FAVORITES   0xAB
  373. #define VK_BROWSER_HOME        0xAC
  374. #define VK_VOLUME_MUTE         0xAD
  375. #define VK_VOLUME_DOWN         0xAE
  376. #define VK_VOLUME_UP           0xAF
  377. #define VK_MEDIA_NEXT_TRACK    0xB0
  378. #define VK_MEDIA_PREV_TRACK    0xB1
  379. #define VK_MEDIA_STOP          0xB2
  380. #define VK_MEDIA_PLAY_PAUSE    0xB3
  381. #define VK_LAUNCH_MAIL         0xB4
  382. #define VK_LAUNCH_MEDIA_SELECT 0xB5
  383. #define VK_LAUNCH_APP1         0xB6
  384. #define VK_LAUNCH_APP2         0xB7
  385. #endif // (_WIN32_WINDOWS >= 0x045A)
  386. #if(WINVER >= 0x0400)
  387. #define VK_PROCESSKEY     0xE5
  388. #endif /* WINVER >= 0x0400 */
  389. #if (_WIN32_WINDOWS >= 0x045A)
  390. #define VK_PACKET         0xE7
  391. #endif // (_WIN32_WINDOWS >= 0x045A)
  392. #define VK_ATTN           0xF6
  393. #define VK_CRSEL          0xF7
  394. #define VK_EXSEL          0xF8
  395. #define VK_EREOF          0xF9
  396. #define VK_PLAY           0xFA
  397. #define VK_ZOOM           0xFB
  398. #define VK_NONAME         0xFC
  399. #define VK_PA1            0xFD
  400. #define VK_OEM_CLEAR      0xFE
  401. // end_r_winuser
  402. #endif /* !NOVIRTUALKEYCODES */
  403. #ifndef NOWH
  404. /*
  405.  * SetWindowsHook() codes
  406.  */
  407. #define WH_MIN              (-1)
  408. #define WH_MSGFILTER        (-1)
  409. #define WH_JOURNALRECORD    0
  410. #define WH_JOURNALPLAYBACK  1
  411. #define WH_KEYBOARD         2
  412. #define WH_GETMESSAGE       3
  413. #define WH_CALLWNDPROC      4
  414. #define WH_CBT              5
  415. #define WH_SYSMSGFILTER     6
  416. #define WH_MOUSE            7
  417. #define WH_HARDWARE         8
  418. #define WH_DEBUG            9
  419. #define WH_SHELL           10
  420. #define WH_FOREGROUNDIDLE  11
  421. #if(WINVER >= 0x0400)
  422. #define WH_CALLWNDPROCRET  12
  423. #endif /* WINVER >= 0x0400 */
  424. #if (_WIN32_WINNT >= 0x0400)
  425. #define WH_KEYBOARD_LL     13
  426. #define WH_MOUSE_LL        14
  427. #endif // (_WIN32_WINNT >= 0x0400)
  428. #if(WINVER >= 0x0400)
  429. #if (_WIN32_WINNT >= 0x0400)
  430. #define WH_MAX             14
  431. #else
  432. #define WH_MAX             12
  433. #endif // (_WIN32_WINNT >= 0x0400)
  434. #else
  435. #define WH_MAX             11
  436. #endif
  437. #define WH_MINHOOK         WH_MIN
  438. #define WH_MAXHOOK         WH_MAX
  439. /*
  440.  * Hook Codes
  441.  */
  442. #define HC_ACTION           0
  443. #define HC_GETNEXT          1
  444. #define HC_SKIP             2
  445. #define HC_NOREMOVE         3
  446. #define HC_NOREM            HC_NOREMOVE
  447. #define HC_SYSMODALON       4
  448. #define HC_SYSMODALOFF      5
  449. /*
  450.  * CBT Hook Codes
  451.  */
  452. #define HCBT_MOVESIZE       0
  453. #define HCBT_MINMAX         1
  454. #define HCBT_QS             2
  455. #define HCBT_CREATEWND      3
  456. #define HCBT_DESTROYWND     4
  457. #define HCBT_ACTIVATE       5
  458. #define HCBT_CLICKSKIPPED   6
  459. #define HCBT_KEYSKIPPED     7
  460. #define HCBT_SYSCOMMAND     8
  461. #define HCBT_SETFOCUS       9
  462. /*
  463.  * HCBT_CREATEWND parameters pointed to by lParam
  464.  */
  465. typedef struct tagCBT_CREATEWNDA
  466. {
  467.     struct tagCREATESTRUCTA *lpcs;
  468.     HWND           hwndInsertAfter;
  469. } CBT_CREATEWNDA, *LPCBT_CREATEWNDA;
  470. /*
  471.  * HCBT_CREATEWND parameters pointed to by lParam
  472.  */
  473. typedef struct tagCBT_CREATEWNDW
  474. {
  475.     struct tagCREATESTRUCTW *lpcs;
  476.     HWND           hwndInsertAfter;
  477. } CBT_CREATEWNDW, *LPCBT_CREATEWNDW;
  478. #ifdef UNICODE
  479. typedef CBT_CREATEWNDW CBT_CREATEWND;
  480. typedef LPCBT_CREATEWNDW LPCBT_CREATEWND;
  481. #else
  482. typedef CBT_CREATEWNDA CBT_CREATEWND;
  483. typedef LPCBT_CREATEWNDA LPCBT_CREATEWND;
  484. #endif // UNICODE
  485. /*
  486.  * HCBT_ACTIVATE structure pointed to by lParam
  487.  */
  488. typedef struct tagCBTACTIVATESTRUCT
  489. {
  490.     BOOL    fMouse;
  491.     HWND    hWndActive;
  492. } CBTACTIVATESTRUCT, *LPCBTACTIVATESTRUCT;
  493. /*
  494.  * WH_MSGFILTER Filter Proc Codes
  495.  */
  496. #define MSGF_DIALOGBOX      0
  497. #define MSGF_MESSAGEBOX     1
  498. #define MSGF_MENU           2
  499. #define MSGF_SCROLLBAR      5
  500. #define MSGF_NEXTWINDOW     6
  501. #define MSGF_MAX            8                       // unused
  502. #define MSGF_USER           4096
  503. /*
  504.  * Shell support
  505.  */
  506. #define HSHELL_WINDOWCREATED        1
  507. #define HSHELL_WINDOWDESTROYED      2
  508. #define HSHELL_ACTIVATESHELLWINDOW  3
  509. #if(WINVER >= 0x0400)
  510. #define HSHELL_WINDOWACTIVATED      4
  511. #define HSHELL_GETMINRECT           5
  512. #define HSHELL_REDRAW               6
  513. #define HSHELL_TASKMAN              7
  514. #define HSHELL_LANGUAGE             8
  515. #endif /* WINVER >= 0x0400 */
  516. #if (_WIN32_WINDOWS >= 0x045A)
  517. /* cmd for HSHELL_APPCOMMAND and WM_APPCOMMAND */
  518. #define APPCOMMAND_BROWSER_BACKWARD       1
  519. #define APPCOMMAND_BROWSER_FORWARD        2
  520. #define APPCOMMAND_BROWSER_REFRESH        3
  521. #define APPCOMMAND_BROWSER_STOP           4
  522. #define APPCOMMAND_BROWSER_SEARCH         5
  523. #define APPCOMMAND_BROWSER_FAVORITES      6
  524. #define APPCOMMAND_BROWSER_HOME           7
  525. #define APPCOMMAND_VOLUME_MUTE            8
  526. #define APPCOMMAND_VOLUME_DOWN            9
  527. #define APPCOMMAND_VOLUME_UP              10
  528. #define APPCOMMAND_MEDIA_NEXTTRACK        11
  529. #define APPCOMMAND_MEDIA_PREVIOUSTRACK    12
  530. #define APPCOMMAND_MEDIA_STOP             13
  531. #define APPCOMMAND_MEDIA_PLAY_PAUSE       14
  532. #define APPCOMMAND_LAUNCH_MAIL            15
  533. #define APPCOMMAND_LAUNCH_MEDIA_SELECT    16
  534. #define APPCOMMAND_LAUNCH_APP1            17
  535. #define APPCOMMAND_LAUNCH_APP2            18
  536. #define APPCOMMAND_BASS_DOWN              19
  537. #define APPCOMMAND_BASS_BOOST             20
  538. #define APPCOMMAND_BASS_UP                21
  539. #define APPCOMMAND_TREBLE_DOWN            22
  540. #define APPCOMMAND_TREBLE_UP              23
  541. #define FAPPCOMMAND_MOUSE 0x8000
  542. #define FAPPCOMMAND_KEY   0
  543. #define FAPPCOMMAND_OEM   0x1000
  544. #define FAPPCOMMAND_MASK  0xF000
  545. #define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK))
  546. #define GET_DEVICE_LPARAM(lParam)     ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK))
  547. #define GET_MOUSEORKEY_LPARAM         GET_DEVICE_LPARAM
  548. #define GET_FLAGS_LPARAM(lParam)      (LOWORD(lParam))
  549. #define GET_KEYSTATE_LPARAM(lParam)   GET_FLAGS_LPARAM(lParam)
  550. #endif // (_WIN32_WINDOWS >= 0x045A)
  551. /*
  552.  * Message Structure used in Journaling
  553.  */
  554. typedef struct tagEVENTMSG {
  555.     UINT    message;
  556.     UINT    paramL;
  557.     UINT    paramH;
  558.     DWORD    time;
  559.     HWND     hwnd;
  560. } EVENTMSG, *PEVENTMSGMSG, NEAR *NPEVENTMSGMSG, FAR *LPEVENTMSGMSG;
  561. typedef struct tagEVENTMSG *PEVENTMSG, NEAR *NPEVENTMSG, FAR *LPEVENTMSG;
  562. /*
  563.  * Message structure used by WH_CALLWNDPROC
  564.  */
  565. typedef struct tagCWPSTRUCT {
  566.     LPARAM  lParam;
  567.     WPARAM  wParam;
  568.     UINT    message;
  569.     HWND    hwnd;
  570. } CWPSTRUCT, *PCWPSTRUCT, NEAR *NPCWPSTRUCT, FAR *LPCWPSTRUCT;
  571. #if(WINVER >= 0x0400)
  572. /*
  573.  * Message structure used by WH_CALLWNDPROCRET
  574.  */
  575. typedef struct tagCWPRETSTRUCT {
  576.     LRESULT lResult;
  577.     LPARAM  lParam;
  578.     WPARAM  wParam;
  579.     UINT    message;
  580.     HWND    hwnd;
  581. } CWPRETSTRUCT, *PCWPRETSTRUCT, NEAR *NPCWPRETSTRUCT, FAR *LPCWPRETSTRUCT;
  582. #endif /* WINVER >= 0x0400 */
  583. #if (_WIN32_WINNT >= 0x0400)
  584. /*
  585.  * Low level hook flags
  586.  */
  587. #define LLKHF_EXTENDED       0x00000001
  588. #define LLKHF_INJECTED       0x00000010
  589. #define LLKHF_ALTDOWN        0x00000020
  590. #define LLKHF_UP             0x00000080
  591. #define LLMHF_INJECTED       0x00000001
  592. /*
  593.  * Structure used by WH_KEYBOARD_LL
  594.  */
  595. typedef struct tagKBDLLHOOKSTRUCT {
  596.     DWORD   vkCode;
  597.     DWORD   scanCode;
  598.     DWORD   flags;
  599.     DWORD   time;
  600.     DWORD   dwExtraInfo;
  601. } KBDLLHOOKSTRUCT, FAR *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;
  602. /*
  603.  * Structure used by WH_MOUSE_LL
  604.  */
  605. typedef struct tagMSLLHOOKSTRUCT {
  606.     POINT   pt;
  607.     DWORD   mouseData;
  608.     DWORD   flags;
  609.     DWORD   time;
  610.     DWORD   dwExtraInfo;
  611. } MSLLHOOKSTRUCT, FAR *LPMSLLHOOKSTRUCT, *PMSLLHOOKSTRUCT;
  612. #endif // (_WIN32_WINNT >= 0x0400)
  613. /*
  614.  * Structure used by WH_DEBUG
  615.  */
  616. typedef struct tagDEBUGHOOKINFO
  617. {
  618.     DWORD   idThread;
  619.     DWORD   idThreadInstaller;
  620.     LPARAM  lParam;
  621.     WPARAM  wParam;
  622.     int     code;
  623. } DEBUGHOOKINFO, *PDEBUGHOOKINFO, NEAR *NPDEBUGHOOKINFO, FAR* LPDEBUGHOOKINFO;
  624. /*
  625.  * Structure used by WH_MOUSE
  626.  */
  627. typedef struct tagMOUSEHOOKSTRUCT {
  628.     POINT   pt;
  629.     HWND    hwnd;
  630.     UINT    wHitTestCode;
  631.     DWORD   dwExtraInfo;
  632. } MOUSEHOOKSTRUCT, FAR *LPMOUSEHOOKSTRUCT, *PMOUSEHOOKSTRUCT;
  633. #if(WINVER >= 0x0400)
  634. /*
  635.  * Structure used by WH_HARDWARE
  636.  */
  637. typedef struct tagHARDWAREHOOKSTRUCT {
  638.     HWND    hwnd;
  639.     UINT    message;
  640.     WPARAM  wParam;
  641.     LPARAM  lParam;
  642. } HARDWAREHOOKSTRUCT, FAR *LPHARDWAREHOOKSTRUCT, *PHARDWAREHOOKSTRUCT;
  643. #endif /* WINVER >= 0x0400 */
  644. #endif /* !NOWH */
  645. /*
  646.  * Keyboard Layout API
  647.  */
  648. #define HKL_PREV            0
  649. #define HKL_NEXT            1
  650. #define KLF_ACTIVATE        0x00000001
  651. #define KLF_SUBSTITUTE_OK   0x00000002
  652. #define KLF_UNLOADPREVIOUS  0x00000004
  653. #define KLF_REORDER         0x00000008
  654. #if(WINVER >= 0x0400)
  655. #define KLF_REPLACELANG     0x00000010
  656. #define KLF_NOTELLSHELL     0x00000080
  657. #endif /* WINVER >= 0x0400 */
  658. /*
  659.  * Size of KeyboardLayoutName (number of characters), including nul terminator
  660.  */
  661. #define KL_NAMELENGTH       9
  662. WINUSERAPI
  663. HKL
  664. WINAPI
  665. LoadKeyboardLayoutA(
  666.     LPCSTR pwszKLID,
  667.     UINT Flags);
  668. WINUSERAPI
  669. HKL
  670. WINAPI
  671. LoadKeyboardLayoutW(
  672.     LPCWSTR pwszKLID,
  673.     UINT Flags);
  674. #ifdef UNICODE
  675. #define LoadKeyboardLayout  LoadKeyboardLayoutW
  676. #else
  677. #define LoadKeyboardLayout  LoadKeyboardLayoutA
  678. #endif // !UNICODE
  679. #if(WINVER >= 0x0400)
  680. WINUSERAPI
  681. HKL
  682. WINAPI
  683. ActivateKeyboardLayout(
  684.     HKL hkl,
  685.     UINT Flags);
  686. #else
  687. WINUSERAPI
  688. BOOL
  689. WINAPI
  690. ActivateKeyboardLayout(
  691.     HKL hkl,
  692.     UINT Flags);
  693. #endif /* WINVER >= 0x0400 */
  694. #if(WINVER >= 0x0400)
  695. WINUSERAPI
  696. int
  697. WINAPI
  698. ToUnicodeEx(
  699.     UINT wVirtKey,
  700.     UINT wScanCode,
  701.     PBYTE lpKeyState,
  702.     LPWSTR pwszBuff,
  703.     int cchBuff,
  704.     UINT wFlags,
  705.     HKL dwhkl);
  706. #endif /* WINVER >= 0x0400 */
  707. WINUSERAPI
  708. BOOL
  709. WINAPI
  710. UnloadKeyboardLayout(
  711.     HKL hkl);
  712. WINUSERAPI
  713. BOOL
  714. WINAPI
  715. GetKeyboardLayoutNameA(
  716.     LPSTR pwszKLID);
  717. WINUSERAPI
  718. BOOL
  719. WINAPI
  720. GetKeyboardLayoutNameW(
  721.     LPWSTR pwszKLID);
  722. #ifdef UNICODE
  723. #define GetKeyboardLayoutName  GetKeyboardLayoutNameW
  724. #else
  725. #define GetKeyboardLayoutName  GetKeyboardLayoutNameA
  726. #endif // !UNICODE
  727. #if(WINVER >= 0x0400)
  728. WINUSERAPI
  729. int
  730. WINAPI
  731. GetKeyboardLayoutList(
  732. int nBuff,
  733. HKL FAR *lpList);
  734. WINUSERAPI
  735. HKL
  736. WINAPI
  737. GetKeyboardLayout(
  738.     DWORD dwLayout
  739. );
  740. #endif /* WINVER >= 0x0400 */
  741. #if (_WIN32_WINDOWS >= 0x040A)
  742. typedef struct tagMOUSEMOVEPOINT {
  743.     int   x;
  744.     int   y;
  745.     DWORD time;
  746.     DWORD dwExtraInfo;
  747. } MOUSEMOVEPOINT, *PMOUSEMOVEPOINT, FAR* LPMOUSEMOVEPOINT;
  748. /*
  749.  * Values for resolution parameter of GetMouseMovePoints
  750.  */
  751. #define GMMP_USE_DISPLAY_POINTS   1
  752. #define GMMP_USE_DRIVER_POINTS    2
  753. #define GMMP_USE_HIGH_RESOLUTION_POINTS    2
  754. WINUSERAPI
  755. int
  756. WINAPI
  757. GetMouseMovePointsEx(
  758.     UINT             cbSize,
  759.     LPMOUSEMOVEPOINT lppt,
  760.     LPMOUSEMOVEPOINT lpptBuf,
  761.     int              nBufPoints,
  762.     DWORD            resolution
  763. );
  764. #endif // (_WIN32_WINDOWS >= 0x040A)
  765. #ifndef NODESKTOP
  766. /*
  767.  * Desktop-specific access flags
  768.  */
  769. #define DESKTOP_READOBJECTS         0x0001L
  770. #define DESKTOP_CREATEWINDOW        0x0002L
  771. #define DESKTOP_CREATEMENU          0x0004L
  772. #define DESKTOP_HOOKCONTROL         0x0008L
  773. #define DESKTOP_JOURNALRECORD       0x0010L
  774. #define DESKTOP_JOURNALPLAYBACK     0x0020L
  775. #define DESKTOP_ENUMERATE           0x0040L
  776. #define DESKTOP_WRITEOBJECTS        0x0080L
  777. #define DESKTOP_SWITCHDESKTOP       0x0100L
  778. /*
  779.  * Desktop-specific control flags
  780.  */
  781. #define DF_ALLOWOTHERACCOUNTHOOK    0x0001L
  782. #ifdef _WINGDI_
  783. #ifndef NOGDI
  784. WINUSERAPI
  785. HDESK
  786. WINAPI
  787. CreateDesktopA(
  788.     LPSTR lpszDesktop,
  789.     LPSTR lpszDevice,
  790.     LPDEVMODEA pDevmode,
  791.     DWORD dwFlags,
  792.     ACCESS_MASK dwDesiredAccess,
  793.     LPSECURITY_ATTRIBUTES lpsa);
  794. WINUSERAPI
  795. HDESK
  796. WINAPI
  797. CreateDesktopW(
  798.     LPWSTR lpszDesktop,
  799.     LPWSTR lpszDevice,
  800.     LPDEVMODEW pDevmode,
  801.     DWORD dwFlags,
  802.     ACCESS_MASK dwDesiredAccess,
  803.     LPSECURITY_ATTRIBUTES lpsa);
  804. #ifdef UNICODE
  805. #define CreateDesktop  CreateDesktopW
  806. #else
  807. #define CreateDesktop  CreateDesktopA
  808. #endif // !UNICODE
  809. #endif /* NOGDI */
  810. #endif /* _WINGDI_ */
  811. WINUSERAPI
  812. HDESK
  813. WINAPI
  814. OpenDesktopA(
  815.     LPSTR lpszDesktop,
  816.     DWORD dwFlags,
  817.     BOOL fInherit,
  818.     ACCESS_MASK dwDesiredAccess);
  819. WINUSERAPI
  820. HDESK
  821. WINAPI
  822. OpenDesktopW(
  823.     LPWSTR lpszDesktop,
  824.     DWORD dwFlags,
  825.     BOOL fInherit,
  826.     ACCESS_MASK dwDesiredAccess);
  827. #ifdef UNICODE
  828. #define OpenDesktop  OpenDesktopW
  829. #else
  830. #define OpenDesktop  OpenDesktopA
  831. #endif // !UNICODE
  832. WINUSERAPI
  833. HDESK
  834. WINAPI
  835. OpenInputDesktop(
  836.     DWORD dwFlags,
  837.     BOOL fInherit,
  838.     ACCESS_MASK dwDesiredAccess);
  839. WINUSERAPI
  840. BOOL
  841. WINAPI
  842. EnumDesktopsA(
  843.     HWINSTA hwinsta,
  844.     DESKTOPENUMPROCA lpEnumFunc,
  845.     LPARAM lParam);
  846. WINUSERAPI
  847. BOOL
  848. WINAPI
  849. EnumDesktopsW(
  850.     HWINSTA hwinsta,
  851.     DESKTOPENUMPROCW lpEnumFunc,
  852.     LPARAM lParam);
  853. #ifdef UNICODE
  854. #define EnumDesktops  EnumDesktopsW
  855. #else
  856. #define EnumDesktops  EnumDesktopsA
  857. #endif // !UNICODE
  858. WINUSERAPI
  859. BOOL
  860. WINAPI
  861. EnumDesktopWindows(
  862.     HDESK hDesktop,
  863.     WNDENUMPROC lpfn,
  864.     LPARAM lParam);
  865. WINUSERAPI
  866. BOOL
  867. WINAPI
  868. SwitchDesktop(
  869.     HDESK hDesktop);
  870. WINUSERAPI
  871. BOOL
  872. WINAPI
  873. SetThreadDesktop(
  874.     HDESK hDesktop);
  875. WINUSERAPI
  876. BOOL
  877. WINAPI
  878. CloseDesktop(
  879.     HDESK hDesktop);
  880. WINUSERAPI
  881. HDESK
  882. WINAPI
  883. GetThreadDesktop(
  884.     DWORD dwThreadId);
  885. #endif  /* !NODESKTOP */
  886. #ifndef NOWINDOWSTATION
  887. /*
  888.  * Windowstation-specific access flags
  889.  */
  890. #define WINSTA_ENUMDESKTOPS         0x0001L
  891. #define WINSTA_READATTRIBUTES       0x0002L
  892. #define WINSTA_ACCESSCLIPBOARD      0x0004L
  893. #define WINSTA_CREATEDESKTOP        0x0008L
  894. #define WINSTA_WRITEATTRIBUTES      0x0010L
  895. #define WINSTA_ACCESSGLOBALATOMS    0x0020L
  896. #define WINSTA_EXITWINDOWS          0x0040L
  897. #define WINSTA_ENUMERATE            0x0100L
  898. #define WINSTA_READSCREEN           0x0200L
  899. /*
  900.  * Windowstation-specific attribute flags
  901.  */
  902. #define WSF_VISIBLE                 0x0001L
  903. WINUSERAPI
  904. HWINSTA
  905. WINAPI
  906. CreateWindowStationA(
  907.     LPSTR               lpwinsta,
  908.     DWORD                 dwReserved,
  909.     ACCESS_MASK           dwDesiredAccess,
  910.     LPSECURITY_ATTRIBUTES lpsa);
  911. WINUSERAPI
  912. HWINSTA
  913. WINAPI
  914. CreateWindowStationW(
  915.     LPWSTR               lpwinsta,
  916.     DWORD                 dwReserved,
  917.     ACCESS_MASK           dwDesiredAccess,
  918.     LPSECURITY_ATTRIBUTES lpsa);
  919. #ifdef UNICODE
  920. #define CreateWindowStation  CreateWindowStationW
  921. #else
  922. #define CreateWindowStation  CreateWindowStationA
  923. #endif // !UNICODE
  924. WINUSERAPI
  925. HWINSTA
  926. WINAPI
  927. OpenWindowStationA(
  928.     LPSTR lpszWinSta,
  929.     BOOL fInherit,
  930.     ACCESS_MASK dwDesiredAccess);
  931. WINUSERAPI
  932. HWINSTA
  933. WINAPI
  934. OpenWindowStationW(
  935.     LPWSTR lpszWinSta,
  936.     BOOL fInherit,
  937.     ACCESS_MASK dwDesiredAccess);
  938. #ifdef UNICODE
  939. #define OpenWindowStation  OpenWindowStationW
  940. #else
  941. #define OpenWindowStation  OpenWindowStationA
  942. #endif // !UNICODE
  943. WINUSERAPI
  944. BOOL
  945. WINAPI
  946. EnumWindowStationsA(
  947.     WINSTAENUMPROCA lpEnumFunc,
  948.     LPARAM lParam);
  949. WINUSERAPI
  950. BOOL
  951. WINAPI
  952. EnumWindowStationsW(
  953.     WINSTAENUMPROCW lpEnumFunc,
  954.     LPARAM lParam);
  955. #ifdef UNICODE
  956. #define EnumWindowStations  EnumWindowStationsW
  957. #else
  958. #define EnumWindowStations  EnumWindowStationsA
  959. #endif // !UNICODE
  960. WINUSERAPI
  961. BOOL
  962. WINAPI
  963. CloseWindowStation(
  964.     HWINSTA hWinSta);
  965. WINUSERAPI
  966. BOOL
  967. WINAPI
  968. SetProcessWindowStation(
  969.     HWINSTA hWinSta);
  970. WINUSERAPI
  971. HWINSTA
  972. WINAPI
  973. GetProcessWindowStation(
  974.     VOID);
  975. #endif  /* !NOWINDOWSTATION */
  976. #ifndef NOSECURITY
  977. WINUSERAPI
  978. BOOL
  979. WINAPI
  980. SetUserObjectSecurity(
  981.     HANDLE hObj,
  982.     PSECURITY_INFORMATION pSIRequested,
  983.     PSECURITY_DESCRIPTOR pSID);
  984. WINUSERAPI
  985. BOOL
  986. WINAPI
  987. GetUserObjectSecurity(
  988.     HANDLE hObj,
  989.     PSECURITY_INFORMATION pSIRequested,
  990.     PSECURITY_DESCRIPTOR pSID,
  991.     DWORD nLength,
  992.     LPDWORD lpnLengthNeeded);
  993. #define UOI_FLAGS       1
  994. #define UOI_NAME        2
  995. #define UOI_TYPE        3
  996. #define UOI_USER_SID    4
  997. typedef struct tagUSEROBJECTFLAGS {
  998.     BOOL fInherit;
  999.     BOOL fReserved;
  1000.     DWORD dwFlags;
  1001. } USEROBJECTFLAGS, *PUSEROBJECTFLAGS;
  1002. WINUSERAPI
  1003. BOOL
  1004. WINAPI
  1005. GetUserObjectInformationA(
  1006.     HANDLE hObj,
  1007.     int nIndex,
  1008.     PVOID pvInfo,
  1009.     DWORD nLength,
  1010.     LPDWORD lpnLengthNeeded);
  1011. WINUSERAPI
  1012. BOOL
  1013. WINAPI
  1014. GetUserObjectInformationW(
  1015.     HANDLE hObj,
  1016.     int nIndex,
  1017.     PVOID pvInfo,
  1018.     DWORD nLength,
  1019.     LPDWORD lpnLengthNeeded);
  1020. #ifdef UNICODE
  1021. #define GetUserObjectInformation  GetUserObjectInformationW
  1022. #else
  1023. #define GetUserObjectInformation  GetUserObjectInformationA
  1024. #endif // !UNICODE
  1025. WINUSERAPI
  1026. BOOL
  1027. WINAPI
  1028. SetUserObjectInformationA(
  1029.     HANDLE hObj,
  1030.     int nIndex,
  1031.     PVOID pvInfo,
  1032.     DWORD nLength);
  1033. WINUSERAPI
  1034. BOOL
  1035. WINAPI
  1036. SetUserObjectInformationW(
  1037.     HANDLE hObj,
  1038.     int nIndex,
  1039.     PVOID pvInfo,
  1040.     DWORD nLength);
  1041. #ifdef UNICODE
  1042. #define SetUserObjectInformation  SetUserObjectInformationW
  1043. #else
  1044. #define SetUserObjectInformation  SetUserObjectInformationA
  1045. #endif // !UNICODE
  1046. #endif  /* !NOSECURITY */
  1047. #if(WINVER >= 0x0400)
  1048. typedef struct tagWNDCLASSEXA {
  1049.     UINT        cbSize;
  1050.     /* Win 3.x */
  1051.     UINT        style;
  1052.     WNDPROC     lpfnWndProc;
  1053.     int         cbClsExtra;
  1054.     int         cbWndExtra;
  1055.     HINSTANCE   hInstance;
  1056.     HICON       hIcon;
  1057.     HCURSOR     hCursor;
  1058.     HBRUSH      hbrBackground;
  1059.     LPCSTR      lpszMenuName;
  1060.     LPCSTR      lpszClassName;
  1061.     /* Win 4.0 */
  1062.     HICON       hIconSm;
  1063. } WNDCLASSEXA, *PWNDCLASSEXA, NEAR *NPWNDCLASSEXA, FAR *LPWNDCLASSEXA;
  1064. typedef struct tagWNDCLASSEXW {
  1065.     UINT        cbSize;
  1066.     /* Win 3.x */
  1067.     UINT        style;
  1068.     WNDPROC     lpfnWndProc;
  1069.     int         cbClsExtra;
  1070.     int         cbWndExtra;
  1071.     HINSTANCE   hInstance;
  1072.     HICON       hIcon;
  1073.     HCURSOR     hCursor;
  1074.     HBRUSH      hbrBackground;
  1075.     LPCWSTR     lpszMenuName;
  1076.     LPCWSTR     lpszClassName;
  1077.     /* Win 4.0 */
  1078.     HICON       hIconSm;
  1079. } WNDCLASSEXW, *PWNDCLASSEXW, NEAR *NPWNDCLASSEXW, FAR *LPWNDCLASSEXW;
  1080. #ifdef UNICODE
  1081. typedef WNDCLASSEXW WNDCLASSEX;
  1082. typedef PWNDCLASSEXW PWNDCLASSEX;
  1083. typedef NPWNDCLASSEXW NPWNDCLASSEX;
  1084. typedef LPWNDCLASSEXW LPWNDCLASSEX;
  1085. #else
  1086. typedef WNDCLASSEXA WNDCLASSEX;
  1087. typedef PWNDCLASSEXA PWNDCLASSEX;
  1088. typedef NPWNDCLASSEXA NPWNDCLASSEX;
  1089. typedef LPWNDCLASSEXA LPWNDCLASSEX;
  1090. #endif // UNICODE
  1091. #endif /* WINVER >= 0x0400 */
  1092. typedef struct tagWNDCLASSA {
  1093.     UINT        style;
  1094.     WNDPROC     lpfnWndProc;
  1095.     int         cbClsExtra;
  1096.     int         cbWndExtra;
  1097.     HINSTANCE   hInstance;
  1098.     HICON       hIcon;
  1099.     HCURSOR     hCursor;
  1100.     HBRUSH      hbrBackground;
  1101.     LPCSTR      lpszMenuName;
  1102.     LPCSTR      lpszClassName;
  1103. } WNDCLASSA, *PWNDCLASSA, NEAR *NPWNDCLASSA, FAR *LPWNDCLASSA;
  1104. typedef struct tagWNDCLASSW {
  1105.     UINT        style;
  1106.     WNDPROC     lpfnWndProc;
  1107.     int         cbClsExtra;
  1108.     int         cbWndExtra;
  1109.     HINSTANCE   hInstance;
  1110.     HICON       hIcon;
  1111.     HCURSOR     hCursor;
  1112.     HBRUSH      hbrBackground;
  1113.     LPCWSTR     lpszMenuName;
  1114.     LPCWSTR     lpszClassName;
  1115. } WNDCLASSW, *PWNDCLASSW, NEAR *NPWNDCLASSW, FAR *LPWNDCLASSW;
  1116. #ifdef UNICODE
  1117. typedef WNDCLASSW WNDCLASS;
  1118. typedef PWNDCLASSW PWNDCLASS;
  1119. typedef NPWNDCLASSW NPWNDCLASS;
  1120. typedef LPWNDCLASSW LPWNDCLASS;
  1121. #else
  1122. typedef WNDCLASSA WNDCLASS;
  1123. typedef PWNDCLASSA PWNDCLASS;
  1124. typedef NPWNDCLASSA NPWNDCLASS;
  1125. typedef LPWNDCLASSA LPWNDCLASS;
  1126. #endif // UNICODE
  1127. #ifndef NOMSG
  1128. /*
  1129.  * Message structure
  1130.  */
  1131. typedef struct tagMSG {
  1132.     HWND        hwnd;
  1133.     UINT        message;
  1134.     WPARAM      wParam;
  1135.     LPARAM      lParam;
  1136.     DWORD       time;
  1137.     POINT       pt;
  1138. } MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;
  1139. #define POINTSTOPOINT(pt, pts)                          
  1140. { (pt).x = (LONG)(SHORT)LOWORD(*(LONG*)&pts);   
  1141.   (pt).y = (LONG)(SHORT)HIWORD(*(LONG*)&pts); }
  1142. #define POINTTOPOINTS(pt)      (MAKELONG((short)((pt).x), (short)((pt).y)))
  1143. #define MAKEWPARAM(l, h)      (WPARAM)MAKELONG(l, h)
  1144. #define MAKELPARAM(l, h)      (LPARAM)MAKELONG(l, h)
  1145. #define MAKELRESULT(l, h)     (LRESULT)MAKELONG(l, h)
  1146. #endif /* !NOMSG */
  1147. #ifndef NOWINOFFSETS
  1148. /*
  1149.  * Window field offsets for GetWindowLong()
  1150.  */
  1151. #define GWL_WNDPROC         (-4)
  1152. #define GWL_HINSTANCE       (-6)
  1153. #define GWL_HWNDPARENT      (-8)
  1154. #define GWL_STYLE           (-16)
  1155. #define GWL_EXSTYLE         (-20)
  1156. #define GWL_USERDATA        (-21)
  1157. #define GWL_ID              (-12)
  1158. #define GWLP_WNDPROC        (-4)
  1159. #define GWLP_HINSTANCE      (-6)
  1160. #define GWLP_HWNDPARENT     (-8)
  1161. #define GWLP_USERDATA       (-21)
  1162. #define GWLP_ID             (-12)
  1163. /*
  1164.  * Class field offsets for GetClassLong()
  1165.  */
  1166. #define GCL_MENUNAME        (-8)
  1167. #define GCL_HBRBACKGROUND   (-10)
  1168. #define GCL_HCURSOR         (-12)
  1169. #define GCL_HICON           (-14)
  1170. #define GCL_HMODULE         (-16)
  1171. #define GCL_CBWNDEXTRA      (-18)
  1172. #define GCL_CBCLSEXTRA      (-20)
  1173. #define GCL_WNDPROC         (-24)
  1174. #define GCL_STYLE           (-26)
  1175. #define GCW_ATOM            (-32)
  1176. #if(WINVER >= 0x0400)
  1177. #define GCL_HICONSM         (-34)
  1178. #endif /* WINVER >= 0x0400 */
  1179. #endif /* !NOWINOFFSETS */
  1180. #ifndef NOWINMESSAGES
  1181. // begin_r_winuser
  1182. /*
  1183.  * Window Messages
  1184.  */
  1185. #define WM_NULL                         0x0000
  1186. #define WM_CREATE                       0x0001
  1187. #define WM_DESTROY                      0x0002
  1188. #define WM_MOVE                         0x0003
  1189. #define WM_SIZE                         0x0005
  1190. #define WM_ACTIVATE                     0x0006
  1191. /*
  1192.  * WM_ACTIVATE state values
  1193.  */
  1194. #define     WA_INACTIVE     0
  1195. #define     WA_ACTIVE       1
  1196. #define     WA_CLICKACTIVE  2
  1197. #define WM_SETFOCUS                     0x0007
  1198. #define WM_KILLFOCUS                    0x0008
  1199. #define WM_ENABLE                       0x000A
  1200. #define WM_SETREDRAW                    0x000B
  1201. #define WM_SETTEXT                      0x000C
  1202. #define WM_GETTEXT                      0x000D
  1203. #define WM_GETTEXTLENGTH                0x000E
  1204. #define WM_PAINT                        0x000F
  1205. #define WM_CLOSE                        0x0010
  1206. #define WM_QUERYENDSESSION              0x0011
  1207. #define WM_QUIT                         0x0012
  1208. #define WM_QUERYOPEN                    0x0013
  1209. #define WM_ERASEBKGND                   0x0014
  1210. #define WM_SYSCOLORCHANGE               0x0015
  1211. #define WM_ENDSESSION                   0x0016
  1212. #define WM_SHOWWINDOW                   0x0018
  1213. #define WM_WININICHANGE                 0x001A
  1214. #if(WINVER >= 0x0400)
  1215. #define WM_SETTINGCHANGE                WM_WININICHANGE
  1216. #endif /* WINVER >= 0x0400 */
  1217. #define WM_DEVMODECHANGE                0x001B
  1218. #define WM_ACTIVATEAPP                  0x001C
  1219. #define WM_FONTCHANGE                   0x001D
  1220. #define WM_TIMECHANGE                   0x001E
  1221. #define WM_CANCELMODE                   0x001F
  1222. #define WM_SETCURSOR                    0x0020
  1223. #define WM_MOUSEACTIVATE                0x0021
  1224. #define WM_CHILDACTIVATE                0x0022
  1225. #define WM_QUEUESYNC                    0x0023
  1226. #define WM_GETMINMAXINFO                0x0024
  1227. // end_r_winuser
  1228. /*
  1229.  * Struct pointed to by WM_GETMINMAXINFO lParam
  1230.  */
  1231. typedef struct tagMINMAXINFO {
  1232.     POINT ptReserved;
  1233.     POINT ptMaxSize;
  1234.     POINT ptMaxPosition;
  1235.     POINT ptMinTrackSize;
  1236.     POINT ptMaxTrackSize;
  1237. } MINMAXINFO, *PMINMAXINFO, *LPMINMAXINFO;
  1238. // begin_r_winuser
  1239. #define WM_PAINTICON                    0x0026
  1240. #define WM_ICONERASEBKGND               0x0027
  1241. #define WM_NEXTDLGCTL                   0x0028
  1242. #define WM_SPOOLERSTATUS                0x002A
  1243. #define WM_DRAWITEM                     0x002B
  1244. #define WM_MEASUREITEM                  0x002C
  1245. #define WM_DELETEITEM                   0x002D
  1246. #define WM_VKEYTOITEM                   0x002E
  1247. #define WM_CHARTOITEM                   0x002F
  1248. #define WM_SETFONT                      0x0030
  1249. #define WM_GETFONT                      0x0031
  1250. #define WM_SETHOTKEY                    0x0032
  1251. #define WM_GETHOTKEY                    0x0033
  1252. #define WM_QUERYDRAGICON                0x0037
  1253. #define WM_COMPAREITEM                  0x0039
  1254. #if (_WIN32_WINNT >= 0x0500)
  1255. #define WM_GETOBJECT                    0x003D
  1256. #endif
  1257. #define WM_COMPACTING                   0x0041
  1258. #define WM_COMMNOTIFY                   0x0044  /* no longer suported */
  1259. #define WM_WINDOWPOSCHANGING            0x0046
  1260. #define WM_WINDOWPOSCHANGED             0x0047
  1261. #define WM_POWER                        0x0048
  1262. /*
  1263.  * wParam for WM_POWER window message and DRV_POWER driver notification
  1264.  */
  1265. #define PWR_OK              1
  1266. #define PWR_FAIL            (-1)
  1267. #define PWR_SUSPENDREQUEST  1
  1268. #define PWR_SUSPENDRESUME   2
  1269. #define PWR_CRITICALRESUME  3
  1270. #define WM_COPYDATA                     0x004A
  1271. #define WM_CANCELJOURNAL                0x004B
  1272. // end_r_winuser
  1273. /*
  1274.  * lParam of WM_COPYDATA message points to...
  1275.  */
  1276. typedef struct tagCOPYDATASTRUCT {
  1277.     DWORD dwData;
  1278.     DWORD cbData;
  1279.     PVOID lpData;
  1280. } COPYDATASTRUCT, *PCOPYDATASTRUCT;
  1281. // begin_r_winuser
  1282. #if(WINVER >= 0x0400)
  1283. #define WM_NOTIFY                       0x004E
  1284. #define WM_INPUTLANGCHANGEREQUEST       0x0050
  1285. #define WM_INPUTLANGCHANGE              0x0051
  1286. #define WM_TCARD                        0x0052
  1287. #define WM_HELP                         0x0053
  1288. #define WM_USERCHANGED                  0x0054
  1289. #define WM_NOTIFYFORMAT                 0x0055
  1290. #define NFR_ANSI                             1
  1291. #define NFR_UNICODE                          2
  1292. #define NF_QUERY                             3
  1293. #define NF_REQUERY                           4
  1294. #define WM_CONTEXTMENU                  0x007B
  1295. #define WM_STYLECHANGING                0x007C
  1296. #define WM_STYLECHANGED                 0x007D
  1297. #define WM_DISPLAYCHANGE                0x007E
  1298. #define WM_GETICON                      0x007F
  1299. #define WM_SETICON                      0x0080
  1300. #endif /* WINVER >= 0x0400 */
  1301. #define WM_NCCREATE                     0x0081
  1302. #define WM_NCDESTROY                    0x0082
  1303. #define WM_NCCALCSIZE                   0x0083
  1304. #define WM_NCHITTEST                    0x0084
  1305. #define WM_NCPAINT                      0x0085
  1306. #define WM_NCACTIVATE                   0x0086
  1307. #define WM_GETDLGCODE                   0x0087
  1308. #define WM_SYNCPAINT                    0x0088
  1309. #define WM_NCMOUSEMOVE                  0x00A0
  1310. #define WM_NCLBUTTONDOWN                0x00A1
  1311. #define WM_NCLBUTTONUP                  0x00A2
  1312. #define WM_NCLBUTTONDBLCLK              0x00A3
  1313. #define WM_NCRBUTTONDOWN                0x00A4
  1314. #define WM_NCRBUTTONUP                  0x00A5
  1315. #define WM_NCRBUTTONDBLCLK              0x00A6
  1316. #define WM_NCMBUTTONDOWN                0x00A7
  1317. #define WM_NCMBUTTONUP                  0x00A8
  1318. #define WM_NCMBUTTONDBLCLK              0x00A9
  1319. #if (_WIN32_WINDOWS >= 0x045A)
  1320. #define WM_NCXBUTTONDOWN                0x00AB
  1321. #define WM_NCXBUTTONUP                  0x00AC
  1322. #define WM_NCXBUTTONDBLCLK              0x00AD
  1323. #endif // (_WIN32_WINDOWS >= 0x045A)
  1324. #define WM_KEYFIRST                     0x0100
  1325. #define WM_KEYDOWN                      0x0100
  1326. #define WM_KEYUP                        0x0101
  1327. #define WM_CHAR                         0x0102
  1328. #define WM_DEADCHAR                     0x0103
  1329. #define WM_SYSKEYDOWN                   0x0104
  1330. #define WM_SYSKEYUP                     0x0105
  1331. #define WM_SYSCHAR                      0x0106
  1332. #define WM_SYSDEADCHAR                  0x0107
  1333. #define WM_KEYLAST                      0x0108
  1334. #if(WINVER >= 0x0400)
  1335. #define WM_IME_STARTCOMPOSITION         0x010D
  1336. #define WM_IME_ENDCOMPOSITION           0x010E
  1337. #define WM_IME_COMPOSITION              0x010F
  1338. #define WM_IME_KEYLAST                  0x010F
  1339. #endif /* WINVER >= 0x0400 */
  1340. #define WM_INITDIALOG                   0x0110
  1341. #define WM_COMMAND                      0x0111
  1342. #define WM_SYSCOMMAND                   0x0112
  1343. #define WM_TIMER                        0x0113
  1344. #define WM_HSCROLL                      0x0114
  1345. #define WM_VSCROLL                      0x0115
  1346. #define WM_INITMENU                     0x0116
  1347. #define WM_INITMENUPOPUP                0x0117
  1348. #define WM_MENUSELECT                   0x011F
  1349. #define WM_MENUCHAR                     0x0120
  1350. #define WM_ENTERIDLE                    0x0121
  1351. #if (_WIN32_WINDOWS >= 0x040A)
  1352. #define WM_MENURBUTTONUP                0x0122
  1353. #define WM_MENUDRAG                     0x0123
  1354. #define WM_MENUGETOBJECT                0x0124
  1355. #define WM_UNINITMENUPOPUP              0x0125
  1356. #define WM_MENUCOMMAND                  0x0126
  1357. #endif
  1358. #define WM_CTLCOLORMSGBOX               0x0132
  1359. #define WM_CTLCOLOREDIT                 0x0133
  1360. #define WM_CTLCOLORLISTBOX              0x0134
  1361. #define WM_CTLCOLORBTN                  0x0135
  1362. #define WM_CTLCOLORDLG                  0x0136
  1363. #define WM_CTLCOLORSCROLLBAR            0x0137
  1364. #define WM_CTLCOLORSTATIC               0x0138
  1365. #define WM_MOUSEFIRST                   0x0200
  1366. #define WM_MOUSEMOVE                    0x0200
  1367. #define WM_LBUTTONDOWN                  0x0201
  1368. #define WM_LBUTTONUP                    0x0202
  1369. #define WM_LBUTTONDBLCLK                0x0203
  1370. #define WM_RBUTTONDOWN                  0x0204
  1371. #define WM_RBUTTONUP                    0x0205
  1372. #define WM_RBUTTONDBLCLK                0x0206
  1373. #define WM_MBUTTONDOWN                  0x0207
  1374. #define WM_MBUTTONUP                    0x0208
  1375. #define WM_MBUTTONDBLCLK                0x0209
  1376. #if(WINVER >= 0x040a)
  1377. #define WM_MOUSEWHEEL                   0x020A
  1378. #endif /* WINVER >= 0x040a */
  1379. #if (_WIN32_WINDOWS >= 0x045A)
  1380. #define WM_XBUTTONDOWN                  0x020B
  1381. #define WM_XBUTTONUP                    0x020C
  1382. #define WM_XBUTTONDBLCLK                0x020D
  1383. #endif // (_WIN32_WINDOWS >= 0x045A)
  1384. #if (_WIN32_WINDOWS >= 0x045A)
  1385. #define WM_MOUSELAST                    0x020D
  1386. #elif (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
  1387. #define WM_MOUSELAST                    0x020A
  1388. #else
  1389. #define WM_MOUSELAST                    0x0209
  1390. #endif /* (_WIN32_WINDOWS >= 0x045A) */
  1391. #if(WINVER >= 0x040a)
  1392. #define WHEEL_DELTA                     120     /* Value for rolling one detent */
  1393. #endif /* WINVER >= 0x040a */
  1394. #if (_WIN32_WINDOWS >= 0x045A)
  1395. #define GET_KEYSTATE_WPARAM(wParam)     (LOWORD(wParam))
  1396. #define GET_NCHITTEST_WPARAM(wParam)    ((short)LOWORD(wParam))
  1397. #define GET_XBUTTON_WPARAM(wParam)      (HIWORD(wParam))
  1398. /* XButton values are WORD flags */
  1399. #define XBUTTON1      0x0001
  1400. #define XBUTTON2      0x0002
  1401. /* Were there to be an XBUTTON3, it's value would be 0x0004 */
  1402. #endif // (_WIN32_WINDOWS >= 0x045A)
  1403. #define WM_PARENTNOTIFY                 0x0210
  1404. #define WM_ENTERMENULOOP                0x0211
  1405. #define WM_EXITMENULOOP                 0x0212
  1406. #if(WINVER >= 0x0400)
  1407. #define WM_NEXTMENU                     0x0213
  1408. // end_r_winuser
  1409. typedef struct tagMDINEXTMENU
  1410. {
  1411.     HMENU   hmenuIn;
  1412.     HMENU   hmenuNext;
  1413.     HWND    hwndNext;
  1414. } MDINEXTMENU, * PMDINEXTMENU, FAR * LPMDINEXTMENU;
  1415. // begin_r_winuser
  1416. #define WM_SIZING                       0x0214
  1417. #define WM_CAPTURECHANGED               0x0215
  1418. #define WM_MOVING                       0x0216
  1419. // end_r_winuser
  1420. #define WM_POWERBROADCAST               0x0218      // r_winuser pbt
  1421. // begin_pbt
  1422. #define PBT_APMQUERYSUSPEND             0x0000
  1423. #define PBT_APMQUERYSTANDBY             0x0001
  1424. #define PBT_APMQUERYSUSPENDFAILED       0x0002
  1425. #define PBT_APMQUERYSTANDBYFAILED       0x0003
  1426. #define PBT_APMSUSPEND                  0x0004
  1427. #define PBT_APMSTANDBY                  0x0005
  1428. #define PBT_APMRESUMECRITICAL           0x0006
  1429. #define PBT_APMRESUMESUSPEND            0x0007
  1430. #define PBT_APMRESUMESTANDBY            0x0008
  1431. #define PBTF_APMRESUMEFROMFAILURE       0x00000001
  1432. #define PBT_APMBATTERYLOW               0x0009
  1433. #define PBT_APMPOWERSTATUSCHANGE        0x000A
  1434. #define PBT_APMOEMEVENT                 0x000B
  1435. #define PBT_APMRESUMEAUTOMATIC          0x0012
  1436. // end_pbt
  1437. // begin_r_winuser
  1438. #define WM_DEVICECHANGE                 0x0219
  1439. #endif /* WINVER >= 0x0400 */
  1440. #define WM_MDICREATE                    0x0220
  1441. #define WM_MDIDESTROY                   0x0221
  1442. #define WM_MDIACTIVATE                  0x0222
  1443. #define WM_MDIRESTORE                   0x0223
  1444. #define WM_MDINEXT                      0x0224
  1445. #define WM_MDIMAXIMIZE                  0x0225
  1446. #define WM_MDITILE                      0x0226
  1447. #define WM_MDICASCADE                   0x0227
  1448. #define WM_MDIICONARRANGE               0x0228
  1449. #define WM_MDIGETACTIVE                 0x0229
  1450. #define WM_MDISETMENU                   0x0230
  1451. #define WM_ENTERSIZEMOVE                0x0231
  1452. #define WM_EXITSIZEMOVE                 0x0232
  1453. #define WM_DROPFILES                    0x0233
  1454. #define WM_MDIREFRESHMENU               0x0234
  1455. #if(WINVER >= 0x0400)
  1456. #define WM_IME_SETCONTEXT               0x0281
  1457. #define WM_IME_NOTIFY                   0x0282
  1458. #define WM_IME_CONTROL                  0x0283
  1459. #define WM_IME_COMPOSITIONFULL          0x0284
  1460. #define WM_IME_SELECT                   0x0285
  1461. #define WM_IME_CHAR                     0x0286
  1462. #define WM_IME_REQUEST                  0x0288
  1463. #define WM_IME_KEYDOWN                  0x0290
  1464. #define WM_IME_KEYUP                    0x0291
  1465. #endif /* WINVER >= 0x0400 */
  1466. #if(_WIN32_WINDOWS >= 0x040a)
  1467. #define WM_NCMOUSEHOVER                 0x02A0
  1468. #define WM_MOUSEHOVER                   0x02A1
  1469. #define WM_NCMOUSELEAVE                 0x02A2
  1470. #define WM_MOUSELEAVE                   0x02A3
  1471. #endif /* _WIN32_WINDOWS >= 0x040a */
  1472. #define WM_CUT                          0x0300
  1473. #define WM_COPY                         0x0301
  1474. #define WM_PASTE                        0x0302
  1475. #define WM_CLEAR                        0x0303
  1476. #define WM_UNDO                         0x0304
  1477. #define WM_RENDERFORMAT                 0x0305
  1478. #define WM_RENDERALLFORMATS             0x0306
  1479. #define WM_DESTROYCLIPBOARD             0x0307
  1480. #define WM_DRAWCLIPBOARD                0x0308
  1481. #define WM_PAINTCLIPBOARD               0x0309
  1482. #define WM_VSCROLLCLIPBOARD             0x030A
  1483. #define WM_SIZECLIPBOARD                0x030B
  1484. #define WM_ASKCBFORMATNAME              0x030C
  1485. #define WM_CHANGECBCHAIN                0x030D
  1486. #define WM_HSCROLLCLIPBOARD             0x030E
  1487. #define WM_QUERYNEWPALETTE              0x030F
  1488. #define WM_PALETTEISCHANGING            0x0310
  1489. #define WM_PALETTECHANGED               0x0311
  1490. #define WM_HOTKEY                       0x0312
  1491. #if(WINVER >= 0x0400)
  1492. #define WM_PRINT                        0x0317
  1493. #define WM_PRINTCLIENT                  0x0318
  1494. #endif /* WINVER >= 0x0400 */
  1495. #if (_WIN32_WINDOWS >= 0x045A)
  1496. #define WM_APPCOMMAND                   0x0319
  1497. #endif // (_WIN32_WINDOWS >= 0x045A)
  1498. #if(WINVER >= 0x0400)
  1499. #define WM_HANDHELDFIRST                0x0358
  1500. #define WM_HANDHELDLAST                 0x035F
  1501. #define WM_AFXFIRST                     0x0360
  1502. #define WM_AFXLAST                      0x037F
  1503. #endif /* WINVER >= 0x0400 */
  1504. #define WM_PENWINFIRST                  0x0380
  1505. #define WM_PENWINLAST                   0x038F
  1506. #if(WINVER >= 0x0400)
  1507. #define WM_APP                          0x8000
  1508. #endif /* WINVER >= 0x0400 */
  1509. /*
  1510.  * NOTE: All Message Numbers below 0x0400 are RESERVED.
  1511.  *
  1512.  * Private Window Messages Start Here:
  1513.  */
  1514. #define WM_USER                         0x0400
  1515. #if(WINVER >= 0x0400)
  1516. /*  wParam for WM_SIZING message  */
  1517. #define WMSZ_LEFT           1
  1518. #define WMSZ_RIGHT          2
  1519. #define WMSZ_TOP            3
  1520. #define WMSZ_TOPLEFT        4
  1521. #define WMSZ_TOPRIGHT       5
  1522. #define WMSZ_BOTTOM         6
  1523. #define WMSZ_BOTTOMLEFT     7
  1524. #define WMSZ_BOTTOMRIGHT    8
  1525. #endif /* WINVER >= 0x0400 */
  1526. #ifndef NONCMESSAGES
  1527. /*
  1528.  * WM_NCHITTEST and MOUSEHOOKSTRUCT Mouse Position Codes
  1529.  */
  1530. #define HTERROR             (-2)
  1531. #define HTTRANSPARENT       (-1)
  1532. #define HTNOWHERE           0
  1533. #define HTCLIENT            1
  1534. #define HTCAPTION           2
  1535. #define HTSYSMENU           3
  1536. #define HTGROWBOX           4
  1537. #define HTSIZE              HTGROWBOX
  1538. #define HTMENU              5
  1539. #define HTHSCROLL           6
  1540. #define HTVSCROLL           7
  1541. #define HTMINBUTTON         8
  1542. #define HTMAXBUTTON         9
  1543. #define HTLEFT              10
  1544. #define HTRIGHT             11
  1545. #define HTTOP               12
  1546. #define HTTOPLEFT           13
  1547. #define HTTOPRIGHT          14
  1548. #define HTBOTTOM            15
  1549. #define HTBOTTOMLEFT        16
  1550. #define HTBOTTOMRIGHT       17
  1551. #define HTBORDER            18
  1552. #define HTREDUCE            HTMINBUTTON
  1553. #define HTZOOM              HTMAXBUTTON
  1554. #define HTSIZEFIRST         HTLEFT
  1555. #define HTSIZELAST          HTBOTTOMRIGHT
  1556. #if(WINVER >= 0x0400)
  1557. #define HTOBJECT            19
  1558. #define HTCLOSE             20
  1559. #define HTHELP              21
  1560. #endif /* WINVER >= 0x0400 */
  1561. /*
  1562.  * SendMessageTimeout values
  1563.  */
  1564. #define SMTO_NORMAL         0x0000
  1565. #define SMTO_BLOCK          0x0001
  1566. #define SMTO_ABORTIFHUNG    0x0002
  1567. #endif /* !NONCMESSAGES */
  1568. /*
  1569.  * WM_MOUSEACTIVATE Return Codes
  1570.  */
  1571. #define MA_ACTIVATE         1
  1572. #define MA_ACTIVATEANDEAT   2
  1573. #define MA_NOACTIVATE       3
  1574. #define MA_NOACTIVATEANDEAT 4
  1575. /*
  1576.  * WM_SETICON / WM_GETICON Type Codes
  1577.  */
  1578. #define ICON_SMALL          0
  1579. #define ICON_BIG            1
  1580. // end_r_winuser
  1581. WINUSERAPI
  1582. UINT
  1583. WINAPI
  1584. RegisterWindowMessageA(
  1585.     LPCSTR lpString);
  1586. WINUSERAPI
  1587. UINT
  1588. WINAPI
  1589. RegisterWindowMessageW(
  1590.     LPCWSTR lpString);
  1591. #ifdef UNICODE
  1592. #define RegisterWindowMessage  RegisterWindowMessageW
  1593. #else
  1594. #define RegisterWindowMessage  RegisterWindowMessageA
  1595. #endif // !UNICODE
  1596. // begin_r_winuser
  1597. /*
  1598.  * WM_SIZE message wParam values
  1599.  */
  1600. #define SIZE_RESTORED       0
  1601. #define SIZE_MINIMIZED      1
  1602. #define SIZE_MAXIMIZED      2
  1603. #define SIZE_MAXSHOW        3
  1604. #define SIZE_MAXHIDE        4
  1605. /*
  1606.  * Obsolete constant names
  1607.  */
  1608. #define SIZENORMAL          SIZE_RESTORED
  1609. #define SIZEICONIC          SIZE_MINIMIZED
  1610. #define SIZEFULLSCREEN      SIZE_MAXIMIZED
  1611. #define SIZEZOOMSHOW        SIZE_MAXSHOW
  1612. #define SIZEZOOMHIDE        SIZE_MAXHIDE
  1613. // end_r_winuser
  1614. /*
  1615.  * WM_WINDOWPOSCHANGING/CHANGED struct pointed to by lParam
  1616.  */
  1617. typedef struct tagWINDOWPOS {
  1618.     HWND    hwnd;
  1619.     HWND    hwndInsertAfter;
  1620.     int     x;
  1621.     int     y;
  1622.     int     cx;
  1623.     int     cy;
  1624.     UINT    flags;
  1625. } WINDOWPOS, *LPWINDOWPOS, *PWINDOWPOS;
  1626. /*
  1627.  * WM_NCCALCSIZE parameter structure
  1628.  */
  1629. typedef struct tagNCCALCSIZE_PARAMS {
  1630.     RECT       rgrc[3];
  1631.     PWINDOWPOS lppos;
  1632. } NCCALCSIZE_PARAMS, *LPNCCALCSIZE_PARAMS;
  1633. // begin_r_winuser
  1634. /*
  1635.  * WM_NCCALCSIZE "window valid rect" return values
  1636.  */
  1637. #define WVR_ALIGNTOP        0x0010
  1638. #define WVR_ALIGNLEFT       0x0020
  1639. #define WVR_ALIGNBOTTOM     0x0040
  1640. #define WVR_ALIGNRIGHT      0x0080
  1641. #define WVR_HREDRAW         0x0100
  1642. #define WVR_VREDRAW         0x0200
  1643. #define WVR_REDRAW         (WVR_HREDRAW | 
  1644.     WVR_VREDRAW)
  1645. #define WVR_VALIDRECTS      0x0400
  1646. #ifndef NOKEYSTATES
  1647. /*
  1648.  * Key State Masks for Mouse Messages
  1649.  */
  1650. #define MK_LBUTTON          0x0001
  1651. #define MK_RBUTTON          0x0002
  1652. #define MK_SHIFT            0x0004
  1653. #define MK_CONTROL          0x0008
  1654. #define MK_MBUTTON          0x0010
  1655. #if (_WIN32_WINDOWS >= 0x045A)
  1656. #define MK_XBUTTON1         0x0020
  1657. #define MK_XBUTTON2         0x0040
  1658. #endif // (_WIN32_WINDOWS >= 0x045A)
  1659. #endif /* !NOKEYSTATES */
  1660. #if(_WIN32_WINDOWS >= 0x040a)
  1661. #ifndef NOTRACKMOUSEEVENT
  1662. #define TME_HOVER       0x00000001
  1663. #define TME_LEAVE       0x00000002
  1664. #define TME_NONCLIENT   0x00000010
  1665. #define TME_QUERY       0x40000000
  1666. #define TME_CANCEL      0x80000000
  1667. #define HOVER_DEFAULT   0xFFFFFFFF
  1668. // end_r_winuser
  1669. typedef struct tagTRACKMOUSEEVENT {
  1670.     DWORD cbSize;
  1671.     DWORD dwFlags;
  1672.     HWND  hwndTrack;
  1673.     DWORD dwHoverTime;
  1674. } TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT;
  1675. WINUSERAPI
  1676. BOOL
  1677. WINAPI
  1678. TrackMouseEvent(
  1679.     LPTRACKMOUSEEVENT lpEventTrack);
  1680. // begin_r_winuser
  1681. #endif /* !NOTRACKMOUSEEVENT */
  1682. #endif /* _WIN32_WINDOWS >= 0x040a */
  1683. // end_r_winuser
  1684. #endif /* !NOWINMESSAGES */
  1685. #ifndef NOWINSTYLES
  1686. // begin_r_winuser
  1687. /*
  1688.  * Window Styles
  1689.  */
  1690. #define WS_OVERLAPPED       0x00000000L
  1691. #define WS_POPUP            0x80000000L
  1692. #define WS_CHILD            0x40000000L
  1693. #define WS_MINIMIZE         0x20000000L
  1694. #define WS_VISIBLE          0x10000000L
  1695. #define WS_DISABLED         0x08000000L
  1696. #define WS_CLIPSIBLINGS     0x04000000L
  1697. #define WS_CLIPCHILDREN     0x02000000L
  1698. #define WS_MAXIMIZE         0x01000000L
  1699. #define WS_CAPTION          0x00C00000L     /* WS_BORDER | WS_DLGFRAME  */
  1700. #define WS_BORDER           0x00800000L
  1701. #define WS_DLGFRAME         0x00400000L
  1702. #define WS_VSCROLL          0x00200000L
  1703. #define WS_HSCROLL          0x00100000L
  1704. #define WS_SYSMENU          0x00080000L
  1705. #define WS_THICKFRAME       0x00040000L
  1706. #define WS_GROUP            0x00020000L
  1707. #define WS_TABSTOP          0x00010000L
  1708. #define WS_MINIMIZEBOX      0x00020000L
  1709. #define WS_MAXIMIZEBOX      0x00010000L
  1710. #define WS_TILED            WS_OVERLAPPED
  1711. #define WS_ICONIC           WS_MINIMIZE
  1712. #define WS_SIZEBOX          WS_THICKFRAME
  1713. #define WS_TILEDWINDOW      WS_OVERLAPPEDWINDOW
  1714. /*
  1715.  * Common Window Styles
  1716.  */
  1717. #define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED     | 
  1718.      WS_CAPTION        | 
  1719.      WS_SYSMENU        | 
  1720.      WS_THICKFRAME     | 
  1721.      WS_MINIMIZEBOX    | 
  1722.      WS_MAXIMIZEBOX)
  1723. #define WS_POPUPWINDOW      (WS_POPUP          | 
  1724.      WS_BORDER         | 
  1725.      WS_SYSMENU)
  1726. #define WS_CHILDWINDOW      (WS_CHILD)
  1727. /*
  1728.  * Extended Window Styles
  1729.  */
  1730. #define WS_EX_DLGMODALFRAME     0x00000001L
  1731. #define WS_EX_NOPARENTNOTIFY    0x00000004L
  1732. #define WS_EX_TOPMOST           0x00000008L
  1733. #define WS_EX_ACCEPTFILES       0x00000010L
  1734. #define WS_EX_TRANSPARENT       0x00000020L
  1735. #if(WINVER >= 0x0400)
  1736. #define WS_EX_MDICHILD          0x00000040L
  1737. #define WS_EX_TOOLWINDOW        0x00000080L
  1738. #define WS_EX_WINDOWEDGE        0x00000100L
  1739. #define WS_EX_CLIENTEDGE        0x00000200L
  1740. #define WS_EX_CONTEXTHELP       0x00000400L
  1741. #define WS_EX_RIGHT             0x00001000L
  1742. #define WS_EX_LEFT              0x00000000L
  1743. #define WS_EX_RTLREADING        0x00002000L
  1744. #define WS_EX_LTRREADING        0x00000000L
  1745. #define WS_EX_LEFTSCROLLBAR     0x00004000L
  1746. #define WS_EX_RIGHTSCROLLBAR    0x00000000L
  1747. #define WS_EX_CONTROLPARENT     0x00010000L
  1748. #define WS_EX_STATICEDGE        0x00020000L
  1749. #define WS_EX_APPWINDOW         0x00040000L
  1750. #define WS_EX_OVERLAPPEDWINDOW  (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE)
  1751. #define WS_EX_PALETTEWINDOW     (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST)
  1752. #endif /* WINVER >= 0x0400 */
  1753. #if (WINVER >= 0x040A)
  1754. #ifdef USE_MIRRORING
  1755. #define WS_EX_NOINHERITLAYOUT   0x00100000L // Disable inheritence of mirroring by children
  1756. #define WS_EX_LAYOUTRTL         0x00400000L // Right to left mirroring
  1757. #endif  //USE_MIRRORING
  1758. #endif // (WINVER >= 0x040A)
  1759. #if (_WIN32_WINDOWS >= 0x045A)
  1760. #define WS_EX_NOACTIVATE        0x08000000L
  1761. #endif  // (_WIN32_WINDOWS >= 0x045A)
  1762. /*
  1763.  * Class styles
  1764.  */
  1765. #define CS_VREDRAW          0x0001
  1766. #define CS_HREDRAW          0x0002
  1767. #define CS_DBLCLKS          0x0008
  1768. #define CS_OWNDC            0x0020
  1769. #define CS_CLASSDC          0x0040
  1770. #define CS_PARENTDC         0x0080
  1771. #define CS_NOCLOSE          0x0200
  1772. #define CS_SAVEBITS         0x0800
  1773. #define CS_BYTEALIGNCLIENT  0x1000
  1774. #define CS_BYTEALIGNWINDOW  0x2000
  1775. #define CS_GLOBALCLASS      0x4000
  1776. #define CS_IME              0x00010000
  1777. // end_r_winuser
  1778. #endif /* !NOWINSTYLES */
  1779. #if(WINVER >= 0x0400)
  1780. /* WM_PRINT flags */
  1781. #define PRF_CHECKVISIBLE    0x00000001L
  1782. #define PRF_NONCLIENT       0x00000002L
  1783. #define PRF_CLIENT          0x00000004L
  1784. #define PRF_ERASEBKGND      0x00000008L
  1785. #define PRF_CHILDREN        0x00000010L
  1786. #define PRF_OWNED           0x00000020L
  1787. /* 3D border styles */
  1788. #define BDR_RAISEDOUTER 0x0001
  1789. #define BDR_SUNKENOUTER 0x0002
  1790. #define BDR_RAISEDINNER 0x0004
  1791. #define BDR_SUNKENINNER 0x0008
  1792. #define EDGE_RAISED     (BDR_RAISEDOUTER | BDR_RAISEDINNER)
  1793. #define EDGE_SUNKEN     (BDR_SUNKENOUTER | BDR_SUNKENINNER)
  1794. #define EDGE_ETCHED     (BDR_SUNKENOUTER | BDR_RAISEDINNER)
  1795. #define EDGE_BUMP       (BDR_RAISEDOUTER | BDR_SUNKENINNER)
  1796. /* Border flags */
  1797. #define BF_LEFT         0x0001
  1798. #define BF_TOP          0x0002
  1799. #define BF_RIGHT        0x0004
  1800. #define BF_BOTTOM       0x0008
  1801. #define BF_TOPLEFT      (BF_TOP | BF_LEFT)
  1802. #define BF_TOPRIGHT     (BF_TOP | BF_RIGHT)
  1803. #define BF_BOTTOMLEFT   (BF_BOTTOM | BF_LEFT)
  1804. #define BF_BOTTOMRIGHT  (BF_BOTTOM | BF_RIGHT)
  1805. #define BF_RECT         (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM)
  1806. #define BF_DIAGONAL     0x0010
  1807. // For diagonal lines, the BF_RECT flags specify the end point of the
  1808. // vector bounded by the rectangle parameter.
  1809. #define BF_DIAGONAL_ENDTOPRIGHT     (BF_DIAGONAL | BF_TOP | BF_RIGHT)
  1810. #define BF_DIAGONAL_ENDTOPLEFT      (BF_DIAGONAL | BF_TOP | BF_LEFT)
  1811. #define BF_DIAGONAL_ENDBOTTOMLEFT   (BF_DIAGONAL | BF_BOTTOM | BF_LEFT)
  1812. #define BF_DIAGONAL_ENDBOTTOMRIGHT  (BF_DIAGONAL | BF_BOTTOM | BF_RIGHT)
  1813. #define BF_MIDDLE       0x0800  /* Fill in the middle */
  1814. #define BF_SOFT         0x1000  /* For softer buttons */
  1815. #define BF_ADJUST       0x2000  /* Calculate the space left over */
  1816. #define BF_FLAT         0x4000  /* For flat rather than 3D borders */
  1817. #define BF_MONO         0x8000  /* For monochrome borders */
  1818. WINUSERAPI
  1819. BOOL
  1820. WINAPI
  1821. DrawEdge(HDC hdc, LPRECT qrc, UINT edge, UINT grfFlags);
  1822. /* flags for DrawFrameControl */
  1823. #define DFC_CAPTION             1
  1824. #define DFC_MENU                2
  1825. #define DFC_SCROLL              3
  1826. #define DFC_BUTTON              4
  1827. #if (_WIN32_WINDOWS >= 0x040A)
  1828. #define DFC_POPUPMENU           5
  1829. #endif
  1830. #define DFCS_CAPTIONCLOSE       0x0000
  1831. #define DFCS_CAPTIONMIN         0x0001
  1832. #define DFCS_CAPTIONMAX         0x0002
  1833. #define DFCS_CAPTIONRESTORE     0x0003
  1834. #define DFCS_CAPTIONHELP        0x0004
  1835. #define DFCS_MENUARROW          0x0000
  1836. #define DFCS_MENUCHECK          0x0001
  1837. #define DFCS_MENUBULLET         0x0002
  1838. #define DFCS_MENUARROWRIGHT     0x0004
  1839. #define DFCS_SCROLLUP           0x0000
  1840. #define DFCS_SCROLLDOWN         0x0001
  1841. #define DFCS_SCROLLLEFT         0x0002
  1842. #define DFCS_SCROLLRIGHT        0x0003
  1843. #define DFCS_SCROLLCOMBOBOX     0x0005
  1844. #define DFCS_SCROLLSIZEGRIP     0x0008
  1845. #define DFCS_SCROLLSIZEGRIPRIGHT 0x0010
  1846. #define DFCS_BUTTONCHECK        0x0000
  1847. #define DFCS_BUTTONRADIOIMAGE   0x0001
  1848. #define DFCS_BUTTONRADIOMASK    0x0002
  1849. #define DFCS_BUTTONRADIO        0x0004
  1850. #define DFCS_BUTTON3STATE       0x0008
  1851. #define DFCS_BUTTONPUSH         0x0010
  1852. #define DFCS_INACTIVE           0x0100
  1853. #define DFCS_PUSHED             0x0200
  1854. #define DFCS_CHECKED            0x0400
  1855. #if (_WIN32_WINDOWS >= 0x040A)
  1856. #define DFCS_TRANSPARENT        0x0800
  1857. #define DFCS_HOT                0x1000
  1858. #endif
  1859. #define DFCS_ADJUSTRECT         0x2000
  1860. #define DFCS_FLAT               0x4000
  1861. #define DFCS_MONO               0x8000
  1862. WINUSERAPI
  1863. BOOL
  1864. WINAPI
  1865. DrawFrameControl(HDC, LPRECT, UINT, UINT);
  1866. /* flags for DrawCaption */
  1867. #define DC_ACTIVE           0x0001
  1868. #define DC_SMALLCAP         0x0002
  1869. #define DC_ICON             0x0004
  1870. #define DC_TEXT             0x0008
  1871. #define DC_INBUTTON         0x0010
  1872. #if (_WIN32_WINDOWS >= 0x040A)
  1873. #define DC_GRADIENT         0x0020
  1874. #endif // (_WIN32_WINDOWS >= 0x040A)
  1875. WINUSERAPI
  1876. BOOL
  1877. WINAPI
  1878. DrawCaption(HWND, HDC, CONST RECT *, UINT);
  1879. #define IDANI_OPEN          1
  1880. #define IDANI_CLOSE         2
  1881. #define IDANI_CAPTION       3
  1882. #define IDANI_BORDER        4
  1883. #define IDANI_SLIDE         5
  1884. WINUSERAPI
  1885. BOOL
  1886. WINAPI
  1887. DrawAnimatedRects(HWND hwnd, int idAni, CONST RECT * lprcFrom, CONST RECT * lprcTo);
  1888. #endif /* WINVER >= 0x0400 */
  1889. #if(_WIN32_WINDOWS >= 0x040a)
  1890. #define PAS_IN          0x0001
  1891. #define PAS_OUT         0x0002
  1892. #define PAS_LEFT        0x0004
  1893. #define PAS_RIGHT       0x0008
  1894. #define PAS_UP          0x0010
  1895. #define PAS_DOWN        0x0020
  1896. #endif /* _WIN32_WINDOWS >= 0x040a */
  1897. #ifndef NOCLIPBOARD
  1898. // begin_r_winuser
  1899. /*
  1900.  * Predefined Clipboard Formats
  1901.  */
  1902. #define CF_TEXT             1
  1903. #define CF_BITMAP           2
  1904. #define CF_METAFILEPICT     3
  1905. #define CF_SYLK             4
  1906. #define CF_DIF              5
  1907. #define CF_TIFF             6
  1908. #define CF_OEMTEXT          7
  1909. #define CF_DIB              8
  1910. #define CF_PALETTE          9
  1911. #define CF_PENDATA          10
  1912. #define CF_RIFF             11
  1913. #define CF_WAVE             12
  1914. #define CF_UNICODETEXT      13
  1915. #define CF_ENHMETAFILE      14
  1916. #if(WINVER >= 0x0400)
  1917. #define CF_HDROP            15
  1918. #define CF_LOCALE           16
  1919. #define CF_MAX              17
  1920. #endif /* WINVER >= 0x0400 */
  1921. #define CF_OWNERDISPLAY     0x0080
  1922. #define CF_DSPTEXT          0x0081
  1923. #define CF_DSPBITMAP        0x0082
  1924. #define CF_DSPMETAFILEPICT  0x0083
  1925. #define CF_DSPENHMETAFILE   0x008E
  1926. /*
  1927.  * "Private" formats don't get GlobalFree()'d
  1928.  */
  1929. #define CF_PRIVATEFIRST     0x0200
  1930. #define CF_PRIVATELAST      0x02FF
  1931. /*
  1932.  * "GDIOBJ" formats do get DeleteObject()'d
  1933.  */
  1934. #define CF_GDIOBJFIRST      0x0300
  1935. #define CF_GDIOBJLAST       0x03FF
  1936. // end_r_winuser
  1937. #endif /* !NOCLIPBOARD */
  1938. /*
  1939.  * Defines for the fVirt field of the Accelerator table structure.
  1940.  */
  1941. #define FVIRTKEY  TRUE          /* Assumed to be == TRUE */
  1942. #define FNOINVERT 0x02
  1943. #define FSHIFT    0x04
  1944. #define FCONTROL  0x08
  1945. #define FALT      0x10
  1946. typedef struct tagACCEL {
  1947.     BYTE   fVirt;               /* Also called the flags field */
  1948.     WORD   key;
  1949.     WORD   cmd;
  1950. } ACCEL, *LPACCEL;
  1951. typedef struct tagPAINTSTRUCT {
  1952.     HDC         hdc;
  1953.     BOOL        fErase;
  1954.     RECT        rcPaint;
  1955.     BOOL        fRestore;
  1956.     BOOL        fIncUpdate;
  1957.     BYTE        rgbReserved[32];
  1958. } PAINTSTRUCT, *PPAINTSTRUCT, *NPPAINTSTRUCT, *LPPAINTSTRUCT;
  1959. typedef struct tagCREATESTRUCTA {
  1960.     LPVOID      lpCreateParams;
  1961.     HINSTANCE   hInstance;
  1962.     HMENU       hMenu;
  1963.     HWND        hwndParent;
  1964.     int         cy;
  1965.     int         cx;
  1966.     int         y;
  1967.     int         x;
  1968.     LONG        style;
  1969.     LPCSTR      lpszName;
  1970.     LPCSTR      lpszClass;
  1971.     DWORD       dwExStyle;
  1972. } CREATESTRUCTA, *LPCREATESTRUCTA;
  1973. typedef struct tagCREATESTRUCTW {
  1974.     LPVOID      lpCreateParams;
  1975.     HINSTANCE   hInstance;
  1976.     HMENU       hMenu;
  1977.     HWND        hwndParent;
  1978.     int         cy;
  1979.     int         cx;
  1980.     int         y;
  1981.     int         x;
  1982.     LONG        style;
  1983.     LPCWSTR     lpszName;
  1984.     LPCWSTR     lpszClass;
  1985.     DWORD       dwExStyle;
  1986. } CREATESTRUCTW, *LPCREATESTRUCTW;
  1987. #ifdef UNICODE
  1988. typedef CREATESTRUCTW CREATESTRUCT;
  1989. typedef LPCREATESTRUCTW LPCREATESTRUCT;
  1990. #else
  1991. typedef CREATESTRUCTA CREATESTRUCT;
  1992. typedef LPCREATESTRUCTA LPCREATESTRUCT;
  1993. #endif // UNICODE
  1994. typedef struct tagWINDOWPLACEMENT {
  1995.     UINT  length;
  1996.     UINT  flags;
  1997.     UINT  showCmd;
  1998.     POINT ptMinPosition;
  1999.     POINT ptMaxPosition;
  2000.     RECT  rcNormalPosition;
  2001. } WINDOWPLACEMENT;
  2002. typedef WINDOWPLACEMENT *PWINDOWPLACEMENT, *LPWINDOWPLACEMENT;
  2003. #define WPF_SETMINPOSITION      0x0001
  2004. #define WPF_RESTORETOMAXIMIZED  0x0002
  2005. #if(WINVER >= 0x0400)
  2006. typedef struct tagNMHDR
  2007. {
  2008.     HWND  hwndFrom;
  2009.     UINT  idFrom;
  2010.     UINT  code;         // NM_ code
  2011. }   NMHDR;
  2012. typedef NMHDR FAR * LPNMHDR;
  2013. typedef struct tagSTYLESTRUCT
  2014. {
  2015.     DWORD   styleOld;
  2016.     DWORD   styleNew;
  2017. } STYLESTRUCT, * LPSTYLESTRUCT;
  2018. #endif /* WINVER >= 0x0400 */
  2019. /*
  2020.  * Owner draw control types
  2021.  */
  2022. #define ODT_MENU        1
  2023. #define ODT_LISTBOX     2
  2024. #define ODT_COMBOBOX    3
  2025. #define ODT_BUTTON      4
  2026. #if(WINVER >= 0x0400)
  2027. #define ODT_STATIC      5
  2028. #endif /* WINVER >= 0x0400 */
  2029. /*
  2030.  * Owner draw actions
  2031.  */
  2032. #define ODA_DRAWENTIRE  0x0001
  2033. #define ODA_SELECT      0x0002
  2034. #define ODA_FOCUS       0x0004
  2035. /*
  2036.  * Owner draw state
  2037.  */
  2038. #define ODS_SELECTED    0x0001
  2039. #define ODS_GRAYED      0x0002
  2040. #define ODS_DISABLED    0x0004
  2041. #define ODS_CHECKED     0x0008
  2042. #define ODS_FOCUS       0x0010
  2043. #if(WINVER >= 0x0400)
  2044. #define ODS_DEFAULT         0x0020
  2045. #define ODS_COMBOBOXEDIT    0x1000
  2046. #endif /* WINVER >= 0x0400 */
  2047. #if (_WIN32_WINDOWS >= 0x040A)
  2048. #define ODS_HOTLIGHT        0x0040
  2049. #define ODS_INACTIVE        0x0080
  2050. #endif
  2051. /*
  2052.  * MEASUREITEMSTRUCT for ownerdraw
  2053.  */
  2054. typedef struct tagMEASUREITEMSTRUCT {
  2055.     UINT       CtlType;
  2056.     UINT       CtlID;
  2057.     UINT       itemID;
  2058.     UINT       itemWidth;
  2059.     UINT       itemHeight;
  2060.     DWORD      itemData;
  2061. } MEASUREITEMSTRUCT, NEAR *PMEASUREITEMSTRUCT, FAR *LPMEASUREITEMSTRUCT;
  2062. /*
  2063.  * DRAWITEMSTRUCT for ownerdraw
  2064.  */
  2065. typedef struct tagDRAWITEMSTRUCT {
  2066.     UINT        CtlType;
  2067.     UINT        CtlID;
  2068.     UINT        itemID;
  2069.     UINT        itemAction;
  2070.     UINT        itemState;
  2071.     HWND        hwndItem;
  2072.     HDC         hDC;
  2073.     RECT        rcItem;
  2074.     DWORD       itemData;
  2075. } DRAWITEMSTRUCT, NEAR *PDRAWITEMSTRUCT, FAR *LPDRAWITEMSTRUCT;
  2076. /*
  2077.  * DELETEITEMSTRUCT for ownerdraw
  2078.  */
  2079. typedef struct tagDELETEITEMSTRUCT {
  2080.     UINT       CtlType;
  2081.     UINT       CtlID;
  2082.     UINT       itemID;
  2083.     HWND       hwndItem;
  2084.     UINT       itemData;
  2085. } DELETEITEMSTRUCT, NEAR *PDELETEITEMSTRUCT, FAR *LPDELETEITEMSTRUCT;
  2086. /*
  2087.  * COMPAREITEMSTUCT for ownerdraw sorting
  2088.  */
  2089. typedef struct tagCOMPAREITEMSTRUCT {
  2090.     UINT        CtlType;
  2091.     UINT        CtlID;
  2092.     HWND        hwndItem;
  2093.     UINT        itemID1;
  2094.     DWORD       itemData1;
  2095.     UINT        itemID2;
  2096.     DWORD       itemData2;
  2097.     DWORD       dwLocaleId;
  2098. } COMPAREITEMSTRUCT, NEAR *PCOMPAREITEMSTRUCT, FAR *LPCOMPAREITEMSTRUCT;
  2099. #ifndef NOMSG
  2100. /*
  2101.  * Message Function Templates
  2102.  */
  2103. WINUSERAPI
  2104. BOOL
  2105. WINAPI
  2106. GetMessageA(
  2107.     LPMSG lpMsg,
  2108.     HWND hWnd ,
  2109.     UINT wMsgFilterMin,
  2110.     UINT wMsgFilterMax);
  2111. WINUSERAPI
  2112. BOOL
  2113. WINAPI
  2114. GetMessageW(
  2115.     LPMSG lpMsg,
  2116.     HWND hWnd ,
  2117.     UINT wMsgFilterMin,
  2118.     UINT wMsgFilterMax);
  2119. #ifdef UNICODE
  2120. #define GetMessage  GetMessageW
  2121. #else
  2122. #define GetMessage  GetMessageA
  2123. #endif // !UNICODE
  2124. WINUSERAPI
  2125. BOOL
  2126. WINAPI
  2127. TranslateMessage(
  2128.     CONST MSG *lpMsg);
  2129. WINUSERAPI
  2130. LONG
  2131. WINAPI
  2132. DispatchMessageA(
  2133.     CONST MSG *lpMsg);
  2134. WINUSERAPI
  2135. LONG
  2136. WINAPI
  2137. DispatchMessageW(
  2138.     CONST MSG *lpMsg);
  2139. #ifdef UNICODE
  2140. #define DispatchMessage  DispatchMessageW
  2141. #else
  2142. #define DispatchMessage  DispatchMessageA
  2143. #endif // !UNICODE
  2144. WINUSERAPI
  2145. BOOL
  2146. WINAPI
  2147. SetMessageQueue(
  2148.     int cMessagesMax);
  2149. WINUSERAPI
  2150. BOOL
  2151. WINAPI
  2152. PeekMessageA(
  2153.     LPMSG lpMsg,
  2154.     HWND hWnd ,
  2155.     UINT wMsgFilterMin,
  2156.     UINT wMsgFilterMax,
  2157.     UINT wRemoveMsg);
  2158. WINUSERAPI
  2159. BOOL
  2160. WINAPI
  2161. PeekMessageW(
  2162.     LPMSG lpMsg,
  2163.     HWND hWnd ,
  2164.     UINT wMsgFilterMin,
  2165.     UINT wMsgFilterMax,
  2166.     UINT wRemoveMsg);
  2167. #ifdef UNICODE
  2168. #define PeekMessage  PeekMessageW
  2169. #else
  2170. #define PeekMessage  PeekMessageA
  2171. #endif // !UNICODE
  2172. /*
  2173.  * PeekMessage() Options
  2174.  */
  2175. #define PM_NOREMOVE         0x0000
  2176. #define PM_REMOVE           0x0001
  2177. #define PM_NOYIELD          0x0002
  2178. #endif /* !NOMSG */
  2179. WINUSERAPI
  2180. BOOL
  2181. WINAPI
  2182. RegisterHotKey(
  2183.     HWND hWnd ,
  2184.     int id,
  2185.     UINT fsModifiers,
  2186.     UINT vk);
  2187. WINUSERAPI
  2188. BOOL
  2189. WINAPI
  2190. UnregisterHotKey(
  2191.     HWND hWnd,
  2192.     int id);
  2193. #define MOD_ALT         0x0001
  2194. #define MOD_CONTROL     0x0002
  2195. #define MOD_SHIFT       0x0004
  2196. #define MOD_WIN         0x0008
  2197. #define MOD_SAS         0x8000  // ; internal
  2198. #define IDHOT_SNAPWINDOW        (-1)    /* SHIFT-PRINTSCRN  */
  2199. #define IDHOT_SNAPDESKTOP       (-2)    /* PRINTSCRN        */
  2200. #ifdef WIN_INTERNAL
  2201.     #ifndef LSTRING
  2202.     #define NOLSTRING
  2203.     #endif /* LSTRING */
  2204.     #ifndef LFILEIO
  2205.     #define NOLFILEIO
  2206.     #endif /* LFILEIO */
  2207. #endif /* WIN_INTERNAL */
  2208. #if(WINVER >= 0x0400)
  2209. #define EW_EXITANDEXECAPP    0x0044L
  2210. #define ENDSESSION_LOGOFF    0x80000000
  2211. #endif /* WINVER >= 0x0400 */
  2212. #define EWX_LOGOFF   0
  2213. #define EWX_SHUTDOWN 1
  2214. #define EWX_REBOOT   2
  2215. #define EWX_FORCE    4
  2216. #define EWX_POWEROFF 8
  2217. #define ExitWindows(dwReserved, Code) ExitWindowsEx(EWX_LOGOFF, 0xFFFFFFFF)
  2218. WINUSERAPI
  2219. BOOL
  2220. WINAPI
  2221. ExitWindowsEx(
  2222.     UINT uFlags,
  2223.     DWORD dwReserved);
  2224. WINUSERAPI
  2225. BOOL
  2226. WINAPI
  2227. SwapMouseButton(
  2228.     BOOL fSwap);
  2229. WINUSERAPI
  2230. DWORD
  2231. WINAPI
  2232. GetMessagePos(
  2233.     VOID);
  2234. WINUSERAPI
  2235. LONG
  2236. WINAPI
  2237. GetMessageTime(
  2238.     VOID);
  2239. WINUSERAPI
  2240. LONG
  2241. WINAPI
  2242. GetMessageExtraInfo(
  2243.     VOID);
  2244. #if(WINVER >= 0x0400)
  2245. WINUSERAPI
  2246. LPARAM
  2247. WINAPI
  2248. SetMessageExtraInfo(
  2249.     LPARAM lParam);
  2250. #endif /* WINVER >= 0x0400 */
  2251. WINUSERAPI
  2252. LRESULT
  2253. WINAPI
  2254. SendMessageA(
  2255.     HWND hWnd,
  2256.     UINT Msg,
  2257.     WPARAM wParam,
  2258.     LPARAM lParam);
  2259. WINUSERAPI
  2260. LRESULT
  2261. WINAPI
  2262. SendMessageW(
  2263.     HWND hWnd,
  2264.     UINT Msg,
  2265.     WPARAM wParam,
  2266.     LPARAM lParam);
  2267. #ifdef UNICODE
  2268. #define SendMessage  SendMessageW
  2269. #else
  2270. #define SendMessage  SendMessageA
  2271. #endif // !UNICODE
  2272. WINUSERAPI
  2273. LRESULT
  2274. WINAPI
  2275. SendMessageTimeoutA(
  2276.     HWND hWnd,
  2277.     UINT Msg,
  2278.     WPARAM wParam,
  2279.     LPARAM lParam,
  2280.     UINT fuFlags,
  2281.     UINT uTimeout,
  2282.     LPDWORD lpdwResult);
  2283. WINUSERAPI
  2284. LRESULT
  2285. WINAPI
  2286. SendMessageTimeoutW(
  2287.     HWND hWnd,
  2288.     UINT Msg,
  2289.     WPARAM wParam,
  2290.     LPARAM lParam,
  2291.     UINT fuFlags,
  2292.     UINT uTimeout,
  2293.     LPDWORD lpdwResult);
  2294. #ifdef UNICODE
  2295. #define SendMessageTimeout  SendMessageTimeoutW
  2296. #else
  2297. #define SendMessageTimeout  SendMessageTimeoutA
  2298. #endif // !UNICODE
  2299. WINUSERAPI
  2300. BOOL
  2301. WINAPI
  2302. SendNotifyMessageA(
  2303.     HWND hWnd,
  2304.     UINT Msg,
  2305.     WPARAM wParam,
  2306.     LPARAM lParam);
  2307. WINUSERAPI
  2308. BOOL
  2309. WINAPI
  2310. SendNotifyMessageW(
  2311.     HWND hWnd,
  2312.     UINT Msg,
  2313.     WPARAM wParam,
  2314.     LPARAM lParam);
  2315. #ifdef UNICODE
  2316. #define SendNotifyMessage  SendNotifyMessageW
  2317. #else
  2318. #define SendNotifyMessage  SendNotifyMessageA
  2319. #endif // !UNICODE
  2320. WINUSERAPI
  2321. BOOL
  2322. WINAPI
  2323. SendMessageCallbackA(
  2324.     HWND hWnd,
  2325.     UINT Msg,
  2326.     WPARAM wParam,
  2327.     LPARAM lParam,
  2328.     SENDASYNCPROC lpResultCallBack,
  2329.     DWORD dwData);
  2330. WINUSERAPI
  2331. BOOL
  2332. WINAPI
  2333. SendMessageCallbackW(
  2334.     HWND hWnd,
  2335.     UINT Msg,
  2336.     WPARAM wParam,
  2337.     LPARAM lParam,
  2338.     SENDASYNCPROC lpResultCallBack,
  2339.     DWORD dwData);
  2340. #ifdef UNICODE
  2341. #define SendMessageCallback  SendMessageCallbackW
  2342. #else
  2343. #define SendMessageCallback  SendMessageCallbackA
  2344. #endif // !UNICODE
  2345. #if(WINVER >= 0x0400)
  2346. #if defined(_WIN32_WINNT)
  2347. WINUSERAPI long  WINAPI  BroadcastSystemMessageA(DWORD, LPDWORD, UINT, WPARAM, LPARAM);
  2348. WINUSERAPI long  WINAPI  BroadcastSystemMessageW(DWORD, LPDWORD, UINT, WPARAM, LPARAM);
  2349. #ifdef UNICODE
  2350. #define BroadcastSystemMessage  BroadcastSystemMessageW
  2351. #else
  2352. #define BroadcastSystemMessage  BroadcastSystemMessageA
  2353. #endif // !UNICODE
  2354. #elif defined(_WIN32_WINDOWS)
  2355. // The Win95 version isn't A/W decorated
  2356. WINUSERAPI long  WINAPI  BroadcastSystemMessage(DWORD, LPDWORD, UINT, WPARAM, LPARAM);
  2357. #endif
  2358. //Broadcast Special Message Recipient list
  2359. #define BSM_ALLCOMPONENTS       0x00000000
  2360. #define BSM_VXDS                0x00000001
  2361. #define BSM_NETDRIVER           0x00000002
  2362. #define BSM_INSTALLABLEDRIVERS  0x00000004
  2363. #define BSM_APPLICATIONS        0x00000008
  2364. #define BSM_ALLDESKTOPS         0x00000010
  2365. //Broadcast Special Message Flags
  2366. #define BSF_QUERY               0x00000001
  2367. #define BSF_IGNORECURRENTTASK   0x00000002
  2368. #define BSF_FLUSHDISK           0x00000004
  2369. #define BSF_NOHANG              0x00000008
  2370. #define BSF_POSTMESSAGE         0x00000010
  2371. #define BSF_FORCEIFHUNG         0x00000020
  2372. #define BSF_NOTIMEOUTIFNOTHUNG  0x00000040
  2373. typedef struct tagBROADCASTSYSMSG
  2374. {
  2375.     UINT    uiMessage;
  2376.     WPARAM  wParam;
  2377.     LPARAM  lParam;
  2378. } BROADCASTSYSMSG;
  2379. typedef BROADCASTSYSMSG  FAR *LPBROADCASTSYSMSG;
  2380. #define DBWF_LPARAMPOINTER  0x8000
  2381. #define BROADCAST_QUERY_DENY         0x424D5144  // Return this value to deny a query.
  2382. #endif /* WINVER >= 0x0400 */
  2383. // RegisterDeviceNotification
  2384. #if (WINVER >= 0x040A)
  2385. typedef  PVOID           HDEVNOTIFY;
  2386. typedef  HDEVNOTIFY     *PHDEVNOTIFY;
  2387. #define DEVICE_NOTIFY_WINDOW_HANDLE     0x00000000
  2388. #define DEVICE_NOTIFY_SERVICE_HANDLE    0x00000001
  2389. #define DEVICE_NOTIFY_COMPLETION_HANDLE 0x00000002
  2390. WINUSERAPI
  2391. HDEVNOTIFY
  2392. WINAPI
  2393. RegisterDeviceNotificationA(
  2394.     IN HANDLE hRecipient,
  2395.     IN LPVOID NotificationFilter,
  2396.     IN DWORD Flags
  2397.     );
  2398. WINUSERAPI
  2399. HDEVNOTIFY
  2400. WINAPI
  2401. RegisterDeviceNotificationW(
  2402.     IN HANDLE hRecipient,
  2403.     IN LPVOID NotificationFilter,
  2404.     IN DWORD Flags
  2405.     );
  2406. #ifdef UNICODE
  2407. #define RegisterDeviceNotification  RegisterDeviceNotificationW
  2408. #else
  2409. #define RegisterDeviceNotification  RegisterDeviceNotificationA
  2410. #endif // !UNICODE
  2411. WINUSERAPI
  2412. BOOL
  2413. WINAPI
  2414. UnregisterDeviceNotification(
  2415.     IN HDEVNOTIFY Handle
  2416.     );
  2417. #endif /* WINVER >= 0x040A */
  2418. WINUSERAPI
  2419. BOOL
  2420. WINAPI
  2421. PostMessageA(
  2422.     HWND hWnd,
  2423.     UINT Msg,
  2424.     WPARAM wParam,
  2425.     LPARAM lParam);
  2426. WINUSERAPI
  2427. BOOL
  2428. WINAPI
  2429. PostMessageW(
  2430.     HWND hWnd,
  2431.     UINT Msg,
  2432.     WPARAM wParam,
  2433.     LPARAM lParam);
  2434. #ifdef UNICODE
  2435. #define PostMessage  PostMessageW
  2436. #else
  2437. #define PostMessage  PostMessageA
  2438. #endif // !UNICODE
  2439. WINUSERAPI
  2440. BOOL
  2441. WINAPI
  2442. PostThreadMessageA(
  2443.     DWORD idThread,
  2444.     UINT Msg,
  2445.     WPARAM wParam,
  2446.     LPARAM lParam);
  2447. WINUSERAPI
  2448. BOOL
  2449. WINAPI
  2450. PostThreadMessageW(
  2451.     DWORD idThread,
  2452.     UINT Msg,
  2453.     WPARAM wParam,
  2454.     LPARAM lParam);
  2455. #ifdef UNICODE
  2456. #define PostThreadMessage  PostThreadMessageW
  2457. #else
  2458. #define PostThreadMessage  PostThreadMessageA
  2459. #endif // !UNICODE
  2460. #define PostAppMessageA(idThread, wMsg, wParam, lParam)
  2461. PostThreadMessageA((DWORD)idThread, wMsg, wParam, lParam)
  2462. #define PostAppMessageW(idThread, wMsg, wParam, lParam)
  2463. PostThreadMessageW((DWORD)idThread, wMsg, wParam, lParam)
  2464. #ifdef UNICODE
  2465. #define PostAppMessage  PostAppMessageW
  2466. #else
  2467. #define PostAppMessage  PostAppMessageA
  2468. #endif // !UNICODE
  2469. /*
  2470.  * Special HWND value for use with PostMessage() and SendMessage()
  2471.  */
  2472. #define HWND_BROADCAST  ((HWND)0xffff)
  2473. #if (_WIN32_WINNT >= 0x0500)
  2474. #define HWND_MESSAGE     ((HWND)-3)
  2475. #endif
  2476. WINUSERAPI
  2477. BOOL
  2478. WINAPI
  2479. AttachThreadInput(
  2480.     DWORD idAttach,
  2481.     DWORD idAttachTo,
  2482.     BOOL fAttach);
  2483. WINUSERAPI
  2484. BOOL
  2485. WINAPI
  2486. ReplyMessage(
  2487.     LRESULT lResult);
  2488. WINUSERAPI
  2489. BOOL
  2490. WINAPI
  2491. WaitMessage(
  2492.     VOID);
  2493. WINUSERAPI
  2494. DWORD
  2495. WINAPI
  2496. WaitForInputIdle(
  2497.     HANDLE hProcess,
  2498.     DWORD dwMilliseconds);
  2499. WINUSERAPI
  2500. LRESULT
  2501. WINAPI
  2502. DefWindowProcA(
  2503.     HWND hWnd,
  2504.     UINT Msg,
  2505.     WPARAM wParam,
  2506.     LPARAM lParam);
  2507. WINUSERAPI
  2508. LRESULT
  2509. WINAPI
  2510. DefWindowProcW(
  2511.     HWND hWnd,
  2512.     UINT Msg,
  2513.     WPARAM wParam,
  2514.     LPARAM lParam);
  2515. #ifdef UNICODE
  2516. #define DefWindowProc  DefWindowProcW
  2517. #else
  2518. #define DefWindowProc  DefWindowProcA
  2519. #endif // !UNICODE
  2520. WINUSERAPI
  2521. VOID
  2522. WINAPI
  2523. PostQuitMessage(
  2524.     int nExitCode);
  2525. #ifdef STRICT
  2526. WINUSERAPI
  2527. LRESULT
  2528. WINAPI
  2529. CallWindowProcA(
  2530.     WNDPROC lpPrevWndFunc,
  2531.     HWND hWnd,
  2532.     UINT Msg,
  2533.     WPARAM wParam,
  2534.     LPARAM lParam);
  2535. WINUSERAPI
  2536. LRESULT
  2537. WINAPI
  2538. CallWindowProcW(
  2539.     WNDPROC lpPrevWndFunc,
  2540.     HWND hWnd,
  2541.     UINT Msg,
  2542.     WPARAM wParam,
  2543.     LPARAM lParam);
  2544. #ifdef UNICODE
  2545. #define CallWindowProc  CallWindowProcW
  2546. #else
  2547. #define CallWindowProc  CallWindowProcA
  2548. #endif // !UNICODE
  2549. #else /* !STRICT */
  2550. WINUSERAPI
  2551. LRESULT
  2552. WINAPI
  2553. CallWindowProcA(
  2554.     FARPROC lpPrevWndFunc,
  2555.     HWND hWnd,
  2556.     UINT Msg,
  2557.     WPARAM wParam,
  2558.     LPARAM lParam);
  2559. WINUSERAPI
  2560. LRESULT
  2561. WINAPI
  2562. CallWindowProcW(
  2563.     FARPROC lpPrevWndFunc,
  2564.     HWND hWnd,
  2565.     UINT Msg,
  2566.     WPARAM wParam,
  2567.     LPARAM lParam);
  2568. #ifdef UNICODE
  2569. #define CallWindowProc  CallWindowProcW
  2570. #else
  2571. #define CallWindowProc  CallWindowProcA
  2572. #endif // !UNICODE
  2573. #endif /* !STRICT */
  2574. WINUSERAPI
  2575. BOOL
  2576. WINAPI
  2577. InSendMessage(
  2578.     VOID);
  2579. #if (_WIN32_WINDOWS >= 0x040A)
  2580. WINUSERAPI 
  2581. DWORD 
  2582. WINAPI
  2583. InSendMessageEx(
  2584.     LPVOID lpReserved);
  2585. /*
  2586.  * InSendMessageEx return value           
  2587.  */                                      
  2588. #define ISMEX_NOSEND      0x00000000    
  2589. #define ISMEX_SEND        0x00000001   
  2590. #define ISMEX_NOTIFY      0x00000002  
  2591. #define ISMEX_CALLBACK    0x00000004 
  2592. #define ISMEX_REPLIED     0x00000008
  2593. #endif
  2594. WINUSERAPI
  2595. UINT
  2596. WINAPI
  2597. GetDoubleClickTime(
  2598.     VOID);
  2599. WINUSERAPI
  2600. BOOL
  2601. WINAPI
  2602. SetDoubleClickTime(
  2603.     UINT);
  2604. WINUSERAPI
  2605. ATOM
  2606. WINAPI
  2607. RegisterClassA(
  2608.     CONST WNDCLASSA *lpWndClass);
  2609. WINUSERAPI
  2610. ATOM
  2611. WINAPI
  2612. RegisterClassW(
  2613.     CONST WNDCLASSW *lpWndClass);
  2614. #ifdef UNICODE
  2615. #define RegisterClass  RegisterClassW
  2616. #else
  2617. #define RegisterClass  RegisterClassA
  2618. #endif // !UNICODE
  2619. WINUSERAPI
  2620. BOOL
  2621. WINAPI
  2622. UnregisterClassA(
  2623.     LPCSTR lpClassName,
  2624.     HINSTANCE hInstance);
  2625. WINUSERAPI
  2626. BOOL
  2627. WINAPI
  2628. UnregisterClassW(
  2629.     LPCWSTR lpClassName,
  2630.     HINSTANCE hInstance);
  2631. #ifdef UNICODE
  2632. #define UnregisterClass  UnregisterClassW
  2633. #else
  2634. #define UnregisterClass  UnregisterClassA
  2635. #endif // !UNICODE
  2636. WINUSERAPI
  2637. BOOL
  2638. WINAPI
  2639. GetClassInfoA(
  2640.     HINSTANCE hInstance ,
  2641.     LPCSTR lpClassName,
  2642.     LPWNDCLASSA lpWndClass);
  2643. WINUSERAPI
  2644. BOOL
  2645. WINAPI
  2646. GetClassInfoW(
  2647.     HINSTANCE hInstance ,
  2648.     LPCWSTR lpClassName,
  2649.     LPWNDCLASSW lpWndClass);
  2650. #ifdef UNICODE
  2651. #define GetClassInfo  GetClassInfoW
  2652. #else
  2653. #define GetClassInfo  GetClassInfoA
  2654. #endif // !UNICODE
  2655. #if(WINVER >= 0x0400)
  2656. WINUSERAPI
  2657. ATOM
  2658. WINAPI
  2659. RegisterClassExA(CONST WNDCLASSEXA *);
  2660. WINUSERAPI
  2661. ATOM
  2662. WINAPI
  2663. RegisterClassExW(CONST WNDCLASSEXW *);
  2664. #ifdef UNICODE
  2665. #define RegisterClassEx  RegisterClassExW
  2666. #else
  2667. #define RegisterClassEx  RegisterClassExA
  2668. #endif // !UNICODE
  2669. WINUSERAPI
  2670. BOOL
  2671. WINAPI
  2672. GetClassInfoExA(HINSTANCE, LPCSTR, LPWNDCLASSEXA);
  2673. WINUSERAPI
  2674. BOOL
  2675. WINAPI
  2676. GetClassInfoExW(HINSTANCE, LPCWSTR, LPWNDCLASSEXW);
  2677. #ifdef UNICODE
  2678. #define GetClassInfoEx  GetClassInfoExW
  2679. #else
  2680. #define GetClassInfoEx  GetClassInfoExA
  2681. #endif // !UNICODE
  2682. #endif /* WINVER >= 0x0400 */
  2683. #define CW_USEDEFAULT       ((int)0x80000000)
  2684. /*
  2685.  * Special value for CreateWindow, et al.
  2686.  */
  2687. #define HWND_DESKTOP        ((HWND)0)
  2688. WINUSERAPI
  2689. HWND
  2690. WINAPI
  2691. CreateWindowExA(
  2692.     DWORD dwExStyle,
  2693.     LPCSTR lpClassName,
  2694.     LPCSTR lpWindowName,
  2695.     DWORD dwStyle,
  2696.     int X,
  2697.     int Y,
  2698.     int nWidth,
  2699.     int nHeight,
  2700.     HWND hWndParent ,
  2701.     HMENU hMenu,
  2702.     HINSTANCE hInstance,
  2703.     LPVOID lpParam);
  2704. WINUSERAPI
  2705. HWND
  2706. WINAPI
  2707. CreateWindowExW(
  2708.     DWORD dwExStyle,
  2709.     LPCWSTR lpClassName,
  2710.     LPCWSTR lpWindowName,
  2711.     DWORD dwStyle,
  2712.     int X,
  2713.     int Y,
  2714.     int nWidth,
  2715.     int nHeight,
  2716.     HWND hWndParent ,
  2717.     HMENU hMenu,
  2718.     HINSTANCE hInstance,
  2719.     LPVOID lpParam);
  2720. #ifdef UNICODE
  2721. #define CreateWindowEx  CreateWindowExW
  2722. #else
  2723. #define CreateWindowEx  CreateWindowExA
  2724. #endif // !UNICODE
  2725. #define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y,
  2726. nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
  2727. CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y,
  2728. nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
  2729. #define CreateWindowW(lpClassName, lpWindowName, dwStyle, x, y,
  2730. nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
  2731. CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y,
  2732. nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
  2733. #ifdef UNICODE
  2734. #define CreateWindow  CreateWindowW
  2735. #else
  2736. #define CreateWindow  CreateWindowA
  2737. #endif // !UNICODE
  2738. WINUSERAPI
  2739. BOOL
  2740. WINAPI
  2741. IsWindow(
  2742.     HWND hWnd);
  2743. WINUSERAPI
  2744. BOOL
  2745. WINAPI
  2746. IsMenu(
  2747.     HMENU hMenu);
  2748. WINUSERAPI
  2749. BOOL
  2750. WINAPI
  2751. IsChild(
  2752.     HWND hWndParent,
  2753.     HWND hWnd);
  2754. WINUSERAPI
  2755. BOOL
  2756. WINAPI
  2757. DestroyWindow(
  2758.     HWND hWnd);
  2759. WINUSERAPI
  2760. BOOL
  2761. WINAPI
  2762. ShowWindow(
  2763.     HWND hWnd,
  2764.     int nCmdShow);
  2765. #if (_WIN32_WINDOWS >= 0x040A)
  2766. WINUSERAPI
  2767. BOOL
  2768. WINAPI
  2769. AnimateWindow(
  2770.     HWND hWnd,
  2771.     DWORD dwTime,
  2772.     DWORD dwFlags);
  2773. #endif // (_WIN32_WINDOWS >= 0x040A)
  2774. #if(WINVER >= 0x0400)
  2775. WINUSERAPI
  2776. BOOL
  2777. WINAPI
  2778. ShowWindowAsync(
  2779.     HWND hWnd,
  2780.     int nCmdShow);
  2781. #endif /* WINVER >= 0x0400 */
  2782. WINUSERAPI
  2783. BOOL
  2784. WINAPI
  2785. FlashWindow(
  2786.     HWND hWnd,
  2787.     BOOL bInvert);
  2788. #if (_WIN32_WINDOWS >= 0x040A)
  2789. #define FLASHW_STOP         0
  2790. #define FLASHW_CAPTION      0x0001
  2791. #define FLASHW_TRAY         0x0002
  2792. #define FLASHW_ALL          (FLASHW_CAPTION | FLASHW_TRAY)
  2793. #define FLASHW_TIMER        0x0004
  2794. #define FLASHW_TIMERNOFG    0x000C
  2795. typedef struct tagFLASHWINFO
  2796. {
  2797.     UINT    cbSize;
  2798.     HWND    hwnd;
  2799.     DWORD   dwFlags;
  2800.     UINT    uCount;
  2801.     DWORD   dwTimeOut;
  2802. } FLASHWINFO, FAR * LPFLASHWINFO;
  2803. WINUSERAPI
  2804. BOOL
  2805. WINAPI
  2806. FlashWindowEx(
  2807.     LPFLASHWINFO lpfw);
  2808. #endif
  2809. WINUSERAPI
  2810. BOOL
  2811. WINAPI
  2812. ShowOwnedPopups(
  2813.     HWND hWnd,
  2814.     BOOL fShow);
  2815. WINUSERAPI
  2816. BOOL
  2817. WINAPI
  2818. OpenIcon(
  2819.     HWND hWnd);
  2820. WINUSERAPI
  2821. BOOL
  2822. WINAPI
  2823. CloseWindow(
  2824.     HWND hWnd);
  2825. WINUSERAPI
  2826. BOOL
  2827. WINAPI
  2828. MoveWindow(
  2829.     HWND hWnd,
  2830.     int X,
  2831.     int Y,
  2832.     int nWidth,
  2833.     int nHeight,
  2834.     BOOL bRepaint);
  2835. WINUSERAPI
  2836. BOOL
  2837. WINAPI
  2838. SetWindowPos(
  2839.     HWND hWnd,
  2840.     HWND hWndInsertAfter ,
  2841.     int X,
  2842.     int Y,
  2843.     int cx,
  2844.     int cy,
  2845.     UINT uFlags);
  2846. WINUSERAPI
  2847. BOOL
  2848. WINAPI
  2849. GetWindowPlacement(
  2850.     HWND hWnd,
  2851.     WINDOWPLACEMENT *lpwndpl);
  2852. WINUSERAPI
  2853. BOOL
  2854. WINAPI
  2855. SetWindowPlacement(
  2856.     HWND hWnd,
  2857.     CONST WINDOWPLACEMENT *lpwndpl);
  2858. #ifndef NODEFERWINDOWPOS
  2859. WINUSERAPI
  2860. HDWP
  2861. WINAPI
  2862. BeginDeferWindowPos(
  2863.     int nNumWindows);
  2864. WINUSERAPI
  2865. HDWP
  2866. WINAPI
  2867. DeferWindowPos(
  2868.     HDWP hWinPosInfo,
  2869.     HWND hWnd,
  2870.     HWND hWndInsertAfter ,
  2871.     int x,
  2872.     int y,
  2873.     int cx,
  2874.     int cy,
  2875.     UINT uFlags);
  2876. WINUSERAPI
  2877. BOOL
  2878. WINAPI
  2879. EndDeferWindowPos(
  2880.     HDWP hWinPosInfo);
  2881. #endif /* !NODEFERWINDOWPOS */
  2882. WINUSERAPI
  2883. BOOL
  2884. WINAPI
  2885. IsWindowVisible(
  2886.     HWND hWnd);
  2887. WINUSERAPI
  2888. BOOL
  2889. WINAPI
  2890. IsIconic(
  2891.     HWND hWnd);
  2892. WINUSERAPI
  2893. BOOL
  2894. WINAPI
  2895. AnyPopup(
  2896.     VOID);
  2897. WINUSERAPI
  2898. BOOL
  2899. WINAPI
  2900. BringWindowToTop(
  2901.     HWND hWnd);
  2902. WINUSERAPI
  2903. BOOL
  2904. WINAPI
  2905. IsZoomed(
  2906.     HWND hWnd);
  2907. /*
  2908.  * SetWindowPos Flags
  2909.  */
  2910. #define SWP_NOSIZE          0x0001
  2911. #define SWP_NOMOVE          0x0002
  2912. #define SWP_NOZORDER        0x0004
  2913. #define SWP_NOREDRAW        0x0008
  2914. #define SWP_NOACTIVATE      0x0010
  2915. #define SWP_FRAMECHANGED    0x0020  /* The frame changed: send WM_NCCALCSIZE */
  2916. #define SWP_SHOWWINDOW      0x0040
  2917. #define SWP_HIDEWINDOW      0x0080
  2918. #define SWP_NOCOPYBITS      0x0100
  2919. #define SWP_NOOWNERZORDER   0x0200  /* Don't do owner Z ordering */
  2920. #define SWP_NOSENDCHANGING  0x0400  /* Don't send WM_WINDOWPOSCHANGING */
  2921. #define SWP_DRAWFRAME       SWP_FRAMECHANGED
  2922. #define SWP_NOREPOSITION    SWP_NOOWNERZORDER
  2923. #if(WINVER >= 0x0400)
  2924. #define SWP_DEFERERASE      0x2000
  2925. #define SWP_ASYNCWINDOWPOS  0x4000
  2926. #endif /* WINVER >= 0x0400 */
  2927. #define HWND_TOP        ((HWND)0)
  2928. #define HWND_BOTTOM     ((HWND)1)
  2929. #define HWND_TOPMOST    ((HWND)-1)
  2930. #define HWND_NOTOPMOST  ((HWND)-2)
  2931. #ifndef NOCTLMGR
  2932. /*
  2933.  * WARNING:
  2934.  * The following structures must NOT be DWORD padded because they are
  2935.  * followed by strings, etc that do not have to be DWORD aligned.
  2936.  */
  2937. #include <pshpack2.h>
  2938. /*
  2939.  * original NT 32 bit dialog template:
  2940.  */
  2941. typedef struct {
  2942.     DWORD style;
  2943.     DWORD dwExtendedStyle;
  2944.     WORD cdit;
  2945.     short x;
  2946.     short y;
  2947.     short cx;
  2948.     short cy;
  2949. } DLGTEMPLATE;
  2950. typedef DLGTEMPLATE *LPDLGTEMPLATEA;
  2951. typedef DLGTEMPLATE *LPDLGTEMPLATEW;
  2952. #ifdef UNICODE
  2953. typedef LPDLGTEMPLATEW LPDLGTEMPLATE;
  2954. #else
  2955. typedef LPDLGTEMPLATEA LPDLGTEMPLATE;
  2956. #endif // UNICODE
  2957. typedef CONST DLGTEMPLATE *LPCDLGTEMPLATEA;
  2958. typedef CONST DLGTEMPLATE *LPCDLGTEMPLATEW;
  2959. #ifdef UNICODE
  2960. typedef LPCDLGTEMPLATEW LPCDLGTEMPLATE;
  2961. #else
  2962. typedef LPCDLGTEMPLATEA LPCDLGTEMPLATE;
  2963. #endif // UNICODE
  2964. /*
  2965.  * 32 bit Dialog item template.
  2966.  */
  2967. typedef struct {
  2968.     DWORD style;
  2969.     DWORD dwExtendedStyle;
  2970.     short x;
  2971.     short y;
  2972.     short cx;
  2973.     short cy;
  2974.     WORD id;
  2975. } DLGITEMTEMPLATE;
  2976. typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEA;
  2977. typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEW;
  2978. #ifdef UNICODE
  2979. typedef PDLGITEMTEMPLATEW PDLGITEMTEMPLATE;
  2980. #else
  2981. typedef PDLGITEMTEMPLATEA PDLGITEMTEMPLATE;
  2982. #endif // UNICODE
  2983. typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEA;
  2984. typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEW;
  2985. #ifdef UNICODE
  2986. typedef LPDLGITEMTEMPLATEW LPDLGITEMTEMPLATE;
  2987. #else
  2988. typedef LPDLGITEMTEMPLATEA LPDLGITEMTEMPLATE;
  2989. #endif // UNICODE
  2990. #include <poppack.h> /* Resume normal packing */
  2991. WINUSERAPI
  2992. HWND
  2993. WINAPI
  2994. CreateDialogParamA(
  2995.     HINSTANCE hInstance,
  2996.     LPCSTR lpTemplateName,
  2997.     HWND hWndParent ,
  2998.     DLGPROC lpDialogFunc,
  2999.     LPARAM dwInitParam);
  3000. WINUSERAPI
  3001. HWND
  3002. WINAPI
  3003. CreateDialogParamW(
  3004.     HINSTANCE hInstance,
  3005.     LPCWSTR lpTemplateName,
  3006.     HWND hWndParent ,
  3007.     DLGPROC lpDialogFunc,
  3008.     LPARAM dwInitParam);
  3009. #ifdef UNICODE
  3010. #define CreateDialogParam  CreateDialogParamW
  3011. #else
  3012. #define CreateDialogParam  CreateDialogParamA
  3013. #endif // !UNICODE
  3014. WINUSERAPI
  3015. HWND
  3016. WINAPI
  3017. CreateDialogIndirectParamA(
  3018.     HINSTANCE hInstance,
  3019.     LPCDLGTEMPLATEA lpTemplate,
  3020.     HWND hWndParent,
  3021.     DLGPROC lpDialogFunc,
  3022.     LPARAM dwInitParam);
  3023. WINUSERAPI
  3024. HWND
  3025. WINAPI
  3026. CreateDialogIndirectParamW(
  3027.     HINSTANCE hInstance,
  3028.     LPCDLGTEMPLATEW lpTemplate,
  3029.     HWND hWndParent,
  3030.     DLGPROC lpDialogFunc,
  3031.     LPARAM dwInitParam);
  3032. #ifdef UNICODE
  3033. #define CreateDialogIndirectParam  CreateDialogIndirectParamW
  3034. #else
  3035. #define CreateDialogIndirectParam  CreateDialogIndirectParamA
  3036. #endif // !UNICODE
  3037. #define CreateDialogA(hInstance, lpName, hWndParent, lpDialogFunc) 
  3038. CreateDialogParamA(hInstance, lpName, hWndParent, lpDialogFunc, 0L)
  3039. #define CreateDialogW(hInstance, lpName, hWndParent, lpDialogFunc) 
  3040. CreateDialogParamW(hInstance, lpName, hWndParent, lpDialogFunc, 0L)
  3041. #ifdef UNICODE
  3042. #define CreateDialog  CreateDialogW
  3043. #else
  3044. #define CreateDialog  CreateDialogA
  3045. #endif // !UNICODE
  3046. #define CreateDialogIndirectA(hInstance, lpTemplate, hWndParent, lpDialogFunc) 
  3047. CreateDialogIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
  3048. #define CreateDialogIndirectW(hInstance, lpTemplate, hWndParent, lpDialogFunc) 
  3049. CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
  3050. #ifdef UNICODE
  3051. #define CreateDialogIndirect  CreateDialogIndirectW
  3052. #else
  3053. #define CreateDialogIndirect  CreateDialogIndirectA
  3054. #endif // !UNICODE
  3055. WINUSERAPI
  3056. int
  3057. WINAPI
  3058. DialogBoxParamA(
  3059.     HINSTANCE hInstance,
  3060.     LPCSTR lpTemplateName,
  3061.     HWND hWndParent ,
  3062.     DLGPROC lpDialogFunc,
  3063.     LPARAM dwInitParam);
  3064. WINUSERAPI
  3065. int
  3066. WINAPI
  3067. DialogBoxParamW(
  3068.     HINSTANCE hInstance,
  3069.     LPCWSTR lpTemplateName,
  3070.     HWND hWndParent ,
  3071.     DLGPROC lpDialogFunc,
  3072.     LPARAM dwInitParam);
  3073. #ifdef UNICODE
  3074. #define DialogBoxParam  DialogBoxParamW
  3075. #else
  3076. #define DialogBoxParam  DialogBoxParamA
  3077. #endif // !UNICODE
  3078. WINUSERAPI
  3079. int
  3080. WINAPI
  3081. DialogBoxIndirectParamA(
  3082.     HINSTANCE hInstance,
  3083.     LPCDLGTEMPLATEA hDialogTemplate,
  3084.     HWND hWndParent ,
  3085.     DLGPROC lpDialogFunc,
  3086.     LPARAM dwInitParam);
  3087. WINUSERAPI
  3088. int
  3089. WINAPI
  3090. DialogBoxIndirectParamW(
  3091.     HINSTANCE hInstance,
  3092.     LPCDLGTEMPLATEW hDialogTemplate,
  3093.     HWND hWndParent ,
  3094.     DLGPROC lpDialogFunc,
  3095.     LPARAM dwInitParam);
  3096. #ifdef UNICODE
  3097. #define DialogBoxIndirectParam  DialogBoxIndirectParamW
  3098. #else
  3099. #define DialogBoxIndirectParam  DialogBoxIndirectParamA
  3100. #endif // !UNICODE
  3101. #define DialogBoxA(hInstance, lpTemplate, hWndParent, lpDialogFunc) 
  3102. DialogBoxParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
  3103. #define DialogBoxW(hInstance, lpTemplate, hWndParent, lpDialogFunc) 
  3104. DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
  3105. #ifdef UNICODE
  3106. #define DialogBox  DialogBoxW
  3107. #else
  3108. #define DialogBox  DialogBoxA
  3109. #endif // !UNICODE
  3110. #define DialogBoxIndirectA(hInstance, lpTemplate, hWndParent, lpDialogFunc) 
  3111. DialogBoxIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
  3112. #define DialogBoxIndirectW(hInstance, lpTemplate, hWndParent, lpDialogFunc) 
  3113. DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
  3114. #ifdef UNICODE
  3115. #define DialogBoxIndirect  DialogBoxIndirectW
  3116. #else
  3117. #define DialogBoxIndirect  DialogBoxIndirectA
  3118. #endif // !UNICODE
  3119. WINUSERAPI
  3120. BOOL
  3121. WINAPI
  3122. EndDialog(
  3123.     HWND hDlg,
  3124.     int nResult);
  3125. WINUSERAPI
  3126. HWND
  3127. WINAPI
  3128. GetDlgItem(
  3129.     HWND hDlg,
  3130.     int nIDDlgItem);
  3131. WINUSERAPI
  3132. BOOL
  3133. WINAPI
  3134. SetDlgItemInt(
  3135.     HWND hDlg,
  3136.     int nIDDlgItem,
  3137.     UINT uValue,
  3138.     BOOL bSigned);
  3139. WINUSERAPI
  3140. UINT
  3141. WINAPI
  3142. GetDlgItemInt(
  3143.     HWND hDlg,
  3144.     int nIDDlgItem,
  3145.     BOOL *lpTranslated,
  3146.     BOOL bSigned);
  3147. WINUSERAPI
  3148. BOOL
  3149. WINAPI
  3150. SetDlgItemTextA(
  3151.     HWND hDlg,
  3152.     int nIDDlgItem,
  3153.     LPCSTR lpString);
  3154. WINUSERAPI
  3155. BOOL
  3156. WINAPI
  3157. SetDlgItemTextW(
  3158.     HWND hDlg,
  3159.     int nIDDlgItem,
  3160.     LPCWSTR lpString);
  3161. #ifdef UNICODE
  3162. #define SetDlgItemText  SetDlgItemTextW
  3163. #else
  3164. #define SetDlgItemText  SetDlgItemTextA
  3165. #endif // !UNICODE
  3166. WINUSERAPI
  3167. UINT
  3168. WINAPI
  3169. GetDlgItemTextA(
  3170.     HWND hDlg,
  3171.     int nIDDlgItem,
  3172.     LPSTR lpString,
  3173.     int nMaxCount);
  3174. WINUSERAPI
  3175. UINT
  3176. WINAPI
  3177. GetDlgItemTextW(
  3178.     HWND hDlg,
  3179.     int nIDDlgItem,
  3180.     LPWSTR lpString,
  3181.     int nMaxCount);
  3182. #ifdef UNICODE
  3183. #define GetDlgItemText  GetDlgItemTextW
  3184. #else
  3185. #define GetDlgItemText  GetDlgItemTextA
  3186. #endif // !UNICODE
  3187. WINUSERAPI
  3188. BOOL
  3189. WINAPI
  3190. CheckDlgButton(
  3191.     HWND hDlg,
  3192.     int nIDButton,
  3193.     UINT uCheck);
  3194. WINUSERAPI
  3195. BOOL
  3196. WINAPI
  3197. CheckRadioButton(
  3198.     HWND hDlg,
  3199.     int nIDFirstButton,
  3200.     int nIDLastButton,
  3201.     int nIDCheckButton);
  3202. WINUSERAPI
  3203. UINT
  3204. WINAPI
  3205. IsDlgButtonChecked(
  3206.     HWND hDlg,
  3207.     int nIDButton);
  3208. WINUSERAPI
  3209. LONG
  3210. WINAPI
  3211. SendDlgItemMessageA(
  3212.     HWND hDlg,
  3213.     int nIDDlgItem,
  3214.     UINT Msg,
  3215.     WPARAM wParam,
  3216.     LPARAM lParam);
  3217. WINUSERAPI
  3218. LONG
  3219. WINAPI
  3220. SendDlgItemMessageW(
  3221.     HWND hDlg,
  3222.     int nIDDlgItem,
  3223.     UINT Msg,
  3224.     WPARAM wParam,
  3225.     LPARAM lParam);
  3226. #ifdef UNICODE
  3227. #define SendDlgItemMessage  SendDlgItemMessageW
  3228. #else
  3229. #define SendDlgItemMessage  SendDlgItemMessageA
  3230. #endif // !UNICODE
  3231. WINUSERAPI
  3232. HWND
  3233. WINAPI
  3234. GetNextDlgGroupItem(
  3235.     HWND hDlg,
  3236.     HWND hCtl,
  3237.     BOOL bPrevious);
  3238. WINUSERAPI
  3239. HWND
  3240. WINAPI
  3241. GetNextDlgTabItem(
  3242.     HWND hDlg,
  3243.     HWND hCtl,
  3244.     BOOL bPrevious);
  3245. WINUSERAPI
  3246. int
  3247. WINAPI
  3248. GetDlgCtrlID(
  3249.     HWND hWnd);
  3250. WINUSERAPI
  3251. long
  3252. WINAPI
  3253. GetDialogBaseUnits(VOID);
  3254. WINUSERAPI
  3255. LRESULT
  3256. WINAPI
  3257. DefDlgProcA(
  3258.     HWND hDlg,
  3259.     UINT Msg,
  3260.     WPARAM wParam,
  3261.     LPARAM lParam);
  3262. WINUSERAPI
  3263. LRESULT
  3264. WINAPI
  3265. DefDlgProcW(
  3266.     HWND hDlg,
  3267.     UINT Msg,
  3268.     WPARAM wParam,
  3269.     LPARAM lParam);
  3270. #ifdef UNICODE
  3271. #define DefDlgProc  DefDlgProcW
  3272. #else
  3273. #define DefDlgProc  DefDlgProcA
  3274. #endif // !UNICODE
  3275. /*
  3276.  * Window extra byted needed for private dialog classes.
  3277.  */
  3278. #define DLGWINDOWEXTRA 30
  3279. #endif /* !NOCTLMGR */
  3280. #ifndef NOMSG
  3281. WINUSERAPI
  3282. BOOL
  3283. WINAPI
  3284. CallMsgFilterA(
  3285.     LPMSG lpMsg,
  3286.     int nCode);
  3287. WINUSERAPI
  3288. BOOL
  3289. WINAPI
  3290. CallMsgFilterW(
  3291.     LPMSG lpMsg,
  3292.     int nCode);
  3293. #ifdef UNICODE
  3294. #define CallMsgFilter  CallMsgFilterW
  3295. #else
  3296. #define CallMsgFilter  CallMsgFilterA
  3297. #endif // !UNICODE
  3298. #endif /* !NOMSG */
  3299. #ifndef NOCLIPBOARD
  3300. /*
  3301.  * Clipboard Manager Functions
  3302.  */
  3303. WINUSERAPI
  3304. BOOL
  3305. WINAPI
  3306. OpenClipboard(
  3307.     HWND hWndNewOwner);
  3308. WINUSERAPI
  3309. BOOL
  3310. WINAPI
  3311. CloseClipboard(
  3312.     VOID);
  3313. #if (_WIN32_WINDOWS >= 0x040A)
  3314. WINUSERAPI
  3315. DWORD
  3316. WINAPI
  3317. GetClipboardSequenceNumber(
  3318.     VOID);
  3319. #endif
  3320. WINUSERAPI
  3321. HWND
  3322. WINAPI
  3323. GetClipboardOwner(
  3324.     VOID);
  3325. WINUSERAPI
  3326. HWND
  3327. WINAPI
  3328. SetClipboardViewer(
  3329.     HWND hWndNewViewer);
  3330. WINUSERAPI
  3331. HWND
  3332. WINAPI
  3333. GetClipboardViewer(
  3334.     VOID);
  3335. WINUSERAPI
  3336. BOOL
  3337. WINAPI
  3338. ChangeClipboardChain(
  3339.     HWND hWndRemove,
  3340.     HWND hWndNewNext);
  3341. WINUSERAPI
  3342. HANDLE
  3343. WINAPI
  3344. SetClipboardData(
  3345.     UINT uFormat,
  3346.     HANDLE hMem);
  3347. WINUSERAPI
  3348. HANDLE
  3349. WINAPI
  3350.     GetClipboardData(
  3351.     UINT uFormat);
  3352. WINUSERAPI
  3353. UINT
  3354. WINAPI
  3355. RegisterClipboardFormatA(
  3356.     LPCSTR lpszFormat);
  3357. WINUSERAPI
  3358. UINT
  3359. WINAPI
  3360. RegisterClipboardFormatW(
  3361.     LPCWSTR lpszFormat);
  3362. #ifdef UNICODE
  3363. #define RegisterClipboardFormat  RegisterClipboardFormatW
  3364. #else
  3365. #define RegisterClipboardFormat  RegisterClipboardFormatA
  3366. #endif // !UNICODE
  3367. WINUSERAPI
  3368. int
  3369. WINAPI
  3370. CountClipboardFormats(
  3371.     VOID);
  3372. WINUSERAPI
  3373. UINT
  3374. WINAPI
  3375. EnumClipboardFormats(
  3376.     UINT format);
  3377. WINUSERAPI
  3378. int
  3379. WINAPI
  3380. GetClipboardFormatNameA(
  3381.     UINT format,
  3382.     LPSTR lpszFormatName,
  3383.     int cchMaxCount);
  3384. WINUSERAPI
  3385. int
  3386. WINAPI
  3387. GetClipboardFormatNameW(
  3388.     UINT format,
  3389.     LPWSTR lpszFormatName,
  3390.     int cchMaxCount);
  3391. #ifdef UNICODE
  3392. #define GetClipboardFormatName  GetClipboardFormatNameW
  3393. #else
  3394. #define GetClipboardFormatName  GetClipboardFormatNameA
  3395. #endif // !UNICODE
  3396. WINUSERAPI
  3397. BOOL
  3398. WINAPI
  3399. EmptyClipboard(
  3400.     VOID);
  3401. WINUSERAPI
  3402. BOOL
  3403. WINAPI
  3404. IsClipboardFormatAvailable(
  3405.     UINT format);
  3406. WINUSERAPI
  3407. int
  3408. WINAPI
  3409. GetPriorityClipboardFormat(
  3410.     UINT *paFormatPriorityList,
  3411.     int cFormats);
  3412. WINUSERAPI
  3413. HWND
  3414. WINAPI
  3415. GetOpenClipboardWindow(
  3416.     VOID);
  3417. #endif /* !NOCLIPBOARD */
  3418. /*
  3419.  * Character Translation Routines
  3420.  */
  3421. WINUSERAPI
  3422. BOOL
  3423. WINAPI
  3424. CharToOemA(
  3425.     LPCSTR lpszSrc,
  3426.     LPSTR lpszDst);
  3427. WINUSERAPI
  3428. BOOL
  3429. WINAPI
  3430. CharToOemW(
  3431.     LPCWSTR lpszSrc,
  3432.     LPSTR lpszDst);
  3433. #ifdef UNICODE
  3434. #define CharToOem  CharToOemW
  3435. #else
  3436. #define CharToOem  CharToOemA
  3437. #endif // !UNICODE
  3438. WINUSERAPI
  3439. BOOL
  3440. WINAPI
  3441. OemToCharA(
  3442.     LPCSTR lpszSrc,
  3443.     LPSTR lpszDst);
  3444. WINUSERAPI
  3445. BOOL
  3446. WINAPI
  3447. OemToCharW(
  3448.     LPCSTR lpszSrc,
  3449.     LPWSTR lpszDst);
  3450. #ifdef UNICODE
  3451. #define OemToChar  OemToCharW
  3452. #else
  3453. #define OemToChar  OemToCharA
  3454. #endif // !UNICODE
  3455. WINUSERAPI
  3456. BOOL
  3457. WINAPI
  3458. CharToOemBuffA(
  3459.     LPCSTR lpszSrc,
  3460.     LPSTR lpszDst,
  3461.     DWORD cchDstLength);
  3462. WINUSERAPI
  3463. BOOL
  3464. WINAPI
  3465. CharToOemBuffW(
  3466.     LPCWSTR lpszSrc,
  3467.     LPSTR lpszDst,
  3468.     DWORD cchDstLength);
  3469. #ifdef UNICODE
  3470. #define CharToOemBuff  CharToOemBuffW
  3471. #else
  3472. #define CharToOemBuff  CharToOemBuffA
  3473. #endif // !UNICODE
  3474. WINUSERAPI
  3475. BOOL
  3476. WINAPI
  3477. OemToCharBuffA(
  3478.     LPCSTR lpszSrc,
  3479.     LPSTR lpszDst,
  3480.     DWORD cchDstLength);
  3481. WINUSERAPI
  3482. BOOL
  3483. WINAPI
  3484. OemToCharBuffW(
  3485.     LPCSTR lpszSrc,
  3486.     LPWSTR lpszDst,
  3487.     DWORD cchDstLength);
  3488. #ifdef UNICODE
  3489. #define OemToCharBuff  OemToCharBuffW
  3490. #else
  3491. #define OemToCharBuff  OemToCharBuffA
  3492. #endif // !UNICODE
  3493. WINUSERAPI
  3494. LPSTR
  3495. WINAPI
  3496. CharUpperA(
  3497.     LPSTR lpsz);
  3498. WINUSERAPI
  3499. LPWSTR
  3500. WINAPI
  3501. CharUpperW(
  3502.     LPWSTR lpsz);
  3503. #ifdef UNICODE
  3504. #define CharUpper  CharUpperW
  3505. #else
  3506. #define CharUpper  CharUpperA
  3507. #endif // !UNICODE
  3508. WINUSERAPI
  3509. DWORD
  3510. WINAPI
  3511. CharUpperBuffA(
  3512.     LPSTR lpsz,
  3513.     DWORD cchLength);
  3514. WINUSERAPI
  3515. DWORD
  3516. WINAPI
  3517. CharUpperBuffW(
  3518.     LPWSTR lpsz,
  3519.     DWORD cchLength);
  3520. #ifdef UNICODE
  3521. #define CharUpperBuff  CharUpperBuffW
  3522. #else
  3523. #define CharUpperBuff  CharUpperBuffA
  3524. #endif // !UNICODE
  3525. WINUSERAPI
  3526. LPSTR
  3527. WINAPI
  3528. CharLowerA(
  3529.     LPSTR lpsz);
  3530. WINUSERAPI
  3531. LPWSTR
  3532. WINAPI
  3533. CharLowerW(
  3534.     LPWSTR lpsz);
  3535. #ifdef UNICODE
  3536. #define CharLower  CharLowerW
  3537. #else
  3538. #define CharLower  CharLowerA
  3539. #endif // !UNICODE
  3540. WINUSERAPI
  3541. DWORD
  3542. WINAPI
  3543. CharLowerBuffA(
  3544.     LPSTR lpsz,
  3545.     DWORD cchLength);
  3546. WINUSERAPI
  3547. DWORD
  3548. WINAPI
  3549. CharLowerBuffW(
  3550.     LPWSTR lpsz,
  3551.     DWORD cchLength);
  3552. #ifdef UNICODE
  3553. #define CharLowerBuff  CharLowerBuffW
  3554. #else
  3555. #define CharLowerBuff  CharLowerBuffA
  3556. #endif // !UNICODE
  3557. WINUSERAPI
  3558. LPSTR
  3559. WINAPI
  3560. CharNextA(
  3561.     LPCSTR lpsz);
  3562. WINUSERAPI
  3563. LPWSTR
  3564. WINAPI
  3565. CharNextW(
  3566.     LPCWSTR lpsz);
  3567. #ifdef UNICODE
  3568. #define CharNext  CharNextW
  3569. #else
  3570. #define CharNext  CharNextA
  3571. #endif // !UNICODE
  3572. WINUSERAPI
  3573. LPSTR
  3574. WINAPI
  3575. CharPrevA(
  3576.     LPCSTR lpszStart,
  3577.     LPCSTR lpszCurrent);
  3578. WINUSERAPI
  3579. LPWSTR
  3580. WINAPI
  3581. CharPrevW(
  3582.     LPCWSTR lpszStart,
  3583.     LPCWSTR lpszCurrent);
  3584. #ifdef UNICODE
  3585. #define CharPrev  CharPrevW
  3586. #else
  3587. #define CharPrev  CharPrevA
  3588. #endif // !UNICODE
  3589. #if(WINVER >= 0x0400)
  3590. WINUSERAPI
  3591. LPSTR
  3592. WINAPI
  3593. CharNextExA(
  3594.      WORD CodePage,
  3595.      LPCSTR lpCurrentChar,
  3596.      DWORD dwFlags);
  3597. WINUSERAPI
  3598. LPSTR
  3599. WINAPI
  3600. CharPrevExA(
  3601.      WORD CodePage,
  3602.      LPCSTR lpStart,
  3603.      LPCSTR lpCurrentChar,
  3604.      DWORD dwFlags);
  3605. #endif /* WINVER >= 0x0400 */
  3606. /*
  3607.  * Compatibility defines for character translation routines
  3608.  */
  3609. #define AnsiToOem CharToOemA
  3610. #define OemToAnsi OemToCharA
  3611. #define AnsiToOemBuff CharToOemBuffA
  3612. #define OemToAnsiBuff OemToCharBuffA
  3613. #define AnsiUpper CharUpperA
  3614. #define AnsiUpperBuff CharUpperBuffA
  3615. #define AnsiLower CharLowerA
  3616. #define AnsiLowerBuff CharLowerBuffA
  3617. #define AnsiNext CharNextA
  3618. #define AnsiPrev CharPrevA
  3619. #ifndef  NOLANGUAGE
  3620. /*
  3621.  * Language dependent Routines
  3622.  */
  3623. WINUSERAPI
  3624. BOOL
  3625. WINAPI
  3626. IsCharAlphaA(
  3627.     CHAR ch);
  3628. WINUSERAPI
  3629. BOOL
  3630. WINAPI
  3631. IsCharAlphaW(
  3632.     WCHAR ch);
  3633. #ifdef UNICODE
  3634. #define IsCharAlpha  IsCharAlphaW
  3635. #else
  3636. #define IsCharAlpha  IsCharAlphaA
  3637. #endif // !UNICODE
  3638. WINUSERAPI
  3639. BOOL
  3640. WINAPI
  3641. IsCharAlphaNumericA(
  3642.     CHAR ch);
  3643. WINUSERAPI
  3644. BOOL
  3645. WINAPI
  3646. IsCharAlphaNumericW(
  3647.     WCHAR ch);
  3648. #ifdef UNICODE
  3649. #define IsCharAlphaNumeric  IsCharAlphaNumericW
  3650. #else
  3651. #define IsCharAlphaNumeric  IsCharAlphaNumericA
  3652. #endif // !UNICODE
  3653. WINUSERAPI
  3654. BOOL
  3655. WINAPI
  3656. IsCharUpperA(
  3657.     CHAR ch);
  3658. WINUSERAPI
  3659. BOOL
  3660. WINAPI
  3661. IsCharUpperW(
  3662.     WCHAR ch);
  3663. #ifdef UNICODE
  3664. #define IsCharUpper  IsCharUpperW
  3665. #else
  3666. #define IsCharUpper  IsCharUpperA
  3667. #endif // !UNICODE
  3668. WINUSERAPI
  3669. BOOL
  3670. WINAPI
  3671. IsCharLowerA(
  3672.     CHAR ch);
  3673. WINUSERAPI
  3674. BOOL
  3675. WINAPI
  3676. IsCharLowerW(
  3677.     WCHAR ch);
  3678. #ifdef UNICODE
  3679. #define IsCharLower  IsCharLowerW
  3680. #else
  3681. #define IsCharLower  IsCharLowerA
  3682. #endif // !UNICODE
  3683. #endif  /* !NOLANGUAGE */
  3684. WINUSERAPI
  3685. HWND
  3686. WINAPI
  3687. SetFocus(
  3688.     HWND hWnd);
  3689. WINUSERAPI
  3690. HWND
  3691. WINAPI
  3692. GetActiveWindow(
  3693.     VOID);
  3694. WINUSERAPI
  3695. HWND
  3696. WINAPI
  3697. GetFocus(
  3698.     VOID);
  3699. WINUSERAPI
  3700. UINT
  3701. WINAPI
  3702. GetKBCodePage(
  3703.     VOID);
  3704. WINUSERAPI
  3705. SHORT
  3706. WINAPI
  3707. GetKeyState(
  3708.     int nVirtKey);
  3709. WINUSERAPI
  3710. SHORT
  3711. WINAPI
  3712. GetAsyncKeyState(
  3713.     int vKey);
  3714. WINUSERAPI
  3715. BOOL
  3716. WINAPI
  3717. GetKeyboardState(
  3718.     PBYTE lpKeyState);
  3719. WINUSERAPI
  3720. BOOL
  3721. WINAPI
  3722. SetKeyboardState(
  3723.     LPBYTE lpKeyState);
  3724. WINUSERAPI
  3725. int
  3726. WINAPI
  3727. GetKeyNameTextA(
  3728.     LONG lParam,
  3729.     LPSTR lpString,
  3730.     int nSize
  3731.     );
  3732. WINUSERAPI
  3733. int
  3734. WINAPI
  3735. GetKeyNameTextW(
  3736.     LONG lParam,
  3737.     LPWSTR lpString,
  3738.     int nSize
  3739.     );
  3740. #ifdef UNICODE
  3741. #define GetKeyNameText  GetKeyNameTextW
  3742. #else
  3743. #define GetKeyNameText  GetKeyNameTextA
  3744. #endif // !UNICODE
  3745. WINUSERAPI
  3746. int
  3747. WINAPI
  3748. GetKeyboardType(
  3749.     int nTypeFlag);
  3750. WINUSERAPI
  3751. int
  3752. WINAPI
  3753. ToAscii(
  3754.     UINT uVirtKey,
  3755.     UINT uScanCode,
  3756.     PBYTE lpKeyState,
  3757.     LPWORD lpChar,
  3758.     UINT uFlags);
  3759. #if(WINVER >= 0x0400)
  3760. WINUSERAPI
  3761. int
  3762. WINAPI
  3763. ToAsciiEx(
  3764.     UINT uVirtKey,
  3765.     UINT uScanCode,
  3766.     PBYTE lpKeyState,
  3767.     LPWORD lpChar,
  3768.     UINT uFlags,
  3769.     HKL dwhkl);
  3770. #endif /* WINVER >= 0x0400 */
  3771. WINUSERAPI
  3772. int
  3773. WINAPI
  3774. ToUnicode(
  3775.     UINT wVirtKey,
  3776.     UINT wScanCode,
  3777.     PBYTE lpKeyState,
  3778.     LPWSTR pwszBuff,
  3779.     int cchBuff,
  3780.     UINT wFlags);
  3781. WINUSERAPI
  3782. DWORD
  3783. WINAPI
  3784. OemKeyScan(
  3785.     WORD wOemChar);
  3786. WINUSERAPI
  3787. SHORT
  3788. WINAPI
  3789. VkKeyScanA(
  3790.     CHAR ch);
  3791. WINUSERAPI
  3792. SHORT
  3793. WINAPI
  3794. VkKeyScanW(
  3795.     WCHAR ch);
  3796. #ifdef UNICODE
  3797. #define VkKeyScan  VkKeyScanW
  3798. #else
  3799. #define VkKeyScan  VkKeyScanA
  3800. #endif // !UNICODE
  3801. #if(WINVER >= 0x0400)
  3802. WINUSERAPI
  3803. SHORT
  3804. WINAPI VkKeyScanExA(
  3805.     CHAR  ch,
  3806.     HKL   dwhkl);
  3807. WINUSERAPI
  3808. SHORT
  3809. WINAPI VkKeyScanExW(
  3810.     WCHAR  ch,
  3811.     HKL   dwhkl);
  3812. #ifdef UNICODE
  3813. #define VkKeyScanEx  VkKeyScanExW
  3814. #else
  3815. #define VkKeyScanEx  VkKeyScanExA
  3816. #endif // !UNICODE
  3817. #endif /* WINVER >= 0x0400 */
  3818. #define KEYEVENTF_EXTENDEDKEY 0x0001
  3819. #define KEYEVENTF_KEYUP       0x0002
  3820. #if (_WIN32_WINDOWS >= 0x045A)
  3821. #define KEYEVENTF_UNICODE     0x0004
  3822. #define KEYEVENTF_SCANCODE    0x0008
  3823. #endif // (_WIN32_WINDOWS >= 0x045A)
  3824. WINUSERAPI
  3825. VOID
  3826. WINAPI
  3827. keybd_event(
  3828.     BYTE bVk,
  3829.     BYTE bScan,
  3830.     DWORD dwFlags,
  3831.     DWORD dwExtraInfo);
  3832. #define MOUSEEVENTF_MOVE        0x0001 /* mouse move */
  3833. #define MOUSEEVENTF_LEFTDOWN    0x0002 /* left button down */
  3834. #define MOUSEEVENTF_LEFTUP      0x0004 /* left button up */
  3835. #define MOUSEEVENTF_RIGHTDOWN   0x0008 /* right button down */
  3836. #define MOUSEEVENTF_RIGHTUP     0x0010 /* right button up */
  3837. #define MOUSEEVENTF_MIDDLEDOWN  0x0020 /* middle button down */
  3838. #define MOUSEEVENTF_MIDDLEUP    0x0040 /* middle button up */
  3839. #define MOUSEEVENTF_WHEEL       0x0800 /* wheel button rolled */
  3840. #define MOUSEEVENTF_ABSOLUTE    0x8000 /* absolute move */
  3841. WINUSERAPI
  3842. VOID
  3843. WINAPI
  3844. mouse_event(
  3845.     DWORD dwFlags,
  3846.     DWORD dx,
  3847.     DWORD dy,
  3848.     DWORD dwData,
  3849.     DWORD dwExtraInfo);
  3850. #if (_WIN32_WINDOWS > 0x040A)
  3851. typedef struct tagMOUSEINPUT {
  3852.     LONG    dx;
  3853.     LONG    dy;
  3854.     DWORD   mouseData;
  3855.     DWORD   dwFlags;
  3856.     DWORD   time;
  3857.     DWORD   dwExtraInfo;
  3858. } MOUSEINPUT, *PMOUSEINPUT, FAR* LPMOUSEINPUT;
  3859. typedef struct tagKEYBDINPUT {
  3860.     WORD    wVk;
  3861.     WORD    wScan;
  3862.     DWORD   dwFlags;
  3863.     DWORD   time;
  3864.     DWORD   dwExtraInfo;
  3865. } KEYBDINPUT, *PKEYBDINPUT, FAR* LPKEYBDINPUT;
  3866. typedef struct tagHARDWAREINPUT {
  3867.     DWORD   uMsg;
  3868.     WORD    wParamL;
  3869.     WORD    wParamH;
  3870. } HARDWAREINPUT, *PHARDWAREINPUT, FAR* LPHARDWAREINPUT;
  3871. #define INPUT_MOUSE     0
  3872. #define INPUT_KEYBOARD  1
  3873. #define INPUT_HARDWARE  2
  3874. typedef struct tagINPUT {
  3875.     DWORD   type;
  3876.     union
  3877.     {
  3878. MOUSEINPUT      mi;
  3879. KEYBDINPUT      ki;
  3880. HARDWAREINPUT   hi;
  3881.     };
  3882. } INPUT, *PINPUT, FAR* LPINPUT;
  3883. WINUSERAPI
  3884. UINT
  3885. WINAPI
  3886. SendInput(
  3887.     UINT    cInputs,     // number of input in the array
  3888.     LPINPUT pInputs,     // array of inputs
  3889.     int     cbSize);     // sizeof(INPUT)
  3890. #endif // (_WIN32_WINDOWS > 0x040A)
  3891. WINUSERAPI
  3892. UINT
  3893. WINAPI
  3894. MapVirtualKeyA(
  3895.     UINT uCode,
  3896.     UINT uMapType);
  3897. WINUSERAPI
  3898. UINT
  3899. WINAPI
  3900. MapVirtualKeyW(
  3901.     UINT uCode,
  3902.     UINT uMapType);
  3903. #ifdef UNICODE
  3904. #define MapVirtualKey  MapVirtualKeyW
  3905. #else
  3906. #define MapVirtualKey  MapVirtualKeyA
  3907. #endif // !UNICODE
  3908. #if(WINVER >= 0x0400)
  3909. WINUSERAPI
  3910. UINT
  3911. WINAPI
  3912. MapVirtualKeyExA(
  3913.     UINT uCode,
  3914.     UINT uMapType,
  3915.     HKL dwhkl);
  3916. WINUSERAPI
  3917. UINT
  3918. WINAPI
  3919. MapVirtualKeyExW(
  3920.     UINT uCode,
  3921.     UINT uMapType,
  3922.     HKL dwhkl);
  3923. #ifdef UNICODE
  3924. #define MapVirtualKeyEx  MapVirtualKeyExW
  3925. #else
  3926. #define MapVirtualKeyEx  MapVirtualKeyExA
  3927. #endif // !UNICODE
  3928. #endif /* WINVER >= 0x0400 */
  3929. WINUSERAPI
  3930. BOOL
  3931. WINAPI
  3932. GetInputState(
  3933.     VOID);
  3934. WINUSERAPI
  3935. DWORD
  3936. WINAPI
  3937. GetQueueStatus(
  3938.     UINT flags);
  3939. WINUSERAPI
  3940. HWND
  3941. WINAPI
  3942. GetCapture(
  3943.     VOID);
  3944. WINUSERAPI
  3945. HWND
  3946. WINAPI
  3947. SetCapture(
  3948.     HWND hWnd);
  3949. WINUSERAPI
  3950. BOOL
  3951. WINAPI
  3952. ReleaseCapture(
  3953.     VOID);
  3954. WINUSERAPI
  3955. DWORD
  3956. WINAPI
  3957. MsgWaitForMultipleObjects(
  3958.     DWORD nCount,
  3959.     LPHANDLE pHandles,
  3960.     BOOL fWaitAll,
  3961.     DWORD dwMilliseconds,
  3962.     DWORD dwWakeMask);
  3963. WINUSERAPI
  3964. DWORD
  3965. WINAPI
  3966. MsgWaitForMultipleObjectsEx(
  3967.     DWORD nCount,
  3968.     LPHANDLE pHandles,
  3969.     DWORD dwMilliseconds,
  3970.     DWORD dwWakeMask,
  3971.     DWORD dwFlags);
  3972. #define MWMO_WAITALL         0x0001
  3973. #define MWMO_ALERTABLE       0x0002
  3974. #define MWMO_INPUTAVAILABLE  0x0004  
  3975. /*
  3976.  * Queue status flags for GetQueueStatus() and MsgWaitForMultipleObjects()
  3977.  */
  3978. #define QS_KEY              0x0001
  3979. #define QS_MOUSEMOVE        0x0002
  3980. #define QS_MOUSEBUTTON      0x0004
  3981. #define QS_POSTMESSAGE      0x0008
  3982. #define QS_TIMER            0x0010
  3983. #define QS_PAINT            0x0020
  3984. #define QS_SENDMESSAGE      0x0040
  3985. #define QS_HOTKEY           0x0080
  3986. #define QS_ALLPOSTMESSAGE   0x0100
  3987. #define QS_MOUSE           (QS_MOUSEMOVE     | 
  3988.     QS_MOUSEBUTTON)
  3989. #define QS_INPUT           (QS_MOUSE         | 
  3990.     QS_KEY)
  3991. #define QS_ALLEVENTS       (QS_INPUT         | 
  3992.     QS_POSTMESSAGE   | 
  3993.     QS_TIMER         | 
  3994.     QS_PAINT         | 
  3995.     QS_HOTKEY)
  3996. #define QS_ALLINPUT        (QS_INPUT         | 
  3997.     QS_POSTMESSAGE   | 
  3998.     QS_TIMER         | 
  3999.     QS_PAINT         | 
  4000.     QS_HOTKEY        | 
  4001.     QS_SENDMESSAGE)
  4002. /*
  4003.  * Windows Functions
  4004.  */
  4005. WINUSERAPI
  4006. UINT
  4007. WINAPI
  4008. SetTimer(
  4009.     HWND hWnd ,
  4010.     UINT nIDEvent,
  4011.     UINT uElapse,
  4012.     TIMERPROC lpTimerFunc);
  4013. WINUSERAPI
  4014. BOOL
  4015. WINAPI
  4016. KillTimer(
  4017.     HWND hWnd,
  4018.     UINT uIDEvent);
  4019. WINUSERAPI
  4020. BOOL
  4021. WINAPI
  4022. IsWindowUnicode(
  4023.     HWND hWnd);
  4024. WINUSERAPI
  4025. BOOL
  4026. WINAPI
  4027. EnableWindow(
  4028.     HWND hWnd,
  4029.     BOOL bEnable);
  4030. WINUSERAPI
  4031. BOOL
  4032. WINAPI
  4033. IsWindowEnabled(
  4034.     HWND hWnd);
  4035. WINUSERAPI
  4036. HACCEL
  4037. WINAPI
  4038. LoadAcceleratorsA(
  4039.     HINSTANCE hInstance,
  4040.     LPCSTR lpTableName);
  4041. WINUSERAPI
  4042. HACCEL
  4043. WINAPI
  4044. LoadAcceleratorsW(
  4045.     HINSTANCE hInstance,
  4046.     LPCWSTR lpTableName);
  4047. #ifdef UNICODE
  4048. #define LoadAccelerators  LoadAcceleratorsW
  4049. #else
  4050. #define LoadAccelerators  LoadAcceleratorsA
  4051. #endif // !UNICODE
  4052. WINUSERAPI
  4053. HACCEL
  4054. WINAPI
  4055. CreateAcceleratorTableA(
  4056.     LPACCEL, int);
  4057. WINUSERAPI
  4058. HACCEL
  4059. WINAPI
  4060. CreateAcceleratorTableW(
  4061.     LPACCEL, int);
  4062. #ifdef UNICODE
  4063. #define CreateAcceleratorTable  CreateAcceleratorTableW
  4064. #else
  4065. #define CreateAcceleratorTable  CreateAcceleratorTableA
  4066. #endif // !UNICODE
  4067. WINUSERAPI
  4068. BOOL
  4069. WINAPI
  4070. DestroyAcceleratorTable(
  4071.     HACCEL hAccel);
  4072. WINUSERAPI
  4073. int
  4074. WINAPI
  4075. CopyAcceleratorTableA(
  4076.     HACCEL hAccelSrc,
  4077.     LPACCEL lpAccelDst,
  4078.     int cAccelEntries);
  4079. WINUSERAPI
  4080. int
  4081. WINAPI
  4082. CopyAcceleratorTableW(
  4083.     HACCEL hAccelSrc,
  4084.     LPACCEL lpAccelDst,
  4085.     int cAccelEntries);
  4086. #ifdef UNICODE
  4087. #define CopyAcceleratorTable  CopyAcceleratorTableW
  4088. #else
  4089. #define CopyAcceleratorTable  CopyAcceleratorTableA
  4090. #endif // !UNICODE
  4091. #ifndef NOMSG
  4092. WINUSERAPI
  4093. int
  4094. WINAPI
  4095. TranslateAcceleratorA(
  4096.     HWND hWnd,
  4097.     HACCEL hAccTable,
  4098.     LPMSG lpMsg);
  4099. WINUSERAPI
  4100. int
  4101. WINAPI
  4102. TranslateAcceleratorW(
  4103.     HWND hWnd,
  4104.     HACCEL hAccTable,
  4105.     LPMSG lpMsg);
  4106. #ifdef UNICODE
  4107. #define TranslateAccelerator  TranslateAcceleratorW
  4108. #else
  4109. #define TranslateAccelerator  TranslateAcceleratorA
  4110. #endif // !UNICODE
  4111. #endif /* !NOMSG */
  4112. #ifndef NOSYSMETRICS
  4113. /*
  4114.  * GetSystemMetrics() codes
  4115.  */
  4116. #define SM_CXSCREEN             0
  4117. #define SM_CYSCREEN             1
  4118. #define SM_CXVSCROLL            2
  4119. #define SM_CYHSCROLL            3
  4120. #define SM_CYCAPTION            4
  4121. #define SM_CXBORDER             5
  4122. #define SM_CYBORDER             6
  4123. #define SM_CXDLGFRAME           7
  4124. #define SM_CYDLGFRAME           8
  4125. #define SM_CYVTHUMB             9
  4126. #define SM_CXHTHUMB             10
  4127. #define SM_CXICON               11
  4128. #define SM_CYICON               12
  4129. #define SM_CXCURSOR             13
  4130. #define SM_CYCURSOR             14
  4131. #define SM_CYMENU               15
  4132. #define SM_CXFULLSCREEN         16
  4133. #define SM_CYFULLSCREEN         17
  4134. #define SM_CYKANJIWINDOW        18
  4135. #define SM_MOUSEPRESENT         19
  4136. #define SM_CYVSCROLL            20
  4137. #define SM_CXHSCROLL            21
  4138. #define SM_DEBUG                22
  4139. #define SM_SWAPBUTTON           23
  4140. #define SM_RESERVED1            24
  4141. #define SM_RESERVED2            25
  4142. #define SM_RESERVED3            26
  4143. #define SM_RESERVED4            27
  4144. #define SM_CXMIN                28
  4145. #define SM_CYMIN                29
  4146. #define SM_CXSIZE               30
  4147. #define SM_CYSIZE               31
  4148. #define SM_CXFRAME              32
  4149. #define SM_CYFRAME              33
  4150. #define SM_CXMINTRACK           34
  4151. #define SM_CYMINTRACK           35
  4152. #define SM_CXDOUBLECLK          36
  4153. #define SM_CYDOUBLECLK          37
  4154. #define SM_CXICONSPACING        38
  4155. #define SM_CYICONSPACING        39
  4156. #define SM_MENUDROPALIGNMENT    40
  4157. #define SM_PENWINDOWS           41
  4158. #define SM_DBCSENABLED          42
  4159. #define SM_CMOUSEBUTTONS        43
  4160. #if(WINVER >= 0x0400)
  4161. #define SM_CXFIXEDFRAME           SM_CXDLGFRAME  /* ;win40 name change */
  4162. #define SM_CYFIXEDFRAME           SM_CYDLGFRAME  /* ;win40 name change */
  4163. #define SM_CXSIZEFRAME            SM_CXFRAME     /* ;win40 name change */
  4164. #define SM_CYSIZEFRAME            SM_CYFRAME     /* ;win40 name change */
  4165. #define SM_SECURE               44
  4166. #define SM_CXEDGE               45
  4167. #define SM_CYEDGE               46
  4168. #define SM_CXMINSPACING         47
  4169. #define SM_CYMINSPACING         48
  4170. #define SM_CXSMICON             49
  4171. #define SM_CYSMICON             50
  4172. #define SM_CYSMCAPTION          51
  4173. #define SM_CXSMSIZE             52
  4174. #define SM_CYSMSIZE             53
  4175. #define SM_CXMENUSIZE           54
  4176. #define SM_CYMENUSIZE           55
  4177. #define SM_ARRANGE              56
  4178. #define SM_CXMINIMIZED          57
  4179. #define SM_CYMINIMIZED          58
  4180. #define SM_CXMAXTRACK           59
  4181. #define SM_CYMAXTRACK           60
  4182. #define SM_CXMAXIMIZED          61
  4183. #define SM_CYMAXIMIZED          62
  4184. #define SM_NETWORK              63
  4185. #define SM_CLEANBOOT            67
  4186. #define SM_CXDRAG               68
  4187. #define SM_CYDRAG               69
  4188. #endif /* WINVER >= 0x0400 */
  4189. #define SM_SHOWSOUNDS           70
  4190. #if(WINVER >= 0x0400)
  4191. #define SM_CXMENUCHECK          71   /* Use instead of GetMenuCheckMarkDimensions()! */
  4192. #define SM_CYMENUCHECK          72
  4193. #define SM_SLOWMACHINE          73
  4194. #define SM_MIDEASTENABLED       74
  4195. #endif /* WINVER >= 0x0400 */
  4196. #if (_WIN32_WINDOWS >= 0x040A)
  4197. #define SM_MOUSEWHEELPRESENT    75
  4198. #define SM_XVIRTUALSCREEN       76
  4199. #define SM_YVIRTUALSCREEN       77
  4200. #define SM_CXVIRTUALSCREEN      78
  4201. #define SM_CYVIRTUALSCREEN      79
  4202. #define SM_CMONITORS            80
  4203. #define SM_SAMEDISPLAYFORMAT    81
  4204. #endif // if (_WIN32_WINDOWS >= 0x040A)
  4205. #if (_WIN32_WINDOWS < 0x0400)
  4206. #define SM_CMETRICS             75
  4207. #elif (_WIN32_WINDOWS < 0x040A)
  4208. #define SM_CMETRICS             76
  4209. #else
  4210. #define SM_CMETRICS             82
  4211. #endif
  4212. WINUSERAPI
  4213. int
  4214. WINAPI
  4215. GetSystemMetrics(
  4216.     int nIndex);
  4217. #endif /* !NOSYSMETRICS */
  4218. #ifndef NOMENUS
  4219. WINUSERAPI
  4220. HMENU
  4221. WINAPI
  4222. LoadMenuA(
  4223.     HINSTANCE hInstance,
  4224.     LPCSTR lpMenuName);
  4225. WINUSERAPI
  4226. HMENU
  4227. WINAPI
  4228. LoadMenuW(
  4229.     HINSTANCE hInstance,
  4230.     LPCWSTR lpMenuName);
  4231. #ifdef UNICODE
  4232. #define LoadMenu  LoadMenuW
  4233. #else
  4234. #define LoadMenu  LoadMenuA
  4235. #endif // !UNICODE
  4236. WINUSERAPI
  4237. HMENU
  4238. WINAPI
  4239. LoadMenuIndirectA(
  4240.     CONST MENUTEMPLATEA *lpMenuTemplate);
  4241. WINUSERAPI
  4242. HMENU
  4243. WINAPI
  4244. LoadMenuIndirectW(
  4245.     CONST MENUTEMPLATEW *lpMenuTemplate);
  4246. #ifdef UNICODE
  4247. #define LoadMenuIndirect  LoadMenuIndirectW
  4248. #else
  4249. #define LoadMenuIndirect  LoadMenuIndirectA
  4250. #endif // !UNICODE
  4251. WINUSERAPI
  4252. HMENU
  4253. WINAPI
  4254. GetMenu(
  4255.     HWND hWnd);
  4256. WINUSERAPI
  4257. BOOL
  4258. WINAPI
  4259. SetMenu(
  4260.     HWND hWnd,
  4261.     HMENU hMenu);
  4262. WINUSERAPI
  4263. BOOL
  4264. WINAPI
  4265. ChangeMenuA(
  4266.     HMENU hMenu,
  4267.     UINT cmd,
  4268.     LPCSTR lpszNewItem,
  4269.     UINT cmdInsert,
  4270.     UINT flags);
  4271. WINUSERAPI
  4272. BOOL
  4273. WINAPI
  4274. ChangeMenuW(
  4275.     HMENU hMenu,
  4276.     UINT cmd,
  4277.     LPCWSTR lpszNewItem,
  4278.     UINT cmdInsert,
  4279.     UINT flags);
  4280. #ifdef UNICODE
  4281. #define ChangeMenu  ChangeMenuW
  4282. #else
  4283. #define ChangeMenu  ChangeMenuA
  4284. #endif // !UNICODE
  4285. WINUSERAPI
  4286. BOOL
  4287. WINAPI
  4288. HiliteMenuItem(
  4289.     HWND hWnd,
  4290.     HMENU hMenu,
  4291.     UINT uIDHiliteItem,
  4292.     UINT uHilite);
  4293. WINUSERAPI
  4294. int
  4295. WINAPI
  4296. GetMenuStringA(
  4297.     HMENU hMenu,
  4298.     UINT uIDItem,
  4299.     LPSTR lpString,
  4300.     int nMaxCount,
  4301.     UINT uFlag);
  4302. WINUSERAPI
  4303. int
  4304. WINAPI
  4305. GetMenuStringW(
  4306.     HMENU hMenu,
  4307.     UINT uIDItem,
  4308.     LPWSTR lpString,
  4309.     int nMaxCount,
  4310.     UINT uFlag);
  4311. #ifdef UNICODE
  4312. #define GetMenuString  GetMenuStringW
  4313. #else
  4314. #define GetMenuString  GetMenuStringA
  4315. #endif // !UNICODE
  4316. WINUSERAPI
  4317. UINT
  4318. WINAPI
  4319. GetMenuState(
  4320.     HMENU hMenu,
  4321.     UINT uId,
  4322.     UINT uFlags);
  4323. WINUSERAPI
  4324. BOOL
  4325. WINAPI
  4326. DrawMenuBar(
  4327.     HWND hWnd);
  4328. WINUSERAPI
  4329. HMENU
  4330. WINAPI
  4331. GetSystemMenu(
  4332.     HWND hWnd,
  4333.     BOOL bRevert);
  4334. WINUSERAPI
  4335. HMENU
  4336. WINAPI
  4337. CreateMenu(
  4338.     VOID);
  4339. WINUSERAPI
  4340. HMENU
  4341. WINAPI
  4342. CreatePopupMenu(
  4343.     VOID);
  4344. WINUSERAPI
  4345. BOOL
  4346. WINAPI
  4347. DestroyMenu(
  4348.     HMENU hMenu);
  4349. WINUSERAPI
  4350. DWORD
  4351. WINAPI
  4352. CheckMenuItem(
  4353.     HMENU hMenu,
  4354.     UINT uIDCheckItem,
  4355.     UINT uCheck);
  4356. WINUSERAPI
  4357. BOOL
  4358. WINAPI
  4359. EnableMenuItem(
  4360.     HMENU hMenu,
  4361.     UINT uIDEnableItem,
  4362.     UINT uEnable);
  4363. WINUSERAPI
  4364. HMENU
  4365. WINAPI
  4366. GetSubMenu(
  4367.     HMENU hMenu,
  4368.     int nPos);
  4369. WINUSERAPI
  4370. UINT
  4371. WINAPI
  4372. GetMenuItemID(
  4373.     HMENU hMenu,
  4374.     int nPos);
  4375. WINUSERAPI
  4376. int
  4377. WINAPI
  4378. GetMenuItemCount(
  4379.     HMENU hMenu);
  4380. WINUSERAPI
  4381. BOOL
  4382. WINAPI
  4383. InsertMenuA(
  4384.     HMENU hMenu,
  4385.     UINT uPosition,
  4386.     UINT uFlags,
  4387.     UINT uIDNewItem,
  4388.     LPCSTR lpNewItem
  4389.     );
  4390. WINUSERAPI
  4391. BOOL
  4392. WINAPI
  4393. InsertMenuW(
  4394.     HMENU hMenu,
  4395.     UINT uPosition,
  4396.     UINT uFlags,
  4397.     UINT uIDNewItem,
  4398.     LPCWSTR lpNewItem
  4399.     );
  4400. #ifdef UNICODE
  4401. #define InsertMenu  InsertMenuW
  4402. #else
  4403. #define InsertMenu  InsertMenuA
  4404. #endif // !UNICODE
  4405. WINUSERAPI
  4406. BOOL
  4407. WINAPI
  4408. AppendMenuA(
  4409.     HMENU hMenu,
  4410.     UINT uFlags,
  4411.     UINT uIDNewItem,
  4412.     LPCSTR lpNewItem
  4413.     );
  4414. WINUSERAPI
  4415. BOOL
  4416. WINAPI
  4417. AppendMenuW(
  4418.     HMENU hMenu,
  4419.     UINT uFlags,
  4420.     UINT uIDNewItem,
  4421.     LPCWSTR lpNewItem
  4422.     );
  4423. #ifdef UNICODE
  4424. #define AppendMenu  AppendMenuW
  4425. #else
  4426. #define AppendMenu  AppendMenuA
  4427. #endif // !UNICODE
  4428. WINUSERAPI
  4429. BOOL
  4430. WINAPI
  4431. ModifyMenuA(
  4432.     HMENU hMnu,
  4433.     UINT uPosition,
  4434.     UINT uFlags,
  4435.     UINT uIDNewItem,
  4436.     LPCSTR lpNewItem
  4437.     );
  4438. WINUSERAPI
  4439. BOOL
  4440. WINAPI
  4441. ModifyMenuW(
  4442.     HMENU hMnu,
  4443.     UINT uPosition,
  4444.     UINT uFlags,
  4445.     UINT uIDNewItem,
  4446.     LPCWSTR lpNewItem
  4447.     );
  4448. #ifdef UNICODE
  4449. #define ModifyMenu  ModifyMenuW
  4450. #else
  4451. #define ModifyMenu  ModifyMenuA
  4452. #endif // !UNICODE
  4453. WINUSERAPI
  4454. BOOL
  4455. WINAPI RemoveMenu(
  4456.     HMENU hMenu,
  4457.     UINT uPosition,
  4458.     UINT uFlags);
  4459. WINUSERAPI
  4460. BOOL
  4461. WINAPI
  4462. DeleteMenu(
  4463.     HMENU hMenu,
  4464.     UINT uPosition,
  4465.     UINT uFlags);
  4466. WINUSERAPI
  4467. BOOL
  4468. WINAPI
  4469. SetMenuItemBitmaps(
  4470.     HMENU hMenu,
  4471.     UINT uPosition,
  4472.     UINT uFlags,
  4473.     HBITMAP hBitmapUnchecked,
  4474.     HBITMAP hBitmapChecked);
  4475. WINUSERAPI
  4476. LONG
  4477. WINAPI
  4478. GetMenuCheckMarkDimensions(
  4479.     VOID);
  4480. WINUSERAPI
  4481. BOOL
  4482. WINAPI
  4483. TrackPopupMenu(
  4484.     HMENU hMenu,
  4485.     UINT uFlags,
  4486.     int x,
  4487.     int y,
  4488.     int nReserved,
  4489.     HWND hWnd,
  4490.     CONST RECT *prcRect);
  4491. #if(WINVER >= 0x0400)
  4492. /* return codes for WM_MENUCHAR */
  4493. #define MNC_IGNORE  0
  4494. #define MNC_CLOSE   1
  4495. #define MNC_EXECUTE 2
  4496. #define MNC_SELECT  3
  4497. typedef struct tagTPMPARAMS
  4498. {
  4499.     UINT    cbSize;     /* Size of structure */
  4500.     RECT    rcExclude;  /* Screen coordinates of rectangle to exclude when positioning */
  4501. }   TPMPARAMS;
  4502. typedef TPMPARAMS FAR *LPTPMPARAMS;
  4503. WINUSERAPI BOOL    WINAPI TrackPopupMenuEx(HMENU, UINT, int, int, HWND, LPTPMPARAMS);
  4504. #endif /* WINVER >= 0x0400 */
  4505. #if(_WIN32_WINDOWS >= 0x040a)
  4506. #define MNS_NOCHECK          0x80000000
  4507. #define MNS_MODELESS         0x40000000
  4508. #define MNS_DRAGDROP         0x20000000
  4509. #define MNS_AUTODISMISS      0x10000000
  4510. #define MNS_NOTIFYBYPOS      0x08000000
  4511. #define MNS_CHECKORBMP       0x04000000   
  4512. #define MIM_MAXHEIGHT               0x00000001
  4513. #define MIM_BACKGROUND              0x00000002
  4514. #define MIM_HELPID                  0x00000004
  4515. #define MIM_MENUDATA                0x00000008
  4516. #define MIM_STYLE                   0x00000010
  4517. #define MIM_APPLYTOSUBMENUS         0x80000000
  4518. typedef struct tagMENUINFO
  4519. {
  4520.     DWORD   cbSize;
  4521.     DWORD   fMask;
  4522.     DWORD   dwStyle;
  4523.     UINT    cyMax;
  4524.     HBRUSH  hbrBack;
  4525.     DWORD   dwContextHelpID;
  4526.     DWORD   dwMenuData;
  4527. }   MENUINFO, FAR *LPMENUINFO;
  4528. typedef MENUINFO CONST FAR *LPCMENUINFO;
  4529. WINUSERAPI
  4530. BOOL
  4531. WINAPI
  4532. GetMenuInfo(
  4533.      HMENU,
  4534.      LPMENUINFO);
  4535. WINUSERAPI
  4536. BOOL
  4537. WINAPI
  4538. SetMenuInfo(
  4539.      HMENU,
  4540.      LPCMENUINFO);
  4541. WINUSERAPI
  4542. BOOL
  4543. WINAPI
  4544. EndMenu(
  4545. VOID);
  4546. /*
  4547.  * WM_MENUDODRAGDROP return values.
  4548.  */
  4549. #define MNDD_CONTINUE   0
  4550. #define MNDD_ENDMENU    1
  4551. typedef struct tagMENUGETOBJECTINFO
  4552. {
  4553.     DWORD dwFlags;