Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /**
  2.  * This file has no copyright assigned and is placed in the Public Domain.
  3.  * This file is part of the w64 mingw-runtime package.
  4.  * No warranty is given; refer to the file DISCLAIMER within this package.
  5.  */
  6. #ifndef _WINUSER_
  7. #define _WINUSER_
  8.  
  9. #define WINUSERAPI DECLSPEC_IMPORT
  10.  
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14.  
  15. #ifndef WINVER
  16. #define WINVER 0x0502
  17. #endif
  18.  
  19. #include <stdarg.h>
  20.  
  21. #ifndef NOUSER
  22.   typedef HANDLE HDWP;
  23.   typedef VOID MENUTEMPLATEA;
  24.   typedef VOID MENUTEMPLATEW;
  25.   typedef PVOID LPMENUTEMPLATEA;
  26.   typedef PVOID LPMENUTEMPLATEW;
  27.  
  28. #ifdef UNICODE
  29.   typedef MENUTEMPLATEW MENUTEMPLATE;
  30.   typedef LPMENUTEMPLATEW LPMENUTEMPLATE;
  31. #else
  32.   typedef MENUTEMPLATEA MENUTEMPLATE;
  33.   typedef LPMENUTEMPLATEA LPMENUTEMPLATE;
  34. #endif
  35.  
  36.   typedef LRESULT (CALLBACK *WNDPROC)(HWND,UINT,WPARAM,LPARAM);
  37.   typedef INT_PTR (CALLBACK *DLGPROC)(HWND,UINT,WPARAM,LPARAM);
  38.   typedef VOID (CALLBACK *TIMERPROC)(HWND,UINT,UINT_PTR,DWORD);
  39.   typedef WINBOOL (CALLBACK *GRAYSTRINGPROC)(HDC,LPARAM,int);
  40.   typedef WINBOOL (CALLBACK *WNDENUMPROC)(HWND,LPARAM);
  41.   typedef LRESULT (CALLBACK *HOOKPROC)(int code,WPARAM wParam,LPARAM lParam);
  42.   typedef VOID (CALLBACK *SENDASYNCPROC)(HWND,UINT,ULONG_PTR,LRESULT);
  43.   typedef WINBOOL (CALLBACK *PROPENUMPROCA)(HWND,LPCSTR,HANDLE);
  44.   typedef WINBOOL (CALLBACK *PROPENUMPROCW)(HWND,LPCWSTR,HANDLE);
  45.   typedef WINBOOL (CALLBACK *PROPENUMPROCEXA)(HWND,LPSTR,HANDLE,ULONG_PTR);
  46.   typedef WINBOOL (CALLBACK *PROPENUMPROCEXW)(HWND,LPWSTR,HANDLE,ULONG_PTR);
  47.   typedef int (CALLBACK *EDITWORDBREAKPROCA)(LPSTR lpch,int ichCurrent,int cch,int code);
  48.   typedef int (CALLBACK *EDITWORDBREAKPROCW)(LPWSTR lpch,int ichCurrent,int cch,int code);
  49.   typedef WINBOOL (CALLBACK *DRAWSTATEPROC)(HDC hdc,LPARAM lData,WPARAM wData,int cx,int cy);
  50.  
  51. #ifdef UNICODE
  52.   typedef PROPENUMPROCW PROPENUMPROC;
  53.   typedef PROPENUMPROCEXW PROPENUMPROCEX;
  54.   typedef EDITWORDBREAKPROCW EDITWORDBREAKPROC;
  55. #else
  56.   typedef PROPENUMPROCA PROPENUMPROC;
  57.   typedef PROPENUMPROCEXA PROPENUMPROCEX;
  58.   typedef EDITWORDBREAKPROCA EDITWORDBREAKPROC;
  59. #endif
  60.  
  61.   typedef WINBOOL (CALLBACK *NAMEENUMPROCA)(LPSTR,LPARAM);
  62.   typedef WINBOOL (CALLBACK *NAMEENUMPROCW)(LPWSTR,LPARAM);
  63.   typedef NAMEENUMPROCA WINSTAENUMPROCA;
  64.   typedef NAMEENUMPROCA DESKTOPENUMPROCA;
  65.   typedef NAMEENUMPROCW WINSTAENUMPROCW;
  66.   typedef NAMEENUMPROCW DESKTOPENUMPROCW;
  67.  
  68. #ifdef UNICODE
  69.   typedef WINSTAENUMPROCW WINSTAENUMPROC;
  70.   typedef DESKTOPENUMPROCW DESKTOPENUMPROC;
  71. #else
  72.   typedef WINSTAENUMPROCA WINSTAENUMPROC;
  73.   typedef DESKTOPENUMPROCA DESKTOPENUMPROC;
  74. #endif
  75.  
  76. #define IS_INTRESOURCE(_r) ((((ULONG_PTR)(_r)) >> 16)==0)
  77. #define MAKEINTRESOURCEA(i) ((LPSTR)((ULONG_PTR)((WORD)(i))))
  78. #define MAKEINTRESOURCEW(i) ((LPWSTR)((ULONG_PTR)((WORD)(i))))
  79. #ifdef UNICODE
  80. #define MAKEINTRESOURCE MAKEINTRESOURCEW
  81. #else
  82. #define MAKEINTRESOURCE MAKEINTRESOURCEA
  83. #endif
  84.  
  85. #ifndef NORESOURCE
  86.  
  87. #define RT_CURSOR MAKEINTRESOURCE(1)
  88. #define RT_BITMAP MAKEINTRESOURCE(2)
  89. #define RT_ICON MAKEINTRESOURCE(3)
  90. #define RT_MENU MAKEINTRESOURCE(4)
  91. #define RT_DIALOG MAKEINTRESOURCE(5)
  92. #define RT_STRING MAKEINTRESOURCE(6)
  93. #define RT_FONTDIR MAKEINTRESOURCE(7)
  94. #define RT_FONT MAKEINTRESOURCE(8)
  95. #define RT_ACCELERATOR MAKEINTRESOURCE(9)
  96. #define RT_RCDATA MAKEINTRESOURCE(10)
  97. #define RT_MESSAGETABLE MAKEINTRESOURCE(11)
  98.  
  99. #define DIFFERENCE 11
  100. #define RT_GROUP_CURSOR MAKEINTRESOURCE((ULONG_PTR)RT_CURSOR + DIFFERENCE)
  101. #define RT_GROUP_ICON MAKEINTRESOURCE((ULONG_PTR)RT_ICON + DIFFERENCE)
  102. #define RT_VERSION MAKEINTRESOURCE(16)
  103. #define RT_DLGINCLUDE MAKEINTRESOURCE(17)
  104. #define RT_PLUGPLAY MAKEINTRESOURCE(19)
  105. #define RT_VXD MAKEINTRESOURCE(20)
  106. #define RT_ANICURSOR MAKEINTRESOURCE(21)
  107. #define RT_ANIICON MAKEINTRESOURCE(22)
  108. #define RT_HTML MAKEINTRESOURCE(23)
  109. #ifdef RC_INVOKED
  110. #define RT_MANIFEST 24
  111. #define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
  112. #define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2
  113. #define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID 3
  114. #define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID 1
  115. #define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID 16
  116. #else
  117. #define RT_MANIFEST MAKEINTRESOURCE(24)
  118. #define CREATEPROCESS_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(1)
  119. #define ISOLATIONAWARE_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(2)
  120. #define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(3)
  121. #define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(1)
  122. #define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(16)
  123. #endif
  124. #endif
  125.  
  126. #ifdef UNICODE
  127. #define wvsprintf wvsprintfW
  128. #define wsprintf wsprintfW
  129. #else
  130. #define wvsprintf wvsprintfA
  131. #define wsprintf wsprintfA
  132. #endif
  133.  
  134.   WINUSERAPI int WINAPI wvsprintfA(LPSTR,LPCSTR,va_list arglist);
  135.   WINUSERAPI int WINAPI wvsprintfW(LPWSTR,LPCWSTR,va_list arglist);
  136.   WINUSERAPI int WINAPIV wsprintfA(LPSTR,LPCSTR,...);
  137.   WINUSERAPI int WINAPIV wsprintfW(LPWSTR,LPCWSTR,...);
  138.  
  139. #define SETWALLPAPER_DEFAULT ((LPWSTR)-1)
  140.  
  141. #ifndef NOSCROLL
  142. #define SB_HORZ 0
  143. #define SB_VERT 1
  144. #define SB_CTL 2
  145. #define SB_BOTH 3
  146.  
  147. #define SB_LINEUP 0
  148. #define SB_LINELEFT 0
  149. #define SB_LINEDOWN 1
  150. #define SB_LINERIGHT 1
  151. #define SB_PAGEUP 2
  152. #define SB_PAGELEFT 2
  153. #define SB_PAGEDOWN 3
  154. #define SB_PAGERIGHT 3
  155. #define SB_THUMBPOSITION 4
  156. #define SB_THUMBTRACK 5
  157. #define SB_TOP 6
  158. #define SB_LEFT 6
  159. #define SB_BOTTOM 7
  160. #define SB_RIGHT 7
  161. #define SB_ENDSCROLL 8
  162. #endif
  163.  
  164. #ifndef NOSHOWWINDOW
  165. #define SW_HIDE 0
  166. #define SW_SHOWNORMAL 1
  167. #define SW_NORMAL 1
  168. #define SW_SHOWMINIMIZED 2
  169. #define SW_SHOWMAXIMIZED 3
  170. #define SW_MAXIMIZE 3
  171. #define SW_SHOWNOACTIVATE 4
  172. #define SW_SHOW 5
  173. #define SW_MINIMIZE 6
  174. #define SW_SHOWMINNOACTIVE 7
  175. #define SW_SHOWNA 8
  176. #define SW_RESTORE 9
  177. #define SW_SHOWDEFAULT 10
  178. #define SW_FORCEMINIMIZE 11
  179. #define SW_MAX 11
  180.  
  181. #define HIDE_WINDOW 0
  182. #define SHOW_OPENWINDOW 1
  183. #define SHOW_ICONWINDOW 2
  184. #define SHOW_FULLSCREEN 3
  185. #define SHOW_OPENNOACTIVATE 4
  186.  
  187. #define SW_PARENTCLOSING 1
  188. #define SW_OTHERZOOM 2
  189. #define SW_PARENTOPENING 3
  190. #define SW_OTHERUNZOOM 4
  191. #endif
  192.  
  193. #define AW_HOR_POSITIVE 0x00000001
  194. #define AW_HOR_NEGATIVE 0x00000002
  195. #define AW_VER_POSITIVE 0x00000004
  196. #define AW_VER_NEGATIVE 0x00000008
  197. #define AW_CENTER 0x00000010
  198. #define AW_HIDE 0x00010000
  199. #define AW_ACTIVATE 0x00020000
  200. #define AW_SLIDE 0x00040000
  201. #define AW_BLEND 0x00080000
  202.  
  203. #define KF_EXTENDED 0x0100
  204. #define KF_DLGMODE 0x0800
  205. #define KF_MENUMODE 0x1000
  206. #define KF_ALTDOWN 0x2000
  207. #define KF_REPEAT 0x4000
  208. #define KF_UP 0x8000
  209.  
  210. #ifndef NOVIRTUALKEYCODES
  211.  
  212. #define VK_LBUTTON 0x01
  213. #define VK_RBUTTON 0x02
  214. #define VK_CANCEL 0x03
  215. #define VK_MBUTTON 0x04
  216. #define VK_XBUTTON1 0x05
  217. #define VK_XBUTTON2 0x06
  218. #define VK_BACK 0x08
  219. #define VK_TAB 0x09
  220. #define VK_CLEAR 0x0C
  221. #define VK_RETURN 0x0D
  222. #define VK_SHIFT 0x10
  223. #define VK_CONTROL 0x11
  224. #define VK_MENU 0x12
  225. #define VK_PAUSE 0x13
  226. #define VK_CAPITAL 0x14
  227. #define VK_KANA 0x15
  228. #define VK_HANGEUL 0x15
  229. #define VK_HANGUL 0x15
  230. #define VK_JUNJA 0x17
  231. #define VK_FINAL 0x18
  232. #define VK_HANJA 0x19
  233. #define VK_KANJI 0x19
  234. #define VK_ESCAPE 0x1B
  235. #define VK_CONVERT 0x1C
  236. #define VK_NONCONVERT 0x1D
  237. #define VK_ACCEPT 0x1E
  238. #define VK_MODECHANGE 0x1F
  239. #define VK_SPACE 0x20
  240. #define VK_PRIOR 0x21
  241. #define VK_NEXT 0x22
  242. #define VK_END 0x23
  243. #define VK_HOME 0x24
  244. #define VK_LEFT 0x25
  245. #define VK_UP 0x26
  246. #define VK_RIGHT 0x27
  247. #define VK_DOWN 0x28
  248. #define VK_SELECT 0x29
  249. #define VK_PRINT 0x2A
  250. #define VK_EXECUTE 0x2B
  251. #define VK_SNAPSHOT 0x2C
  252. #define VK_INSERT 0x2D
  253. #define VK_DELETE 0x2E
  254. #define VK_HELP 0x2F
  255.  
  256. #define VK_LWIN 0x5B
  257. #define VK_RWIN 0x5C
  258. #define VK_APPS 0x5D
  259. #define VK_SLEEP 0x5F
  260. #define VK_NUMPAD0 0x60
  261. #define VK_NUMPAD1 0x61
  262. #define VK_NUMPAD2 0x62
  263. #define VK_NUMPAD3 0x63
  264. #define VK_NUMPAD4 0x64
  265. #define VK_NUMPAD5 0x65
  266. #define VK_NUMPAD6 0x66
  267. #define VK_NUMPAD7 0x67
  268. #define VK_NUMPAD8 0x68
  269. #define VK_NUMPAD9 0x69
  270. #define VK_MULTIPLY 0x6A
  271. #define VK_ADD 0x6B
  272. #define VK_SEPARATOR 0x6C
  273. #define VK_SUBTRACT 0x6D
  274. #define VK_DECIMAL 0x6E
  275. #define VK_DIVIDE 0x6F
  276. #define VK_F1 0x70
  277. #define VK_F2 0x71
  278. #define VK_F3 0x72
  279. #define VK_F4 0x73
  280. #define VK_F5 0x74
  281. #define VK_F6 0x75
  282. #define VK_F7 0x76
  283. #define VK_F8 0x77
  284. #define VK_F9 0x78
  285. #define VK_F10 0x79
  286. #define VK_F11 0x7A
  287. #define VK_F12 0x7B
  288. #define VK_F13 0x7C
  289. #define VK_F14 0x7D
  290. #define VK_F15 0x7E
  291. #define VK_F16 0x7F
  292. #define VK_F17 0x80
  293. #define VK_F18 0x81
  294. #define VK_F19 0x82
  295. #define VK_F20 0x83
  296. #define VK_F21 0x84
  297. #define VK_F22 0x85
  298. #define VK_F23 0x86
  299. #define VK_F24 0x87
  300. #define VK_NUMLOCK 0x90
  301. #define VK_SCROLL 0x91
  302. #define VK_OEM_NEC_EQUAL 0x92
  303. #define VK_OEM_FJ_JISHO 0x92
  304. #define VK_OEM_FJ_MASSHOU 0x93
  305. #define VK_OEM_FJ_TOUROKU 0x94
  306. #define VK_OEM_FJ_LOYA 0x95
  307. #define VK_OEM_FJ_ROYA 0x96
  308. #define VK_LSHIFT 0xA0
  309. #define VK_RSHIFT 0xA1
  310. #define VK_LCONTROL 0xA2
  311. #define VK_RCONTROL 0xA3
  312. #define VK_LMENU 0xA4
  313. #define VK_RMENU 0xA5
  314. #define VK_BROWSER_BACK 0xA6
  315. #define VK_BROWSER_FORWARD 0xA7
  316. #define VK_BROWSER_REFRESH 0xA8
  317. #define VK_BROWSER_STOP 0xA9
  318. #define VK_BROWSER_SEARCH 0xAA
  319. #define VK_BROWSER_FAVORITES 0xAB
  320. #define VK_BROWSER_HOME 0xAC
  321. #define VK_VOLUME_MUTE 0xAD
  322. #define VK_VOLUME_DOWN 0xAE
  323. #define VK_VOLUME_UP 0xAF
  324. #define VK_MEDIA_NEXT_TRACK 0xB0
  325. #define VK_MEDIA_PREV_TRACK 0xB1
  326. #define VK_MEDIA_STOP 0xB2
  327. #define VK_MEDIA_PLAY_PAUSE 0xB3
  328. #define VK_LAUNCH_MAIL 0xB4
  329. #define VK_LAUNCH_MEDIA_SELECT 0xB5
  330. #define VK_LAUNCH_APP1 0xB6
  331. #define VK_LAUNCH_APP2 0xB7
  332. #define VK_OEM_1 0xBA
  333. #define VK_OEM_PLUS 0xBB
  334. #define VK_OEM_COMMA 0xBC
  335. #define VK_OEM_MINUS 0xBD
  336. #define VK_OEM_PERIOD 0xBE
  337. #define VK_OEM_2 0xBF
  338. #define VK_OEM_3 0xC0
  339. #define VK_OEM_4 0xDB
  340. #define VK_OEM_5 0xDC
  341. #define VK_OEM_6 0xDD
  342. #define VK_OEM_7 0xDE
  343. #define VK_OEM_8 0xDF
  344. #define VK_OEM_AX 0xE1
  345. #define VK_OEM_102 0xE2
  346. #define VK_ICO_HELP 0xE3
  347. #define VK_ICO_00 0xE4
  348. #define VK_PROCESSKEY 0xE5
  349. #define VK_ICO_CLEAR 0xE6
  350. #define VK_PACKET 0xE7
  351. #define VK_OEM_RESET 0xE9
  352. #define VK_OEM_JUMP 0xEA
  353. #define VK_OEM_PA1 0xEB
  354. #define VK_OEM_PA2 0xEC
  355. #define VK_OEM_PA3 0xED
  356. #define VK_OEM_WSCTRL 0xEE
  357. #define VK_OEM_CUSEL 0xEF
  358. #define VK_OEM_ATTN 0xF0
  359. #define VK_OEM_FINISH 0xF1
  360. #define VK_OEM_COPY 0xF2
  361. #define VK_OEM_AUTO 0xF3
  362. #define VK_OEM_ENLW 0xF4
  363. #define VK_OEM_BACKTAB 0xF5
  364. #define VK_ATTN 0xF6
  365. #define VK_CRSEL 0xF7
  366. #define VK_EXSEL 0xF8
  367. #define VK_EREOF 0xF9
  368. #define VK_PLAY 0xFA
  369. #define VK_ZOOM 0xFB
  370. #define VK_NONAME 0xFC
  371. #define VK_PA1 0xFD
  372. #define VK_OEM_CLEAR 0xFE
  373. #endif
  374.  
  375. #ifndef NOWH
  376.  
  377. #define WH_MIN (-1)
  378. #define WH_MSGFILTER (-1)
  379. #define WH_JOURNALRECORD 0
  380. #define WH_JOURNALPLAYBACK 1
  381. #define WH_KEYBOARD 2
  382. #define WH_GETMESSAGE 3
  383. #define WH_CALLWNDPROC 4
  384. #define WH_CBT 5
  385. #define WH_SYSMSGFILTER 6
  386. #define WH_MOUSE 7
  387. #define WH_HARDWARE 8
  388. #define WH_DEBUG 9
  389. #define WH_SHELL 10
  390. #define WH_FOREGROUNDIDLE 11
  391. #define WH_CALLWNDPROCRET 12
  392.  
  393. #define WH_KEYBOARD_LL 13
  394. #define WH_MOUSE_LL 14
  395.  
  396. #define WH_MAX 14
  397.  
  398. #define WH_MINHOOK WH_MIN
  399. #define WH_MAXHOOK WH_MAX
  400.  
  401. #define HC_ACTION 0
  402. #define HC_GETNEXT 1
  403. #define HC_SKIP 2
  404. #define HC_NOREMOVE 3
  405. #define HC_NOREM HC_NOREMOVE
  406. #define HC_SYSMODALON 4
  407. #define HC_SYSMODALOFF 5
  408.  
  409. #define HCBT_MOVESIZE 0
  410. #define HCBT_MINMAX 1
  411. #define HCBT_QS 2
  412. #define HCBT_CREATEWND 3
  413. #define HCBT_DESTROYWND 4
  414. #define HCBT_ACTIVATE 5
  415. #define HCBT_CLICKSKIPPED 6
  416. #define HCBT_KEYSKIPPED 7
  417. #define HCBT_SYSCOMMAND 8
  418. #define HCBT_SETFOCUS 9
  419.  
  420.   typedef struct tagCBT_CREATEWNDA {
  421.     struct tagCREATESTRUCTA *lpcs;
  422.     HWND hwndInsertAfter;
  423.   } CBT_CREATEWNDA,*LPCBT_CREATEWNDA;
  424.  
  425.   typedef struct tagCBT_CREATEWNDW {
  426.     struct tagCREATESTRUCTW *lpcs;
  427.     HWND hwndInsertAfter;
  428.   } CBT_CREATEWNDW,*LPCBT_CREATEWNDW;
  429. #ifdef UNICODE
  430.   typedef CBT_CREATEWNDW CBT_CREATEWND;
  431.   typedef LPCBT_CREATEWNDW LPCBT_CREATEWND;
  432. #else
  433.   typedef CBT_CREATEWNDA CBT_CREATEWND;
  434.   typedef LPCBT_CREATEWNDA LPCBT_CREATEWND;
  435. #endif
  436.  
  437.   typedef struct tagCBTACTIVATESTRUCT
  438.   {
  439.     WINBOOL fMouse;
  440.     HWND hWndActive;
  441.   } CBTACTIVATESTRUCT,*LPCBTACTIVATESTRUCT;
  442.  
  443.   typedef struct tagWTSSESSION_NOTIFICATION {
  444.     DWORD cbSize;
  445.     DWORD dwSessionId;
  446.  
  447.   } WTSSESSION_NOTIFICATION,*PWTSSESSION_NOTIFICATION;
  448.  
  449. #define WTS_CONSOLE_CONNECT 0x1
  450. #define WTS_CONSOLE_DISCONNECT 0x2
  451. #define WTS_REMOTE_CONNECT 0x3
  452. #define WTS_REMOTE_DISCONNECT 0x4
  453. #define WTS_SESSION_LOGON 0x5
  454. #define WTS_SESSION_LOGOFF 0x6
  455. #define WTS_SESSION_LOCK 0x7
  456. #define WTS_SESSION_UNLOCK 0x8
  457. #define WTS_SESSION_REMOTE_CONTROL 0x9
  458.  
  459. #define MSGF_DIALOGBOX 0
  460. #define MSGF_MESSAGEBOX 1
  461. #define MSGF_MENU 2
  462. #define MSGF_SCROLLBAR 5
  463. #define MSGF_NEXTWINDOW 6
  464. #define MSGF_MAX 8
  465. #define MSGF_USER 4096
  466.  
  467. #define HSHELL_WINDOWCREATED 1
  468. #define HSHELL_WINDOWDESTROYED 2
  469. #define HSHELL_ACTIVATESHELLWINDOW 3
  470.  
  471. #define HSHELL_WINDOWACTIVATED 4
  472. #define HSHELL_GETMINRECT 5
  473. #define HSHELL_REDRAW 6
  474. #define HSHELL_TASKMAN 7
  475. #define HSHELL_LANGUAGE 8
  476. #define HSHELL_SYSMENU 9
  477. #define HSHELL_ENDTASK 10
  478. #define HSHELL_ACCESSIBILITYSTATE 11
  479. #define HSHELL_APPCOMMAND 12
  480. #define HSHELL_WINDOWREPLACED 13
  481. #define HSHELL_WINDOWREPLACING 14
  482. #define HSHELL_HIGHBIT 0x8000
  483. #define HSHELL_FLASH (HSHELL_REDRAW|HSHELL_HIGHBIT)
  484. #define HSHELL_RUDEAPPACTIVATED (HSHELL_WINDOWACTIVATED|HSHELL_HIGHBIT)
  485.  
  486. #define ACCESS_STICKYKEYS 0x0001
  487. #define ACCESS_FILTERKEYS 0x0002
  488. #define ACCESS_MOUSEKEYS 0x0003
  489.  
  490. #define APPCOMMAND_BROWSER_BACKWARD 1
  491. #define APPCOMMAND_BROWSER_FORWARD 2
  492. #define APPCOMMAND_BROWSER_REFRESH 3
  493. #define APPCOMMAND_BROWSER_STOP 4
  494. #define APPCOMMAND_BROWSER_SEARCH 5
  495. #define APPCOMMAND_BROWSER_FAVORITES 6
  496. #define APPCOMMAND_BROWSER_HOME 7
  497. #define APPCOMMAND_VOLUME_MUTE 8
  498. #define APPCOMMAND_VOLUME_DOWN 9
  499. #define APPCOMMAND_VOLUME_UP 10
  500. #define APPCOMMAND_MEDIA_NEXTTRACK 11
  501. #define APPCOMMAND_MEDIA_PREVIOUSTRACK 12
  502. #define APPCOMMAND_MEDIA_STOP 13
  503. #define APPCOMMAND_MEDIA_PLAY_PAUSE 14
  504. #define APPCOMMAND_LAUNCH_MAIL 15
  505. #define APPCOMMAND_LAUNCH_MEDIA_SELECT 16
  506. #define APPCOMMAND_LAUNCH_APP1 17
  507. #define APPCOMMAND_LAUNCH_APP2 18
  508. #define APPCOMMAND_BASS_DOWN 19
  509. #define APPCOMMAND_BASS_BOOST 20
  510. #define APPCOMMAND_BASS_UP 21
  511. #define APPCOMMAND_TREBLE_DOWN 22
  512. #define APPCOMMAND_TREBLE_UP 23
  513. #define APPCOMMAND_MICROPHONE_VOLUME_MUTE 24
  514. #define APPCOMMAND_MICROPHONE_VOLUME_DOWN 25
  515. #define APPCOMMAND_MICROPHONE_VOLUME_UP 26
  516. #define APPCOMMAND_HELP 27
  517. #define APPCOMMAND_FIND 28
  518. #define APPCOMMAND_NEW 29
  519. #define APPCOMMAND_OPEN 30
  520. #define APPCOMMAND_CLOSE 31
  521. #define APPCOMMAND_SAVE 32
  522. #define APPCOMMAND_PRINT 33
  523. #define APPCOMMAND_UNDO 34
  524. #define APPCOMMAND_REDO 35
  525. #define APPCOMMAND_COPY 36
  526. #define APPCOMMAND_CUT 37
  527. #define APPCOMMAND_PASTE 38
  528. #define APPCOMMAND_REPLY_TO_MAIL 39
  529. #define APPCOMMAND_FORWARD_MAIL 40
  530. #define APPCOMMAND_SEND_MAIL 41
  531. #define APPCOMMAND_SPELL_CHECK 42
  532. #define APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE 43
  533. #define APPCOMMAND_MIC_ON_OFF_TOGGLE 44
  534. #define APPCOMMAND_CORRECTION_LIST 45
  535. #define APPCOMMAND_MEDIA_PLAY 46
  536. #define APPCOMMAND_MEDIA_PAUSE 47
  537. #define APPCOMMAND_MEDIA_RECORD 48
  538. #define APPCOMMAND_MEDIA_FAST_FORWARD 49
  539. #define APPCOMMAND_MEDIA_REWIND 50
  540. #define APPCOMMAND_MEDIA_CHANNEL_UP 51
  541. #define APPCOMMAND_MEDIA_CHANNEL_DOWN 52
  542.  
  543. #define FAPPCOMMAND_MOUSE 0x8000
  544. #define FAPPCOMMAND_KEY 0
  545. #define FAPPCOMMAND_OEM 0x1000
  546. #define FAPPCOMMAND_MASK 0xF000
  547.  
  548. #define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK))
  549. #define GET_DEVICE_LPARAM(lParam) ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK))
  550. #define GET_MOUSEORKEY_LPARAM GET_DEVICE_LPARAM
  551. #define GET_FLAGS_LPARAM(lParam) (LOWORD(lParam))
  552. #define GET_KEYSTATE_LPARAM(lParam) GET_FLAGS_LPARAM(lParam)
  553.  
  554.   typedef struct {
  555.     HWND hwnd;
  556.     RECT rc;
  557.   } SHELLHOOKINFO,*LPSHELLHOOKINFO;
  558.  
  559.   typedef struct tagEVENTMSG {
  560.     UINT message;
  561.     UINT paramL;
  562.     UINT paramH;
  563.     DWORD time;
  564.     HWND hwnd;
  565.   } EVENTMSG,*PEVENTMSGMSG,*NPEVENTMSGMSG,*LPEVENTMSGMSG;
  566.  
  567.   typedef struct tagEVENTMSG *PEVENTMSG,*NPEVENTMSG,*LPEVENTMSG;
  568.  
  569.   typedef struct tagCWPSTRUCT {
  570.     LPARAM lParam;
  571.     WPARAM wParam;
  572.     UINT message;
  573.     HWND hwnd;
  574.   } CWPSTRUCT,*PCWPSTRUCT,*NPCWPSTRUCT,*LPCWPSTRUCT;
  575.  
  576.   typedef struct tagCWPRETSTRUCT {
  577.     LRESULT lResult;
  578.     LPARAM lParam;
  579.     WPARAM wParam;
  580.     UINT message;
  581.     HWND hwnd;
  582.   } CWPRETSTRUCT,*PCWPRETSTRUCT,*NPCWPRETSTRUCT,*LPCWPRETSTRUCT;
  583.  
  584. #define LLKHF_EXTENDED (KF_EXTENDED >> 8)
  585. #define LLKHF_INJECTED 0x00000010
  586. #define LLKHF_ALTDOWN (KF_ALTDOWN >> 8)
  587. #define LLKHF_UP (KF_UP >> 8)
  588.  
  589. #define LLMHF_INJECTED 0x00000001
  590.  
  591.   typedef struct tagKBDLLHOOKSTRUCT {
  592.     DWORD vkCode;
  593.     DWORD scanCode;
  594.     DWORD flags;
  595.     DWORD time;
  596.     ULONG_PTR dwExtraInfo;
  597.   } KBDLLHOOKSTRUCT,*LPKBDLLHOOKSTRUCT,*PKBDLLHOOKSTRUCT;
  598.  
  599.   typedef struct tagMSLLHOOKSTRUCT {
  600.     POINT pt;
  601.     DWORD mouseData;
  602.     DWORD flags;
  603.     DWORD time;
  604.     ULONG_PTR dwExtraInfo;
  605.   } MSLLHOOKSTRUCT,*LPMSLLHOOKSTRUCT,*PMSLLHOOKSTRUCT;
  606.  
  607.   typedef struct tagDEBUGHOOKINFO {
  608.     DWORD idThread;
  609.     DWORD idThreadInstaller;
  610.     LPARAM lParam;
  611.     WPARAM wParam;
  612.     int code;
  613.   } DEBUGHOOKINFO,*PDEBUGHOOKINFO,*NPDEBUGHOOKINFO,*LPDEBUGHOOKINFO;
  614.  
  615.   typedef struct tagMOUSEHOOKSTRUCT {
  616.     POINT pt;
  617.     HWND hwnd;
  618.     UINT wHitTestCode;
  619.     ULONG_PTR dwExtraInfo;
  620.   } MOUSEHOOKSTRUCT,*LPMOUSEHOOKSTRUCT,*PMOUSEHOOKSTRUCT;
  621.  
  622. #ifdef __cplusplus
  623.   typedef struct tagMOUSEHOOKSTRUCTEX : public tagMOUSEHOOKSTRUCT {
  624.     DWORD mouseData;
  625.   } MOUSEHOOKSTRUCTEX,*LPMOUSEHOOKSTRUCTEX,*PMOUSEHOOKSTRUCTEX;
  626. #else
  627.   typedef struct tagMOUSEHOOKSTRUCTEX {
  628.     MOUSEHOOKSTRUCT _unnamed;
  629.     DWORD mouseData;
  630.   } MOUSEHOOKSTRUCTEX,*LPMOUSEHOOKSTRUCTEX,*PMOUSEHOOKSTRUCTEX;
  631. #endif
  632.  
  633.   typedef struct tagHARDWAREHOOKSTRUCT {
  634.     HWND hwnd;
  635.     UINT message;
  636.     WPARAM wParam;
  637.     LPARAM lParam;
  638.   } HARDWAREHOOKSTRUCT,*LPHARDWAREHOOKSTRUCT,*PHARDWAREHOOKSTRUCT;
  639. #endif
  640.  
  641. #define HKL_PREV 0
  642. #define HKL_NEXT 1
  643.  
  644. #define KLF_ACTIVATE 0x00000001
  645. #define KLF_SUBSTITUTE_OK 0x00000002
  646. #define KLF_REORDER 0x00000008
  647. #define KLF_REPLACELANG 0x00000010
  648. #define KLF_NOTELLSHELL 0x00000080
  649. #define KLF_SETFORPROCESS 0x00000100
  650. #define KLF_SHIFTLOCK 0x00010000
  651. #define KLF_RESET 0x40000000
  652.  
  653. #define INPUTLANGCHANGE_SYSCHARSET 0x0001
  654. #define INPUTLANGCHANGE_FORWARD 0x0002
  655. #define INPUTLANGCHANGE_BACKWARD 0x0004
  656.  
  657. #define KL_NAMELENGTH 9
  658.  
  659. #ifdef UNICODE
  660. #define LoadKeyboardLayout LoadKeyboardLayoutW
  661. #define GetKeyboardLayoutName GetKeyboardLayoutNameW
  662. #else
  663. #define LoadKeyboardLayout LoadKeyboardLayoutA
  664. #define GetKeyboardLayoutName GetKeyboardLayoutNameA
  665. #endif
  666.  
  667.   WINUSERAPI HKL WINAPI LoadKeyboardLayoutA(LPCSTR pwszKLID,UINT Flags);
  668.   WINUSERAPI HKL WINAPI LoadKeyboardLayoutW(LPCWSTR pwszKLID,UINT Flags);
  669.   WINUSERAPI HKL WINAPI ActivateKeyboardLayout(HKL hkl,UINT Flags);
  670.   WINUSERAPI int WINAPI ToUnicodeEx(UINT wVirtKey,UINT wScanCode,CONST BYTE *lpKeyState,LPWSTR pwszBuff,int cchBuff,UINT wFlags,HKL dwhkl);
  671.   WINUSERAPI WINBOOL WINAPI UnloadKeyboardLayout(HKL hkl);
  672.   WINUSERAPI WINBOOL WINAPI GetKeyboardLayoutNameA(LPSTR pwszKLID);
  673.   WINUSERAPI WINBOOL WINAPI GetKeyboardLayoutNameW(LPWSTR pwszKLID);
  674.   WINUSERAPI int WINAPI GetKeyboardLayoutList(int nBuff,HKL *lpList);
  675.   WINUSERAPI HKL WINAPI GetKeyboardLayout(DWORD idThread);
  676.  
  677.   typedef struct tagMOUSEMOVEPOINT {
  678.     int x;
  679.     int y;
  680.     DWORD time;
  681.     ULONG_PTR dwExtraInfo;
  682.   } MOUSEMOVEPOINT,*PMOUSEMOVEPOINT,*LPMOUSEMOVEPOINT;
  683.  
  684. #define GMMP_USE_DISPLAY_POINTS 1
  685. #define GMMP_USE_HIGH_RESOLUTION_POINTS 2
  686.  
  687.   WINUSERAPI int WINAPI GetMouseMovePointsEx(UINT cbSize,LPMOUSEMOVEPOINT lppt,LPMOUSEMOVEPOINT lpptBuf,int nBufPoints,DWORD resolution);
  688.  
  689. #ifndef NODESKTOP
  690.  
  691. #define DESKTOP_READOBJECTS 0x0001L
  692. #define DESKTOP_CREATEWINDOW 0x0002L
  693. #define DESKTOP_CREATEMENU 0x0004L
  694. #define DESKTOP_HOOKCONTROL 0x0008L
  695. #define DESKTOP_JOURNALRECORD 0x0010L
  696. #define DESKTOP_JOURNALPLAYBACK 0x0020L
  697. #define DESKTOP_ENUMERATE 0x0040L
  698. #define DESKTOP_WRITEOBJECTS 0x0080L
  699. #define DESKTOP_SWITCHDESKTOP 0x0100L
  700.  
  701. #define DF_ALLOWOTHERACCOUNTHOOK 0x0001L
  702.  
  703. #ifdef _WINGDI_
  704. #ifndef NOGDI
  705. #ifdef UNICODE
  706. #define CreateDesktop CreateDesktopW
  707. #else
  708. #define CreateDesktop CreateDesktopA
  709. #endif
  710.  
  711.   WINUSERAPI HDESK WINAPI CreateDesktopA(LPCSTR lpszDesktop,LPCSTR lpszDevice,LPDEVMODEA pDevmode,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa);
  712.   WINUSERAPI HDESK WINAPI CreateDesktopW(LPCWSTR lpszDesktop,LPCWSTR lpszDevice,LPDEVMODEW pDevmode,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa);
  713. #endif
  714. #endif
  715.  
  716. #ifdef UNICODE
  717. #define OpenDesktop OpenDesktopW
  718. #define EnumDesktops EnumDesktopsW
  719. #else
  720. #define OpenDesktop OpenDesktopA
  721. #define EnumDesktops EnumDesktopsA
  722. #endif
  723.  
  724.   WINUSERAPI HDESK WINAPI OpenDesktopA(LPCSTR lpszDesktop,DWORD dwFlags,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess);
  725.   WINUSERAPI HDESK WINAPI OpenDesktopW(LPCWSTR lpszDesktop,DWORD dwFlags,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess);
  726.   WINUSERAPI HDESK WINAPI OpenInputDesktop(DWORD dwFlags,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess);
  727.   WINUSERAPI WINBOOL WINAPI EnumDesktopsA(HWINSTA hwinsta,DESKTOPENUMPROCA lpEnumFunc,LPARAM lParam);
  728.   WINUSERAPI WINBOOL WINAPI EnumDesktopsW(HWINSTA hwinsta,DESKTOPENUMPROCW lpEnumFunc,LPARAM lParam);
  729.   WINUSERAPI WINBOOL WINAPI EnumDesktopWindows(HDESK hDesktop,WNDENUMPROC lpfn,LPARAM lParam);
  730.   WINUSERAPI WINBOOL WINAPI SwitchDesktop(HDESK hDesktop);
  731.   WINUSERAPI WINBOOL WINAPI SetThreadDesktop(HDESK hDesktop);
  732.   WINUSERAPI WINBOOL WINAPI CloseDesktop(HDESK hDesktop);
  733.   WINUSERAPI HDESK WINAPI GetThreadDesktop(DWORD dwThreadId);
  734. #endif
  735.  
  736. #ifndef NOWINDOWSTATION
  737. #define WINSTA_ENUMDESKTOPS 0x0001L
  738. #define WINSTA_READATTRIBUTES 0x0002L
  739. #define WINSTA_ACCESSCLIPBOARD 0x0004L
  740. #define WINSTA_CREATEDESKTOP 0x0008L
  741. #define WINSTA_WRITEATTRIBUTES 0x0010L
  742. #define WINSTA_ACCESSGLOBALATOMS 0x0020L
  743. #define WINSTA_EXITWINDOWS 0x0040L
  744. #define WINSTA_ENUMERATE 0x0100L
  745. #define WINSTA_READSCREEN 0x0200L
  746. #define WINSTA_ALL_ACCESS (WINSTA_ENUMDESKTOPS | WINSTA_READATTRIBUTES | WINSTA_ACCESSCLIPBOARD | WINSTA_CREATEDESKTOP | WINSTA_WRITEATTRIBUTES | WINSTA_ACCESSGLOBALATOMS | WINSTA_EXITWINDOWS | WINSTA_ENUMERATE | WINSTA_READSCREEN)
  747.  
  748. #define CWF_CREATE_ONLY 0x0001L
  749.  
  750. #define WSF_VISIBLE 0x0001L
  751.  
  752. #ifdef UNICODE
  753. #define CreateWindowStation CreateWindowStationW
  754. #define OpenWindowStation OpenWindowStationW
  755. #define EnumWindowStations EnumWindowStationsW
  756. #else
  757. #define CreateWindowStation CreateWindowStationA
  758. #define OpenWindowStation OpenWindowStationA
  759. #define EnumWindowStations EnumWindowStationsA
  760. #endif
  761.  
  762.   WINUSERAPI HWINSTA WINAPI CreateWindowStationA(LPCSTR lpwinsta,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa);
  763.   WINUSERAPI HWINSTA WINAPI CreateWindowStationW(LPCWSTR lpwinsta,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa);
  764.   WINUSERAPI HWINSTA WINAPI OpenWindowStationA(LPCSTR lpszWinSta,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess);
  765.   WINUSERAPI HWINSTA WINAPI OpenWindowStationW(LPCWSTR lpszWinSta,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess);
  766.   WINUSERAPI WINBOOL WINAPI EnumWindowStationsA(WINSTAENUMPROCA lpEnumFunc,LPARAM lParam);
  767.   WINUSERAPI WINBOOL WINAPI EnumWindowStationsW(WINSTAENUMPROCW lpEnumFunc,LPARAM lParam);
  768.   WINUSERAPI WINBOOL WINAPI CloseWindowStation(HWINSTA hWinSta);
  769.   WINUSERAPI WINBOOL WINAPI SetProcessWindowStation(HWINSTA hWinSta);
  770.   WINUSERAPI HWINSTA WINAPI GetProcessWindowStation(VOID);
  771. #endif
  772.  
  773. #ifndef NOSECURITY
  774.   WINUSERAPI WINBOOL WINAPI SetUserObjectSecurity(HANDLE hObj,PSECURITY_INFORMATION pSIRequested,PSECURITY_DESCRIPTOR pSID);
  775.   WINUSERAPI WINBOOL WINAPI GetUserObjectSecurity(HANDLE hObj,PSECURITY_INFORMATION pSIRequested,PSECURITY_DESCRIPTOR pSID,DWORD nLength,LPDWORD lpnLengthNeeded);
  776.  
  777. #define UOI_FLAGS 1
  778. #define UOI_NAME 2
  779. #define UOI_TYPE 3
  780. #define UOI_USER_SID 4
  781.  
  782.   typedef struct tagUSEROBJECTFLAGS {
  783.     WINBOOL fInherit;
  784.     WINBOOL fReserved;
  785.     DWORD dwFlags;
  786.   } USEROBJECTFLAGS,*PUSEROBJECTFLAGS;
  787.  
  788. #ifdef UNICODE
  789. #define GetUserObjectInformation GetUserObjectInformationW
  790. #define SetUserObjectInformation SetUserObjectInformationW
  791. #else
  792. #define GetUserObjectInformation GetUserObjectInformationA
  793. #define SetUserObjectInformation SetUserObjectInformationA
  794. #endif
  795.  
  796.   WINUSERAPI WINBOOL WINAPI GetUserObjectInformationA(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength,LPDWORD lpnLengthNeeded);
  797.   WINUSERAPI WINBOOL WINAPI GetUserObjectInformationW(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength,LPDWORD lpnLengthNeeded);
  798.   WINUSERAPI WINBOOL WINAPI SetUserObjectInformationA(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength);
  799.   WINUSERAPI WINBOOL WINAPI SetUserObjectInformationW(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength);
  800. #endif
  801.  
  802.   typedef struct tagWNDCLASSEXA {
  803.     UINT cbSize;
  804.     UINT style;
  805.     WNDPROC lpfnWndProc;
  806.     int cbClsExtra;
  807.     int cbWndExtra;
  808.     HINSTANCE hInstance;
  809.     HICON hIcon;
  810.     HCURSOR hCursor;
  811.     HBRUSH hbrBackground;
  812.     LPCSTR lpszMenuName;
  813.     LPCSTR lpszClassName;
  814.     HICON hIconSm;
  815.   } WNDCLASSEXA,*PWNDCLASSEXA,*NPWNDCLASSEXA,*LPWNDCLASSEXA;
  816.  
  817.   typedef struct tagWNDCLASSEXW {
  818.     UINT cbSize;
  819.     UINT style;
  820.     WNDPROC lpfnWndProc;
  821.     int cbClsExtra;
  822.     int cbWndExtra;
  823.     HINSTANCE hInstance;
  824.     HICON hIcon;
  825.     HCURSOR hCursor;
  826.     HBRUSH hbrBackground;
  827.     LPCWSTR lpszMenuName;
  828.     LPCWSTR lpszClassName;
  829.  
  830.     HICON hIconSm;
  831.   } WNDCLASSEXW,*PWNDCLASSEXW,*NPWNDCLASSEXW,*LPWNDCLASSEXW;
  832.  
  833. #ifdef UNICODE
  834.   typedef WNDCLASSEXW WNDCLASSEX;
  835.   typedef PWNDCLASSEXW PWNDCLASSEX;
  836.   typedef NPWNDCLASSEXW NPWNDCLASSEX;
  837.   typedef LPWNDCLASSEXW LPWNDCLASSEX;
  838. #else
  839.   typedef WNDCLASSEXA WNDCLASSEX;
  840.   typedef PWNDCLASSEXA PWNDCLASSEX;
  841.   typedef NPWNDCLASSEXA NPWNDCLASSEX;
  842.   typedef LPWNDCLASSEXA LPWNDCLASSEX;
  843. #endif
  844.  
  845.   typedef struct tagWNDCLASSA {
  846.     UINT style;
  847.     WNDPROC lpfnWndProc;
  848.     int cbClsExtra;
  849.     int cbWndExtra;
  850.     HINSTANCE hInstance;
  851.     HICON hIcon;
  852.     HCURSOR hCursor;
  853.     HBRUSH hbrBackground;
  854.     LPCSTR lpszMenuName;
  855.     LPCSTR lpszClassName;
  856.   } WNDCLASSA,*PWNDCLASSA,*NPWNDCLASSA,*LPWNDCLASSA;
  857.  
  858.   typedef struct tagWNDCLASSW {
  859.     UINT style;
  860.     WNDPROC lpfnWndProc;
  861.     int cbClsExtra;
  862.     int cbWndExtra;
  863.     HINSTANCE hInstance;
  864.     HICON hIcon;
  865.     HCURSOR hCursor;
  866.     HBRUSH hbrBackground;
  867.     LPCWSTR lpszMenuName;
  868.     LPCWSTR lpszClassName;
  869.   } WNDCLASSW,*PWNDCLASSW,*NPWNDCLASSW,*LPWNDCLASSW;
  870.  
  871. #ifdef UNICODE
  872.   typedef WNDCLASSW WNDCLASS;
  873.   typedef PWNDCLASSW PWNDCLASS;
  874.   typedef NPWNDCLASSW NPWNDCLASS;
  875.   typedef LPWNDCLASSW LPWNDCLASS;
  876. #else
  877.   typedef WNDCLASSA WNDCLASS;
  878.   typedef PWNDCLASSA PWNDCLASS;
  879.   typedef NPWNDCLASSA NPWNDCLASS;
  880.   typedef LPWNDCLASSA LPWNDCLASS;
  881. #endif
  882.  
  883.   WINUSERAPI WINBOOL WINAPI IsHungAppWindow(HWND hwnd);
  884.   WINUSERAPI VOID WINAPI DisableProcessWindowsGhosting(VOID);
  885.  
  886. #ifndef NOMSG
  887.   typedef struct tagMSG {
  888.     HWND hwnd;
  889.     UINT message;
  890.     WPARAM wParam;
  891.     LPARAM lParam;
  892.     DWORD time;
  893.     POINT pt;
  894.   } MSG,*PMSG,*NPMSG,*LPMSG;
  895.  
  896. #define POINTSTOPOINT(pt,pts) { (pt).x = (LONG)(SHORT)LOWORD(*(LONG*)&pts); (pt).y = (LONG)(SHORT)HIWORD(*(LONG*)&pts); }
  897.  
  898. #define POINTTOPOINTS(pt) (MAKELONG((short)((pt).x),(short)((pt).y)))
  899. #define MAKEWPARAM(l,h) ((WPARAM)(DWORD)MAKELONG(l,h))
  900. #define MAKELPARAM(l,h) ((LPARAM)(DWORD)MAKELONG(l,h))
  901. #define MAKELRESULT(l,h) ((LRESULT)(DWORD)MAKELONG(l,h))
  902. #endif
  903.  
  904. #ifndef NOWINOFFSETS
  905. #define GWL_WNDPROC (-4)
  906. #define GWL_HINSTANCE (-6)
  907. #define GWL_HWNDPARENT (-8)
  908. #define GWL_STYLE (-16)
  909. #define GWL_EXSTYLE (-20)
  910. #define GWL_USERDATA (-21)
  911. #define GWL_ID (-12)
  912.  
  913. #ifdef _WIN64
  914. #undef GWL_WNDPROC
  915. #undef GWL_HINSTANCE
  916. #undef GWL_HWNDPARENT
  917. #undef GWL_USERDATA
  918. #endif
  919.  
  920. #define GWLP_WNDPROC (-4)
  921. #define GWLP_HINSTANCE (-6)
  922. #define GWLP_HWNDPARENT (-8)
  923. #define GWLP_USERDATA (-21)
  924. #define GWLP_ID (-12)
  925.  
  926. #define GCL_MENUNAME (-8)
  927. #define GCL_HBRBACKGROUND (-10)
  928. #define GCL_HCURSOR (-12)
  929. #define GCL_HICON (-14)
  930. #define GCL_HMODULE (-16)
  931. #define GCL_CBWNDEXTRA (-18)
  932. #define GCL_CBCLSEXTRA (-20)
  933. #define GCL_WNDPROC (-24)
  934. #define GCL_STYLE (-26)
  935. #define GCW_ATOM (-32)
  936. #define GCL_HICONSM (-34)
  937.  
  938. #ifdef _WIN64
  939.  
  940. #undef GCL_MENUNAME
  941. #undef GCL_HBRBACKGROUND
  942. #undef GCL_HCURSOR
  943. #undef GCL_HICON
  944. #undef GCL_HMODULE
  945. #undef GCL_WNDPROC
  946. #undef GCL_HICONSM
  947. #endif
  948.  
  949. #define GCLP_MENUNAME (-8)
  950. #define GCLP_HBRBACKGROUND (-10)
  951. #define GCLP_HCURSOR (-12)
  952. #define GCLP_HICON (-14)
  953. #define GCLP_HMODULE (-16)
  954. #define GCLP_WNDPROC (-24)
  955. #define GCLP_HICONSM (-34)
  956. #endif
  957.  
  958. #ifndef NOWINMESSAGES
  959.  
  960. #define WM_NULL 0x0000
  961. #define WM_CREATE 0x0001
  962. #define WM_DESTROY 0x0002
  963. #define WM_MOVE 0x0003
  964. #define WM_SIZE 0x0005
  965.  
  966. #define WM_ACTIVATE 0x0006
  967.  
  968. #define WA_INACTIVE 0
  969. #define WA_ACTIVE 1
  970. #define WA_CLICKACTIVE 2
  971.  
  972. #define WM_SETFOCUS 0x0007
  973. #define WM_KILLFOCUS 0x0008
  974. #define WM_ENABLE 0x000A
  975. #define WM_SETREDRAW 0x000B
  976. #define WM_SETTEXT 0x000C
  977. #define WM_GETTEXT 0x000D
  978. #define WM_GETTEXTLENGTH 0x000E
  979. #define WM_PAINT 0x000F
  980. #define WM_CLOSE 0x0010
  981. #ifndef _WIN32_WCE
  982. #define WM_QUERYENDSESSION 0x0011
  983. #define WM_QUERYOPEN 0x0013
  984. #define WM_ENDSESSION 0x0016
  985. #endif
  986. #define WM_QUIT 0x0012
  987. #define WM_ERASEBKGND 0x0014
  988. #define WM_SYSCOLORCHANGE 0x0015
  989. #define WM_SHOWWINDOW 0x0018
  990. #define WM_WININICHANGE 0x001A
  991. #define WM_SETTINGCHANGE WM_WININICHANGE
  992. #define WM_DEVMODECHANGE 0x001B
  993. #define WM_ACTIVATEAPP 0x001C
  994. #define WM_FONTCHANGE 0x001D
  995. #define WM_TIMECHANGE 0x001E
  996. #define WM_CANCELMODE 0x001F
  997. #define WM_SETCURSOR 0x0020
  998. #define WM_MOUSEACTIVATE 0x0021
  999. #define WM_CHILDACTIVATE 0x0022
  1000. #define WM_QUEUESYNC 0x0023
  1001.  
  1002. #define WM_GETMINMAXINFO 0x0024
  1003.  
  1004.   typedef struct tagMINMAXINFO {
  1005.     POINT ptReserved;
  1006.     POINT ptMaxSize;
  1007.     POINT ptMaxPosition;
  1008.     POINT ptMinTrackSize;
  1009.     POINT ptMaxTrackSize;
  1010.   } MINMAXINFO,*PMINMAXINFO,*LPMINMAXINFO;
  1011.  
  1012. #define WM_PAINTICON 0x0026
  1013. #define WM_ICONERASEBKGND 0x0027
  1014. #define WM_NEXTDLGCTL 0x0028
  1015. #define WM_SPOOLERSTATUS 0x002A
  1016. #define WM_DRAWITEM 0x002B
  1017. #define WM_MEASUREITEM 0x002C
  1018. #define WM_DELETEITEM 0x002D
  1019. #define WM_VKEYTOITEM 0x002E
  1020. #define WM_CHARTOITEM 0x002F
  1021. #define WM_SETFONT 0x0030
  1022. #define WM_GETFONT 0x0031
  1023. #define WM_SETHOTKEY 0x0032
  1024. #define WM_GETHOTKEY 0x0033
  1025. #define WM_QUERYDRAGICON 0x0037
  1026. #define WM_COMPAREITEM 0x0039
  1027. #ifndef _WIN32_WCE
  1028. #define WM_GETOBJECT 0x003D
  1029. #endif
  1030. #define WM_COMPACTING 0x0041
  1031. #define WM_COMMNOTIFY 0x0044
  1032. #define WM_WINDOWPOSCHANGING 0x0046
  1033. #define WM_WINDOWPOSCHANGED 0x0047
  1034.  
  1035. #define WM_POWER 0x0048
  1036.  
  1037. #define PWR_OK 1
  1038. #define PWR_FAIL (-1)
  1039. #define PWR_SUSPENDREQUEST 1
  1040. #define PWR_SUSPENDRESUME 2
  1041. #define PWR_CRITICALRESUME 3
  1042.  
  1043. #define WM_COPYDATA 0x004A
  1044. #define WM_CANCELJOURNAL 0x004B
  1045.  
  1046.   typedef struct tagCOPYDATASTRUCT {
  1047.     ULONG_PTR dwData;
  1048.     DWORD cbData;
  1049.     PVOID lpData;
  1050.   } COPYDATASTRUCT,*PCOPYDATASTRUCT;
  1051.  
  1052.   typedef struct tagMDINEXTMENU {
  1053.     HMENU hmenuIn;
  1054.     HMENU hmenuNext;
  1055.     HWND hwndNext;
  1056.   } MDINEXTMENU,*PMDINEXTMENU,*LPMDINEXTMENU;
  1057.  
  1058. #define WM_NOTIFY 0x004E
  1059. #define WM_INPUTLANGCHANGEREQUEST 0x0050
  1060. #define WM_INPUTLANGCHANGE 0x0051
  1061. #define WM_TCARD 0x0052
  1062. #define WM_HELP 0x0053
  1063. #define WM_USERCHANGED 0x0054
  1064. #define WM_NOTIFYFORMAT 0x0055
  1065.  
  1066. #define NFR_ANSI 1
  1067. #define NFR_UNICODE 2
  1068. #define NF_QUERY 3
  1069. #define NF_REQUERY 4
  1070.  
  1071. #define WM_CONTEXTMENU 0x007B
  1072. #define WM_STYLECHANGING 0x007C
  1073. #define WM_STYLECHANGED 0x007D
  1074. #define WM_DISPLAYCHANGE 0x007E
  1075. #define WM_GETICON 0x007F
  1076. #define WM_SETICON 0x0080
  1077.  
  1078. #define WM_NCCREATE 0x0081
  1079. #define WM_NCDESTROY 0x0082
  1080. #define WM_NCCALCSIZE 0x0083
  1081. #define WM_NCHITTEST 0x0084
  1082. #define WM_NCPAINT 0x0085
  1083. #define WM_NCACTIVATE 0x0086
  1084. #define WM_GETDLGCODE 0x0087
  1085. #ifndef _WIN32_WCE
  1086. #define WM_SYNCPAINT 0x0088
  1087. #endif
  1088. #define WM_NCMOUSEMOVE 0x00A0
  1089. #define WM_NCLBUTTONDOWN 0x00A1
  1090. #define WM_NCLBUTTONUP 0x00A2
  1091. #define WM_NCLBUTTONDBLCLK 0x00A3
  1092. #define WM_NCRBUTTONDOWN 0x00A4
  1093. #define WM_NCRBUTTONUP 0x00A5
  1094. #define WM_NCRBUTTONDBLCLK 0x00A6
  1095. #define WM_NCMBUTTONDOWN 0x00A7
  1096. #define WM_NCMBUTTONUP 0x00A8
  1097. #define WM_NCMBUTTONDBLCLK 0x00A9
  1098.  
  1099. #define WM_NCXBUTTONDOWN 0x00AB
  1100. #define WM_NCXBUTTONUP 0x00AC
  1101. #define WM_NCXBUTTONDBLCLK 0x00AD
  1102. #define WM_INPUT 0x00FF
  1103. #define WM_KEYFIRST 0x0100
  1104. #define WM_KEYDOWN 0x0100
  1105. #define WM_KEYUP 0x0101
  1106. #define WM_CHAR 0x0102
  1107. #define WM_DEADCHAR 0x0103
  1108. #define WM_SYSKEYDOWN 0x0104
  1109. #define WM_SYSKEYUP 0x0105
  1110. #define WM_SYSCHAR 0x0106
  1111. #define WM_SYSDEADCHAR 0x0107
  1112. #define WM_UNICHAR 0x0109
  1113. #define WM_KEYLAST 0x0109
  1114. #define UNICODE_NOCHAR 0xFFFF
  1115. #define WM_IME_STARTCOMPOSITION 0x010D
  1116. #define WM_IME_ENDCOMPOSITION 0x010E
  1117. #define WM_IME_COMPOSITION 0x010F
  1118. #define WM_IME_KEYLAST 0x010F
  1119. #define WM_INITDIALOG 0x0110
  1120. #define WM_COMMAND 0x0111
  1121. #define WM_SYSCOMMAND 0x0112
  1122. #define WM_TIMER 0x0113
  1123. #define WM_HSCROLL 0x0114
  1124. #define WM_VSCROLL 0x0115
  1125. #define WM_INITMENU 0x0116
  1126. #define WM_INITMENUPOPUP 0x0117
  1127. #define WM_MENUSELECT 0x011F
  1128. #define WM_MENUCHAR 0x0120
  1129. #define WM_ENTERIDLE 0x0121
  1130. #ifndef _WIN32_WCE
  1131. #define WM_MENURBUTTONUP 0x0122
  1132. #define WM_MENUDRAG 0x0123
  1133. #define WM_MENUGETOBJECT 0x0124
  1134. #define WM_UNINITMENUPOPUP 0x0125
  1135. #define WM_MENUCOMMAND 0x0126
  1136.  
  1137. #ifndef _WIN32_WCE
  1138. #define WM_CHANGEUISTATE 0x0127
  1139. #define WM_UPDATEUISTATE 0x0128
  1140. #define WM_QUERYUISTATE 0x0129
  1141.  
  1142. #define UIS_SET 1
  1143. #define UIS_CLEAR 2
  1144. #define UIS_INITIALIZE 3
  1145.  
  1146. #define UISF_HIDEFOCUS 0x1
  1147. #define UISF_HIDEACCEL 0x2
  1148. #define UISF_ACTIVE 0x4
  1149. #endif
  1150. #endif
  1151.  
  1152. #define WM_CTLCOLORMSGBOX 0x0132
  1153. #define WM_CTLCOLOREDIT 0x0133
  1154. #define WM_CTLCOLORLISTBOX 0x0134
  1155. #define WM_CTLCOLORBTN 0x0135
  1156. #define WM_CTLCOLORDLG 0x0136
  1157. #define WM_CTLCOLORSCROLLBAR 0x0137
  1158. #define WM_CTLCOLORSTATIC 0x0138
  1159. #define MN_GETHMENU 0x01E1
  1160.  
  1161. #define WM_MOUSEFIRST 0x0200
  1162. #define WM_MOUSEMOVE 0x0200
  1163. #define WM_LBUTTONDOWN 0x0201
  1164. #define WM_LBUTTONUP 0x0202
  1165. #define WM_LBUTTONDBLCLK 0x0203
  1166. #define WM_RBUTTONDOWN 0x0204
  1167. #define WM_RBUTTONUP 0x0205
  1168. #define WM_RBUTTONDBLCLK 0x0206
  1169. #define WM_MBUTTONDOWN 0x0207
  1170. #define WM_MBUTTONUP 0x0208
  1171. #define WM_MBUTTONDBLCLK 0x0209
  1172. #define WM_MOUSEWHEEL 0x020A
  1173. #define WM_XBUTTONDOWN 0x020B
  1174. #define WM_XBUTTONUP 0x020C
  1175. #define WM_XBUTTONDBLCLK 0x020D
  1176. #define WM_MOUSELAST 0x020D
  1177.  
  1178. #define WHEEL_DELTA 120
  1179. #define GET_WHEEL_DELTA_WPARAM(wParam) ((short)HIWORD(wParam))
  1180.  
  1181. #define WHEEL_PAGESCROLL (UINT_MAX)
  1182.  
  1183. #define GET_KEYSTATE_WPARAM(wParam) (LOWORD(wParam))
  1184. #define GET_NCHITTEST_WPARAM(wParam) ((short)LOWORD(wParam))
  1185. #define GET_XBUTTON_WPARAM(wParam) (HIWORD(wParam))
  1186.  
  1187. #define XBUTTON1 0x0001
  1188. #define XBUTTON2 0x0002
  1189.  
  1190. #define WM_PARENTNOTIFY 0x0210
  1191. #define WM_ENTERMENULOOP 0x0211
  1192. #define WM_EXITMENULOOP 0x0212
  1193.  
  1194. #define WM_NEXTMENU 0x0213
  1195. #define WM_SIZING 0x0214
  1196. #define WM_CAPTURECHANGED 0x0215
  1197. #define WM_MOVING 0x0216
  1198.  
  1199. #define WM_POWERBROADCAST 0x0218
  1200.  
  1201. #ifndef _WIN32_WCE
  1202. #define PBT_APMQUERYSUSPEND 0x0000
  1203. #define PBT_APMQUERYSTANDBY 0x0001
  1204.  
  1205. #define PBT_APMQUERYSUSPENDFAILED 0x0002
  1206. #define PBT_APMQUERYSTANDBYFAILED 0x0003
  1207.  
  1208. #define PBT_APMSUSPEND 0x0004
  1209. #define PBT_APMSTANDBY 0x0005
  1210.  
  1211. #define PBT_APMRESUMECRITICAL 0x0006
  1212. #define PBT_APMRESUMESUSPEND 0x0007
  1213. #define PBT_APMRESUMESTANDBY 0x0008
  1214.  
  1215. #define PBTF_APMRESUMEFROMFAILURE 0x00000001
  1216.  
  1217. #define PBT_APMBATTERYLOW 0x0009
  1218. #define PBT_APMPOWERSTATUSCHANGE 0x000A
  1219.  
  1220. #define PBT_APMOEMEVENT 0x000B
  1221. #define PBT_APMRESUMEAUTOMATIC 0x0012
  1222. #endif
  1223.  
  1224. #define WM_DEVICECHANGE 0x0219
  1225.  
  1226. #define WM_MDICREATE 0x0220
  1227. #define WM_MDIDESTROY 0x0221
  1228. #define WM_MDIACTIVATE 0x0222
  1229. #define WM_MDIRESTORE 0x0223
  1230. #define WM_MDINEXT 0x0224
  1231. #define WM_MDIMAXIMIZE 0x0225
  1232. #define WM_MDITILE 0x0226
  1233. #define WM_MDICASCADE 0x0227
  1234. #define WM_MDIICONARRANGE 0x0228
  1235. #define WM_MDIGETACTIVE 0x0229
  1236.  
  1237. #define WM_MDISETMENU 0x0230
  1238. #define WM_ENTERSIZEMOVE 0x0231
  1239. #define WM_EXITSIZEMOVE 0x0232
  1240. #define WM_DROPFILES 0x0233
  1241. #define WM_MDIREFRESHMENU 0x0234
  1242.  
  1243. #define WM_IME_SETCONTEXT 0x0281
  1244. #define WM_IME_NOTIFY 0x0282
  1245. #define WM_IME_CONTROL 0x0283
  1246. #define WM_IME_COMPOSITIONFULL 0x0284
  1247. #define WM_IME_SELECT 0x0285
  1248. #define WM_IME_CHAR 0x0286
  1249. #define WM_IME_REQUEST 0x0288
  1250. #define WM_IME_KEYDOWN 0x0290
  1251. #define WM_IME_KEYUP 0x0291
  1252.  
  1253. #define WM_MOUSEHOVER 0x02A1
  1254. #define WM_MOUSELEAVE 0x02A3
  1255. #define WM_NCMOUSEHOVER 0x02A0
  1256. #define WM_NCMOUSELEAVE 0x02A2
  1257. #define WM_WTSSESSION_CHANGE 0x02B1
  1258. #define WM_TABLET_FIRST 0x02c0
  1259. #define WM_TABLET_LAST 0x02df
  1260. #define WM_CUT 0x0300
  1261. #define WM_COPY 0x0301
  1262. #define WM_PASTE 0x0302
  1263. #define WM_CLEAR 0x0303
  1264. #define WM_UNDO 0x0304
  1265. #define WM_RENDERFORMAT 0x0305
  1266. #define WM_RENDERALLFORMATS 0x0306
  1267. #define WM_DESTROYCLIPBOARD 0x0307
  1268. #define WM_DRAWCLIPBOARD 0x0308
  1269. #define WM_PAINTCLIPBOARD 0x0309
  1270. #define WM_VSCROLLCLIPBOARD 0x030A
  1271. #define WM_SIZECLIPBOARD 0x030B
  1272. #define WM_ASKCBFORMATNAME 0x030C
  1273. #define WM_CHANGECBCHAIN 0x030D
  1274. #define WM_HSCROLLCLIPBOARD 0x030E
  1275. #define WM_QUERYNEWPALETTE 0x030F
  1276. #define WM_PALETTEISCHANGING 0x0310
  1277. #define WM_PALETTECHANGED 0x0311
  1278. #define WM_HOTKEY 0x0312
  1279. #define WM_PRINT 0x0317
  1280. #define WM_PRINTCLIENT 0x0318
  1281. #define WM_APPCOMMAND 0x0319
  1282. #define WM_THEMECHANGED 0x031A
  1283. #define WM_HANDHELDFIRST 0x0358
  1284. #define WM_HANDHELDLAST 0x035F
  1285. #define WM_AFXFIRST 0x0360
  1286. #define WM_AFXLAST 0x037F
  1287. #define WM_PENWINFIRST 0x0380
  1288. #define WM_PENWINLAST 0x038F
  1289. #define WM_APP 0x8000
  1290. #define WM_USER 0x0400
  1291.  
  1292. #define WMSZ_LEFT 1
  1293. #define WMSZ_RIGHT 2
  1294. #define WMSZ_TOP 3
  1295. #define WMSZ_TOPLEFT 4
  1296. #define WMSZ_TOPRIGHT 5
  1297. #define WMSZ_BOTTOM 6
  1298. #define WMSZ_BOTTOMLEFT 7
  1299. #define WMSZ_BOTTOMRIGHT 8
  1300.  
  1301. #ifndef NONCMESSAGES
  1302.  
  1303. #define HTERROR (-2)
  1304. #define HTTRANSPARENT (-1)
  1305. #define HTNOWHERE 0
  1306. #define HTCLIENT 1
  1307. #define HTCAPTION 2
  1308. #define HTSYSMENU 3
  1309. #define HTGROWBOX 4
  1310. #define HTSIZE HTGROWBOX
  1311. #define HTMENU 5
  1312. #define HTHSCROLL 6
  1313. #define HTVSCROLL 7
  1314. #define HTMINBUTTON 8
  1315. #define HTMAXBUTTON 9
  1316. #define HTLEFT 10
  1317. #define HTRIGHT 11
  1318. #define HTTOP 12
  1319. #define HTTOPLEFT 13
  1320. #define HTTOPRIGHT 14
  1321. #define HTBOTTOM 15
  1322. #define HTBOTTOMLEFT 16
  1323. #define HTBOTTOMRIGHT 17
  1324. #define HTBORDER 18
  1325. #define HTREDUCE HTMINBUTTON
  1326. #define HTZOOM HTMAXBUTTON
  1327. #define HTSIZEFIRST HTLEFT
  1328. #define HTSIZELAST HTBOTTOMRIGHT
  1329. #define HTOBJECT 19
  1330. #define HTCLOSE 20
  1331. #define HTHELP 21
  1332.  
  1333. #define SMTO_NORMAL 0x0000
  1334. #define SMTO_BLOCK 0x0001
  1335. #define SMTO_ABORTIFHUNG 0x0002
  1336. #define SMTO_NOTIMEOUTIFNOTHUNG 0x0008
  1337. #endif
  1338.  
  1339. #define MA_ACTIVATE 1
  1340. #define MA_ACTIVATEANDEAT 2
  1341. #define MA_NOACTIVATE 3
  1342. #define MA_NOACTIVATEANDEAT 4
  1343.  
  1344. #define ICON_SMALL 0
  1345. #define ICON_BIG 1
  1346. #define ICON_SMALL2 2
  1347.  
  1348. #ifdef UNICODE
  1349. #define RegisterWindowMessage RegisterWindowMessageW
  1350. #else
  1351. #define RegisterWindowMessage RegisterWindowMessageA
  1352. #endif
  1353.  
  1354.   WINUSERAPI UINT WINAPI RegisterWindowMessageA(LPCSTR lpString);
  1355.   WINUSERAPI UINT WINAPI RegisterWindowMessageW(LPCWSTR lpString);
  1356.  
  1357. #define SIZE_RESTORED 0
  1358. #define SIZE_MINIMIZED 1
  1359. #define SIZE_MAXIMIZED 2
  1360. #define SIZE_MAXSHOW 3
  1361. #define SIZE_MAXHIDE 4
  1362.  
  1363. #define SIZENORMAL SIZE_RESTORED
  1364. #define SIZEICONIC SIZE_MINIMIZED
  1365. #define SIZEFULLSCREEN SIZE_MAXIMIZED
  1366. #define SIZEZOOMSHOW SIZE_MAXSHOW
  1367. #define SIZEZOOMHIDE SIZE_MAXHIDE
  1368.  
  1369.   typedef struct tagWINDOWPOS {
  1370.     HWND hwnd;
  1371.     HWND hwndInsertAfter;
  1372.     int x;
  1373.     int y;
  1374.     int cx;
  1375.     int cy;
  1376.     UINT flags;
  1377.   } WINDOWPOS,*LPWINDOWPOS,*PWINDOWPOS;
  1378.  
  1379.   typedef struct tagNCCALCSIZE_PARAMS {
  1380.     RECT rgrc[3];
  1381.     PWINDOWPOS lppos;
  1382.   } NCCALCSIZE_PARAMS,*LPNCCALCSIZE_PARAMS;
  1383.  
  1384. #define WVR_ALIGNTOP 0x0010
  1385. #define WVR_ALIGNLEFT 0x0020
  1386. #define WVR_ALIGNBOTTOM 0x0040
  1387. #define WVR_ALIGNRIGHT 0x0080
  1388. #define WVR_HREDRAW 0x0100
  1389. #define WVR_VREDRAW 0x0200
  1390. #define WVR_REDRAW (WVR_HREDRAW | WVR_VREDRAW)
  1391. #define WVR_VALIDRECTS 0x0400
  1392.  
  1393. #ifndef NOKEYSTATES
  1394.  
  1395. #define MK_LBUTTON 0x0001
  1396. #define MK_RBUTTON 0x0002
  1397. #define MK_SHIFT 0x0004
  1398. #define MK_CONTROL 0x0008
  1399. #define MK_MBUTTON 0x0010
  1400. #define MK_XBUTTON1 0x0020
  1401. #define MK_XBUTTON2 0x0040
  1402. #endif
  1403.  
  1404. #ifndef NOTRACKMOUSEEVENT
  1405. #define TME_HOVER 0x00000001
  1406. #define TME_LEAVE 0x00000002
  1407. #define TME_NONCLIENT 0x00000010
  1408. #define TME_QUERY 0x40000000
  1409. #define TME_CANCEL 0x80000000
  1410.  
  1411. #define HOVER_DEFAULT 0xFFFFFFFF
  1412. #endif
  1413.  
  1414.   typedef struct tagTRACKMOUSEEVENT {
  1415.     DWORD cbSize;
  1416.     DWORD dwFlags;
  1417.     HWND hwndTrack;
  1418.     DWORD dwHoverTime;
  1419.   } TRACKMOUSEEVENT,*LPTRACKMOUSEEVENT;
  1420.  
  1421.   WINUSERAPI WINBOOL WINAPI TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);
  1422. #endif
  1423.  
  1424. #ifndef NOWINSTYLES
  1425.  
  1426. #define WS_OVERLAPPED 0x00000000L
  1427. #define WS_POPUP 0x80000000L
  1428. #define WS_CHILD 0x40000000L
  1429. #define WS_MINIMIZE 0x20000000L
  1430. #define WS_VISIBLE 0x10000000L
  1431. #define WS_DISABLED 0x08000000L
  1432. #define WS_CLIPSIBLINGS 0x04000000L
  1433. #define WS_CLIPCHILDREN 0x02000000L
  1434. #define WS_MAXIMIZE 0x01000000L
  1435. #define WS_CAPTION 0x00C00000L
  1436. #define WS_BORDER 0x00800000L
  1437. #define WS_DLGFRAME 0x00400000L
  1438. #define WS_VSCROLL 0x00200000L
  1439. #define WS_HSCROLL 0x00100000L
  1440. #define WS_SYSMENU 0x00080000L
  1441. #define WS_THICKFRAME 0x00040000L
  1442. #define WS_GROUP 0x00020000L
  1443. #define WS_TABSTOP 0x00010000L
  1444. #define WS_MINIMIZEBOX 0x00020000L
  1445. #define WS_MAXIMIZEBOX 0x00010000L
  1446. #define WS_TILED WS_OVERLAPPED
  1447. #define WS_ICONIC WS_MINIMIZE
  1448. #define WS_SIZEBOX WS_THICKFRAME
  1449. #define WS_TILEDWINDOW WS_OVERLAPPEDWINDOW
  1450. #define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
  1451. #define WS_POPUPWINDOW (WS_POPUP | WS_BORDER | WS_SYSMENU)
  1452. #define WS_CHILDWINDOW (WS_CHILD)
  1453.  
  1454. #define WS_EX_DLGMODALFRAME 0x00000001L
  1455. #define WS_EX_NOPARENTNOTIFY 0x00000004L
  1456. #define WS_EX_TOPMOST 0x00000008L
  1457. #define WS_EX_ACCEPTFILES 0x00000010L
  1458. #define WS_EX_TRANSPARENT 0x00000020L
  1459. #define WS_EX_MDICHILD 0x00000040L
  1460. #define WS_EX_TOOLWINDOW 0x00000080L
  1461. #define WS_EX_WINDOWEDGE 0x00000100L
  1462. #define WS_EX_CLIENTEDGE 0x00000200L
  1463. #define WS_EX_CONTEXTHELP 0x00000400L
  1464. #define WS_EX_RIGHT 0x00001000L
  1465. #define WS_EX_LEFT 0x00000000L
  1466. #define WS_EX_RTLREADING 0x00002000L
  1467. #define WS_EX_LTRREADING 0x00000000L
  1468. #define WS_EX_LEFTSCROLLBAR 0x00004000L
  1469. #define WS_EX_RIGHTSCROLLBAR 0x00000000L
  1470. #define WS_EX_CONTROLPARENT 0x00010000L
  1471. #define WS_EX_STATICEDGE 0x00020000L
  1472. #define WS_EX_APPWINDOW 0x00040000L
  1473. #define WS_EX_OVERLAPPEDWINDOW (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE)
  1474. #define WS_EX_PALETTEWINDOW (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST)
  1475. #define WS_EX_LAYERED 0x00080000
  1476. #define WS_EX_NOINHERITLAYOUT 0x00100000L
  1477. #define WS_EX_LAYOUTRTL 0x00400000L
  1478. #define WS_EX_COMPOSITED 0x02000000L
  1479. #define WS_EX_NOACTIVATE 0x08000000L
  1480.  
  1481. #define CS_VREDRAW 0x0001
  1482. #define CS_HREDRAW 0x0002
  1483. #define CS_DBLCLKS 0x0008
  1484. #define CS_OWNDC 0x0020
  1485. #define CS_CLASSDC 0x0040
  1486. #define CS_PARENTDC 0x0080
  1487. #define CS_NOCLOSE 0x0200
  1488. #define CS_SAVEBITS 0x0800
  1489. #define CS_BYTEALIGNCLIENT 0x1000
  1490. #define CS_BYTEALIGNWINDOW 0x2000
  1491. #define CS_GLOBALCLASS 0x4000
  1492. #define CS_IME 0x00010000
  1493. #define CS_DROPSHADOW 0x00020000
  1494. #endif
  1495.  
  1496. #define PRF_CHECKVISIBLE 0x00000001L
  1497. #define PRF_NONCLIENT 0x00000002L
  1498. #define PRF_CLIENT 0x00000004L
  1499. #define PRF_ERASEBKGND 0x00000008L
  1500. #define PRF_CHILDREN 0x00000010L
  1501. #define PRF_OWNED 0x00000020L
  1502.  
  1503. #define BDR_RAISEDOUTER 0x0001
  1504. #define BDR_SUNKENOUTER 0x0002
  1505. #define BDR_RAISEDINNER 0x0004
  1506. #define BDR_SUNKENINNER 0x0008
  1507.  
  1508. #define BDR_OUTER (BDR_RAISEDOUTER | BDR_SUNKENOUTER)
  1509. #define BDR_INNER (BDR_RAISEDINNER | BDR_SUNKENINNER)
  1510. #define BDR_RAISED (BDR_RAISEDOUTER | BDR_RAISEDINNER)
  1511. #define BDR_SUNKEN (BDR_SUNKENOUTER | BDR_SUNKENINNER)
  1512.  
  1513. #define EDGE_RAISED (BDR_RAISEDOUTER | BDR_RAISEDINNER)
  1514. #define EDGE_SUNKEN (BDR_SUNKENOUTER | BDR_SUNKENINNER)
  1515. #define EDGE_ETCHED (BDR_SUNKENOUTER | BDR_RAISEDINNER)
  1516. #define EDGE_BUMP (BDR_RAISEDOUTER | BDR_SUNKENINNER)
  1517.  
  1518. #define BF_LEFT 0x0001
  1519. #define BF_TOP 0x0002
  1520. #define BF_RIGHT 0x0004
  1521. #define BF_BOTTOM 0x0008
  1522.  
  1523. #define BF_TOPLEFT (BF_TOP | BF_LEFT)
  1524. #define BF_TOPRIGHT (BF_TOP | BF_RIGHT)
  1525. #define BF_BOTTOMLEFT (BF_BOTTOM | BF_LEFT)
  1526. #define BF_BOTTOMRIGHT (BF_BOTTOM | BF_RIGHT)
  1527. #define BF_RECT (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM)
  1528.  
  1529. #define BF_DIAGONAL 0x0010
  1530.  
  1531. #define BF_DIAGONAL_ENDTOPRIGHT (BF_DIAGONAL | BF_TOP | BF_RIGHT)
  1532. #define BF_DIAGONAL_ENDTOPLEFT (BF_DIAGONAL | BF_TOP | BF_LEFT)
  1533. #define BF_DIAGONAL_ENDBOTTOMLEFT (BF_DIAGONAL | BF_BOTTOM | BF_LEFT)
  1534. #define BF_DIAGONAL_ENDBOTTOMRIGHT (BF_DIAGONAL | BF_BOTTOM | BF_RIGHT)
  1535.  
  1536. #define BF_MIDDLE 0x0800
  1537. #define BF_SOFT 0x1000
  1538. #define BF_ADJUST 0x2000
  1539. #define BF_FLAT 0x4000
  1540. #define BF_MONO 0x8000
  1541.  
  1542.   WINUSERAPI WINBOOL WINAPI DrawEdge(HDC hdc,LPRECT qrc,UINT edge,UINT grfFlags);
  1543.  
  1544. #define DFC_CAPTION 1
  1545. #define DFC_MENU 2
  1546. #define DFC_SCROLL 3
  1547. #define DFC_BUTTON 4
  1548. #define DFC_POPUPMENU 5
  1549.  
  1550. #define DFCS_CAPTIONCLOSE 0x0000
  1551. #define DFCS_CAPTIONMIN 0x0001
  1552. #define DFCS_CAPTIONMAX 0x0002
  1553. #define DFCS_CAPTIONRESTORE 0x0003
  1554. #define DFCS_CAPTIONHELP 0x0004
  1555.  
  1556. #define DFCS_MENUARROW 0x0000
  1557. #define DFCS_MENUCHECK 0x0001
  1558. #define DFCS_MENUBULLET 0x0002
  1559. #define DFCS_MENUARROWRIGHT 0x0004
  1560. #define DFCS_SCROLLUP 0x0000
  1561. #define DFCS_SCROLLDOWN 0x0001
  1562. #define DFCS_SCROLLLEFT 0x0002
  1563. #define DFCS_SCROLLRIGHT 0x0003
  1564. #define DFCS_SCROLLCOMBOBOX 0x0005
  1565. #define DFCS_SCROLLSIZEGRIP 0x0008
  1566. #define DFCS_SCROLLSIZEGRIPRIGHT 0x0010
  1567.  
  1568. #define DFCS_BUTTONCHECK 0x0000
  1569. #define DFCS_BUTTONRADIOIMAGE 0x0001
  1570. #define DFCS_BUTTONRADIOMASK 0x0002
  1571. #define DFCS_BUTTONRADIO 0x0004
  1572. #define DFCS_BUTTON3STATE 0x0008
  1573. #define DFCS_BUTTONPUSH 0x0010
  1574.  
  1575. #define DFCS_INACTIVE 0x0100
  1576. #define DFCS_PUSHED 0x0200
  1577. #define DFCS_CHECKED 0x0400
  1578.  
  1579. #define DFCS_TRANSPARENT 0x0800
  1580. #define DFCS_HOT 0x1000
  1581.  
  1582. #define DFCS_ADJUSTRECT 0x2000
  1583. #define DFCS_FLAT 0x4000
  1584. #define DFCS_MONO 0x8000
  1585.  
  1586.   WINUSERAPI WINBOOL WINAPI DrawFrameControl(HDC,LPRECT,UINT,UINT);
  1587.  
  1588. #define DC_ACTIVE 0x0001
  1589. #define DC_SMALLCAP 0x0002
  1590. #define DC_ICON 0x0004
  1591. #define DC_TEXT 0x0008
  1592. #define DC_INBUTTON 0x0010
  1593. #define DC_GRADIENT 0x0020
  1594. #define DC_BUTTONS 0x1000
  1595.  
  1596.   WINUSERAPI WINBOOL WINAPI DrawCaption(HWND hwnd,HDC hdc,CONST RECT *lprect,UINT flags);
  1597.  
  1598. #define IDANI_OPEN 1
  1599. #define IDANI_CAPTION 3
  1600.  
  1601.   WINUSERAPI WINBOOL WINAPI DrawAnimatedRects(HWND hwnd,int idAni,CONST RECT *lprcFrom,CONST RECT *lprcTo);
  1602.  
  1603. #ifndef NOCLIPBOARD
  1604.  
  1605. #define CF_TEXT 1
  1606. #define CF_BITMAP 2
  1607. #define CF_METAFILEPICT 3
  1608. #define CF_SYLK 4
  1609. #define CF_DIF 5
  1610. #define CF_TIFF 6
  1611. #define CF_OEMTEXT 7
  1612. #define CF_DIB 8
  1613. #define CF_PALETTE 9
  1614. #define CF_PENDATA 10
  1615. #define CF_RIFF 11
  1616. #define CF_WAVE 12
  1617. #define CF_UNICODETEXT 13
  1618. #define CF_ENHMETAFILE 14
  1619. #define CF_HDROP 15
  1620. #define CF_LOCALE 16
  1621. #define CF_DIBV5 17
  1622. #define CF_MAX 18
  1623.  
  1624. #define CF_OWNERDISPLAY 0x0080
  1625. #define CF_DSPTEXT 0x0081
  1626. #define CF_DSPBITMAP 0x0082
  1627. #define CF_DSPMETAFILEPICT 0x0083
  1628. #define CF_DSPENHMETAFILE 0x008E
  1629.  
  1630. #define CF_PRIVATEFIRST 0x0200
  1631. #define CF_PRIVATELAST 0x02FF
  1632.  
  1633. #define CF_GDIOBJFIRST 0x0300
  1634. #define CF_GDIOBJLAST 0x03FF
  1635. #endif
  1636.  
  1637. #define FVIRTKEY TRUE
  1638. #define FNOINVERT 0x02
  1639. #define FSHIFT 0x04
  1640. #define FCONTROL 0x08
  1641. #define FALT 0x10
  1642.  
  1643.   typedef struct tagACCEL {
  1644.     BYTE fVirt;
  1645.     WORD key;
  1646.     WORD cmd;
  1647.   } ACCEL,*LPACCEL;
  1648.  
  1649.   typedef struct tagPAINTSTRUCT {
  1650.     HDC hdc;
  1651.     WINBOOL fErase;
  1652.     RECT rcPaint;
  1653.     WINBOOL fRestore;
  1654.     WINBOOL fIncUpdate;
  1655.     BYTE rgbReserved[32];
  1656.   } PAINTSTRUCT,*PPAINTSTRUCT,*NPPAINTSTRUCT,*LPPAINTSTRUCT;
  1657.  
  1658.   typedef struct tagCREATESTRUCTA {
  1659.     LPVOID lpCreateParams;
  1660.     HINSTANCE hInstance;
  1661.     HMENU hMenu;
  1662.     HWND hwndParent;
  1663.     int cy;
  1664.     int cx;
  1665.     int y;
  1666.     int x;
  1667.     LONG style;
  1668.     LPCSTR lpszName;
  1669.     LPCSTR lpszClass;
  1670.     DWORD dwExStyle;
  1671.   } CREATESTRUCTA,*LPCREATESTRUCTA;
  1672.  
  1673.   typedef struct tagCREATESTRUCTW {
  1674.     LPVOID lpCreateParams;
  1675.     HINSTANCE hInstance;
  1676.     HMENU hMenu;
  1677.     HWND hwndParent;
  1678.     int cy;
  1679.     int cx;
  1680.     int y;
  1681.     int x;
  1682.     LONG style;
  1683.     LPCWSTR lpszName;
  1684.     LPCWSTR lpszClass;
  1685.     DWORD dwExStyle;
  1686.   } CREATESTRUCTW,*LPCREATESTRUCTW;
  1687.  
  1688. #ifdef UNICODE
  1689.   typedef CREATESTRUCTW CREATESTRUCT;
  1690.   typedef LPCREATESTRUCTW LPCREATESTRUCT;
  1691. #else
  1692.   typedef CREATESTRUCTA CREATESTRUCT;
  1693.   typedef LPCREATESTRUCTA LPCREATESTRUCT;
  1694. #endif
  1695.  
  1696.   typedef struct tagWINDOWPLACEMENT {
  1697.     UINT length;
  1698.     UINT flags;
  1699.     UINT showCmd;
  1700.     POINT ptMinPosition;
  1701.     POINT ptMaxPosition;
  1702.     RECT rcNormalPosition;
  1703.   } WINDOWPLACEMENT;
  1704.   typedef WINDOWPLACEMENT *PWINDOWPLACEMENT,*LPWINDOWPLACEMENT;
  1705.  
  1706. #define WPF_SETMINPOSITION 0x0001
  1707. #define WPF_RESTORETOMAXIMIZED 0x0002
  1708. #define WPF_ASYNCWINDOWPLACEMENT 0x0004
  1709.  
  1710.   typedef struct tagNMHDR {
  1711.     HWND hwndFrom;
  1712.     UINT_PTR idFrom;
  1713.     UINT code;
  1714.   } NMHDR;
  1715.  
  1716.   typedef NMHDR *LPNMHDR;
  1717.  
  1718.   typedef struct tagSTYLESTRUCT {
  1719.     DWORD styleOld;
  1720.     DWORD styleNew;
  1721.   } STYLESTRUCT,*LPSTYLESTRUCT;
  1722.  
  1723. #define ODT_MENU 1
  1724. #define ODT_LISTBOX 2
  1725. #define ODT_COMBOBOX 3
  1726. #define ODT_BUTTON 4
  1727. #define ODT_STATIC 5
  1728.  
  1729. #define ODA_DRAWENTIRE 0x0001
  1730. #define ODA_SELECT 0x0002
  1731. #define ODA_FOCUS 0x0004
  1732.  
  1733. #define ODS_SELECTED 0x0001
  1734. #define ODS_GRAYED 0x0002
  1735. #define ODS_DISABLED 0x0004
  1736. #define ODS_CHECKED 0x0008
  1737. #define ODS_FOCUS 0x0010
  1738. #define ODS_DEFAULT 0x0020
  1739. #define ODS_COMBOBOXEDIT 0x1000
  1740. #define ODS_HOTLIGHT 0x0040
  1741. #define ODS_INACTIVE 0x0080
  1742. #define ODS_NOACCEL 0x0100
  1743. #define ODS_NOFOCUSRECT 0x0200
  1744.  
  1745.   typedef struct tagMEASUREITEMSTRUCT {
  1746.     UINT CtlType;
  1747.     UINT CtlID;
  1748.     UINT itemID;
  1749.     UINT itemWidth;
  1750.     UINT itemHeight;
  1751.     ULONG_PTR itemData;
  1752.   } MEASUREITEMSTRUCT,*PMEASUREITEMSTRUCT,*LPMEASUREITEMSTRUCT;
  1753.  
  1754.   typedef struct tagDRAWITEMSTRUCT {
  1755.     UINT CtlType;
  1756.     UINT CtlID;
  1757.     UINT itemID;
  1758.     UINT itemAction;
  1759.     UINT itemState;
  1760.     HWND hwndItem;
  1761.     HDC hDC;
  1762.     RECT rcItem;
  1763.     ULONG_PTR itemData;
  1764.   } DRAWITEMSTRUCT,*PDRAWITEMSTRUCT,*LPDRAWITEMSTRUCT;
  1765.  
  1766.   typedef struct tagDELETEITEMSTRUCT {
  1767.     UINT CtlType;
  1768.     UINT CtlID;
  1769.     UINT itemID;
  1770.     HWND hwndItem;
  1771.     ULONG_PTR itemData;
  1772.   } DELETEITEMSTRUCT,*PDELETEITEMSTRUCT,*LPDELETEITEMSTRUCT;
  1773.  
  1774.   typedef struct tagCOMPAREITEMSTRUCT {
  1775.     UINT CtlType;
  1776.     UINT CtlID;
  1777.     HWND hwndItem;
  1778.     UINT itemID1;
  1779.     ULONG_PTR itemData1;
  1780.     UINT itemID2;
  1781.     ULONG_PTR itemData2;
  1782.     DWORD dwLocaleId;
  1783.   } COMPAREITEMSTRUCT,*PCOMPAREITEMSTRUCT,*LPCOMPAREITEMSTRUCT;
  1784.  
  1785. #ifndef NOMSG
  1786. #ifdef UNICODE
  1787. #define GetMessage GetMessageW
  1788. #define DispatchMessage DispatchMessageW
  1789. #define PeekMessage PeekMessageW
  1790. #else
  1791. #define GetMessage GetMessageA
  1792. #define DispatchMessage DispatchMessageA
  1793. #define PeekMessage PeekMessageA
  1794. #endif
  1795.  
  1796.   WINUSERAPI WINBOOL WINAPI GetMessageA(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax);
  1797.   WINUSERAPI WINBOOL WINAPI GetMessageW(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax);
  1798.   WINUSERAPI WINBOOL WINAPI TranslateMessage(CONST MSG *lpMsg);
  1799.   WINUSERAPI LRESULT WINAPI DispatchMessageA(CONST MSG *lpMsg);
  1800.   WINUSERAPI LRESULT WINAPI DispatchMessageW(CONST MSG *lpMsg);
  1801.   WINUSERAPI WINBOOL WINAPI SetMessageQueue(int cMessagesMax);
  1802.   WINUSERAPI WINBOOL WINAPI PeekMessageA(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax,UINT wRemoveMsg);
  1803.   WINUSERAPI WINBOOL WINAPI PeekMessageW(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax,UINT wRemoveMsg);
  1804.  
  1805. #define PM_NOREMOVE 0x0000
  1806. #define PM_REMOVE 0x0001
  1807. #define PM_NOYIELD 0x0002
  1808. #define PM_QS_INPUT (QS_INPUT << 16)
  1809. #define PM_QS_POSTMESSAGE ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16)
  1810. #define PM_QS_PAINT (QS_PAINT << 16)
  1811. #define PM_QS_SENDMESSAGE (QS_SENDMESSAGE << 16)
  1812. #endif
  1813.  
  1814.   WINUSERAPI WINBOOL WINAPI RegisterHotKey(HWND hWnd,int id,UINT fsModifiers,UINT vk);
  1815.   WINUSERAPI WINBOOL WINAPI UnregisterHotKey(HWND hWnd,int id);
  1816.  
  1817. #define MOD_ALT 0x0001
  1818. #define MOD_CONTROL 0x0002
  1819. #define MOD_SHIFT 0x0004
  1820. #define MOD_WIN 0x0008
  1821.  
  1822. #define IDHOT_SNAPWINDOW (-1)
  1823. #define IDHOT_SNAPDESKTOP (-2)
  1824.  
  1825. #ifdef WIN_INTERNAL
  1826. #ifndef LSTRING
  1827. #define NOLSTRING
  1828. #endif
  1829. #ifndef LFILEIO
  1830. #define NOLFILEIO
  1831. #endif
  1832. #endif
  1833.  
  1834. #define ENDSESSION_LOGOFF 0x80000000
  1835.  
  1836. #define EWX_LOGOFF 0
  1837. #define EWX_SHUTDOWN 0x00000001
  1838. #define EWX_REBOOT 0x00000002
  1839. #define EWX_FORCE 0x00000004
  1840. #define EWX_POWEROFF 0x00000008
  1841. #define EWX_FORCEIFHUNG 0x00000010
  1842.  
  1843. #define ExitWindows(dwReserved,Code) ExitWindowsEx(EWX_LOGOFF,0xFFFFFFFF)
  1844.  
  1845. #ifdef UNICODE
  1846. #define SendMessage SendMessageW
  1847. #define SendMessageTimeout SendMessageTimeoutW
  1848. #define SendNotifyMessage SendNotifyMessageW
  1849. #define SendMessageCallback SendMessageCallbackW
  1850. #else
  1851. #define SendMessage SendMessageA
  1852. #define SendMessageTimeout SendMessageTimeoutA
  1853. #define SendNotifyMessage SendNotifyMessageA
  1854. #define SendMessageCallback SendMessageCallbackA
  1855. #endif
  1856.  
  1857.   WINUSERAPI WINBOOL WINAPI ExitWindowsEx(UINT uFlags,DWORD dwReason);
  1858.   WINUSERAPI WINBOOL WINAPI SwapMouseButton(WINBOOL fSwap);
  1859.   WINUSERAPI DWORD WINAPI GetMessagePos(VOID);
  1860.   WINUSERAPI LONG WINAPI GetMessageTime(VOID);
  1861.   WINUSERAPI LPARAM WINAPI GetMessageExtraInfo(VOID);
  1862.   WINUSERAPI WINBOOL WINAPI IsWow64Message(VOID);
  1863.   WINUSERAPI LPARAM WINAPI SetMessageExtraInfo(LPARAM lParam);
  1864.   WINUSERAPI LRESULT WINAPI SendMessageA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
  1865.   WINUSERAPI LRESULT WINAPI SendMessageW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
  1866.   WINUSERAPI LRESULT WINAPI SendMessageTimeoutA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,UINT fuFlags,UINT uTimeout,PDWORD_PTR lpdwResult);
  1867.   WINUSERAPI LRESULT WINAPI SendMessageTimeoutW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,UINT fuFlags,UINT uTimeout,PDWORD_PTR lpdwResult);
  1868.   WINUSERAPI WINBOOL WINAPI SendNotifyMessageA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
  1869.   WINUSERAPI WINBOOL WINAPI SendNotifyMessageW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
  1870.   WINUSERAPI WINBOOL WINAPI SendMessageCallbackA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,SENDASYNCPROC lpResultCallBack,ULONG_PTR dwData);
  1871.   WINUSERAPI WINBOOL WINAPI SendMessageCallbackW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,SENDASYNCPROC lpResultCallBack,ULONG_PTR dwData);
  1872.  
  1873.   typedef struct {
  1874.     UINT cbSize;
  1875.     HDESK hdesk;
  1876.     HWND hwnd;
  1877.     LUID luid;
  1878.   } BSMINFO,*PBSMINFO;
  1879.  
  1880. #ifdef UNICODE
  1881. #define BroadcastSystemMessageEx BroadcastSystemMessageExW
  1882. #define BroadcastSystemMessage BroadcastSystemMessageW
  1883. #else
  1884. #define BroadcastSystemMessageEx BroadcastSystemMessageExA
  1885. #define BroadcastSystemMessage BroadcastSystemMessageA
  1886. #endif
  1887.  
  1888.   WINUSERAPI long WINAPI BroadcastSystemMessageExA(DWORD flags,LPDWORD lpInfo,UINT Msg,WPARAM wParam,LPARAM lParam,PBSMINFO pbsmInfo);
  1889.   WINUSERAPI long WINAPI BroadcastSystemMessageExW(DWORD flags,LPDWORD lpInfo,UINT Msg,WPARAM wParam,LPARAM lParam,PBSMINFO pbsmInfo);
  1890.   WINUSERAPI long WINAPI BroadcastSystemMessageA(DWORD flags,LPDWORD lpInfo,UINT Msg,WPARAM wParam,LPARAM lParam);
  1891.   WINUSERAPI long WINAPI BroadcastSystemMessageW(DWORD flags,LPDWORD lpInfo,UINT Msg,WPARAM wParam,LPARAM lParam);
  1892.  
  1893. #define BSM_ALLCOMPONENTS 0x00000000
  1894. #define BSM_VXDS 0x00000001
  1895. #define BSM_NETDRIVER 0x00000002
  1896. #define BSM_INSTALLABLEDRIVERS 0x00000004
  1897. #define BSM_APPLICATIONS 0x00000008
  1898. #define BSM_ALLDESKTOPS 0x00000010
  1899.  
  1900. #define BSF_QUERY 0x00000001
  1901. #define BSF_IGNORECURRENTTASK 0x00000002
  1902. #define BSF_FLUSHDISK 0x00000004
  1903. #define BSF_NOHANG 0x00000008
  1904. #define BSF_POSTMESSAGE 0x00000010
  1905. #define BSF_FORCEIFHUNG 0x00000020
  1906. #define BSF_NOTIMEOUTIFNOTHUNG 0x00000040
  1907. #define BSF_ALLOWSFW 0x00000080
  1908. #define BSF_SENDNOTIFYMESSAGE 0x00000100
  1909. #define BSF_RETURNHDESK 0x00000200
  1910. #define BSF_LUID 0x00000400
  1911.  
  1912. #define BROADCAST_QUERY_DENY 0x424D5144
  1913.  
  1914.   typedef PVOID HDEVNOTIFY;
  1915.   typedef HDEVNOTIFY *PHDEVNOTIFY;
  1916.  
  1917. #define DEVICE_NOTIFY_WINDOW_HANDLE 0x00000000
  1918. #define DEVICE_NOTIFY_SERVICE_HANDLE 0x00000001
  1919. #define DEVICE_NOTIFY_ALL_INTERFACE_CLASSES 0x00000004
  1920.  
  1921. #ifdef UNICODE
  1922. #define RegisterDeviceNotification RegisterDeviceNotificationW
  1923. #define PostMessage PostMessageW
  1924. #define PostThreadMessage PostThreadMessageW
  1925. #define PostAppMessage PostAppMessageW
  1926. #define DefWindowProc DefWindowProcW
  1927. #define CallWindowProc CallWindowProcW
  1928. #define RegisterClass RegisterClassW
  1929. #define UnregisterClass UnregisterClassW
  1930. #define GetClassInfo GetClassInfoW
  1931. #define RegisterClassEx RegisterClassExW
  1932. #define GetClassInfoEx GetClassInfoExW
  1933. #else
  1934. #define RegisterDeviceNotification RegisterDeviceNotificationA
  1935. #define PostMessage PostMessageA
  1936. #define PostThreadMessage PostThreadMessageA
  1937. #define PostAppMessage PostAppMessageA
  1938. #define DefWindowProc DefWindowProcA
  1939. #define CallWindowProc CallWindowProcA
  1940. #define RegisterClass RegisterClassA
  1941. #define UnregisterClass UnregisterClassA
  1942. #define GetClassInfo GetClassInfoA
  1943. #define RegisterClassEx RegisterClassExA
  1944. #define GetClassInfoEx GetClassInfoExA
  1945. #endif
  1946.  
  1947.   WINUSERAPI HDEVNOTIFY WINAPI RegisterDeviceNotificationA(HANDLE hRecipient,LPVOID NotificationFilter,DWORD Flags);
  1948.   WINUSERAPI HDEVNOTIFY WINAPI RegisterDeviceNotificationW(HANDLE hRecipient,LPVOID NotificationFilter,DWORD Flags);
  1949.   WINUSERAPI WINBOOL WINAPI UnregisterDeviceNotification(HDEVNOTIFY Handle);
  1950.   WINUSERAPI WINBOOL WINAPI PostMessageA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
  1951.   WINUSERAPI WINBOOL WINAPI PostMessageW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
  1952.   WINUSERAPI WINBOOL WINAPI PostThreadMessageA(DWORD idThread,UINT Msg,WPARAM wParam,LPARAM lParam);
  1953.   WINUSERAPI WINBOOL WINAPI PostThreadMessageW(DWORD idThread,UINT Msg,WPARAM wParam,LPARAM lParam);
  1954. #define PostAppMessageA(idThread,wMsg,wParam,lParam) PostThreadMessageA((DWORD)idThread,wMsg,wParam,lParam)
  1955. #define PostAppMessageW(idThread,wMsg,wParam,lParam) PostThreadMessageW((DWORD)idThread,wMsg,wParam,lParam)
  1956.  
  1957. #define HWND_BROADCAST ((HWND)0xffff)
  1958. #define HWND_MESSAGE ((HWND)-3)
  1959.  
  1960.   WINUSERAPI WINBOOL WINAPI AttachThreadInput(DWORD idAttach,DWORD idAttachTo,WINBOOL fAttach);
  1961.   WINUSERAPI WINBOOL WINAPI ReplyMessage(LRESULT lResult);
  1962.   WINUSERAPI WINBOOL WINAPI WaitMessage(VOID);
  1963.   WINUSERAPI DWORD WINAPI WaitForInputIdle(HANDLE hProcess,DWORD dwMilliseconds);
  1964.   WINUSERAPI LRESULT WINAPI DefWindowProcA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
  1965.   WINUSERAPI LRESULT WINAPI DefWindowProcW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
  1966.   WINUSERAPI VOID WINAPI PostQuitMessage(int nExitCode);
  1967.   WINUSERAPI LRESULT WINAPI CallWindowProcA(WNDPROC lpPrevWndFunc,HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
  1968.   WINUSERAPI LRESULT WINAPI CallWindowProcW(WNDPROC lpPrevWndFunc,HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
  1969.   WINUSERAPI WINBOOL WINAPI InSendMessage(VOID);
  1970.   WINUSERAPI DWORD WINAPI InSendMessageEx(LPVOID lpReserved);
  1971.  
  1972. #define ISMEX_NOSEND 0x00000000
  1973. #define ISMEX_SEND 0x00000001
  1974. #define ISMEX_NOTIFY 0x00000002
  1975. #define ISMEX_CALLBACK 0x00000004
  1976. #define ISMEX_REPLIED 0x00000008
  1977.  
  1978.   WINUSERAPI UINT WINAPI GetDoubleClickTime(VOID);
  1979.   WINUSERAPI WINBOOL WINAPI SetDoubleClickTime(UINT);
  1980.   WINUSERAPI ATOM WINAPI RegisterClassA(CONST WNDCLASSA *lpWndClass);
  1981.   WINUSERAPI ATOM WINAPI RegisterClassW(CONST WNDCLASSW *lpWndClass);
  1982.   WINUSERAPI WINBOOL WINAPI UnregisterClassA(LPCSTR lpClassName,HINSTANCE hInstance);
  1983.   WINUSERAPI WINBOOL WINAPI UnregisterClassW(LPCWSTR lpClassName,HINSTANCE hInstance);
  1984.   WINUSERAPI WINBOOL WINAPI GetClassInfoA(HINSTANCE hInstance,LPCSTR lpClassName,LPWNDCLASSA lpWndClass);
  1985.   WINUSERAPI WINBOOL WINAPI GetClassInfoW(HINSTANCE hInstance,LPCWSTR lpClassName,LPWNDCLASSW lpWndClass);
  1986.   WINUSERAPI ATOM WINAPI RegisterClassExA(CONST WNDCLASSEXA *);
  1987.   WINUSERAPI ATOM WINAPI RegisterClassExW(CONST WNDCLASSEXW *);
  1988.   WINUSERAPI WINBOOL WINAPI GetClassInfoExA(HINSTANCE hInstance,LPCSTR lpszClass,LPWNDCLASSEXA lpwcx);
  1989.   WINUSERAPI WINBOOL WINAPI GetClassInfoExW(HINSTANCE hInstance,LPCWSTR lpszClass,LPWNDCLASSEXW lpwcx);
  1990.  
  1991. #define CW_USEDEFAULT ((int)0x80000000)
  1992.  
  1993. #define HWND_DESKTOP ((HWND)0)
  1994.  
  1995.   typedef BOOLEAN (WINAPI *PREGISTERCLASSNAMEW)(LPCWSTR);
  1996.  
  1997. #ifdef UNICODE
  1998. #define CreateWindowEx CreateWindowExW
  1999. #define CreateWindow CreateWindowW
  2000. #else
  2001. #define CreateWindowEx CreateWindowExA
  2002. #define CreateWindow CreateWindowA
  2003. #endif
  2004.  
  2005.   WINUSERAPI HWND WINAPI CreateWindowExA(DWORD dwExStyle,LPCSTR lpClassName,LPCSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HINSTANCE hInstance,LPVOID lpParam);
  2006.   WINUSERAPI HWND WINAPI CreateWindowExW(DWORD dwExStyle,LPCWSTR lpClassName,LPCWSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HINSTANCE hInstance,LPVOID lpParam);
  2007. #define CreateWindowA(lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam) CreateWindowExA(0L,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam)
  2008. #define CreateWindowW(lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam) CreateWindowExW(0L,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam)
  2009.   WINUSERAPI WINBOOL WINAPI IsWindow(HWND hWnd);
  2010.   WINUSERAPI WINBOOL WINAPI IsMenu(HMENU hMenu);
  2011.   WINUSERAPI WINBOOL WINAPI IsChild(HWND hWndParent,HWND hWnd);
  2012.   WINUSERAPI WINBOOL WINAPI DestroyWindow(HWND hWnd);
  2013.   WINUSERAPI WINBOOL WINAPI ShowWindow(HWND hWnd,int nCmdShow);
  2014.   WINUSERAPI WINBOOL WINAPI AnimateWindow(HWND hWnd,DWORD dwTime,DWORD dwFlags);
  2015.  
  2016. #if defined(_WINGDI_) && !defined(NOGDI)
  2017.   WINUSERAPI WINBOOL WINAPI UpdateLayeredWindow(HWND hWnd,HDC hdcDst,POINT *pptDst,SIZE *psize,HDC hdcSrc,POINT *pptSrc,COLORREF crKey,BLENDFUNCTION *pblend,DWORD dwFlags);
  2018.  
  2019.   typedef struct tagUPDATELAYEREDWINDOWINFO {
  2020.     DWORD cbSize;
  2021.     HDC hdcDst;
  2022.     POINT CONST *pptDst;
  2023.     SIZE CONST *psize;
  2024.     HDC hdcSrc;
  2025.     POINT CONST *pptSrc;
  2026.     COLORREF crKey;
  2027.     BLENDFUNCTION CONST *pblend;
  2028.     DWORD dwFlags;
  2029.     RECT CONST *prcDirty;
  2030.   } UPDATELAYEREDWINDOWINFO,*PUPDATELAYEREDWINDOWINFO;
  2031.  
  2032.   WINUSERAPI WINBOOL WINAPI UpdateLayeredWindowIndirect(HWND hWnd,UPDATELAYEREDWINDOWINFO CONST *pULWInfo);
  2033.   WINUSERAPI WINBOOL WINAPI GetLayeredWindowAttributes(HWND hwnd,COLORREF *pcrKey,BYTE *pbAlpha,DWORD *pdwFlags);
  2034.  
  2035. #define PW_CLIENTONLY 0x00000001
  2036.  
  2037.   WINUSERAPI WINBOOL WINAPI PrintWindow(HWND hwnd,HDC hdcBlt,UINT nFlags);
  2038.   WINUSERAPI WINBOOL WINAPI SetLayeredWindowAttributes(HWND hwnd,COLORREF crKey,BYTE bAlpha,DWORD dwFlags);
  2039.  
  2040. #define LWA_COLORKEY 0x00000001
  2041. #define LWA_ALPHA 0x00000002
  2042.  
  2043. #define ULW_COLORKEY 0x00000001
  2044. #define ULW_ALPHA 0x00000002
  2045. #define ULW_OPAQUE 0x00000004
  2046.  
  2047. #define ULW_EX_NORESIZE 0x00000008
  2048.  
  2049.   WINUSERAPI WINBOOL WINAPI ShowWindowAsync(HWND hWnd,int nCmdShow);
  2050.   WINUSERAPI WINBOOL WINAPI FlashWindow(HWND hWnd,WINBOOL bInvert);
  2051.  
  2052.   typedef struct {
  2053.     UINT cbSize;
  2054.     HWND hwnd;
  2055.     DWORD dwFlags;
  2056.     UINT uCount;
  2057.     DWORD dwTimeout;
  2058.   } FLASHWINFO,*PFLASHWINFO;
  2059.  
  2060.   WINUSERAPI WINBOOL WINAPI FlashWindowEx(PFLASHWINFO pfwi);
  2061.  
  2062. #define FLASHW_STOP 0
  2063. #define FLASHW_CAPTION 0x00000001
  2064. #define FLASHW_TRAY 0x00000002
  2065. #define FLASHW_ALL (FLASHW_CAPTION | FLASHW_TRAY)
  2066. #define FLASHW_TIMER 0x00000004
  2067. #define FLASHW_TIMERNOFG 0x0000000C
  2068.  
  2069.   WINUSERAPI WINBOOL WINAPI ShowOwnedPopups(HWND hWnd,WINBOOL fShow);
  2070.   WINUSERAPI WINBOOL WINAPI OpenIcon(HWND hWnd);
  2071.   WINUSERAPI WINBOOL WINAPI CloseWindow(HWND hWnd);
  2072.   WINUSERAPI WINBOOL WINAPI MoveWindow(HWND hWnd,int X,int Y,int nWidth,int nHeight,WINBOOL bRepaint);
  2073.   WINUSERAPI WINBOOL WINAPI SetWindowPos(HWND hWnd,HWND hWndInsertAfter,int X,int Y,int cx,int cy,UINT uFlags);
  2074.   WINUSERAPI WINBOOL WINAPI GetWindowPlacement(HWND hWnd,WINDOWPLACEMENT *lpwndpl);
  2075.   WINUSERAPI WINBOOL WINAPI SetWindowPlacement(HWND hWnd,CONST WINDOWPLACEMENT *lpwndpl);
  2076.  
  2077. #ifndef NODEFERWINDOWPOS
  2078.   WINUSERAPI HDWP WINAPI BeginDeferWindowPos(int nNumWindows);
  2079.   WINUSERAPI HDWP WINAPI DeferWindowPos(HDWP hWinPosInfo,HWND hWnd,HWND hWndInsertAfter,int x,int y,int cx,int cy,UINT uFlags);
  2080.   WINUSERAPI WINBOOL WINAPI EndDeferWindowPos(HDWP hWinPosInfo);
  2081. #endif
  2082.  
  2083.   WINUSERAPI WINBOOL WINAPI IsWindowVisible(HWND hWnd);
  2084.   WINUSERAPI WINBOOL WINAPI IsIconic(HWND hWnd);
  2085.   WINUSERAPI WINBOOL WINAPI AnyPopup(VOID);
  2086.   WINUSERAPI WINBOOL WINAPI BringWindowToTop(HWND hWnd);
  2087.   WINUSERAPI WINBOOL WINAPI IsZoomed(HWND hWnd);
  2088.  
  2089. #define SWP_NOSIZE 0x0001
  2090. #define SWP_NOMOVE 0x0002
  2091. #define SWP_NOZORDER 0x0004
  2092. #define SWP_NOREDRAW 0x0008
  2093. #define SWP_NOACTIVATE 0x0010
  2094. #define SWP_FRAMECHANGED 0x0020
  2095. #define SWP_SHOWWINDOW 0x0040
  2096. #define SWP_HIDEWINDOW 0x0080
  2097. #define SWP_NOCOPYBITS 0x0100
  2098. #define SWP_NOOWNERZORDER 0x0200
  2099. #define SWP_NOSENDCHANGING 0x0400
  2100.  
  2101. #define SWP_DRAWFRAME SWP_FRAMECHANGED
  2102. #define SWP_NOREPOSITION SWP_NOOWNERZORDER
  2103. #define SWP_DEFERERASE 0x2000
  2104. #define SWP_ASYNCWINDOWPOS 0x4000
  2105.  
  2106. #define HWND_TOP ((HWND)0)
  2107. #define HWND_BOTTOM ((HWND)1)
  2108. #define HWND_TOPMOST ((HWND)-1)
  2109. #define HWND_NOTOPMOST ((HWND)-2)
  2110.  
  2111. #ifndef NOCTLMGR
  2112.  
  2113. #include <pshpack2.h>
  2114.  
  2115.   typedef struct {
  2116.     DWORD style;
  2117.     DWORD dwExtendedStyle;
  2118.     WORD cdit;
  2119.     short x;
  2120.     short y;
  2121.     short cx;
  2122.     short cy;
  2123.   } DLGTEMPLATE;
  2124.  
  2125.   typedef DLGTEMPLATE *LPDLGTEMPLATEA;
  2126.   typedef DLGTEMPLATE *LPDLGTEMPLATEW;
  2127.  
  2128. #ifdef UNICODE
  2129.   typedef LPDLGTEMPLATEW LPDLGTEMPLATE;
  2130. #else
  2131.   typedef LPDLGTEMPLATEA LPDLGTEMPLATE;
  2132. #endif
  2133.  
  2134.   typedef CONST DLGTEMPLATE *LPCDLGTEMPLATEA;
  2135.   typedef CONST DLGTEMPLATE *LPCDLGTEMPLATEW;
  2136.  
  2137. #ifdef UNICODE
  2138.   typedef LPCDLGTEMPLATEW LPCDLGTEMPLATE;
  2139. #else
  2140.   typedef LPCDLGTEMPLATEA LPCDLGTEMPLATE;
  2141. #endif
  2142.  
  2143.   typedef struct {
  2144.     DWORD style;
  2145.     DWORD dwExtendedStyle;
  2146.     short x;
  2147.     short y;
  2148.     short cx;
  2149.     short cy;
  2150.     WORD id;
  2151.   } DLGITEMTEMPLATE;
  2152.  
  2153.   typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEA;
  2154.   typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEW;
  2155.  
  2156. #ifdef UNICODE
  2157.   typedef PDLGITEMTEMPLATEW PDLGITEMTEMPLATE;
  2158. #else
  2159.   typedef PDLGITEMTEMPLATEA PDLGITEMTEMPLATE;
  2160. #endif
  2161.  
  2162.   typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEA;
  2163.   typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEW;
  2164.  
  2165. #ifdef UNICODE
  2166.   typedef LPDLGITEMTEMPLATEW LPDLGITEMTEMPLATE;
  2167. #else
  2168.   typedef LPDLGITEMTEMPLATEA LPDLGITEMTEMPLATE;
  2169. #endif
  2170.  
  2171. #include <poppack.h>
  2172.  
  2173. #ifdef UNICODE
  2174. #define CreateDialogParam CreateDialogParamW
  2175. #define CreateDialogIndirectParam CreateDialogIndirectParamW
  2176. #define CreateDialog CreateDialogW
  2177. #define CreateDialogIndirect CreateDialogIndirectW
  2178. #define DialogBoxParam DialogBoxParamW
  2179. #define DialogBoxIndirectParam DialogBoxIndirectParamW
  2180. #define DialogBox DialogBoxW
  2181. #define DialogBoxIndirect DialogBoxIndirectW
  2182. #define SetDlgItemText SetDlgItemTextW
  2183. #define GetDlgItemText GetDlgItemTextW
  2184. #define SendDlgItemMessage SendDlgItemMessageW
  2185. #define DefDlgProc DefDlgProcW
  2186. #else
  2187. #define CreateDialogParam CreateDialogParamA
  2188. #define CreateDialogIndirectParam CreateDialogIndirectParamA
  2189. #define CreateDialog CreateDialogA
  2190. #define CreateDialogIndirect CreateDialogIndirectA
  2191. #define DialogBoxParam DialogBoxParamA
  2192. #define DialogBoxIndirectParam DialogBoxIndirectParamA
  2193. #define DialogBox DialogBoxA
  2194. #define DialogBoxIndirect DialogBoxIndirectA
  2195. #define SetDlgItemText SetDlgItemTextA
  2196. #define GetDlgItemText GetDlgItemTextA
  2197. #define SendDlgItemMessage SendDlgItemMessageA
  2198. #define DefDlgProc DefDlgProcA
  2199. #endif
  2200.  
  2201.   WINUSERAPI HWND WINAPI CreateDialogParamA(HINSTANCE hInstance,LPCSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
  2202.   WINUSERAPI HWND WINAPI CreateDialogParamW(HINSTANCE hInstance,LPCWSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
  2203.   WINUSERAPI HWND WINAPI CreateDialogIndirectParamA(HINSTANCE hInstance,LPCDLGTEMPLATEA lpTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
  2204.   WINUSERAPI HWND WINAPI CreateDialogIndirectParamW(HINSTANCE hInstance,LPCDLGTEMPLATEW lpTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
  2205. #define CreateDialogA(hInstance,lpName,hWndParent,lpDialogFunc) CreateDialogParamA(hInstance,lpName,hWndParent,lpDialogFunc,0L)
  2206. #define CreateDialogW(hInstance,lpName,hWndParent,lpDialogFunc) CreateDialogParamW(hInstance,lpName,hWndParent,lpDialogFunc,0L)
  2207. #define CreateDialogIndirectA(hInstance,lpTemplate,hWndParent,lpDialogFunc) CreateDialogIndirectParamA(hInstance,lpTemplate,hWndParent,lpDialogFunc,0L)
  2208. #define CreateDialogIndirectW(hInstance,lpTemplate,hWndParent,lpDialogFunc) CreateDialogIndirectParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,0L)
  2209.   WINUSERAPI INT_PTR WINAPI DialogBoxParamA(HINSTANCE hInstance,LPCSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
  2210.   WINUSERAPI INT_PTR WINAPI DialogBoxParamW(HINSTANCE hInstance,LPCWSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
  2211.   WINUSERAPI INT_PTR WINAPI DialogBoxIndirectParamA(HINSTANCE hInstance,LPCDLGTEMPLATEA hDialogTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
  2212.   WINUSERAPI INT_PTR WINAPI DialogBoxIndirectParamW(HINSTANCE hInstance,LPCDLGTEMPLATEW hDialogTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
  2213. #define DialogBoxA(hInstance,lpTemplate,hWndParent,lpDialogFunc) DialogBoxParamA(hInstance,lpTemplate,hWndParent,lpDialogFunc,0L)
  2214. #define DialogBoxW(hInstance,lpTemplate,hWndParent,lpDialogFunc) DialogBoxParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,0L)
  2215. #define DialogBoxIndirectA(hInstance,lpTemplate,hWndParent,lpDialogFunc) DialogBoxIndirectParamA(hInstance,lpTemplate,hWndParent,lpDialogFunc,0L)
  2216. #define DialogBoxIndirectW(hInstance,lpTemplate,hWndParent,lpDialogFunc) DialogBoxIndirectParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,0L)
  2217.   WINUSERAPI WINBOOL WINAPI EndDialog(HWND hDlg,INT_PTR nResult);
  2218.   WINUSERAPI HWND WINAPI GetDlgItem(HWND hDlg,int nIDDlgItem);
  2219.   WINUSERAPI WINBOOL WINAPI SetDlgItemInt(HWND hDlg,int nIDDlgItem,UINT uValue,WINBOOL bSigned);
  2220.   WINUSERAPI UINT WINAPI GetDlgItemInt(HWND hDlg,int nIDDlgItem,WINBOOL *lpTranslated,WINBOOL bSigned);
  2221.   WINUSERAPI WINBOOL WINAPI SetDlgItemTextA(HWND hDlg,int nIDDlgItem,LPCSTR lpString);
  2222.   WINUSERAPI WINBOOL WINAPI SetDlgItemTextW(HWND hDlg,int nIDDlgItem,LPCWSTR lpString);
  2223.   WINUSERAPI UINT WINAPI GetDlgItemTextA(HWND hDlg,int nIDDlgItem,LPSTR lpString,int cchMax);
  2224.   WINUSERAPI UINT WINAPI GetDlgItemTextW(HWND hDlg,int nIDDlgItem,LPWSTR lpString,int cchMax);
  2225.   WINUSERAPI WINBOOL WINAPI CheckDlgButton(HWND hDlg,int nIDButton,UINT uCheck);
  2226.   WINUSERAPI WINBOOL WINAPI CheckRadioButton(HWND hDlg,int nIDFirstButton,int nIDLastButton,int nIDCheckButton);
  2227.   WINUSERAPI UINT WINAPI IsDlgButtonChecked(HWND hDlg,int nIDButton);
  2228.   WINUSERAPI LRESULT WINAPI SendDlgItemMessageA(HWND hDlg,int nIDDlgItem,UINT Msg,WPARAM wParam,LPARAM lParam);
  2229.   WINUSERAPI LRESULT WINAPI SendDlgItemMessageW(HWND hDlg,int nIDDlgItem,UINT Msg,WPARAM wParam,LPARAM lParam);
  2230.   WINUSERAPI HWND WINAPI GetNextDlgGroupItem(HWND hDlg,HWND hCtl,WINBOOL bPrevious);
  2231.   WINUSERAPI HWND WINAPI GetNextDlgTabItem(HWND hDlg,HWND hCtl,WINBOOL bPrevious);
  2232.   WINUSERAPI int WINAPI GetDlgCtrlID(HWND hWnd);
  2233.   WINUSERAPI long WINAPI GetDialogBaseUnits(VOID);
  2234.   WINUSERAPI LRESULT WINAPI DefDlgProcA(HWND hDlg,UINT Msg,WPARAM wParam,LPARAM lParam);
  2235.   WINUSERAPI LRESULT WINAPI DefDlgProcW(HWND hDlg,UINT Msg,WPARAM wParam,LPARAM lParam);
  2236.  
  2237. #define DLGWINDOWEXTRA 30
  2238. #endif
  2239.  
  2240. #ifndef NOMSG
  2241.  
  2242. #ifdef UNICODE
  2243. #define CallMsgFilter CallMsgFilterW
  2244. #else
  2245. #define CallMsgFilter CallMsgFilterA
  2246. #endif
  2247.  
  2248.   WINUSERAPI WINBOOL WINAPI CallMsgFilterA(LPMSG lpMsg,int nCode);
  2249.   WINUSERAPI WINBOOL WINAPI CallMsgFilterW(LPMSG lpMsg,int nCode);
  2250. #endif
  2251.  
  2252. #ifndef NOCLIPBOARD
  2253.  
  2254. #ifdef UNICODE
  2255. #define RegisterClipboardFormat RegisterClipboardFormatW
  2256. #define GetClipboardFormatName GetClipboardFormatNameW
  2257. #else
  2258. #define RegisterClipboardFormat RegisterClipboardFormatA
  2259. #define GetClipboardFormatName GetClipboardFormatNameA
  2260. #endif
  2261.  
  2262.   WINUSERAPI WINBOOL WINAPI OpenClipboard(HWND hWndNewOwner);
  2263.   WINUSERAPI WINBOOL WINAPI CloseClipboard(VOID);
  2264.   WINUSERAPI DWORD WINAPI GetClipboardSequenceNumber(VOID);
  2265.   WINUSERAPI HWND WINAPI GetClipboardOwner(VOID);
  2266.   WINUSERAPI HWND WINAPI SetClipboardViewer(HWND hWndNewViewer);
  2267.   WINUSERAPI HWND WINAPI GetClipboardViewer(VOID);
  2268.   WINUSERAPI WINBOOL WINAPI ChangeClipboardChain(HWND hWndRemove,HWND hWndNewNext);
  2269.   WINUSERAPI HANDLE WINAPI SetClipboardData(UINT uFormat,HANDLE hMem);
  2270.   WINUSERAPI HANDLE WINAPI GetClipboardData(UINT uFormat);
  2271.   WINUSERAPI UINT WINAPI RegisterClipboardFormatA(LPCSTR lpszFormat);
  2272.   WINUSERAPI UINT WINAPI RegisterClipboardFormatW(LPCWSTR lpszFormat);
  2273.   WINUSERAPI int WINAPI CountClipboardFormats(VOID);
  2274.   WINUSERAPI UINT WINAPI EnumClipboardFormats(UINT format);
  2275.   WINUSERAPI int WINAPI GetClipboardFormatNameA(UINT format,LPSTR lpszFormatName,int cchMaxCount);
  2276.   WINUSERAPI int WINAPI GetClipboardFormatNameW(UINT format,LPWSTR lpszFormatName,int cchMaxCount);
  2277.   WINUSERAPI WINBOOL WINAPI EmptyClipboard(VOID);
  2278.   WINUSERAPI WINBOOL WINAPI IsClipboardFormatAvailable(UINT format);
  2279.   WINUSERAPI int WINAPI GetPriorityClipboardFormat(UINT *paFormatPriorityList,int cFormats);
  2280.   WINUSERAPI HWND WINAPI GetOpenClipboardWindow(VOID);
  2281. #endif
  2282.  
  2283. #ifdef UNICODE
  2284. #define CharToOem CharToOemW
  2285. #define OemToChar OemToCharW
  2286. #define CharToOemBuff CharToOemBuffW
  2287. #define OemToCharBuff OemToCharBuffW
  2288. #define CharUpper CharUpperW
  2289. #define CharUpperBuff CharUpperBuffW
  2290. #define CharLower CharLowerW
  2291. #define CharLowerBuff CharLowerBuffW
  2292. #define CharNext CharNextW
  2293. #define CharPrev CharPrevW
  2294. #else
  2295. #define CharToOem CharToOemA
  2296. #define OemToChar OemToCharA
  2297. #define CharToOemBuff CharToOemBuffA
  2298. #define OemToCharBuff OemToCharBuffA
  2299. #define CharUpper CharUpperA
  2300. #define CharUpperBuff CharUpperBuffA
  2301. #define CharLower CharLowerA
  2302. #define CharLowerBuff CharLowerBuffA
  2303. #define CharNext CharNextA
  2304. #define CharPrev CharPrevA
  2305. #endif
  2306.  
  2307.   WINUSERAPI WINBOOL WINAPI CharToOemA(LPCSTR lpszSrc,LPSTR lpszDst);
  2308.   WINUSERAPI WINBOOL WINAPI CharToOemW(LPCWSTR lpszSrc,LPSTR lpszDst);
  2309.   WINUSERAPI WINBOOL WINAPI OemToCharA(LPCSTR lpszSrc,LPSTR lpszDst);
  2310.   WINUSERAPI WINBOOL WINAPI OemToCharW(LPCSTR lpszSrc,LPWSTR lpszDst);
  2311.   WINUSERAPI WINBOOL WINAPI CharToOemBuffA(LPCSTR lpszSrc,LPSTR lpszDst,DWORD cchDstLength);
  2312.   WINUSERAPI WINBOOL WINAPI CharToOemBuffW(LPCWSTR lpszSrc,LPSTR lpszDst,DWORD cchDstLength);
  2313.   WINUSERAPI WINBOOL WINAPI OemToCharBuffA(LPCSTR lpszSrc,LPSTR lpszDst,DWORD cchDstLength);
  2314.   WINUSERAPI WINBOOL WINAPI OemToCharBuffW(LPCSTR lpszSrc,LPWSTR lpszDst,DWORD cchDstLength);
  2315.   WINUSERAPI LPSTR WINAPI CharUpperA(LPSTR lpsz);
  2316.   WINUSERAPI LPWSTR WINAPI CharUpperW(LPWSTR lpsz);
  2317.   WINUSERAPI DWORD WINAPI CharUpperBuffA(LPSTR lpsz,DWORD cchLength);
  2318.   WINUSERAPI DWORD WINAPI CharUpperBuffW(LPWSTR lpsz,DWORD cchLength);
  2319.   WINUSERAPI LPSTR WINAPI CharLowerA(LPSTR lpsz);
  2320.   WINUSERAPI LPWSTR WINAPI CharLowerW(LPWSTR lpsz);
  2321.   WINUSERAPI DWORD WINAPI CharLowerBuffA(LPSTR lpsz,DWORD cchLength);
  2322.   WINUSERAPI DWORD WINAPI CharLowerBuffW(LPWSTR lpsz,DWORD cchLength);
  2323.   WINUSERAPI LPSTR WINAPI CharNextA(LPCSTR lpsz);
  2324.   WINUSERAPI LPWSTR WINAPI CharNextW(LPCWSTR lpsz);
  2325.   WINUSERAPI LPSTR WINAPI CharPrevA(LPCSTR lpszStart,LPCSTR lpszCurrent);
  2326.   WINUSERAPI LPWSTR WINAPI CharPrevW(LPCWSTR lpszStart,LPCWSTR lpszCurrent);
  2327.   WINUSERAPI LPSTR WINAPI CharNextExA(WORD CodePage,LPCSTR lpCurrentChar,DWORD dwFlags);
  2328.   WINUSERAPI LPSTR WINAPI CharPrevExA(WORD CodePage,LPCSTR lpStart,LPCSTR lpCurrentChar,DWORD dwFlags);
  2329.  
  2330. #define AnsiToOem CharToOemA
  2331. #define OemToAnsi OemToCharA
  2332. #define AnsiToOemBuff CharToOemBuffA
  2333. #define OemToAnsiBuff OemToCharBuffA
  2334. #define AnsiUpper CharUpperA
  2335. #define AnsiUpperBuff CharUpperBuffA
  2336. #define AnsiLower CharLowerA
  2337. #define AnsiLowerBuff CharLowerBuffA
  2338. #define AnsiNext CharNextA
  2339. #define AnsiPrev CharPrevA
  2340.  
  2341. #ifndef NOLANGUAGE
  2342.  
  2343. #ifdef UNICODE
  2344. #define IsCharAlpha IsCharAlphaW
  2345. #define IsCharAlphaNumeric IsCharAlphaNumericW
  2346. #define IsCharUpper IsCharUpperW
  2347. #define IsCharLower IsCharLowerW
  2348. #else
  2349. #define IsCharAlpha IsCharAlphaA
  2350. #define IsCharAlphaNumeric IsCharAlphaNumericA
  2351. #define IsCharUpper IsCharUpperA
  2352. #define IsCharLower IsCharLowerA
  2353. #endif
  2354.  
  2355.   WINUSERAPI WINBOOL WINAPI IsCharAlphaA(CHAR ch);
  2356.   WINUSERAPI WINBOOL WINAPI IsCharAlphaW(WCHAR ch);
  2357.   WINUSERAPI WINBOOL WINAPI IsCharAlphaNumericA(CHAR ch);
  2358.   WINUSERAPI WINBOOL WINAPI IsCharAlphaNumericW(WCHAR ch);
  2359.   WINUSERAPI WINBOOL WINAPI IsCharUpperA(CHAR ch);
  2360.   WINUSERAPI WINBOOL WINAPI IsCharUpperW(WCHAR ch);
  2361.   WINUSERAPI WINBOOL WINAPI IsCharLowerA(CHAR ch);
  2362.   WINUSERAPI WINBOOL WINAPI IsCharLowerW(WCHAR ch);
  2363. #endif
  2364.  
  2365. #ifdef UNICODE
  2366. #define GetKeyNameText GetKeyNameTextW
  2367. #define VkKeyScan VkKeyScanW
  2368. #define VkKeyScanEx VkKeyScanExW
  2369. #else
  2370. #define GetKeyNameText GetKeyNameTextA
  2371. #define VkKeyScan VkKeyScanA
  2372. #define VkKeyScanEx VkKeyScanExA
  2373. #endif
  2374.  
  2375.   WINUSERAPI HWND WINAPI SetFocus(HWND hWnd);
  2376.   WINUSERAPI HWND WINAPI GetActiveWindow(VOID);
  2377.   WINUSERAPI HWND WINAPI GetFocus(VOID);
  2378.   WINUSERAPI UINT WINAPI GetKBCodePage(VOID);
  2379.   WINUSERAPI SHORT WINAPI GetKeyState(int nVirtKey);
  2380.   WINUSERAPI SHORT WINAPI GetAsyncKeyState(int vKey);
  2381.   WINUSERAPI WINBOOL WINAPI GetKeyboardState(PBYTE lpKeyState);
  2382.   WINUSERAPI WINBOOL WINAPI SetKeyboardState(LPBYTE lpKeyState);
  2383.   WINUSERAPI int WINAPI GetKeyNameTextA(LONG lParam,LPSTR lpString,int cchSize);
  2384.   WINUSERAPI int WINAPI GetKeyNameTextW(LONG lParam,LPWSTR lpString,int cchSize);
  2385.   WINUSERAPI int WINAPI GetKeyboardType(int nTypeFlag);
  2386.   WINUSERAPI int WINAPI ToAscii(UINT uVirtKey,UINT uScanCode,CONST BYTE *lpKeyState,LPWORD lpChar,UINT uFlags);
  2387.   WINUSERAPI int WINAPI ToAsciiEx(UINT uVirtKey,UINT uScanCode,CONST BYTE *lpKeyState,LPWORD lpChar,UINT uFlags,HKL dwhkl);
  2388.   WINUSERAPI int WINAPI ToUnicode(UINT wVirtKey,UINT wScanCode,CONST BYTE *lpKeyState,LPWSTR pwszBuff,int cchBuff,UINT wFlags);
  2389.   WINUSERAPI DWORD WINAPI OemKeyScan(WORD wOemChar);
  2390.   WINUSERAPI SHORT WINAPI VkKeyScanA(CHAR ch);
  2391.   WINUSERAPI SHORT WINAPI VkKeyScanW(WCHAR ch);
  2392.   WINUSERAPI SHORT WINAPI VkKeyScanExA(CHAR ch,HKL dwhkl);
  2393.   WINUSERAPI SHORT WINAPI VkKeyScanExW(WCHAR ch,HKL dwhkl);
  2394.  
  2395. #define KEYEVENTF_EXTENDEDKEY 0x0001
  2396. #define KEYEVENTF_KEYUP 0x0002
  2397. #define KEYEVENTF_UNICODE 0x0004
  2398. #define KEYEVENTF_SCANCODE 0x0008
  2399.  
  2400.   WINUSERAPI VOID WINAPI keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,ULONG_PTR dwExtraInfo);
  2401.  
  2402. #define MOUSEEVENTF_MOVE 0x0001
  2403. #define MOUSEEVENTF_LEFTDOWN 0x0002
  2404. #define MOUSEEVENTF_LEFTUP 0x0004
  2405. #define MOUSEEVENTF_RIGHTDOWN 0x0008
  2406. #define MOUSEEVENTF_RIGHTUP 0x0010
  2407. #define MOUSEEVENTF_MIDDLEDOWN 0x0020
  2408. #define MOUSEEVENTF_MIDDLEUP 0x0040
  2409. #define MOUSEEVENTF_XDOWN 0x0080
  2410. #define MOUSEEVENTF_XUP 0x0100
  2411. #define MOUSEEVENTF_WHEEL 0x0800
  2412. #define MOUSEEVENTF_VIRTUALDESK 0x4000
  2413. #define MOUSEEVENTF_ABSOLUTE 0x8000
  2414.  
  2415.   WINUSERAPI VOID WINAPI mouse_event(DWORD dwFlags,DWORD dx,DWORD dy,DWORD dwData,ULONG_PTR dwExtraInfo);
  2416.  
  2417.   typedef struct tagMOUSEINPUT {
  2418.     LONG dx;
  2419.     LONG dy;
  2420.     DWORD mouseData;
  2421.     DWORD dwFlags;
  2422.     DWORD time;
  2423.     ULONG_PTR dwExtraInfo;
  2424.   } MOUSEINPUT,*PMOUSEINPUT,*LPMOUSEINPUT;
  2425.  
  2426.   typedef struct tagKEYBDINPUT {
  2427.     WORD wVk;
  2428.     WORD wScan;
  2429.     DWORD dwFlags;
  2430.     DWORD time;
  2431.     ULONG_PTR dwExtraInfo;
  2432.   } KEYBDINPUT,*PKEYBDINPUT,*LPKEYBDINPUT;
  2433.  
  2434.   typedef struct tagHARDWAREINPUT {
  2435.     DWORD uMsg;
  2436.     WORD wParamL;
  2437.     WORD wParamH;
  2438.   } HARDWAREINPUT,*PHARDWAREINPUT,*LPHARDWAREINPUT;
  2439.  
  2440. #define INPUT_MOUSE 0
  2441. #define INPUT_KEYBOARD 1
  2442. #define INPUT_HARDWARE 2
  2443.  
  2444.   typedef struct tagINPUT {
  2445.     DWORD type;
  2446.     union {
  2447.       MOUSEINPUT mi;
  2448.       KEYBDINPUT ki;
  2449.       HARDWAREINPUT hi;
  2450.     };
  2451.   } INPUT,*PINPUT,*LPINPUT;
  2452.  
  2453.   WINUSERAPI UINT WINAPI SendInput(UINT cInputs,LPINPUT pInputs,int cbSize);
  2454.  
  2455.   typedef struct tagLASTINPUTINFO {
  2456.     UINT cbSize;
  2457.     DWORD dwTime;
  2458.   } LASTINPUTINFO,*PLASTINPUTINFO;
  2459.  
  2460. #ifdef UNICODE
  2461. #define MapVirtualKey MapVirtualKeyW
  2462. #define MapVirtualKeyEx MapVirtualKeyExW
  2463. #else
  2464. #define MapVirtualKey MapVirtualKeyA
  2465. #define MapVirtualKeyEx MapVirtualKeyExA
  2466. #endif
  2467.  
  2468.   WINUSERAPI WINBOOL WINAPI GetLastInputInfo(PLASTINPUTINFO plii);
  2469.   WINUSERAPI UINT WINAPI MapVirtualKeyA(UINT uCode,UINT uMapType);
  2470.   WINUSERAPI UINT WINAPI MapVirtualKeyW(UINT uCode,UINT uMapType);
  2471.   WINUSERAPI UINT WINAPI MapVirtualKeyExA(UINT uCode,UINT uMapType,HKL dwhkl);
  2472.   WINUSERAPI UINT WINAPI MapVirtualKeyExW(UINT uCode,UINT uMapType,HKL dwhkl);
  2473.   WINUSERAPI WINBOOL WINAPI GetInputState(VOID);
  2474.   WINUSERAPI DWORD WINAPI GetQueueStatus(UINT flags);
  2475.   WINUSERAPI HWND WINAPI GetCapture(VOID);
  2476.   WINUSERAPI HWND WINAPI SetCapture(HWND hWnd);
  2477.   WINUSERAPI WINBOOL WINAPI ReleaseCapture(VOID);
  2478.   WINUSERAPI DWORD WINAPI MsgWaitForMultipleObjects(DWORD nCount,CONST HANDLE *pHandles,WINBOOL fWaitAll,DWORD dwMilliseconds,DWORD dwWakeMask);
  2479.   WINUSERAPI DWORD WINAPI MsgWaitForMultipleObjectsEx(DWORD nCount,CONST HANDLE *pHandles,DWORD dwMilliseconds,DWORD dwWakeMask,DWORD dwFlags);
  2480.  
  2481. #define MWMO_WAITALL 0x0001
  2482. #define MWMO_ALERTABLE 0x0002
  2483. #define MWMO_INPUTAVAILABLE 0x0004
  2484.  
  2485. #define QS_KEY 0x0001
  2486. #define QS_MOUSEMOVE 0x0002
  2487. #define QS_MOUSEBUTTON 0x0004
  2488. #define QS_POSTMESSAGE 0x0008
  2489. #define QS_TIMER 0x0010
  2490. #define QS_PAINT 0x0020
  2491. #define QS_SENDMESSAGE 0x0040
  2492. #define QS_HOTKEY 0x0080
  2493. #define QS_ALLPOSTMESSAGE 0x0100
  2494. #define QS_RAWINPUT 0x0400
  2495. #define QS_MOUSE (QS_MOUSEMOVE | QS_MOUSEBUTTON)
  2496. #define QS_INPUT (QS_MOUSE | QS_KEY | QS_RAWINPUT)
  2497. #define QS_ALLEVENTS (QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY)
  2498. #define QS_ALLINPUT (QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY | QS_SENDMESSAGE)
  2499.  
  2500. #define USER_TIMER_MAXIMUM 0x7FFFFFFF
  2501. #define USER_TIMER_MINIMUM 0x0000000A
  2502.  
  2503. #ifdef UNICODE
  2504. #define LoadAccelerators LoadAcceleratorsW
  2505. #define CreateAcceleratorTable CreateAcceleratorTableW
  2506. #define CopyAcceleratorTable CopyAcceleratorTableW
  2507. #else
  2508. #define LoadAccelerators LoadAcceleratorsA
  2509. #define CreateAcceleratorTable CreateAcceleratorTableA
  2510. #define CopyAcceleratorTable CopyAcceleratorTableA
  2511. #endif
  2512.  
  2513.   WINUSERAPI UINT_PTR WINAPI SetTimer(HWND hWnd,UINT_PTR nIDEvent,UINT uElapse,TIMERPROC lpTimerFunc);
  2514.   WINUSERAPI WINBOOL WINAPI KillTimer(HWND hWnd,UINT_PTR uIDEvent);
  2515.   WINUSERAPI WINBOOL WINAPI IsWindowUnicode(HWND hWnd);
  2516.   WINUSERAPI WINBOOL WINAPI EnableWindow(HWND hWnd,WINBOOL bEnable);
  2517.   WINUSERAPI WINBOOL WINAPI IsWindowEnabled(HWND hWnd);
  2518.   WINUSERAPI HACCEL WINAPI LoadAcceleratorsA(HINSTANCE hInstance,LPCSTR lpTableName);
  2519.   WINUSERAPI HACCEL WINAPI LoadAcceleratorsW(HINSTANCE hInstance,LPCWSTR lpTableName);
  2520.   WINUSERAPI HACCEL WINAPI CreateAcceleratorTableA(LPACCEL paccel,int cAccel);
  2521.   WINUSERAPI HACCEL WINAPI CreateAcceleratorTableW(LPACCEL paccel,int cAccel);
  2522.   WINUSERAPI WINBOOL WINAPI DestroyAcceleratorTable(HACCEL hAccel);
  2523.   WINUSERAPI int WINAPI CopyAcceleratorTableA(HACCEL hAccelSrc,LPACCEL lpAccelDst,int cAccelEntries);
  2524.   WINUSERAPI int WINAPI CopyAcceleratorTableW(HACCEL hAccelSrc,LPACCEL lpAccelDst,int cAccelEntries);
  2525.  
  2526. #ifndef NOMSG
  2527.  
  2528. #ifdef UNICODE
  2529. #define TranslateAccelerator TranslateAcceleratorW
  2530. #else
  2531. #define TranslateAccelerator TranslateAcceleratorA
  2532. #endif
  2533.  
  2534.   WINUSERAPI int WINAPI TranslateAcceleratorA(HWND hWnd,HACCEL hAccTable,LPMSG lpMsg);
  2535.   WINUSERAPI int WINAPI TranslateAcceleratorW(HWND hWnd,HACCEL hAccTable,LPMSG lpMsg);
  2536. #endif
  2537.  
  2538. #ifndef NOSYSMETRICS
  2539.  
  2540. #define SM_CXSCREEN 0
  2541. #define SM_CYSCREEN 1
  2542. #define SM_CXVSCROLL 2
  2543. #define SM_CYHSCROLL 3
  2544. #define SM_CYCAPTION 4
  2545. #define SM_CXBORDER 5
  2546. #define SM_CYBORDER 6
  2547. #define SM_CXDLGFRAME 7
  2548. #define SM_CYDLGFRAME 8
  2549. #define SM_CYVTHUMB 9
  2550. #define SM_CXHTHUMB 10
  2551. #define SM_CXICON 11
  2552. #define SM_CYICON 12
  2553. #define SM_CXCURSOR 13
  2554. #define SM_CYCURSOR 14
  2555. #define SM_CYMENU 15
  2556. #define SM_CXFULLSCREEN 16
  2557. #define SM_CYFULLSCREEN 17
  2558. #define SM_CYKANJIWINDOW 18
  2559. #define SM_MOUSEPRESENT 19
  2560. #define SM_CYVSCROLL 20
  2561. #define SM_CXHSCROLL 21
  2562. #define SM_DEBUG 22
  2563. #define SM_SWAPBUTTON 23
  2564. #define SM_RESERVED1 24
  2565. #define SM_RESERVED2 25
  2566. #define SM_RESERVED3 26
  2567. #define SM_RESERVED4 27
  2568. #define SM_CXMIN 28
  2569. #define SM_CYMIN 29
  2570. #define SM_CXSIZE 30
  2571. #define SM_CYSIZE 31
  2572. #define SM_CXFRAME 32
  2573. #define SM_CYFRAME 33
  2574. #define SM_CXMINTRACK 34
  2575. #define SM_CYMINTRACK 35
  2576. #define SM_CXDOUBLECLK 36
  2577. #define SM_CYDOUBLECLK 37
  2578. #define SM_CXICONSPACING 38
  2579. #define SM_CYICONSPACING 39
  2580. #define SM_MENUDROPALIGNMENT 40
  2581. #define SM_PENWINDOWS 41
  2582. #define SM_DBCSENABLED 42
  2583. #define SM_CMOUSEBUTTONS 43
  2584.  
  2585. #define SM_CXFIXEDFRAME SM_CXDLGFRAME
  2586. #define SM_CYFIXEDFRAME SM_CYDLGFRAME
  2587. #define SM_CXSIZEFRAME SM_CXFRAME
  2588. #define SM_CYSIZEFRAME SM_CYFRAME
  2589.  
  2590. #define SM_SECURE 44
  2591. #define SM_CXEDGE 45
  2592. #define SM_CYEDGE 46
  2593. #define SM_CXMINSPACING 47
  2594. #define SM_CYMINSPACING 48
  2595. #define SM_CXSMICON 49
  2596. #define SM_CYSMICON 50
  2597. #define SM_CYSMCAPTION 51
  2598. #define SM_CXSMSIZE 52
  2599. #define SM_CYSMSIZE 53
  2600. #define SM_CXMENUSIZE 54
  2601. #define SM_CYMENUSIZE 55
  2602. #define SM_ARRANGE 56
  2603. #define SM_CXMINIMIZED 57
  2604. #define SM_CYMINIMIZED 58
  2605. #define SM_CXMAXTRACK 59
  2606. #define SM_CYMAXTRACK 60
  2607. #define SM_CXMAXIMIZED 61
  2608. #define SM_CYMAXIMIZED 62
  2609. #define SM_NETWORK 63
  2610. #define SM_CLEANBOOT 67
  2611. #define SM_CXDRAG 68
  2612. #define SM_CYDRAG 69
  2613. #define SM_SHOWSOUNDS 70
  2614. #define SM_CXMENUCHECK 71
  2615. #define SM_CYMENUCHECK 72
  2616. #define SM_SLOWMACHINE 73
  2617. #define SM_MIDEASTENABLED 74
  2618. #define SM_MOUSEWHEELPRESENT 75
  2619. #define SM_XVIRTUALSCREEN 76
  2620. #define SM_YVIRTUALSCREEN 77
  2621. #define SM_CXVIRTUALSCREEN 78
  2622. #define SM_CYVIRTUALSCREEN 79
  2623. #define SM_CMONITORS 80
  2624. #define SM_SAMEDISPLAYFORMAT 81
  2625. #define SM_IMMENABLED 82
  2626. #define SM_CXFOCUSBORDER 83
  2627. #define SM_CYFOCUSBORDER 84
  2628. #define SM_TABLETPC 86
  2629. #define SM_MEDIACENTER 87
  2630. #define SM_STARTER 88
  2631. #define SM_SERVERR2 89
  2632. #define SM_CMETRICS 90
  2633. #define SM_REMOTESESSION 0x1000
  2634. #define SM_SHUTTINGDOWN 0x2000
  2635. #define SM_REMOTECONTROL 0x2001
  2636. #define SM_CARETBLINKINGENABLED 0x2002
  2637.  
  2638.   WINUSERAPI int WINAPI GetSystemMetrics(int nIndex);
  2639. #endif
  2640.  
  2641. #ifndef NOMENUS
  2642.  
  2643. #ifdef UNICODE
  2644. #define LoadMenu LoadMenuW
  2645. #define LoadMenuIndirect LoadMenuIndirectW
  2646. #define ChangeMenu ChangeMenuW
  2647. #define GetMenuString GetMenuStringW
  2648. #define InsertMenu InsertMenuW
  2649. #define AppendMenu AppendMenuW
  2650. #define ModifyMenu ModifyMenuW
  2651. #else
  2652. #define LoadMenu LoadMenuA
  2653. #define LoadMenuIndirect LoadMenuIndirectA
  2654. #define ChangeMenu ChangeMenuA
  2655. #define GetMenuString GetMenuStringA
  2656. #define InsertMenu InsertMenuA
  2657. #define AppendMenu AppendMenuA
  2658. #define ModifyMenu ModifyMenuA
  2659. #endif
  2660.  
  2661.   WINUSERAPI HMENU WINAPI LoadMenuA(HINSTANCE hInstance,LPCSTR lpMenuName);
  2662.   WINUSERAPI HMENU WINAPI LoadMenuW(HINSTANCE hInstance,LPCWSTR lpMenuName);
  2663.   WINUSERAPI HMENU WINAPI LoadMenuIndirectA(CONST MENUTEMPLATEA *lpMenuTemplate);
  2664.   WINUSERAPI HMENU WINAPI LoadMenuIndirectW(CONST MENUTEMPLATEW *lpMenuTemplate);
  2665.   WINUSERAPI HMENU WINAPI GetMenu(HWND hWnd);
  2666.   WINUSERAPI WINBOOL WINAPI SetMenu(HWND hWnd,HMENU hMenu);
  2667.   WINUSERAPI WINBOOL WINAPI ChangeMenuA(HMENU hMenu,UINT cmd,LPCSTR lpszNewItem,UINT cmdInsert,UINT flags);
  2668.   WINUSERAPI WINBOOL WINAPI ChangeMenuW(HMENU hMenu,UINT cmd,LPCWSTR lpszNewItem,UINT cmdInsert,UINT flags);
  2669.   WINUSERAPI WINBOOL WINAPI HiliteMenuItem(HWND hWnd,HMENU hMenu,UINT uIDHiliteItem,UINT uHilite);
  2670.   WINUSERAPI int WINAPI GetMenuStringA(HMENU hMenu,UINT uIDItem,LPSTR lpString,int cchMax,UINT flags);
  2671.   WINUSERAPI int WINAPI GetMenuStringW(HMENU hMenu,UINT uIDItem,LPWSTR lpString,int cchMax,UINT flags);
  2672.   WINUSERAPI UINT WINAPI GetMenuState(HMENU hMenu,UINT uId,UINT uFlags);
  2673.   WINUSERAPI WINBOOL WINAPI DrawMenuBar(HWND hWnd);
  2674.  
  2675. #define PMB_ACTIVE 0x00000001
  2676.  
  2677.   WINUSERAPI HMENU WINAPI GetSystemMenu(HWND hWnd,WINBOOL bRevert);
  2678.   WINUSERAPI HMENU WINAPI CreateMenu(VOID);
  2679.   WINUSERAPI HMENU WINAPI CreatePopupMenu(VOID);
  2680.   WINUSERAPI WINBOOL WINAPI DestroyMenu(HMENU hMenu);
  2681.   WINUSERAPI DWORD WINAPI CheckMenuItem(HMENU hMenu,UINT uIDCheckItem,UINT uCheck);
  2682.   WINUSERAPI WINBOOL WINAPI EnableMenuItem(HMENU hMenu,UINT uIDEnableItem,UINT uEnable);
  2683.   WINUSERAPI HMENU WINAPI GetSubMenu(HMENU hMenu,int nPos);
  2684.   WINUSERAPI UINT WINAPI GetMenuItemID(HMENU hMenu,int nPos);
  2685.   WINUSERAPI int WINAPI GetMenuItemCount(HMENU hMenu);
  2686.   WINUSERAPI WINBOOL WINAPI InsertMenuA(HMENU hMenu,UINT uPosition,UINT uFlags,UINT_PTR uIDNewItem,LPCSTR lpNewItem);
  2687.   WINUSERAPI WINBOOL WINAPI InsertMenuW(HMENU hMenu,UINT uPosition,UINT uFlags,UINT_PTR uIDNewItem,LPCWSTR lpNewItem);
  2688.   WINUSERAPI WINBOOL WINAPI AppendMenuA(HMENU hMenu,UINT uFlags,UINT_PTR uIDNewItem,LPCSTR lpNewItem);
  2689.   WINUSERAPI WINBOOL WINAPI AppendMenuW(HMENU hMenu,UINT uFlags,UINT_PTR uIDNewItem,LPCWSTR lpNewItem);
  2690.   WINUSERAPI WINBOOL WINAPI ModifyMenuA(HMENU hMnu,UINT uPosition,UINT uFlags,UINT_PTR uIDNewItem,LPCSTR lpNewItem);
  2691.   WINUSERAPI WINBOOL WINAPI ModifyMenuW(HMENU hMnu,UINT uPosition,UINT uFlags,UINT_PTR uIDNewItem,LPCWSTR lpNewItem);
  2692.   WINUSERAPI WINBOOL WINAPI RemoveMenu(HMENU hMenu,UINT uPosition,UINT uFlags);
  2693.   WINUSERAPI WINBOOL WINAPI DeleteMenu(HMENU hMenu,UINT uPosition,UINT uFlags);
  2694.   WINUSERAPI WINBOOL WINAPI SetMenuItemBitmaps(HMENU hMenu,UINT uPosition,UINT uFlags,HBITMAP hBitmapUnchecked,HBITMAP hBitmapChecked);
  2695.   WINUSERAPI LONG WINAPI GetMenuCheckMarkDimensions(VOID);
  2696.   WINUSERAPI WINBOOL WINAPI TrackPopupMenu(HMENU hMenu,UINT uFlags,int x,int y,int nReserved,HWND hWnd,CONST RECT *prcRect);
  2697.  
  2698. #define MNC_IGNORE 0
  2699. #define MNC_CLOSE 1
  2700. #define MNC_EXECUTE 2
  2701. #define MNC_SELECT 3
  2702.  
  2703.   typedef struct tagTPMPARAMS {
  2704.     UINT cbSize;
  2705.     RECT rcExclude;
  2706.   } TPMPARAMS;
  2707.  
  2708.   typedef TPMPARAMS *LPTPMPARAMS;
  2709.  
  2710.   WINUSERAPI WINBOOL WINAPI TrackPopupMenuEx(HMENU,UINT,int,int,HWND,LPTPMPARAMS);
  2711.  
  2712. #define MNS_NOCHECK 0x80000000
  2713. #define MNS_MODELESS 0x40000000
  2714. #define MNS_DRAGDROP 0x20000000
  2715. #define MNS_AUTODISMISS 0x10000000
  2716. #define MNS_NOTIFYBYPOS 0x08000000
  2717. #define MNS_CHECKORBMP 0x04000000
  2718.  
  2719. #define MIM_MAXHEIGHT 0x00000001
  2720. #define MIM_BACKGROUND 0x00000002
  2721. #define MIM_HELPID 0x00000004
  2722. #define MIM_MENUDATA 0x00000008
  2723. #define MIM_STYLE 0x00000010
  2724. #define MIM_APPLYTOSUBMENUS 0x80000000
  2725.  
  2726.   typedef struct tagMENUINFO {
  2727.     DWORD cbSize;
  2728.     DWORD fMask;
  2729.     DWORD dwStyle;
  2730.     UINT cyMax;
  2731.     HBRUSH hbrBack;
  2732.     DWORD dwContextHelpID;
  2733.     ULONG_PTR dwMenuData;
  2734.   } MENUINFO,*LPMENUINFO;
  2735.  
  2736.   typedef MENUINFO CONST *LPCMENUINFO;
  2737.  
  2738.   WINUSERAPI WINBOOL WINAPI GetMenuInfo(HMENU,LPMENUINFO);
  2739.   WINUSERAPI WINBOOL WINAPI SetMenuInfo(HMENU,LPCMENUINFO);
  2740.   WINUSERAPI WINBOOL WINAPI EndMenu(VOID);
  2741.  
  2742. #define MND_CONTINUE 0
  2743. #define MND_ENDMENU 1
  2744.  
  2745.   typedef struct tagMENUGETOBJECTINFO {
  2746.     DWORD dwFlags;
  2747.     UINT uPos;
  2748.     HMENU hmenu;
  2749.     PVOID riid;
  2750.     PVOID pvObj;
  2751.   } MENUGETOBJECTINFO,*PMENUGETOBJECTINFO;
  2752.  
  2753. #define MNGOF_TOPGAP 0x00000001
  2754. #define MNGOF_BOTTOMGAP 0x00000002
  2755.  
  2756. #define MNGO_NOINTERFACE 0x00000000
  2757. #define MNGO_NOERROR 0x00000001
  2758.  
  2759. #define MIIM_STATE 0x00000001
  2760. #define MIIM_ID 0x00000002
  2761. #define MIIM_SUBMENU 0x00000004
  2762. #define MIIM_CHECKMARKS 0x00000008
  2763. #define MIIM_TYPE 0x00000010
  2764. #define MIIM_DATA 0x00000020
  2765.  
  2766. #define MIIM_STRING 0x00000040
  2767. #define MIIM_BITMAP 0x00000080
  2768. #define MIIM_FTYPE 0x00000100
  2769.  
  2770. #define HBMMENU_CALLBACK ((HBITMAP) -1)
  2771. #define HBMMENU_SYSTEM ((HBITMAP) 1)
  2772. #define HBMMENU_MBAR_RESTORE ((HBITMAP) 2)
  2773. #define HBMMENU_MBAR_MINIMIZE ((HBITMAP) 3)
  2774. #define HBMMENU_MBAR_CLOSE ((HBITMAP) 5)
  2775. #define HBMMENU_MBAR_CLOSE_D ((HBITMAP) 6)
  2776. #define HBMMENU_MBAR_MINIMIZE_D ((HBITMAP) 7)
  2777. #define HBMMENU_POPUP_CLOSE ((HBITMAP) 8)
  2778. #define HBMMENU_POPUP_RESTORE ((HBITMAP) 9)
  2779. #define HBMMENU_POPUP_MAXIMIZE ((HBITMAP) 10)
  2780. #define HBMMENU_POPUP_MINIMIZE ((HBITMAP) 11)
  2781.  
  2782.   typedef struct tagMENUITEMINFOA {
  2783.     UINT cbSize;
  2784.     UINT fMask;
  2785.     UINT fType;
  2786.     UINT fState;
  2787.     UINT wID;
  2788.     HMENU hSubMenu;
  2789.     HBITMAP hbmpChecked;
  2790.     HBITMAP hbmpUnchecked;
  2791.     ULONG_PTR dwItemData;
  2792.     LPSTR dwTypeData;
  2793.     UINT cch;
  2794.     HBITMAP hbmpItem;
  2795.   } MENUITEMINFOA,*LPMENUITEMINFOA;
  2796.  
  2797.   typedef struct tagMENUITEMINFOW {
  2798.     UINT cbSize;
  2799.     UINT fMask;
  2800.     UINT fType;
  2801.     UINT fState;
  2802.     UINT wID;
  2803.     HMENU hSubMenu;
  2804.     HBITMAP hbmpChecked;
  2805.     HBITMAP hbmpUnchecked;
  2806.     ULONG_PTR dwItemData;
  2807.     LPWSTR dwTypeData;
  2808.     UINT cch;
  2809.     HBITMAP hbmpItem;
  2810.   } MENUITEMINFOW,*LPMENUITEMINFOW;
  2811.  
  2812. #ifdef UNICODE
  2813.   typedef MENUITEMINFOW MENUITEMINFO;
  2814.   typedef LPMENUITEMINFOW LPMENUITEMINFO;
  2815. #else
  2816.   typedef MENUITEMINFOA MENUITEMINFO;
  2817.   typedef LPMENUITEMINFOA LPMENUITEMINFO;
  2818. #endif
  2819.   typedef MENUITEMINFOA CONST *LPCMENUITEMINFOA;
  2820.   typedef MENUITEMINFOW CONST *LPCMENUITEMINFOW;
  2821. #ifdef UNICODE
  2822.   typedef LPCMENUITEMINFOW LPCMENUITEMINFO;
  2823. #else
  2824.   typedef LPCMENUITEMINFOA LPCMENUITEMINFO;
  2825. #endif
  2826.  
  2827. #ifdef UNICODE
  2828. #define InsertMenuItem InsertMenuItemW
  2829. #define GetMenuItemInfo GetMenuItemInfoW
  2830. #define SetMenuItemInfo SetMenuItemInfoW
  2831. #else
  2832. #define InsertMenuItem InsertMenuItemA
  2833. #define GetMenuItemInfo GetMenuItemInfoA
  2834. #define SetMenuItemInfo SetMenuItemInfoA
  2835. #endif
  2836.  
  2837.   WINUSERAPI WINBOOL WINAPI InsertMenuItemA(HMENU hmenu,UINT item,WINBOOL fByPosition,LPCMENUITEMINFOA lpmi);
  2838.   WINUSERAPI WINBOOL WINAPI InsertMenuItemW(HMENU hmenu,UINT item,WINBOOL fByPosition,LPCMENUITEMINFOW lpmi);
  2839.   WINUSERAPI WINBOOL WINAPI GetMenuItemInfoA(HMENU hmenu,UINT item,WINBOOL fByPosition,LPMENUITEMINFOA lpmii);
  2840.   WINUSERAPI WINBOOL WINAPI GetMenuItemInfoW(HMENU hmenu,UINT item,WINBOOL fByPosition,LPMENUITEMINFOW lpmii);
  2841.   WINUSERAPI WINBOOL WINAPI SetMenuItemInfoA(HMENU hmenu,UINT item,WINBOOL fByPositon,LPCMENUITEMINFOA lpmii);
  2842.   WINUSERAPI WINBOOL WINAPI SetMenuItemInfoW(HMENU hmenu,UINT item,WINBOOL fByPositon,LPCMENUITEMINFOW lpmii);
  2843.  
  2844. #define GMDI_USEDISABLED 0x0001L
  2845. #define GMDI_GOINTOPOPUPS 0x0002L
  2846.  
  2847.   WINUSERAPI UINT WINAPI GetMenuDefaultItem(HMENU hMenu,UINT fByPos,UINT gmdiFlags);
  2848.   WINUSERAPI WINBOOL WINAPI SetMenuDefaultItem(HMENU hMenu,UINT uItem,UINT fByPos);
  2849.   WINUSERAPI WINBOOL WINAPI GetMenuItemRect(HWND hWnd,HMENU hMenu,UINT uItem,LPRECT lprcItem);
  2850.   WINUSERAPI int WINAPI MenuItemFromPoint(HWND hWnd,HMENU hMenu,POINT ptScreen);
  2851.  
  2852. #define TPM_LEFTBUTTON 0x0000L
  2853. #define TPM_RIGHTBUTTON 0x0002L
  2854. #define TPM_LEFTALIGN 0x0000L
  2855. #define TPM_CENTERALIGN 0x0004L
  2856. #define TPM_RIGHTALIGN 0x0008L
  2857. #define TPM_TOPALIGN 0x0000L
  2858. #define TPM_VCENTERALIGN 0x0010L
  2859. #define TPM_BOTTOMALIGN 0x0020L
  2860.  
  2861. #define TPM_HORIZONTAL 0x0000L
  2862. #define TPM_VERTICAL 0x0040L
  2863. #define TPM_NONOTIFY 0x0080L
  2864. #define TPM_RETURNCMD 0x0100L
  2865. #define TPM_RECURSE 0x0001L
  2866. #define TPM_HORPOSANIMATION 0x0400L
  2867. #define TPM_HORNEGANIMATION 0x0800L
  2868. #define TPM_VERPOSANIMATION 0x1000L
  2869. #define TPM_VERNEGANIMATION 0x2000L
  2870. #define TPM_NOANIMATION 0x4000L
  2871. #define TPM_LAYOUTRTL 0x8000L
  2872. #endif
  2873.  
  2874.   typedef struct tagDROPSTRUCT {
  2875.     HWND hwndSource;
  2876.     HWND hwndSink;
  2877.     DWORD wFmt;
  2878.     ULONG_PTR dwData;
  2879.     POINT ptDrop;
  2880.     DWORD dwControlData;
  2881.   } DROPSTRUCT,*PDROPSTRUCT,*LPDROPSTRUCT;
  2882.  
  2883. #define DOF_EXECUTABLE 0x8001
  2884. #define DOF_DOCUMENT 0x8002
  2885. #define DOF_DIRECTORY 0x8003
  2886. #define DOF_MULTIPLE 0x8004
  2887. #define DOF_PROGMAN 0x0001
  2888. #define DOF_SHELLDATA 0x0002
  2889.  
  2890. #define DO_DROPFILE 0x454C4946L
  2891. #define DO_PRINTFILE 0x544E5250L
  2892.  
  2893.   WINUSERAPI DWORD WINAPI DragObject(HWND hwndParent,HWND hwndFrom,UINT fmt,ULONG_PTR data,HCURSOR hcur);
  2894.   WINUSERAPI WINBOOL WINAPI DragDetect(HWND hwnd,POINT pt);
  2895.   WINUSERAPI WINBOOL WINAPI DrawIcon(HDC hDC,int X,int Y,HICON hIcon);
  2896.  
  2897. #ifndef NODRAWTEXT
  2898.  
  2899. #define DT_TOP 0x00000000
  2900. #define DT_LEFT 0x00000000
  2901. #define DT_CENTER 0x00000001
  2902. #define DT_RIGHT 0x00000002
  2903. #define DT_VCENTER 0x00000004
  2904. #define DT_BOTTOM 0x00000008
  2905. #define DT_WORDBREAK 0x00000010
  2906. #define DT_SINGLELINE 0x00000020
  2907. #define DT_EXPANDTABS 0x00000040
  2908. #define DT_TABSTOP 0x00000080
  2909. #define DT_NOCLIP 0x00000100
  2910. #define DT_EXTERNALLEADING 0x00000200
  2911. #define DT_CALCRECT 0x00000400
  2912. #define DT_NOPREFIX 0x00000800
  2913. #define DT_INTERNAL 0x00001000
  2914.  
  2915. #define DT_EDITCONTROL 0x00002000
  2916. #define DT_PATH_ELLIPSIS 0x00004000
  2917. #define DT_END_ELLIPSIS 0x00008000
  2918. #define DT_MODIFYSTRING 0x00010000
  2919. #define DT_RTLREADING 0x00020000
  2920. #define DT_WORD_ELLIPSIS 0x00040000
  2921. #define DT_NOFULLWIDTHCHARBREAK 0x00080000
  2922. #define DT_HIDEPREFIX 0x00100000
  2923. #define DT_PREFIXONLY 0x00200000
  2924.  
  2925.   typedef struct tagDRAWTEXTPARAMS {
  2926.     UINT cbSize;
  2927.     int iTabLength;
  2928.     int iLeftMargin;
  2929.     int iRightMargin;
  2930.     UINT uiLengthDrawn;
  2931.   } DRAWTEXTPARAMS,*LPDRAWTEXTPARAMS;
  2932.  
  2933. #ifdef UNICODE
  2934. #define DrawText DrawTextW
  2935. #define DrawTextEx DrawTextExW
  2936. #else
  2937. #define DrawText DrawTextA
  2938. #define DrawTextEx DrawTextExA
  2939. #endif
  2940.  
  2941.   WINUSERAPI int WINAPI DrawTextA(HDC hdc,LPCSTR lpchText,int cchText,LPRECT lprc,UINT format);
  2942.   WINUSERAPI int WINAPI DrawTextW(HDC hdc,LPCWSTR lpchText,int cchText,LPRECT lprc,UINT format);
  2943.   WINUSERAPI int WINAPI DrawTextExA(HDC hdc,LPSTR lpchText,int cchText,LPRECT lprc,UINT format,LPDRAWTEXTPARAMS lpdtp);
  2944.   WINUSERAPI int WINAPI DrawTextExW(HDC hdc,LPWSTR lpchText,int cchText,LPRECT lprc,UINT format,LPDRAWTEXTPARAMS lpdtp);
  2945. #endif
  2946.  
  2947. #ifdef UNICODE
  2948. #define GrayString GrayStringW
  2949. #define DrawState DrawStateW
  2950. #define TabbedTextOut TabbedTextOutW
  2951. #define GetTabbedTextExtent GetTabbedTextExtentW
  2952. #else
  2953. #define GrayString GrayStringA
  2954. #define DrawState DrawStateA
  2955. #define TabbedTextOut TabbedTextOutA
  2956. #define GetTabbedTextExtent GetTabbedTextExtentA
  2957. #endif
  2958.  
  2959.   WINUSERAPI WINBOOL WINAPI GrayStringA(HDC hDC,HBRUSH hBrush,GRAYSTRINGPROC lpOutputFunc,LPARAM lpData,int nCount,int X,int Y,int nWidth,int nHeight);
  2960.   WINUSERAPI WINBOOL WINAPI GrayStringW(HDC hDC,HBRUSH hBrush,GRAYSTRINGPROC lpOutputFunc,LPARAM lpData,int nCount,int X,int Y,int nWidth,int nHeight);
  2961.  
  2962. #define DST_COMPLEX 0x0000
  2963. #define DST_TEXT 0x0001
  2964. #define DST_PREFIXTEXT 0x0002
  2965. #define DST_ICON 0x0003
  2966. #define DST_BITMAP 0x0004
  2967.  
  2968. #define DSS_NORMAL 0x0000
  2969. #define DSS_UNION 0x0010
  2970. #define DSS_DISABLED 0x0020
  2971. #define DSS_MONO 0x0080
  2972. #define DSS_HIDEPREFIX 0x0200
  2973. #define DSS_PREFIXONLY 0x0400
  2974. #define DSS_RIGHT 0x8000
  2975.  
  2976.   WINUSERAPI WINBOOL WINAPI DrawStateA(HDC hdc,HBRUSH hbrFore,DRAWSTATEPROC qfnCallBack,LPARAM lData,WPARAM wData,int x,int y,int cx,int cy,UINT uFlags);
  2977.   WINUSERAPI WINBOOL WINAPI DrawStateW(HDC hdc,HBRUSH hbrFore,DRAWSTATEPROC qfnCallBack,LPARAM lData,WPARAM wData,int x,int y,int cx,int cy,UINT uFlags);
  2978.   WINUSERAPI LONG WINAPI TabbedTextOutA(HDC hdc,int x,int y,LPCSTR lpString,int chCount,int nTabPositions,CONST INT *lpnTabStopPositions,int nTabOrigin);
  2979.   WINUSERAPI LONG WINAPI TabbedTextOutW(HDC hdc,int x,int y,LPCWSTR lpString,int chCount,int nTabPositions,CONST INT *lpnTabStopPositions,int nTabOrigin);
  2980.   WINUSERAPI DWORD WINAPI GetTabbedTextExtentA(HDC hdc,LPCSTR lpString,int chCount,int nTabPositions,CONST INT *lpnTabStopPositions);
  2981.   WINUSERAPI DWORD WINAPI GetTabbedTextExtentW(HDC hdc,LPCWSTR lpString,int chCount,int nTabPositions,CONST INT *lpnTabStopPositions);
  2982.   WINUSERAPI WINBOOL WINAPI UpdateWindow(HWND hWnd);
  2983.   WINUSERAPI HWND WINAPI SetActiveWindow(HWND hWnd);
  2984.   WINUSERAPI HWND WINAPI GetForegroundWindow(VOID);
  2985.   WINUSERAPI WINBOOL WINAPI PaintDesktop(HDC hdc);
  2986.   WINUSERAPI VOID WINAPI SwitchToThisWindow(HWND hwnd,WINBOOL fUnknown);
  2987.   WINUSERAPI WINBOOL WINAPI SetForegroundWindow(HWND hWnd);
  2988.   WINUSERAPI WINBOOL WINAPI AllowSetForegroundWindow(DWORD dwProcessId);
  2989.  
  2990. #define ASFW_ANY ((DWORD)-1)
  2991.  
  2992.   WINUSERAPI WINBOOL WINAPI LockSetForegroundWindow(UINT uLockCode);
  2993.  
  2994. #define LSFW_LOCK 1
  2995. #define LSFW_UNLOCK 2
  2996.  
  2997.   WINUSERAPI HWND WINAPI WindowFromDC(HDC hDC);
  2998.   WINUSERAPI HDC WINAPI GetDC(HWND hWnd);
  2999.   WINUSERAPI HDC WINAPI GetDCEx(HWND hWnd,HRGN hrgnClip,DWORD flags);
  3000.  
  3001. #define DCX_WINDOW 0x00000001L
  3002. #define DCX_CACHE 0x00000002L
  3003. #define DCX_NORESETATTRS 0x00000004L
  3004. #define DCX_CLIPCHILDREN 0x00000008L
  3005. #define DCX_CLIPSIBLINGS 0x00000010L
  3006. #define DCX_PARENTCLIP 0x00000020L
  3007. #define DCX_EXCLUDERGN 0x00000040L
  3008. #define DCX_INTERSECTRGN 0x00000080L
  3009. #define DCX_EXCLUDEUPDATE 0x00000100L
  3010. #define DCX_INTERSECTUPDATE 0x00000200L
  3011. #define DCX_LOCKWINDOWUPDATE 0x00000400L
  3012.  
  3013. #define DCX_VALIDATE 0x00200000L
  3014.  
  3015.   WINUSERAPI HDC WINAPI GetWindowDC(HWND hWnd);
  3016.   WINUSERAPI int WINAPI ReleaseDC(HWND hWnd,HDC hDC);
  3017.   WINUSERAPI HDC WINAPI BeginPaint(HWND hWnd,LPPAINTSTRUCT lpPaint);
  3018.   WINUSERAPI WINBOOL WINAPI EndPaint(HWND hWnd,CONST PAINTSTRUCT *lpPaint);
  3019.   WINUSERAPI WINBOOL WINAPI GetUpdateRect(HWND hWnd,LPRECT lpRect,WINBOOL bErase);
  3020.   WINUSERAPI int WINAPI GetUpdateRgn(HWND hWnd,HRGN hRgn,WINBOOL bErase);
  3021.   WINUSERAPI int WINAPI SetWindowRgn(HWND hWnd,HRGN hRgn,WINBOOL bRedraw);
  3022.   WINUSERAPI int WINAPI GetWindowRgn(HWND hWnd,HRGN hRgn);
  3023.   WINUSERAPI int WINAPI GetWindowRgnBox(HWND hWnd,LPRECT lprc);
  3024.   WINUSERAPI int WINAPI ExcludeUpdateRgn(HDC hDC,HWND hWnd);
  3025.   WINUSERAPI WINBOOL WINAPI InvalidateRect(HWND hWnd,CONST RECT *lpRect,WINBOOL bErase);
  3026.   WINUSERAPI WINBOOL WINAPI ValidateRect(HWND hWnd,CONST RECT *lpRect);
  3027.   WINUSERAPI WINBOOL WINAPI InvalidateRgn(HWND hWnd,HRGN hRgn,WINBOOL bErase);
  3028.   WINUSERAPI WINBOOL WINAPI ValidateRgn(HWND hWnd,HRGN hRgn);
  3029.   WINUSERAPI WINBOOL WINAPI RedrawWindow(HWND hWnd,CONST RECT *lprcUpdate,HRGN hrgnUpdate,UINT flags);
  3030.  
  3031. #define RDW_INVALIDATE 0x0001
  3032. #define RDW_INTERNALPAINT 0x0002
  3033. #define RDW_ERASE 0x0004
  3034.  
  3035. #define RDW_VALIDATE 0x0008
  3036. #define RDW_NOINTERNALPAINT 0x0010
  3037. #define RDW_NOERASE 0x0020
  3038.  
  3039. #define RDW_NOCHILDREN 0x0040
  3040. #define RDW_ALLCHILDREN 0x0080
  3041.  
  3042. #define RDW_UPDATENOW 0x0100
  3043. #define RDW_ERASENOW 0x0200
  3044.  
  3045. #define RDW_FRAME 0x0400
  3046. #define RDW_NOFRAME 0x0800
  3047.  
  3048.   WINUSERAPI WINBOOL WINAPI LockWindowUpdate(HWND hWndLock);
  3049.   WINUSERAPI WINBOOL WINAPI ScrollWindow(HWND hWnd,int XAmount,int YAmount,CONST RECT *lpRect,CONST RECT *lpClipRect);
  3050.   WINUSERAPI WINBOOL WINAPI ScrollDC(HDC hDC,int dx,int dy,CONST RECT *lprcScroll,CONST RECT *lprcClip,HRGN hrgnUpdate,LPRECT lprcUpdate);
  3051.   WINUSERAPI int WINAPI ScrollWindowEx(HWND hWnd,int dx,int dy,CONST RECT *prcScroll,CONST RECT *prcClip,HRGN hrgnUpdate,LPRECT prcUpdate,UINT flags);
  3052.  
  3053. #define SW_SCROLLCHILDREN 0x0001
  3054. #define SW_INVALIDATE 0x0002
  3055. #define SW_ERASE 0x0004
  3056. #define SW_SMOOTHSCROLL 0x0010
  3057.  
  3058. #ifndef NOSCROLL
  3059.   WINUSERAPI int WINAPI SetScrollPos(HWND hWnd,int nBar,int nPos,WINBOOL bRedraw);
  3060.   WINUSERAPI int WINAPI GetScrollPos(HWND hWnd,int nBar);
  3061.   WINUSERAPI WINBOOL WINAPI SetScrollRange(HWND hWnd,int nBar,int nMinPos,int nMaxPos,WINBOOL bRedraw);
  3062.   WINUSERAPI WINBOOL WINAPI GetScrollRange(HWND hWnd,int nBar,LPINT lpMinPos,LPINT lpMaxPos);
  3063.   WINUSERAPI WINBOOL WINAPI ShowScrollBar(HWND hWnd,int wBar,WINBOOL bShow);
  3064.   WINUSERAPI WINBOOL WINAPI EnableScrollBar(HWND hWnd,UINT wSBflags,UINT wArrows);
  3065.  
  3066. #define ESB_ENABLE_BOTH 0x0000
  3067. #define ESB_DISABLE_BOTH 0x0003
  3068.  
  3069. #define ESB_DISABLE_LEFT 0x0001
  3070. #define ESB_DISABLE_RIGHT 0x0002
  3071.  
  3072. #define ESB_DISABLE_UP 0x0001
  3073. #define ESB_DISABLE_DOWN 0x0002
  3074.  
  3075. #define ESB_DISABLE_LTUP ESB_DISABLE_LEFT
  3076. #define ESB_DISABLE_RTDN ESB_DISABLE_RIGHT
  3077. #endif
  3078.  
  3079. #ifdef UNICODE
  3080. #define SetProp SetPropW
  3081. #define GetProp GetPropW
  3082. #define RemoveProp RemovePropW
  3083. #define EnumPropsEx EnumPropsExW
  3084. #define EnumProps EnumPropsW
  3085. #define SetWindowText SetWindowTextW
  3086. #define GetWindowText GetWindowTextW
  3087. #define GetWindowTextLength GetWindowTextLengthW
  3088. #else
  3089. #define SetProp SetPropA
  3090. #define GetProp GetPropA
  3091. #define RemoveProp RemovePropA
  3092. #define EnumPropsEx EnumPropsExA
  3093. #define EnumProps EnumPropsA
  3094. #define SetWindowText SetWindowTextA
  3095. #define GetWindowText GetWindowTextA
  3096. #define GetWindowTextLength GetWindowTextLengthA
  3097. #endif
  3098.  
  3099.   WINUSERAPI WINBOOL WINAPI SetPropA(HWND hWnd,LPCSTR lpString,HANDLE hData);
  3100.   WINUSERAPI WINBOOL WINAPI SetPropW(HWND hWnd,LPCWSTR lpString,HANDLE hData);
  3101.   WINUSERAPI HANDLE WINAPI GetPropA(HWND hWnd,LPCSTR lpString);
  3102.   WINUSERAPI HANDLE WINAPI GetPropW(HWND hWnd,LPCWSTR lpString);
  3103.   WINUSERAPI HANDLE WINAPI RemovePropA(HWND hWnd,LPCSTR lpString);
  3104.   WINUSERAPI HANDLE WINAPI RemovePropW(HWND hWnd,LPCWSTR lpString);
  3105.   WINUSERAPI int WINAPI EnumPropsExA(HWND hWnd,PROPENUMPROCEXA lpEnumFunc,LPARAM lParam);
  3106.   WINUSERAPI int WINAPI EnumPropsExW(HWND hWnd,PROPENUMPROCEXW lpEnumFunc,LPARAM lParam);
  3107.   WINUSERAPI int WINAPI EnumPropsA(HWND hWnd,PROPENUMPROCA lpEnumFunc);
  3108.   WINUSERAPI int WINAPI EnumPropsW(HWND hWnd,PROPENUMPROCW lpEnumFunc);
  3109.   WINUSERAPI WINBOOL WINAPI SetWindowTextA(HWND hWnd,LPCSTR lpString);
  3110.   WINUSERAPI WINBOOL WINAPI SetWindowTextW(HWND hWnd,LPCWSTR lpString);
  3111.   WINUSERAPI int WINAPI GetWindowTextA(HWND hWnd,LPSTR lpString,int nMaxCount);
  3112.   WINUSERAPI int WINAPI GetWindowTextW(HWND hWnd,LPWSTR lpString,int nMaxCount);
  3113.   WINUSERAPI int WINAPI GetWindowTextLengthA(HWND hWnd);
  3114.   WINUSERAPI int WINAPI GetWindowTextLengthW(HWND hWnd);
  3115.   WINUSERAPI WINBOOL WINAPI GetClientRect(HWND hWnd,LPRECT lpRect);
  3116.   WINUSERAPI WINBOOL WINAPI GetWindowRect(HWND hWnd,LPRECT lpRect);
  3117.   WINUSERAPI WINBOOL WINAPI AdjustWindowRect(LPRECT lpRect,DWORD dwStyle,WINBOOL bMenu);
  3118.   WINUSERAPI WINBOOL WINAPI AdjustWindowRectEx(LPRECT lpRect,DWORD dwStyle,WINBOOL bMenu,DWORD dwExStyle);
  3119.  
  3120. #define HELPINFO_WINDOW 0x0001
  3121. #define HELPINFO_MENUITEM 0x0002
  3122.  
  3123.   typedef struct tagHELPINFO {
  3124.     UINT cbSize;
  3125.     int iContextType;
  3126.     int iCtrlId;
  3127.     HANDLE hItemHandle;
  3128.     DWORD_PTR dwContextId;
  3129.     POINT MousePos;
  3130.   } HELPINFO,*LPHELPINFO;
  3131.  
  3132.   WINUSERAPI WINBOOL WINAPI SetWindowContextHelpId(HWND,DWORD);
  3133.   WINUSERAPI DWORD WINAPI GetWindowContextHelpId(HWND);
  3134.   WINUSERAPI WINBOOL WINAPI SetMenuContextHelpId(HMENU,DWORD);
  3135.   WINUSERAPI DWORD WINAPI GetMenuContextHelpId(HMENU);
  3136.  
  3137. #ifndef NOMB
  3138.  
  3139. #define MB_OK 0x00000000L
  3140. #define MB_OKCANCEL 0x00000001L
  3141. #define MB_ABORTRETRYIGNORE 0x00000002L
  3142. #define MB_YESNOCANCEL 0x00000003L
  3143. #define MB_YESNO 0x00000004L
  3144. #define MB_RETRYCANCEL 0x00000005L
  3145. #define MB_CANCELTRYCONTINUE 0x00000006L
  3146. #define MB_ICONHAND 0x00000010L
  3147. #define MB_ICONQUESTION 0x00000020L
  3148. #define MB_ICONEXCLAMATION 0x00000030L
  3149. #define MB_ICONASTERISK 0x00000040L
  3150. #define MB_USERICON 0x00000080L
  3151. #define MB_ICONWARNING MB_ICONEXCLAMATION
  3152. #define MB_ICONERROR MB_ICONHAND
  3153. #define MB_ICONINFORMATION MB_ICONASTERISK
  3154. #define MB_ICONSTOP MB_ICONHAND
  3155. #define MB_DEFBUTTON1 0x00000000L
  3156. #define MB_DEFBUTTON2 0x00000100L
  3157. #define MB_DEFBUTTON3 0x00000200L
  3158. #define MB_DEFBUTTON4 0x00000300L
  3159. #define MB_APPLMODAL 0x00000000L
  3160. #define MB_SYSTEMMODAL 0x00001000L
  3161. #define MB_TASKMODAL 0x00002000L
  3162. #define MB_HELP 0x00004000L
  3163. #define MB_NOFOCUS 0x00008000L
  3164. #define MB_SETFOREGROUND 0x00010000L
  3165. #define MB_DEFAULT_DESKTOP_ONLY 0x00020000L
  3166. #define MB_TOPMOST 0x00040000L
  3167. #define MB_RIGHT 0x00080000L
  3168. #define MB_RTLREADING 0x00100000L
  3169. #define MB_SERVICE_NOTIFICATION 0x00200000L
  3170. #define MB_SERVICE_NOTIFICATION_NT3X 0x00040000L
  3171. #define MB_TYPEMASK 0x0000000FL
  3172. #define MB_ICONMASK 0x000000F0L
  3173. #define MB_DEFMASK 0x00000F00L
  3174. #define MB_MODEMASK 0x00003000L
  3175. #define MB_MISCMASK 0x0000C000L
  3176.  
  3177. #ifdef UNICODE
  3178. #define MessageBox MessageBoxW
  3179. #define MessageBoxEx MessageBoxExW
  3180. #else
  3181. #define MessageBox MessageBoxA
  3182. #define MessageBoxEx MessageBoxExA
  3183. #endif
  3184.  
  3185.   WINUSERAPI int WINAPI MessageBoxA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType);
  3186.   WINUSERAPI int WINAPI MessageBoxW(HWND hWnd,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType);
  3187.   WINUSERAPI int WINAPI MessageBoxExA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType,WORD wLanguageId);
  3188.   WINUSERAPI int WINAPI MessageBoxExW(HWND hWnd,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType,WORD wLanguageId);
  3189.  
  3190.   typedef VOID (CALLBACK *MSGBOXCALLBACK)(LPHELPINFO lpHelpInfo);
  3191.  
  3192.   typedef struct tagMSGBOXPARAMSA {
  3193.     UINT cbSize;
  3194.     HWND hwndOwner;
  3195.     HINSTANCE hInstance;
  3196.     LPCSTR lpszText;
  3197.     LPCSTR lpszCaption;
  3198.     DWORD dwStyle;
  3199.     LPCSTR lpszIcon;
  3200.     DWORD_PTR dwContextHelpId;
  3201.     MSGBOXCALLBACK lpfnMsgBoxCallback;
  3202.     DWORD dwLanguageId;
  3203.   } MSGBOXPARAMSA,*PMSGBOXPARAMSA,*LPMSGBOXPARAMSA;
  3204.  
  3205.   typedef struct tagMSGBOXPARAMSW {
  3206.     UINT cbSize;
  3207.     HWND hwndOwner;
  3208.     HINSTANCE hInstance;
  3209.     LPCWSTR lpszText;
  3210.     LPCWSTR lpszCaption;
  3211.     DWORD dwStyle;
  3212.     LPCWSTR lpszIcon;
  3213.     DWORD_PTR dwContextHelpId;
  3214.     MSGBOXCALLBACK lpfnMsgBoxCallback;
  3215.     DWORD dwLanguageId;
  3216.   } MSGBOXPARAMSW,*PMSGBOXPARAMSW,*LPMSGBOXPARAMSW;
  3217.  
  3218. #ifdef UNICODE
  3219.   typedef MSGBOXPARAMSW MSGBOXPARAMS;
  3220.   typedef PMSGBOXPARAMSW PMSGBOXPARAMS;
  3221.   typedef LPMSGBOXPARAMSW LPMSGBOXPARAMS;
  3222. #else
  3223.   typedef MSGBOXPARAMSA MSGBOXPARAMS;
  3224.   typedef PMSGBOXPARAMSA PMSGBOXPARAMS;
  3225.   typedef LPMSGBOXPARAMSA LPMSGBOXPARAMS;
  3226. #endif
  3227.  
  3228. #ifdef UNICODE
  3229. #define MessageBoxIndirect MessageBoxIndirectW
  3230. #else
  3231. #define MessageBoxIndirect MessageBoxIndirectA
  3232. #endif
  3233.  
  3234.   WINUSERAPI int WINAPI MessageBoxIndirectA(CONST MSGBOXPARAMSA *lpmbp);
  3235.   WINUSERAPI int WINAPI MessageBoxIndirectW(CONST MSGBOXPARAMSW *lpmbp);
  3236.   WINUSERAPI WINBOOL WINAPI MessageBeep(UINT uType);
  3237. #endif
  3238.  
  3239.   WINUSERAPI int WINAPI ShowCursor(WINBOOL bShow);
  3240.   WINUSERAPI WINBOOL WINAPI SetCursorPos(int X,int Y);
  3241.   WINUSERAPI HCURSOR WINAPI SetCursor(HCURSOR hCursor);
  3242.   WINUSERAPI WINBOOL WINAPI GetCursorPos(LPPOINT lpPoint);
  3243.   WINUSERAPI WINBOOL WINAPI ClipCursor(CONST RECT *lpRect);
  3244.   WINUSERAPI WINBOOL WINAPI GetClipCursor(LPRECT lpRect);
  3245.   WINUSERAPI HCURSOR WINAPI GetCursor(VOID);
  3246.   WINUSERAPI WINBOOL WINAPI CreateCaret(HWND hWnd,HBITMAP hBitmap,int nWidth,int nHeight);
  3247.   WINUSERAPI UINT WINAPI GetCaretBlinkTime(VOID);
  3248.   WINUSERAPI WINBOOL WINAPI SetCaretBlinkTime(UINT uMSeconds);
  3249.   WINUSERAPI WINBOOL WINAPI DestroyCaret(VOID);
  3250.   WINUSERAPI WINBOOL WINAPI HideCaret(HWND hWnd);
  3251.   WINUSERAPI WINBOOL WINAPI ShowCaret(HWND hWnd);
  3252.   WINUSERAPI WINBOOL WINAPI SetCaretPos(int X,int Y);
  3253.   WINUSERAPI WINBOOL WINAPI GetCaretPos(LPPOINT lpPoint);
  3254.   WINUSERAPI WINBOOL WINAPI ClientToScreen(HWND hWnd,LPPOINT lpPoint);
  3255.   WINUSERAPI WINBOOL WINAPI ScreenToClient(HWND hWnd,LPPOINT lpPoint);
  3256.   WINUSERAPI int WINAPI MapWindowPoints(HWND hWndFrom,HWND hWndTo,LPPOINT lpPoints,UINT cPoints);
  3257.   WINUSERAPI HWND WINAPI WindowFromPoint(POINT Point);
  3258.   WINUSERAPI HWND WINAPI ChildWindowFromPoint(HWND hWndParent,POINT Point);
  3259.  
  3260. #define CWP_ALL 0x0000
  3261. #define CWP_SKIPINVISIBLE 0x0001
  3262. #define CWP_SKIPDISABLED 0x0002
  3263. #define CWP_SKIPTRANSPARENT 0x0004
  3264.  
  3265.   WINUSERAPI HWND WINAPI ChildWindowFromPointEx(HWND hwnd,POINT pt,UINT flags);
  3266.  
  3267. #ifndef NOCOLOR
  3268.  
  3269. #define CTLCOLOR_MSGBOX 0
  3270. #define CTLCOLOR_EDIT 1
  3271. #define CTLCOLOR_LISTBOX 2
  3272. #define CTLCOLOR_BTN 3
  3273. #define CTLCOLOR_DLG 4
  3274. #define CTLCOLOR_SCROLLBAR 5
  3275. #define CTLCOLOR_STATIC 6
  3276. #define CTLCOLOR_MAX 7
  3277.  
  3278. #define COLOR_SCROLLBAR 0
  3279. #define COLOR_BACKGROUND 1
  3280. #define COLOR_ACTIVECAPTION 2
  3281. #define COLOR_INACTIVECAPTION 3
  3282. #define COLOR_MENU 4
  3283. #define COLOR_WINDOW 5
  3284. #define COLOR_WINDOWFRAME 6
  3285. #define COLOR_MENUTEXT 7
  3286. #define COLOR_WINDOWTEXT 8
  3287. #define COLOR_CAPTIONTEXT 9
  3288. #define COLOR_ACTIVEBORDER 10
  3289. #define COLOR_INACTIVEBORDER 11
  3290. #define COLOR_APPWORKSPACE 12
  3291. #define COLOR_HIGHLIGHT 13
  3292. #define COLOR_HIGHLIGHTTEXT 14
  3293. #define COLOR_BTNFACE 15
  3294. #define COLOR_BTNSHADOW 16
  3295. #define COLOR_GRAYTEXT 17
  3296. #define COLOR_BTNTEXT 18
  3297. #define COLOR_INACTIVECAPTIONTEXT 19
  3298. #define COLOR_BTNHIGHLIGHT 20
  3299.  
  3300. #define COLOR_3DDKSHADOW 21
  3301. #define COLOR_3DLIGHT 22
  3302. #define COLOR_INFOTEXT 23
  3303. #define COLOR_INFOBK 24
  3304.  
  3305. #define COLOR_HOTLIGHT 26
  3306. #define COLOR_GRADIENTACTIVECAPTION 27
  3307. #define COLOR_GRADIENTINACTIVECAPTION 28
  3308. #define COLOR_MENUHILIGHT 29
  3309. #define COLOR_MENUBAR 30
  3310.  
  3311. #define COLOR_DESKTOP COLOR_BACKGROUND
  3312. #define COLOR_3DFACE COLOR_BTNFACE
  3313. #define COLOR_3DSHADOW COLOR_BTNSHADOW
  3314. #define COLOR_3DHIGHLIGHT COLOR_BTNHIGHLIGHT
  3315. #define COLOR_3DHILIGHT COLOR_BTNHIGHLIGHT
  3316. #define COLOR_BTNHILIGHT COLOR_BTNHIGHLIGHT
  3317.  
  3318.   WINUSERAPI DWORD WINAPI GetSysColor(int nIndex);
  3319.   WINUSERAPI HBRUSH WINAPI GetSysColorBrush(int nIndex);
  3320.   WINUSERAPI WINBOOL WINAPI SetSysColors(int cElements,CONST INT *lpaElements,CONST COLORREF *lpaRgbValues);
  3321. #endif
  3322.  
  3323.   WINUSERAPI WINBOOL WINAPI DrawFocusRect(HDC hDC,CONST RECT *lprc);
  3324.   WINUSERAPI int WINAPI FillRect(HDC hDC,CONST RECT *lprc,HBRUSH hbr);
  3325.   WINUSERAPI int WINAPI FrameRect(HDC hDC,CONST RECT *lprc,HBRUSH hbr);
  3326.   WINUSERAPI WINBOOL WINAPI InvertRect(HDC hDC,CONST RECT *lprc);
  3327.   WINUSERAPI WINBOOL WINAPI SetRect(LPRECT lprc,int xLeft,int yTop,int xRight,int yBottom);
  3328.   WINUSERAPI WINBOOL WINAPI SetRectEmpty(LPRECT lprc);
  3329.   WINUSERAPI WINBOOL WINAPI CopyRect(LPRECT lprcDst,CONST RECT *lprcSrc);
  3330.   WINUSERAPI WINBOOL WINAPI InflateRect(LPRECT lprc,int dx,int dy);
  3331.   WINUSERAPI WINBOOL WINAPI IntersectRect(LPRECT lprcDst,CONST RECT *lprcSrc1,CONST RECT *lprcSrc2);
  3332.   WINUSERAPI WINBOOL WINAPI UnionRect(LPRECT lprcDst,CONST RECT *lprcSrc1,CONST RECT *lprcSrc2);
  3333.   WINUSERAPI WINBOOL WINAPI SubtractRect(LPRECT lprcDst,CONST RECT *lprcSrc1,CONST RECT *lprcSrc2);
  3334.   WINUSERAPI WINBOOL WINAPI OffsetRect(LPRECT lprc,int dx,int dy);
  3335.   WINUSERAPI WINBOOL WINAPI IsRectEmpty(CONST RECT *lprc);
  3336.   WINUSERAPI WINBOOL WINAPI EqualRect(CONST RECT *lprc1,CONST RECT *lprc2);
  3337.   WINUSERAPI WINBOOL WINAPI PtInRect(CONST RECT *lprc,POINT pt);
  3338.  
  3339. #ifndef NOWINOFFSETS
  3340.  
  3341. #ifdef UNICODE
  3342. #define GetWindowLong GetWindowLongW
  3343. #define SetWindowLong SetWindowLongW
  3344. #else
  3345. #define GetWindowLong GetWindowLongA
  3346. #define SetWindowLong SetWindowLongA
  3347. #endif
  3348.  
  3349.   WINUSERAPI WORD WINAPI GetWindowWord(HWND hWnd,int nIndex);
  3350.   WINUSERAPI WORD WINAPI SetWindowWord(HWND hWnd,int nIndex,WORD wNewWord);
  3351.   WINUSERAPI LONG WINAPI GetWindowLongA(HWND hWnd,int nIndex);
  3352.   WINUSERAPI LONG WINAPI GetWindowLongW(HWND hWnd,int nIndex);
  3353.   WINUSERAPI LONG WINAPI SetWindowLongA(HWND hWnd,int nIndex,LONG dwNewLong);
  3354.   WINUSERAPI LONG WINAPI SetWindowLongW(HWND hWnd,int nIndex,LONG dwNewLong);
  3355.  
  3356. #ifdef _WIN64
  3357.  
  3358. #ifdef UNICODE
  3359. #define GetWindowLongPtr GetWindowLongPtrW
  3360. #define SetWindowLongPtr SetWindowLongPtrW
  3361. #else
  3362. #define GetWindowLongPtr GetWindowLongPtrA
  3363. #define SetWindowLongPtr SetWindowLongPtrA
  3364. #endif
  3365.  
  3366.   WINUSERAPI LONG_PTR WINAPI GetWindowLongPtrA(HWND hWnd,int nIndex);
  3367.   WINUSERAPI LONG_PTR WINAPI GetWindowLongPtrW(HWND hWnd,int nIndex);
  3368.   WINUSERAPI LONG_PTR WINAPI SetWindowLongPtrA(HWND hWnd,int nIndex,LONG_PTR dwNewLong);
  3369.   WINUSERAPI LONG_PTR WINAPI SetWindowLongPtrW(HWND hWnd,int nIndex,LONG_PTR dwNewLong);
  3370. #else
  3371.  
  3372. #ifdef UNICODE
  3373. #define GetWindowLongPtr GetWindowLongPtrW
  3374. #define SetWindowLongPtr SetWindowLongPtrW
  3375. #else
  3376. #define GetWindowLongPtr GetWindowLongPtrA
  3377. #define SetWindowLongPtr SetWindowLongPtrA
  3378. #endif
  3379.  
  3380. #define GetWindowLongPtrA GetWindowLongA
  3381. #define GetWindowLongPtrW GetWindowLongW
  3382. #define SetWindowLongPtrA SetWindowLongA
  3383. #define SetWindowLongPtrW SetWindowLongW
  3384. #endif
  3385.  
  3386. #ifdef UNICODE
  3387. #define GetClassLong GetClassLongW
  3388. #define SetClassLong SetClassLongW
  3389. #else
  3390. #define GetClassLong GetClassLongA
  3391. #define SetClassLong SetClassLongA
  3392. #endif
  3393.  
  3394.   WINUSERAPI WORD WINAPI GetClassWord(HWND hWnd,int nIndex);
  3395.   WINUSERAPI WORD WINAPI SetClassWord(HWND hWnd,int nIndex,WORD wNewWord);
  3396.   WINUSERAPI DWORD WINAPI GetClassLongA(HWND hWnd,int nIndex);
  3397.   WINUSERAPI DWORD WINAPI GetClassLongW(HWND hWnd,int nIndex);
  3398.   WINUSERAPI DWORD WINAPI SetClassLongA(HWND hWnd,int nIndex,LONG dwNewLong);
  3399.   WINUSERAPI DWORD WINAPI SetClassLongW(HWND hWnd,int nIndex,LONG dwNewLong);
  3400.  
  3401. #ifdef _WIN64
  3402.  
  3403. #ifdef UNICODE
  3404. #define GetClassLongPtr GetClassLongPtrW
  3405. #define SetClassLongPtr SetClassLongPtrW
  3406. #else
  3407. #define GetClassLongPtr GetClassLongPtrA
  3408. #define SetClassLongPtr SetClassLongPtrA
  3409. #endif
  3410.  
  3411.   WINUSERAPI ULONG_PTR WINAPI GetClassLongPtrA(HWND hWnd,int nIndex);
  3412.   WINUSERAPI ULONG_PTR WINAPI GetClassLongPtrW(HWND hWnd,int nIndex);
  3413.   WINUSERAPI ULONG_PTR WINAPI SetClassLongPtrA(HWND hWnd,int nIndex,LONG_PTR dwNewLong);
  3414.   WINUSERAPI ULONG_PTR WINAPI SetClassLongPtrW(HWND hWnd,int nIndex,LONG_PTR dwNewLong);
  3415. #else
  3416. #ifdef UNICODE
  3417. #define GetClassLongPtr GetClassLongPtrW
  3418. #define SetClassLongPtr SetClassLongPtrW
  3419. #else
  3420. #define GetClassLongPtr GetClassLongPtrA
  3421. #define SetClassLongPtr SetClassLongPtrA
  3422. #endif
  3423.  
  3424. #define GetClassLongPtrA GetClassLongA
  3425. #define GetClassLongPtrW GetClassLongW
  3426. #define SetClassLongPtrA SetClassLongA
  3427. #define SetClassLongPtrW SetClassLongW
  3428. #endif
  3429. #endif
  3430.  
  3431. #ifdef UNICODE
  3432. #define FindWindow FindWindowW
  3433. #define FindWindowEx FindWindowExW
  3434. #define GetClassName GetClassNameW
  3435. #else
  3436. #define FindWindow FindWindowA
  3437. #define FindWindowEx FindWindowExA
  3438. #define GetClassName GetClassNameA
  3439. #endif
  3440.  
  3441.   WINUSERAPI WINBOOL WINAPI GetProcessDefaultLayout(DWORD *pdwDefaultLayout);
  3442.   WINUSERAPI WINBOOL WINAPI SetProcessDefaultLayout(DWORD dwDefaultLayout);
  3443.   WINUSERAPI HWND WINAPI GetDesktopWindow(VOID);
  3444.   WINUSERAPI HWND WINAPI GetParent(HWND hWnd);
  3445.   WINUSERAPI HWND WINAPI SetParent(HWND hWndChild,HWND hWndNewParent);
  3446.   WINUSERAPI WINBOOL WINAPI EnumChildWindows(HWND hWndParent,WNDENUMPROC lpEnumFunc,LPARAM lParam);
  3447.   WINUSERAPI HWND WINAPI FindWindowA(LPCSTR lpClassName,LPCSTR lpWindowName);
  3448.   WINUSERAPI HWND WINAPI FindWindowW(LPCWSTR lpClassName,LPCWSTR lpWindowName);
  3449.   WINUSERAPI HWND WINAPI FindWindowExA(HWND hWndParent,HWND hWndChildAfter,LPCSTR lpszClass,LPCSTR lpszWindow);
  3450.   WINUSERAPI HWND WINAPI FindWindowExW(HWND hWndParent,HWND hWndChildAfter,LPCWSTR lpszClass,LPCWSTR lpszWindow);
  3451.   WINUSERAPI HWND WINAPI GetShellWindow(VOID);
  3452.   WINUSERAPI WINBOOL WINAPI RegisterShellHookWindow(HWND hwnd);
  3453.   WINUSERAPI WINBOOL WINAPI DeregisterShellHookWindow(HWND hwnd);
  3454.   WINUSERAPI WINBOOL WINAPI EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam);
  3455.   WINUSERAPI WINBOOL WINAPI EnumThreadWindows(DWORD dwThreadId,WNDENUMPROC lpfn,LPARAM lParam);
  3456.  
  3457. #define EnumTaskWindows(hTask,lpfn,lParam) EnumThreadWindows(HandleToUlong(hTask),lpfn,lParam)
  3458.  
  3459.   WINUSERAPI int WINAPI GetClassNameA(HWND hWnd,LPSTR lpClassName,int nMaxCount);
  3460.   WINUSERAPI int WINAPI GetClassNameW(HWND hWnd,LPWSTR lpClassName,int nMaxCount);
  3461.   WINUSERAPI HWND WINAPI GetTopWindow(HWND hWnd);
  3462.  
  3463. #define GetNextWindow(hWnd,wCmd) GetWindow(hWnd,wCmd)
  3464. #define GetSysModalWindow() (NULL)
  3465. #define SetSysModalWindow(hWnd) (NULL)
  3466.  
  3467.   WINUSERAPI DWORD WINAPI GetWindowThreadProcessId(HWND hWnd,LPDWORD lpdwProcessId);
  3468.   WINUSERAPI WINBOOL WINAPI IsGUIThread(WINBOOL bConvert);
  3469.  
  3470. #define GetWindowTask(hWnd) ((HANDLE)(DWORD_PTR)GetWindowThreadProcessId(hWnd,NULL))
  3471.  
  3472.   WINUSERAPI HWND WINAPI GetLastActivePopup(HWND hWnd);
  3473.  
  3474. #define GW_HWNDFIRST 0
  3475. #define GW_HWNDLAST 1
  3476. #define GW_HWNDNEXT 2
  3477. #define GW_HWNDPREV 3
  3478. #define GW_OWNER 4
  3479. #define GW_CHILD 5
  3480. #define GW_ENABLEDPOPUP 6
  3481. #define GW_MAX 6
  3482.  
  3483.   WINUSERAPI HWND WINAPI GetWindow(HWND hWnd,UINT uCmd);
  3484.  
  3485. #ifndef NOWH
  3486.  
  3487. #ifdef UNICODE
  3488. #define SetWindowsHook SetWindowsHookW
  3489. #define SetWindowsHookEx SetWindowsHookExW
  3490. #else
  3491. #define SetWindowsHook SetWindowsHookA
  3492. #define SetWindowsHookEx SetWindowsHookExA
  3493. #endif
  3494.  
  3495.   WINUSERAPI HHOOK WINAPI SetWindowsHookA(int nFilterType,HOOKPROC pfnFilterProc);
  3496.   WINUSERAPI HHOOK WINAPI SetWindowsHookW(int nFilterType,HOOKPROC pfnFilterProc);
  3497.   WINUSERAPI WINBOOL WINAPI UnhookWindowsHook(int nCode,HOOKPROC pfnFilterProc);
  3498.   WINUSERAPI HHOOK WINAPI SetWindowsHookExA(int idHook,HOOKPROC lpfn,HINSTANCE hmod,DWORD dwThreadId);
  3499.   WINUSERAPI HHOOK WINAPI SetWindowsHookExW(int idHook,HOOKPROC lpfn,HINSTANCE hmod,DWORD dwThreadId);
  3500.   WINUSERAPI WINBOOL WINAPI UnhookWindowsHookEx(HHOOK hhk);
  3501.   WINUSERAPI LRESULT WINAPI CallNextHookEx(HHOOK hhk,int nCode,WPARAM wParam,LPARAM lParam);
  3502. #define DefHookProc(nCode,wParam,lParam,phhk) CallNextHookEx(*phhk,nCode,wParam,lParam)
  3503. #endif
  3504.  
  3505. #ifndef NOMENUS
  3506.  
  3507. #define MF_INSERT 0x00000000L
  3508. #define MF_CHANGE 0x00000080L
  3509. #define MF_APPEND 0x00000100L
  3510. #define MF_DELETE 0x00000200L
  3511. #define MF_REMOVE 0x00001000L
  3512. #define MF_BYCOMMAND 0x00000000L
  3513. #define MF_BYPOSITION 0x00000400L
  3514. #define MF_SEPARATOR 0x00000800L
  3515. #define MF_ENABLED 0x00000000L
  3516. #define MF_GRAYED 0x00000001L
  3517. #define MF_DISABLED 0x00000002L
  3518. #define MF_UNCHECKED 0x00000000L
  3519. #define MF_CHECKED 0x00000008L
  3520. #define MF_USECHECKBITMAPS 0x00000200L
  3521. #define MF_STRING 0x00000000L
  3522. #define MF_BITMAP 0x00000004L
  3523. #define MF_OWNERDRAW 0x00000100L
  3524. #define MF_POPUP 0x00000010L
  3525. #define MF_MENUBARBREAK 0x00000020L
  3526. #define MF_MENUBREAK 0x00000040L
  3527. #define MF_UNHILITE 0x00000000L
  3528. #define MF_HILITE 0x00000080L
  3529. #define MF_DEFAULT 0x00001000L
  3530. #define MF_SYSMENU 0x00002000L
  3531. #define MF_HELP 0x00004000L
  3532. #define MF_RIGHTJUSTIFY 0x00004000L
  3533. #define MF_MOUSESELECT 0x00008000L
  3534. #define MF_END 0x00000080L
  3535.  
  3536. #define MFT_STRING MF_STRING
  3537. #define MFT_BITMAP MF_BITMAP
  3538. #define MFT_MENUBARBREAK MF_MENUBARBREAK
  3539. #define MFT_MENUBREAK MF_MENUBREAK
  3540. #define MFT_OWNERDRAW MF_OWNERDRAW
  3541. #define MFT_RADIOCHECK 0x00000200L
  3542. #define MFT_SEPARATOR MF_SEPARATOR
  3543. #define MFT_RIGHTORDER 0x00002000L
  3544. #define MFT_RIGHTJUSTIFY MF_RIGHTJUSTIFY
  3545.  
  3546. #define MFS_GRAYED 0x00000003L
  3547. #define MFS_DISABLED MFS_GRAYED
  3548. #define MFS_CHECKED MF_CHECKED
  3549. #define MFS_HILITE MF_HILITE
  3550. #define MFS_ENABLED MF_ENABLED
  3551. #define MFS_UNCHECKED MF_UNCHECKED
  3552. #define MFS_UNHILITE MF_UNHILITE
  3553. #define MFS_DEFAULT MF_DEFAULT
  3554.  
  3555.   WINUSERAPI WINBOOL WINAPI CheckMenuRadioItem(HMENU hmenu,UINT first,UINT last,UINT check,UINT flags);
  3556.  
  3557.   typedef struct {
  3558.     WORD versionNumber;
  3559.     WORD offset;
  3560.   } MENUITEMTEMPLATEHEADER,*PMENUITEMTEMPLATEHEADER;
  3561.  
  3562.   typedef struct {
  3563.     WORD mtOption;
  3564.     WORD mtID;
  3565.     WCHAR mtString[1];
  3566.   } MENUITEMTEMPLATE,*PMENUITEMTEMPLATE;
  3567. #define MF_END 0x00000080L
  3568. #endif
  3569.  
  3570. #ifndef NOSYSCOMMANDS
  3571.  
  3572. #define SC_SIZE 0xF000
  3573. #define SC_MOVE 0xF010
  3574. #define SC_MINIMIZE 0xF020
  3575. #define SC_MAXIMIZE 0xF030
  3576. #define SC_NEXTWINDOW 0xF040
  3577. #define SC_PREVWINDOW 0xF050
  3578. #define SC_CLOSE 0xF060
  3579. #define SC_VSCROLL 0xF070
  3580. #define SC_HSCROLL 0xF080
  3581. #define SC_MOUSEMENU 0xF090
  3582. #define SC_KEYMENU 0xF100
  3583. #define SC_ARRANGE 0xF110
  3584. #define SC_RESTORE 0xF120
  3585. #define SC_TASKLIST 0xF130
  3586. #define SC_SCREENSAVE 0xF140
  3587. #define SC_HOTKEY 0xF150
  3588. #define SC_DEFAULT 0xF160
  3589. #define SC_MONITORPOWER 0xF170
  3590. #define SC_CONTEXTHELP 0xF180
  3591. #define SC_SEPARATOR 0xF00F
  3592. #define SC_ICON SC_MINIMIZE
  3593. #define SC_ZOOM SC_MAXIMIZE
  3594. #endif
  3595.  
  3596. #ifdef UNICODE
  3597. #define LoadBitmap LoadBitmapW
  3598. #define LoadCursor LoadCursorW
  3599. #define LoadCursorFromFile LoadCursorFromFileW
  3600. #else
  3601. #define LoadBitmap LoadBitmapA
  3602. #define LoadCursor LoadCursorA
  3603. #define LoadCursorFromFile LoadCursorFromFileA
  3604. #endif
  3605.  
  3606.   WINUSERAPI HBITMAP WINAPI LoadBitmapA(HINSTANCE hInstance,LPCSTR lpBitmapName);
  3607.   WINUSERAPI HBITMAP WINAPI LoadBitmapW(HINSTANCE hInstance,LPCWSTR lpBitmapName);
  3608.   WINUSERAPI HCURSOR WINAPI LoadCursorA(HINSTANCE hInstance,LPCSTR lpCursorName);
  3609.   WINUSERAPI HCURSOR WINAPI LoadCursorW(HINSTANCE hInstance,LPCWSTR lpCursorName);
  3610.   WINUSERAPI HCURSOR WINAPI LoadCursorFromFileA(LPCSTR lpFileName);
  3611.   WINUSERAPI HCURSOR WINAPI LoadCursorFromFileW(LPCWSTR lpFileName);
  3612.   WINUSERAPI HCURSOR WINAPI CreateCursor(HINSTANCE hInst,int xHotSpot,int yHotSpot,int nWidth,int nHeight,CONST VOID *pvANDPlane,CONST VOID *pvXORPlane);
  3613.   WINUSERAPI WINBOOL WINAPI DestroyCursor(HCURSOR hCursor);
  3614.  
  3615. #define CopyCursor(pcur) ((HCURSOR)CopyIcon((HICON)(pcur)))
  3616.  
  3617. #define IDC_ARROW MAKEINTRESOURCE(32512)
  3618. #define IDC_IBEAM MAKEINTRESOURCE(32513)
  3619. #define IDC_WAIT MAKEINTRESOURCE(32514)
  3620. #define IDC_CROSS MAKEINTRESOURCE(32515)
  3621. #define IDC_UPARROW MAKEINTRESOURCE(32516)
  3622. #define IDC_SIZE MAKEINTRESOURCE(32640)
  3623. #define IDC_ICON MAKEINTRESOURCE(32641)
  3624. #define IDC_SIZENWSE MAKEINTRESOURCE(32642)
  3625. #define IDC_SIZENESW MAKEINTRESOURCE(32643)
  3626. #define IDC_SIZEWE MAKEINTRESOURCE(32644)
  3627. #define IDC_SIZENS MAKEINTRESOURCE(32645)
  3628. #define IDC_SIZEALL MAKEINTRESOURCE(32646)
  3629. #define IDC_NO MAKEINTRESOURCE(32648)
  3630. #define IDC_HAND MAKEINTRESOURCE(32649)
  3631. #define IDC_APPSTARTING MAKEINTRESOURCE(32650)
  3632. #define IDC_HELP MAKEINTRESOURCE(32651)
  3633.  
  3634.   WINUSERAPI WINBOOL WINAPI SetSystemCursor(HCURSOR hcur,DWORD id);
  3635.  
  3636.   typedef struct _ICONINFO {
  3637.     WINBOOL fIcon;
  3638.     DWORD xHotspot;
  3639.     DWORD yHotspot;
  3640.     HBITMAP hbmMask;
  3641.     HBITMAP hbmColor;
  3642.   } ICONINFO;
  3643.   typedef ICONINFO *PICONINFO;
  3644.  
  3645. #ifdef UNICODE
  3646. #define LoadIcon LoadIconW
  3647. #define PrivateExtractIcons PrivateExtractIconsW
  3648. #else
  3649. #define LoadIcon LoadIconA
  3650. #define PrivateExtractIcons PrivateExtractIconsA
  3651. #endif
  3652.  
  3653.   WINUSERAPI HICON WINAPI LoadIconA(HINSTANCE hInstance,LPCSTR lpIconName);
  3654.   WINUSERAPI HICON WINAPI LoadIconW(HINSTANCE hInstance,LPCWSTR lpIconName);
  3655.   WINUSERAPI UINT WINAPI PrivateExtractIconsA(LPCSTR szFileName,int nIconIndex,int cxIcon,int cyIcon,HICON *phicon,UINT *piconid,UINT nIcons,UINT flags);
  3656.   WINUSERAPI UINT WINAPI PrivateExtractIconsW(LPCWSTR szFileName,int nIconIndex,int cxIcon,int cyIcon,HICON *phicon,UINT *piconid,UINT nIcons,UINT flags);
  3657.   WINUSERAPI HICON WINAPI CreateIcon(HINSTANCE hInstance,int nWidth,int nHeight,BYTE cPlanes,BYTE cBitsPixel,CONST BYTE *lpbANDbits,CONST BYTE *lpbXORbits);
  3658.   WINUSERAPI WINBOOL WINAPI DestroyIcon(HICON hIcon);
  3659.   WINUSERAPI int WINAPI LookupIconIdFromDirectory(PBYTE presbits,WINBOOL fIcon);
  3660.   WINUSERAPI int WINAPI LookupIconIdFromDirectoryEx(PBYTE presbits,WINBOOL fIcon,int cxDesired,int cyDesired,UINT Flags);
  3661.   WINUSERAPI HICON WINAPI CreateIconFromResource(PBYTE presbits,DWORD dwResSize,WINBOOL fIcon,DWORD dwVer);
  3662.   WINUSERAPI HICON WINAPI CreateIconFromResourceEx(PBYTE presbits,DWORD dwResSize,WINBOOL fIcon,DWORD dwVer,int cxDesired,int cyDesired,UINT Flags);
  3663.  
  3664.   typedef struct tagCURSORSHAPE {
  3665.     int xHotSpot;
  3666.     int yHotSpot;
  3667.     int cx;
  3668.     int cy;
  3669.     int cbWidth;
  3670.     BYTE Planes;
  3671.     BYTE BitsPixel;
  3672.   } CURSORSHAPE,*LPCURSORSHAPE;
  3673.  
  3674. #define IMAGE_BITMAP 0
  3675. #define IMAGE_ICON 1
  3676. #define IMAGE_CURSOR 2
  3677. #define IMAGE_ENHMETAFILE 3
  3678.  
  3679. #define LR_DEFAULTCOLOR 0x0000
  3680. #define LR_MONOCHROME 0x0001
  3681. #define LR_COLOR 0x0002
  3682. #define LR_COPYRETURNORG 0x0004
  3683. #define LR_COPYDELETEORG 0x0008
  3684. #define LR_LOADFROMFILE 0x0010
  3685. #define LR_LOADTRANSPARENT 0x0020
  3686. #define LR_DEFAULTSIZE 0x0040
  3687. #define LR_VGACOLOR 0x0080
  3688. #define LR_LOADMAP3DCOLORS 0x1000
  3689. #define LR_CREATEDIBSECTION 0x2000
  3690. #define LR_COPYFROMRESOURCE 0x4000
  3691. #define LR_SHARED 0x8000
  3692.  
  3693. #ifdef UNICODE
  3694. #define LoadImage LoadImageW
  3695. #else
  3696. #define LoadImage LoadImageA
  3697. #endif
  3698.  
  3699.   WINUSERAPI HANDLE WINAPI LoadImageA(HINSTANCE hInst,LPCSTR name,UINT type,int cx,int cy,UINT fuLoad);
  3700.   WINUSERAPI HANDLE WINAPI LoadImageW(HINSTANCE hInst,LPCWSTR name,UINT type,int cx,int cy,UINT fuLoad);
  3701.   WINUSERAPI HANDLE WINAPI CopyImage(HANDLE h,UINT type,int cx,int cy,UINT flags);
  3702.  
  3703. #define DI_MASK 0x0001
  3704. #define DI_IMAGE 0x0002
  3705. #define DI_NORMAL 0x0003
  3706. #define DI_COMPAT 0x0004
  3707. #define DI_DEFAULTSIZE 0x0008
  3708. #define DI_NOMIRROR 0x0010
  3709.  
  3710.   WINUSERAPI WINBOOL WINAPI DrawIconEx(HDC hdc,int xLeft,int yTop,HICON hIcon,int cxWidth,int cyWidth,UINT istepIfAniCur,HBRUSH hbrFlickerFreeDraw,UINT diFlags);
  3711.   WINUSERAPI HICON WINAPI CreateIconIndirect(PICONINFO piconinfo);
  3712.   WINUSERAPI HICON WINAPI CopyIcon(HICON hIcon);
  3713.   WINUSERAPI WINBOOL WINAPI GetIconInfo(HICON hIcon,PICONINFO piconinfo);
  3714.  
  3715. #define RES_ICON 1
  3716. #define RES_CURSOR 2
  3717.  
  3718. #ifdef OEMRESOURCE
  3719.  
  3720. #define OBM_CLOSE 32754
  3721. #define OBM_UPARROW 32753
  3722. #define OBM_DNARROW 32752
  3723. #define OBM_RGARROW 32751
  3724. #define OBM_LFARROW 32750
  3725. #define OBM_REDUCE 32749
  3726. #define OBM_ZOOM 32748
  3727. #define OBM_RESTORE 32747
  3728. #define OBM_REDUCED 32746
  3729. #define OBM_ZOOMD 32745
  3730. #define OBM_RESTORED 32744
  3731. #define OBM_UPARROWD 32743
  3732. #define OBM_DNARROWD 32742
  3733. #define OBM_RGARROWD 32741
  3734. #define OBM_LFARROWD 32740
  3735. #define OBM_MNARROW 32739
  3736. #define OBM_COMBO 32738
  3737. #define OBM_UPARROWI 32737
  3738. #define OBM_DNARROWI 32736
  3739. #define OBM_RGARROWI 32735
  3740. #define OBM_LFARROWI 32734
  3741.  
  3742. #define OBM_OLD_CLOSE 32767
  3743. #define OBM_SIZE 32766
  3744. #define OBM_OLD_UPARROW 32765
  3745. #define OBM_OLD_DNARROW 32764
  3746. #define OBM_OLD_RGARROW 32763
  3747. #define OBM_OLD_LFARROW 32762
  3748. #define OBM_BTSIZE 32761
  3749. #define OBM_CHECK 32760
  3750. #define OBM_CHECKBOXES 32759
  3751. #define OBM_BTNCORNERS 32758
  3752. #define OBM_OLD_REDUCE 32757
  3753. #define OBM_OLD_ZOOM 32756
  3754. #define OBM_OLD_RESTORE 32755
  3755.  
  3756. #define OCR_NORMAL 32512
  3757. #define OCR_IBEAM 32513
  3758. #define OCR_WAIT 32514
  3759. #define OCR_CROSS 32515
  3760. #define OCR_UP 32516
  3761. #define OCR_SIZE 32640
  3762. #define OCR_ICON 32641
  3763. #define OCR_SIZENWSE 32642
  3764. #define OCR_SIZENESW 32643
  3765. #define OCR_SIZEWE 32644
  3766. #define OCR_SIZENS 32645
  3767. #define OCR_SIZEALL 32646
  3768. #define OCR_ICOCUR 32647
  3769. #define OCR_NO 32648
  3770. #define OCR_HAND 32649
  3771. #define OCR_APPSTARTING 32650
  3772.  
  3773. #define OIC_SAMPLE 32512
  3774. #define OIC_HAND 32513
  3775. #define OIC_QUES 32514
  3776. #define OIC_BANG 32515
  3777. #define OIC_NOTE 32516
  3778. #define OIC_WINLOGO 32517
  3779. #define OIC_WARNING OIC_BANG
  3780. #define OIC_ERROR OIC_HAND
  3781. #define OIC_INFORMATION OIC_NOTE
  3782. #endif
  3783.  
  3784. #define ORD_LANGDRIVER 1
  3785.  
  3786. #ifndef NOICONS
  3787.  
  3788. #ifdef RC_INVOKED
  3789. #define IDI_APPLICATION 32512
  3790. #define IDI_HAND 32513
  3791. #define IDI_QUESTION 32514
  3792. #define IDI_EXCLAMATION 32515
  3793. #define IDI_ASTERISK 32516
  3794. #define IDI_WINLOGO 32517
  3795. #else
  3796. #define IDI_APPLICATION MAKEINTRESOURCE(32512)
  3797. #define IDI_HAND MAKEINTRESOURCE(32513)
  3798. #define IDI_QUESTION MAKEINTRESOURCE(32514)
  3799. #define IDI_EXCLAMATION MAKEINTRESOURCE(32515)
  3800. #define IDI_ASTERISK MAKEINTRESOURCE(32516)
  3801. #define IDI_WINLOGO MAKEINTRESOURCE(32517)
  3802. #endif
  3803.  
  3804. #define IDI_WARNING IDI_EXCLAMATION
  3805. #define IDI_ERROR IDI_HAND
  3806. #define IDI_INFORMATION IDI_ASTERISK
  3807. #endif
  3808.  
  3809. #ifdef UNICODE
  3810. #define LoadString LoadStringW
  3811. #else
  3812. #define LoadString LoadStringA
  3813. #endif
  3814.  
  3815.   WINUSERAPI int WINAPI LoadStringA(HINSTANCE hInstance,UINT uID,LPSTR lpBuffer,int cchBufferMax);
  3816.   WINUSERAPI int WINAPI LoadStringW(HINSTANCE hInstance,UINT uID,LPWSTR lpBuffer,int cchBufferMax);
  3817.  
  3818. #define IDOK 1
  3819. #define IDCANCEL 2
  3820. #define IDABORT 3
  3821. #define IDRETRY 4
  3822. #define IDIGNORE 5
  3823. #define IDYES 6
  3824. #define IDNO 7
  3825. #define IDCLOSE 8
  3826. #define IDHELP 9
  3827. #define IDTRYAGAIN 10
  3828. #define IDCONTINUE 11
  3829.  
  3830. #ifndef IDTIMEOUT
  3831. #define IDTIMEOUT 32000
  3832. #endif
  3833.  
  3834. #ifndef NOCTLMGR
  3835.  
  3836. #ifndef NOWINSTYLES
  3837. #define ES_LEFT 0x0000L
  3838. #define ES_CENTER 0x0001L
  3839. #define ES_RIGHT 0x0002L
  3840. #define ES_MULTILINE 0x0004L
  3841. #define ES_UPPERCASE 0x0008L
  3842. #define ES_LOWERCASE 0x0010L
  3843. #define ES_PASSWORD 0x0020L
  3844. #define ES_AUTOVSCROLL 0x0040L
  3845. #define ES_AUTOHSCROLL 0x0080L
  3846. #define ES_NOHIDESEL 0x0100L
  3847. #define ES_OEMCONVERT 0x0400L
  3848. #define ES_READONLY 0x0800L
  3849. #define ES_WANTRETURN 0x1000L
  3850. #define ES_NUMBER 0x2000L
  3851. #endif
  3852.  
  3853. #define EN_SETFOCUS 0x0100
  3854. #define EN_KILLFOCUS 0x0200
  3855. #define EN_CHANGE 0x0300
  3856. #define EN_UPDATE 0x0400
  3857. #define EN_ERRSPACE 0x0500
  3858. #define EN_MAXTEXT 0x0501
  3859. #define EN_HSCROLL 0x0601
  3860. #define EN_VSCROLL 0x0602
  3861. #define EN_ALIGN_LTR_EC 0x0700
  3862. #define EN_ALIGN_RTL_EC 0x0701
  3863.  
  3864. #define EC_LEFTMARGIN 0x0001
  3865. #define EC_RIGHTMARGIN 0x0002
  3866. #define EC_USEFONTINFO 0xffff
  3867.  
  3868. #define EMSIS_COMPOSITIONSTRING 0x0001
  3869.  
  3870. #define EIMES_GETCOMPSTRATONCE 0x0001
  3871. #define EIMES_CANCELCOMPSTRINFOCUS 0x0002
  3872. #define EIMES_COMPLETECOMPSTRKILLFOCUS 0x0004
  3873.  
  3874. #ifndef NOWINMESSAGES
  3875.  
  3876. #define EM_GETSEL 0x00B0
  3877. #define EM_SETSEL 0x00B1
  3878. #define EM_GETRECT 0x00B2
  3879. #define EM_SETRECT 0x00B3
  3880. #define EM_SETRECTNP 0x00B4
  3881. #define EM_SCROLL 0x00B5
  3882. #define EM_LINESCROLL 0x00B6
  3883. #define EM_SCROLLCARET 0x00B7
  3884. #define EM_GETMODIFY 0x00B8
  3885. #define EM_SETMODIFY 0x00B9
  3886. #define EM_GETLINECOUNT 0x00BA
  3887. #define EM_LINEINDEX 0x00BB
  3888. #define EM_SETHANDLE 0x00BC
  3889. #define EM_GETHANDLE 0x00BD
  3890. #define EM_GETTHUMB 0x00BE
  3891. #define EM_LINELENGTH 0x00C1
  3892. #define EM_REPLACESEL 0x00C2
  3893. #define EM_GETLINE 0x00C4
  3894. #define EM_LIMITTEXT 0x00C5
  3895. #define EM_CANUNDO 0x00C6
  3896. #define EM_UNDO 0x00C7
  3897. #define EM_FMTLINES 0x00C8
  3898. #define EM_LINEFROMCHAR 0x00C9
  3899. #define EM_SETTABSTOPS 0x00CB
  3900. #define EM_SETPASSWORDCHAR 0x00CC
  3901. #define EM_EMPTYUNDOBUFFER 0x00CD
  3902. #define EM_GETFIRSTVISIBLELINE 0x00CE
  3903. #define EM_SETREADONLY 0x00CF
  3904. #define EM_SETWORDBREAKPROC 0x00D0
  3905. #define EM_GETWORDBREAKPROC 0x00D1
  3906. #define EM_GETPASSWORDCHAR 0x00D2
  3907. #define EM_SETMARGINS 0x00D3
  3908. #define EM_GETMARGINS 0x00D4
  3909. #define EM_SETLIMITTEXT EM_LIMITTEXT
  3910. #define EM_GETLIMITTEXT 0x00D5
  3911. #define EM_POSFROMCHAR 0x00D6
  3912. #define EM_CHARFROMPOS 0x00D7
  3913. #define EM_SETIMESTATUS 0x00D8
  3914. #define EM_GETIMESTATUS 0x00D9
  3915. #endif
  3916.  
  3917. #define WB_LEFT 0
  3918. #define WB_RIGHT 1
  3919. #define WB_ISDELIMITER 2
  3920.  
  3921. #define BS_PUSHBUTTON 0x00000000L
  3922. #define BS_DEFPUSHBUTTON 0x00000001L
  3923. #define BS_CHECKBOX 0x00000002L
  3924. #define BS_AUTOCHECKBOX 0x00000003L
  3925. #define BS_RADIOBUTTON 0x00000004L
  3926. #define BS_3STATE 0x00000005L
  3927. #define BS_AUTO3STATE 0x00000006L
  3928. #define BS_GROUPBOX 0x00000007L
  3929. #define BS_USERBUTTON 0x00000008L
  3930. #define BS_AUTORADIOBUTTON 0x00000009L
  3931. #define BS_PUSHBOX 0x0000000AL
  3932. #define BS_OWNERDRAW 0x0000000BL
  3933. #define BS_TYPEMASK 0x0000000FL
  3934. #define BS_LEFTTEXT 0x00000020L
  3935. #define BS_TEXT 0x00000000L
  3936. #define BS_ICON 0x00000040L
  3937. #define BS_BITMAP 0x00000080L
  3938. #define BS_LEFT 0x00000100L
  3939. #define BS_RIGHT 0x00000200L
  3940. #define BS_CENTER 0x00000300L
  3941. #define BS_TOP 0x00000400L
  3942. #define BS_BOTTOM 0x00000800L
  3943. #define BS_VCENTER 0x00000C00L
  3944. #define BS_PUSHLIKE 0x00001000L
  3945. #define BS_MULTILINE 0x00002000L
  3946. #define BS_NOTIFY 0x00004000L
  3947. #define BS_FLAT 0x00008000L
  3948. #define BS_RIGHTBUTTON BS_LEFTTEXT
  3949.  
  3950. #define BN_CLICKED 0
  3951. #define BN_PAINT 1
  3952. #define BN_HILITE 2
  3953. #define BN_UNHILITE 3
  3954. #define BN_DISABLE 4
  3955. #define BN_DOUBLECLICKED 5
  3956. #define BN_PUSHED BN_HILITE
  3957. #define BN_UNPUSHED BN_UNHILITE
  3958. #define BN_DBLCLK BN_DOUBLECLICKED
  3959. #define BN_SETFOCUS 6
  3960. #define BN_KILLFOCUS 7
  3961.  
  3962. #define BM_GETCHECK 0x00F0
  3963. #define BM_SETCHECK 0x00F1
  3964. #define BM_GETSTATE 0x00F2
  3965. #define BM_SETSTATE 0x00F3
  3966. #define BM_SETSTYLE 0x00F4
  3967. #define BM_CLICK 0x00F5
  3968. #define BM_GETIMAGE 0x00F6
  3969. #define BM_SETIMAGE 0x00F7
  3970.  
  3971. #define BST_UNCHECKED 0x0000
  3972. #define BST_CHECKED 0x0001
  3973. #define BST_INDETERMINATE 0x0002
  3974. #define BST_PUSHED 0x0004
  3975. #define BST_FOCUS 0x0008
  3976.  
  3977. #define SS_LEFT 0x00000000L
  3978. #define SS_CENTER 0x00000001L
  3979. #define SS_RIGHT 0x00000002L
  3980. #define SS_ICON 0x00000003L
  3981. #define SS_BLACKRECT 0x00000004L
  3982. #define SS_GRAYRECT 0x00000005L
  3983. #define SS_WHITERECT 0x00000006L
  3984. #define SS_BLACKFRAME 0x00000007L
  3985. #define SS_GRAYFRAME 0x00000008L
  3986. #define SS_WHITEFRAME 0x00000009L
  3987. #define SS_USERITEM 0x0000000AL
  3988. #define SS_SIMPLE 0x0000000BL
  3989. #define SS_LEFTNOWORDWRAP 0x0000000CL
  3990. #define SS_OWNERDRAW 0x0000000DL
  3991. #define SS_BITMAP 0x0000000EL
  3992. #define SS_ENHMETAFILE 0x0000000FL
  3993. #define SS_ETCHEDHORZ 0x00000010L
  3994. #define SS_ETCHEDVERT 0x00000011L
  3995. #define SS_ETCHEDFRAME 0x00000012L
  3996. #define SS_TYPEMASK 0x0000001FL
  3997. #define SS_REALSIZECONTROL 0x00000040L
  3998. #define SS_NOPREFIX 0x00000080L
  3999. #define SS_NOTIFY 0x00000100L
  4000. #define SS_CENTERIMAGE 0x00000200L
  4001. #define SS_RIGHTJUST 0x00000400L
  4002. #define SS_REALSIZEIMAGE 0x00000800L
  4003. #define SS_SUNKEN 0x00001000L
  4004. #define SS_EDITCONTROL 0x00002000L
  4005. #define SS_ENDELLIPSIS 0x00004000L
  4006. #define SS_PATHELLIPSIS 0x00008000L
  4007. #define SS_WORDELLIPSIS 0x0000C000L
  4008. #define SS_ELLIPSISMASK 0x0000C000L
  4009.  
  4010. #ifndef NOWINMESSAGES
  4011.  
  4012. #define STM_SETICON 0x0170
  4013. #define STM_GETICON 0x0171
  4014. #define STM_SETIMAGE 0x0172
  4015. #define STM_GETIMAGE 0x0173
  4016. #define STN_CLICKED 0
  4017. #define STN_DBLCLK 1
  4018. #define STN_ENABLE 2
  4019. #define STN_DISABLE 3
  4020. #define STM_MSGMAX 0x0174
  4021. #endif
  4022.  
  4023. #define WC_DIALOG (MAKEINTATOM(0x8002))
  4024.  
  4025. #define DWL_MSGRESULT 0
  4026. #define DWL_DLGPROC 4
  4027. #define DWL_USER 8
  4028.  
  4029. #ifdef _WIN64
  4030.  
  4031. #undef DWL_MSGRESULT
  4032. #undef DWL_DLGPROC
  4033. #undef DWL_USER
  4034. #endif
  4035.  
  4036. #define DWLP_MSGRESULT 0
  4037. #define DWLP_DLGPROC DWLP_MSGRESULT + sizeof(LRESULT)
  4038. #define DWLP_USER DWLP_DLGPROC + sizeof(DLGPROC)
  4039.  
  4040. #ifndef NOMSG
  4041.  
  4042. #ifdef UNICODE
  4043. #define IsDialogMessage IsDialogMessageW
  4044. #else
  4045. #define IsDialogMessage IsDialogMessageA
  4046. #endif
  4047.  
  4048.   WINUSERAPI WINBOOL WINAPI IsDialogMessageA(HWND hDlg,LPMSG lpMsg);
  4049.   WINUSERAPI WINBOOL WINAPI IsDialogMessageW(HWND hDlg,LPMSG lpMsg);
  4050. #endif
  4051.  
  4052. #ifdef UNICODE
  4053. #define DlgDirList DlgDirListW
  4054. #define DlgDirSelectEx DlgDirSelectExW
  4055. #define DlgDirListComboBox DlgDirListComboBoxW
  4056. #define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExW
  4057. #else
  4058. #define DlgDirList DlgDirListA
  4059. #define DlgDirSelectEx DlgDirSelectExA
  4060. #define DlgDirListComboBox DlgDirListComboBoxA
  4061. #define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExA
  4062. #endif
  4063.  
  4064.   WINUSERAPI WINBOOL WINAPI MapDialogRect(HWND hDlg,LPRECT lpRect);
  4065.   WINUSERAPI int WINAPI DlgDirListA(HWND hDlg,LPSTR lpPathSpec,int nIDListBox,int nIDStaticPath,UINT uFileType);
  4066.   WINUSERAPI int WINAPI DlgDirListW(HWND hDlg,LPWSTR lpPathSpec,int nIDListBox,int nIDStaticPath,UINT uFileType);
  4067.  
  4068. #define DDL_READWRITE 0x0000
  4069. #define DDL_READONLY 0x0001
  4070. #define DDL_HIDDEN 0x0002
  4071. #define DDL_SYSTEM 0x0004
  4072. #define DDL_DIRECTORY 0x0010
  4073. #define DDL_ARCHIVE 0x0020
  4074.  
  4075. #define DDL_POSTMSGS 0x2000
  4076. #define DDL_DRIVES 0x4000
  4077. #define DDL_EXCLUSIVE 0x8000
  4078.  
  4079.   WINUSERAPI WINBOOL WINAPI DlgDirSelectExA(HWND hwndDlg,LPSTR lpString,int chCount,int idListBox);
  4080.   WINUSERAPI WINBOOL WINAPI DlgDirSelectExW(HWND hwndDlg,LPWSTR lpString,int chCount,int idListBox);
  4081.   WINUSERAPI int WINAPI DlgDirListComboBoxA(HWND hDlg,LPSTR lpPathSpec,int nIDComboBox,int nIDStaticPath,UINT uFiletype);
  4082.   WINUSERAPI int WINAPI DlgDirListComboBoxW(HWND hDlg,LPWSTR lpPathSpec,int nIDComboBox,int nIDStaticPath,UINT uFiletype);
  4083.   WINUSERAPI WINBOOL WINAPI DlgDirSelectComboBoxExA(HWND hwndDlg,LPSTR lpString,int cchOut,int idComboBox);
  4084.   WINUSERAPI WINBOOL WINAPI DlgDirSelectComboBoxExW(HWND hwndDlg,LPWSTR lpString,int cchOut,int idComboBox);
  4085.  
  4086. #define DS_ABSALIGN 0x01L
  4087. #define DS_SYSMODAL 0x02L
  4088. #define DS_LOCALEDIT 0x20L
  4089. #define DS_SETFONT 0x40L
  4090. #define DS_MODALFRAME 0x80L
  4091. #define DS_NOIDLEMSG 0x100L
  4092. #define DS_SETFOREGROUND 0x200L
  4093.  
  4094. #define DS_3DLOOK 0x0004L
  4095. #define DS_FIXEDSYS 0x0008L
  4096. #define DS_NOFAILCREATE 0x0010L
  4097. #define DS_CONTROL 0x0400L
  4098. #define DS_CENTER 0x0800L
  4099. #define DS_CENTERMOUSE 0x1000L
  4100. #define DS_CONTEXTHELP 0x2000L
  4101.  
  4102. #define DS_SHELLFONT (DS_SETFONT | DS_FIXEDSYS)
  4103.  
  4104. #if(_WIN32_WCE >= 0x0500)
  4105. #define DS_USEPIXELS 0x8000L
  4106. #endif
  4107.  
  4108. #define DM_GETDEFID (WM_USER+0)
  4109. #define DM_SETDEFID (WM_USER+1)
  4110. #define DM_REPOSITION (WM_USER+2)
  4111.  
  4112. #define DC_HASDEFID 0x534B
  4113.  
  4114. #define DLGC_WANTARROWS 0x0001
  4115. #define DLGC_WANTTAB 0x0002
  4116. #define DLGC_WANTALLKEYS 0x0004
  4117. #define DLGC_WANTMESSAGE 0x0004
  4118. #define DLGC_HASSETSEL 0x0008
  4119. #define DLGC_DEFPUSHBUTTON 0x0010
  4120. #define DLGC_UNDEFPUSHBUTTON 0x0020
  4121. #define DLGC_RADIOBUTTON 0x0040
  4122. #define DLGC_WANTCHARS 0x0080
  4123. #define DLGC_STATIC 0x0100
  4124. #define DLGC_BUTTON 0x2000
  4125.  
  4126. #define LB_CTLCODE 0L
  4127.  
  4128. #define LB_OKAY 0
  4129. #define LB_ERR (-1)
  4130. #define LB_ERRSPACE (-2)
  4131.  
  4132. #define LBN_ERRSPACE (-2)
  4133. #define LBN_SELCHANGE 1
  4134. #define LBN_DBLCLK 2
  4135. #define LBN_SELCANCEL 3
  4136. #define LBN_SETFOCUS 4
  4137. #define LBN_KILLFOCUS 5
  4138.  
  4139. #ifndef NOWINMESSAGES
  4140.  
  4141. #define LB_ADDSTRING 0x0180
  4142. #define LB_INSERTSTRING 0x0181
  4143. #define LB_DELETESTRING 0x0182
  4144. #define LB_SELITEMRANGEEX 0x0183
  4145. #define LB_RESETCONTENT 0x0184
  4146. #define LB_SETSEL 0x0185
  4147. #define LB_SETCURSEL 0x0186
  4148. #define LB_GETSEL 0x0187
  4149. #define LB_GETCURSEL 0x0188
  4150. #define LB_GETTEXT 0x0189
  4151. #define LB_GETTEXTLEN 0x018A
  4152. #define LB_GETCOUNT 0x018B
  4153. #define LB_SELECTSTRING 0x018C
  4154. #define LB_DIR 0x018D
  4155. #define LB_GETTOPINDEX 0x018E
  4156. #define LB_FINDSTRING 0x018F
  4157. #define LB_GETSELCOUNT 0x0190
  4158. #define LB_GETSELITEMS 0x0191
  4159. #define LB_SETTABSTOPS 0x0192
  4160. #define LB_GETHORIZONTALEXTENT 0x0193
  4161. #define LB_SETHORIZONTALEXTENT 0x0194
  4162. #define LB_SETCOLUMNWIDTH 0x0195
  4163. #define LB_ADDFILE 0x0196
  4164. #define LB_SETTOPINDEX 0x0197
  4165. #define LB_GETITEMRECT 0x0198
  4166. #define LB_GETITEMDATA 0x0199
  4167. #define LB_SETITEMDATA 0x019A
  4168. #define LB_SELITEMRANGE 0x019B
  4169. #define LB_SETANCHORINDEX 0x019C
  4170. #define LB_GETANCHORINDEX 0x019D
  4171. #define LB_SETCARETINDEX 0x019E
  4172. #define LB_GETCARETINDEX 0x019F
  4173. #define LB_SETITEMHEIGHT 0x01A0
  4174. #define LB_GETITEMHEIGHT 0x01A1
  4175. #define LB_FINDSTRINGEXACT 0x01A2
  4176. #define LB_SETLOCALE 0x01A5
  4177. #define LB_GETLOCALE 0x01A6
  4178. #define LB_SETCOUNT 0x01A7
  4179. #define LB_INITSTORAGE 0x01A8
  4180. #define LB_ITEMFROMPOINT 0x01A9
  4181. #if(_WIN32_WCE >= 0x0400)
  4182. #define LB_MULTIPLEADDSTRING 0x01B1
  4183. #endif
  4184. #define LB_GETLISTBOXINFO 0x01B2
  4185. #define LB_MSGMAX 0x01B3
  4186. #endif
  4187.  
  4188. #ifndef NOWINSTYLES
  4189.  
  4190. #define LBS_NOTIFY 0x0001L
  4191. #define LBS_SORT 0x0002L
  4192. #define LBS_NOREDRAW 0x0004L
  4193. #define LBS_MULTIPLESEL 0x0008L
  4194. #define LBS_OWNERDRAWFIXED 0x0010L
  4195. #define LBS_OWNERDRAWVARIABLE 0x0020L
  4196. #define LBS_HASSTRINGS 0x0040L
  4197. #define LBS_USETABSTOPS 0x0080L
  4198. #define LBS_NOINTEGRALHEIGHT 0x0100L
  4199. #define LBS_MULTICOLUMN 0x0200L
  4200. #define LBS_WANTKEYBOARDINPUT 0x0400L
  4201. #define LBS_EXTENDEDSEL 0x0800L
  4202. #define LBS_DISABLENOSCROLL 0x1000L
  4203. #define LBS_NODATA 0x2000L
  4204. #define LBS_NOSEL 0x4000L
  4205. #define LBS_COMBOBOX 0x8000L
  4206.  
  4207. #define LBS_STANDARD (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
  4208. #endif
  4209.  
  4210. #define CB_OKAY 0
  4211. #define CB_ERR (-1)
  4212. #define CB_ERRSPACE (-2)
  4213.  
  4214. #define CBN_ERRSPACE (-1)
  4215. #define CBN_SELCHANGE 1
  4216. #define CBN_DBLCLK 2
  4217. #define CBN_SETFOCUS 3
  4218. #define CBN_KILLFOCUS 4
  4219. #define CBN_EDITCHANGE 5
  4220. #define CBN_EDITUPDATE 6
  4221. #define CBN_DROPDOWN 7
  4222. #define CBN_CLOSEUP 8
  4223. #define CBN_SELENDOK 9
  4224. #define CBN_SELENDCANCEL 10
  4225.  
  4226. #ifndef NOWINSTYLES
  4227.  
  4228. #define CBS_SIMPLE 0x0001L
  4229. #define CBS_DROPDOWN 0x0002L
  4230. #define CBS_DROPDOWNLIST 0x0003L
  4231. #define CBS_OWNERDRAWFIXED 0x0010L
  4232. #define CBS_OWNERDRAWVARIABLE 0x0020L
  4233. #define CBS_AUTOHSCROLL 0x0040L
  4234. #define CBS_OEMCONVERT 0x0080L
  4235. #define CBS_SORT 0x0100L
  4236. #define CBS_HASSTRINGS 0x0200L
  4237. #define CBS_NOINTEGRALHEIGHT 0x0400L
  4238. #define CBS_DISABLENOSCROLL 0x0800L
  4239. #define CBS_UPPERCASE 0x2000L
  4240. #define CBS_LOWERCASE 0x4000L
  4241. #endif
  4242.  
  4243. #ifndef NOWINMESSAGES
  4244. #define CB_GETEDITSEL 0x0140
  4245. #define CB_LIMITTEXT 0x0141
  4246. #define CB_SETEDITSEL 0x0142
  4247. #define CB_ADDSTRING 0x0143
  4248. #define CB_DELETESTRING 0x0144
  4249. #define CB_DIR 0x0145
  4250. #define CB_GETCOUNT 0x0146
  4251. #define CB_GETCURSEL 0x0147
  4252. #define CB_GETLBTEXT 0x0148
  4253. #define CB_GETLBTEXTLEN 0x0149
  4254. #define CB_INSERTSTRING 0x014A
  4255. #define CB_RESETCONTENT 0x014B
  4256. #define CB_FINDSTRING 0x014C
  4257. #define CB_SELECTSTRING 0x014D
  4258. #define CB_SETCURSEL 0x014E
  4259. #define CB_SHOWDROPDOWN 0x014F
  4260. #define CB_GETITEMDATA 0x0150
  4261. #define CB_SETITEMDATA 0x0151
  4262. #define CB_GETDROPPEDCONTROLRECT 0x0152
  4263. #define CB_SETITEMHEIGHT 0x0153
  4264. #define CB_GETITEMHEIGHT 0x0154
  4265. #define CB_SETEXTENDEDUI 0x0155
  4266. #define CB_GETEXTENDEDUI 0x0156
  4267. #define CB_GETDROPPEDSTATE 0x0157
  4268. #define CB_FINDSTRINGEXACT 0x0158
  4269. #define CB_SETLOCALE 0x0159
  4270. #define CB_GETLOCALE 0x015A
  4271. #define CB_GETTOPINDEX 0x015b
  4272. #define CB_SETTOPINDEX 0x015c
  4273. #define CB_GETHORIZONTALEXTENT 0x015d
  4274. #define CB_SETHORIZONTALEXTENT 0x015e
  4275. #define CB_GETDROPPEDWIDTH 0x015f
  4276. #define CB_SETDROPPEDWIDTH 0x0160
  4277. #define CB_INITSTORAGE 0x0161
  4278. #if(_WIN32_WCE >= 0x0400)
  4279. #define CB_MULTIPLEADDSTRING 0x0163
  4280. #endif
  4281. #define CB_GETCOMBOBOXINFO 0x0164
  4282. #define CB_MSGMAX 0x0165
  4283. #endif
  4284.  
  4285. #ifndef NOWINSTYLES
  4286.  
  4287. #define SBS_HORZ 0x0000L
  4288. #define SBS_VERT 0x0001L
  4289. #define SBS_TOPALIGN 0x0002L
  4290. #define SBS_LEFTALIGN 0x0002L
  4291. #define SBS_BOTTOMALIGN 0x0004L
  4292. #define SBS_RIGHTALIGN 0x0004L
  4293. #define SBS_SIZEBOXTOPLEFTALIGN 0x0002L
  4294. #define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x0004L
  4295. #define SBS_SIZEBOX 0x0008L
  4296. #define SBS_SIZEGRIP 0x0010L
  4297. #endif
  4298.  
  4299. #ifndef NOWINMESSAGES
  4300. #define SBM_SETPOS 0x00E0
  4301. #define SBM_GETPOS 0x00E1
  4302. #define SBM_SETRANGE 0x00E2
  4303. #define SBM_SETRANGEREDRAW 0x00E6
  4304. #define SBM_GETRANGE 0x00E3
  4305. #define SBM_ENABLE_ARROWS 0x00E4
  4306. #define SBM_SETSCROLLINFO 0x00E9
  4307. #define SBM_GETSCROLLINFO 0x00EA
  4308. #define SBM_GETSCROLLBARINFO 0x00EB
  4309.  
  4310. #define SIF_RANGE 0x0001
  4311. #define SIF_PAGE 0x0002
  4312. #define SIF_POS 0x0004
  4313. #define SIF_DISABLENOSCROLL 0x0008
  4314. #define SIF_TRACKPOS 0x0010
  4315. #define SIF_ALL (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS)
  4316.  
  4317.   typedef struct tagSCROLLINFO {
  4318.     UINT cbSize;
  4319.     UINT fMask;
  4320.     int nMin;
  4321.     int nMax;
  4322.     UINT nPage;
  4323.     int nPos;
  4324.     int nTrackPos;
  4325.   } SCROLLINFO,*LPSCROLLINFO;
  4326.   typedef SCROLLINFO CONST *LPCSCROLLINFO;
  4327.  
  4328.   WINUSERAPI int WINAPI SetScrollInfo(HWND hwnd,int nBar,LPCSCROLLINFO lpsi,WINBOOL redraw);
  4329.   WINUSERAPI WINBOOL WINAPI GetScrollInfo(HWND hwnd,int nBar,LPSCROLLINFO lpsi);
  4330. #endif
  4331. #endif
  4332.  
  4333. #ifndef NOMDI
  4334.  
  4335. #define MDIS_ALLCHILDSTYLES 0x0001
  4336.  
  4337. #define MDITILE_VERTICAL 0x0000
  4338. #define MDITILE_HORIZONTAL 0x0001
  4339. #define MDITILE_SKIPDISABLED 0x0002
  4340. #define MDITILE_ZORDER 0x0004
  4341.  
  4342.   typedef struct tagMDICREATESTRUCTA {
  4343.     LPCSTR szClass;
  4344.     LPCSTR szTitle;
  4345.     HANDLE hOwner;
  4346.     int x;
  4347.     int y;
  4348.     int cx;
  4349.     int cy;
  4350.     DWORD style;
  4351.     LPARAM lParam;
  4352.   } MDICREATESTRUCTA,*LPMDICREATESTRUCTA;
  4353.  
  4354.   typedef struct tagMDICREATESTRUCTW {
  4355.     LPCWSTR szClass;
  4356.     LPCWSTR szTitle;
  4357.     HANDLE hOwner;
  4358.     int x;
  4359.     int y;
  4360.     int cx;
  4361.     int cy;
  4362.     DWORD style;
  4363.     LPARAM lParam;
  4364.   } MDICREATESTRUCTW,*LPMDICREATESTRUCTW;
  4365.  
  4366. #ifdef UNICODE
  4367.   typedef MDICREATESTRUCTW MDICREATESTRUCT;
  4368.   typedef LPMDICREATESTRUCTW LPMDICREATESTRUCT;
  4369. #else
  4370.   typedef MDICREATESTRUCTA MDICREATESTRUCT;
  4371.   typedef LPMDICREATESTRUCTA LPMDICREATESTRUCT;
  4372. #endif
  4373.  
  4374.   typedef struct tagCLIENTCREATESTRUCT {
  4375.     HANDLE hWindowMenu;
  4376.     UINT idFirstChild;
  4377.   } CLIENTCREATESTRUCT,*LPCLIENTCREATESTRUCT;
  4378.  
  4379. #ifdef UNICODE
  4380. #define DefFrameProc DefFrameProcW
  4381. #define DefMDIChildProc DefMDIChildProcW
  4382. #define CreateMDIWindow CreateMDIWindowW
  4383. #else
  4384. #define DefFrameProc DefFrameProcA
  4385. #define DefMDIChildProc DefMDIChildProcA
  4386. #define CreateMDIWindow CreateMDIWindowA
  4387. #endif
  4388.  
  4389.   WINUSERAPI LRESULT WINAPI DefFrameProcA(HWND hWnd,HWND hWndMDIClient,UINT uMsg,WPARAM wParam,LPARAM lParam);
  4390.   WINUSERAPI LRESULT WINAPI DefFrameProcW(HWND hWnd,HWND hWndMDIClient,UINT uMsg,WPARAM wParam,LPARAM lParam);
  4391.   WINUSERAPI LRESULT WINAPI DefMDIChildProcA(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
  4392.   WINUSERAPI LRESULT WINAPI DefMDIChildProcW(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
  4393.  
  4394. #ifndef NOMSG
  4395.   WINUSERAPI WINBOOL WINAPI TranslateMDISysAccel(HWND hWndClient,LPMSG lpMsg);
  4396. #endif
  4397.  
  4398.   WINUSERAPI UINT WINAPI ArrangeIconicWindows(HWND hWnd);
  4399.   WINUSERAPI HWND WINAPI CreateMDIWindowA(LPCSTR lpClassName,LPCSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HINSTANCE hInstance,LPARAM lParam);
  4400.   WINUSERAPI HWND WINAPI CreateMDIWindowW(LPCWSTR lpClassName,LPCWSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HINSTANCE hInstance,LPARAM lParam);
  4401.   WINUSERAPI WORD WINAPI TileWindows(HWND hwndParent,UINT wHow,CONST RECT *lpRect,UINT cKids,const HWND *lpKids);
  4402.   WINUSERAPI WORD WINAPI CascadeWindows(HWND hwndParent,UINT wHow,CONST RECT *lpRect,UINT cKids,const HWND *lpKids);
  4403. #endif
  4404. #endif
  4405.  
  4406. #ifndef NOHELP
  4407.  
  4408.   typedef DWORD HELPPOLY;
  4409.   typedef struct tagMULTIKEYHELPA {
  4410.     DWORD mkSize;
  4411.     CHAR mkKeylist;
  4412.     CHAR szKeyphrase[1];
  4413.   } MULTIKEYHELPA,*PMULTIKEYHELPA,*LPMULTIKEYHELPA;
  4414.  
  4415.   typedef struct tagMULTIKEYHELPW {
  4416.     DWORD mkSize;
  4417.     WCHAR mkKeylist;
  4418.     WCHAR szKeyphrase[1];
  4419.   } MULTIKEYHELPW,*PMULTIKEYHELPW,*LPMULTIKEYHELPW;
  4420.  
  4421. #ifdef UNICODE
  4422.   typedef MULTIKEYHELPW MULTIKEYHELP;
  4423.   typedef PMULTIKEYHELPW PMULTIKEYHELP;
  4424.   typedef LPMULTIKEYHELPW LPMULTIKEYHELP;
  4425. #else
  4426.   typedef MULTIKEYHELPA MULTIKEYHELP;
  4427.   typedef PMULTIKEYHELPA PMULTIKEYHELP;
  4428.   typedef LPMULTIKEYHELPA LPMULTIKEYHELP;
  4429. #endif
  4430.  
  4431.   typedef struct tagHELPWININFOA {
  4432.     int wStructSize;
  4433.     int x;
  4434.     int y;
  4435.     int dx;
  4436.     int dy;
  4437.     int wMax;
  4438.     CHAR rgchMember[2];
  4439.   } HELPWININFOA,*PHELPWININFOA,*LPHELPWININFOA;
  4440.  
  4441.   typedef struct tagHELPWININFOW {
  4442.     int wStructSize;
  4443.     int x;
  4444.     int y;
  4445.     int dx;
  4446.     int dy;
  4447.     int wMax;
  4448.     WCHAR rgchMember[2];
  4449.   } HELPWININFOW,*PHELPWININFOW,*LPHELPWININFOW;
  4450.  
  4451. #ifdef UNICODE
  4452.   typedef HELPWININFOW HELPWININFO;
  4453.   typedef PHELPWININFOW PHELPWININFO;
  4454.   typedef LPHELPWININFOW LPHELPWININFO;
  4455. #else
  4456.   typedef HELPWININFOA HELPWININFO;
  4457.   typedef PHELPWININFOA PHELPWININFO;
  4458.   typedef LPHELPWININFOA LPHELPWININFO;
  4459. #endif
  4460.  
  4461. #define HELP_CONTEXT 0x0001L
  4462. #define HELP_QUIT 0x0002L
  4463. #define HELP_INDEX 0x0003L
  4464. #define HELP_CONTENTS 0x0003L
  4465. #define HELP_HELPONHELP 0x0004L
  4466. #define HELP_SETINDEX 0x0005L
  4467. #define HELP_SETCONTENTS 0x0005L
  4468. #define HELP_CONTEXTPOPUP 0x0008L
  4469. #define HELP_FORCEFILE 0x0009L
  4470. #define HELP_KEY 0x0101L
  4471. #define HELP_COMMAND 0x0102L
  4472. #define HELP_PARTIALKEY 0x0105L
  4473. #define HELP_MULTIKEY 0x0201L
  4474. #define HELP_SETWINPOS 0x0203L
  4475. #define HELP_CONTEXTMENU 0x000a
  4476. #define HELP_FINDER 0x000b
  4477. #define HELP_WM_HELP 0x000c
  4478. #define HELP_SETPOPUP_POS 0x000d
  4479.  
  4480. #define HELP_TCARD 0x8000
  4481. #define HELP_TCARD_DATA 0x0010
  4482. #define HELP_TCARD_OTHER_CALLER 0x0011
  4483.  
  4484. #define IDH_NO_HELP 28440
  4485. #define IDH_MISSING_CONTEXT 28441
  4486. #define IDH_GENERIC_HELP_BUTTON 28442
  4487. #define IDH_OK 28443
  4488. #define IDH_CANCEL 28444
  4489. #define IDH_HELP 28445
  4490.  
  4491. #ifdef UNICODE
  4492. #define WinHelp WinHelpW
  4493. #else
  4494. #define WinHelp WinHelpA
  4495. #endif
  4496.  
  4497.   WINUSERAPI WINBOOL WINAPI WinHelpA(HWND hWndMain,LPCSTR lpszHelp,UINT uCommand,ULONG_PTR dwData);
  4498.   WINUSERAPI WINBOOL WINAPI WinHelpW(HWND hWndMain,LPCWSTR lpszHelp,UINT uCommand,ULONG_PTR dwData);
  4499. #endif
  4500.  
  4501. #define GR_GDIOBJECTS 0
  4502. #define GR_USEROBJECTS 1
  4503.  
  4504.   WINUSERAPI DWORD WINAPI GetGuiResources(HANDLE hProcess,DWORD uiFlags);
  4505.  
  4506. #ifndef NOSYSPARAMSINFO
  4507.  
  4508. #define SPI_GETBEEP 0x0001
  4509. #define SPI_SETBEEP 0x0002
  4510. #define SPI_GETMOUSE 0x0003
  4511. #define SPI_SETMOUSE 0x0004
  4512. #define SPI_GETBORDER 0x0005
  4513. #define SPI_SETBORDER 0x0006
  4514. #define SPI_GETKEYBOARDSPEED 0x000A
  4515. #define SPI_SETKEYBOARDSPEED 0x000B
  4516. #define SPI_LANGDRIVER 0x000C
  4517. #define SPI_ICONHORIZONTALSPACING 0x000D
  4518. #define SPI_GETSCREENSAVETIMEOUT 0x000E
  4519. #define SPI_SETSCREENSAVETIMEOUT 0x000F
  4520. #define SPI_GETSCREENSAVEACTIVE 0x0010
  4521. #define SPI_SETSCREENSAVEACTIVE 0x0011
  4522. #define SPI_GETGRIDGRANULARITY 0x0012
  4523. #define SPI_SETGRIDGRANULARITY 0x0013
  4524. #define SPI_SETDESKWALLPAPER 0x0014
  4525. #define SPI_SETDESKPATTERN 0x0015
  4526. #define SPI_GETKEYBOARDDELAY 0x0016
  4527. #define SPI_SETKEYBOARDDELAY 0x0017
  4528. #define SPI_ICONVERTICALSPACING 0x0018
  4529. #define SPI_GETICONTITLEWRAP 0x0019
  4530. #define SPI_SETICONTITLEWRAP 0x001A
  4531. #define SPI_GETMENUDROPALIGNMENT 0x001B
  4532. #define SPI_SETMENUDROPALIGNMENT 0x001C
  4533. #define SPI_SETDOUBLECLKWIDTH 0x001D
  4534. #define SPI_SETDOUBLECLKHEIGHT 0x001E
  4535. #define SPI_GETICONTITLELOGFONT 0x001F
  4536. #define SPI_SETDOUBLECLICKTIME 0x0020
  4537. #define SPI_SETMOUSEBUTTONSWAP 0x0021
  4538. #define SPI_SETICONTITLELOGFONT 0x0022
  4539. #define SPI_GETFASTTASKSWITCH 0x0023
  4540. #define SPI_SETFASTTASKSWITCH 0x0024
  4541. #define SPI_SETDRAGFULLWINDOWS 0x0025
  4542. #define SPI_GETDRAGFULLWINDOWS 0x0026
  4543. #define SPI_GETNONCLIENTMETRICS 0x0029
  4544. #define SPI_SETNONCLIENTMETRICS 0x002A
  4545. #define SPI_GETMINIMIZEDMETRICS 0x002B
  4546. #define SPI_SETMINIMIZEDMETRICS 0x002C
  4547. #define SPI_GETICONMETRICS 0x002D
  4548. #define SPI_SETICONMETRICS 0x002E
  4549. #define SPI_SETWORKAREA 0x002F
  4550. #define SPI_GETWORKAREA 0x0030
  4551. #define SPI_SETPENWINDOWS 0x0031
  4552.  
  4553. #define SPI_GETHIGHCONTRAST 0x0042
  4554. #define SPI_SETHIGHCONTRAST 0x0043
  4555. #define SPI_GETKEYBOARDPREF 0x0044
  4556. #define SPI_SETKEYBOARDPREF 0x0045
  4557. #define SPI_GETSCREENREADER 0x0046
  4558. #define SPI_SETSCREENREADER 0x0047
  4559. #define SPI_GETANIMATION 0x0048
  4560. #define SPI_SETANIMATION 0x0049
  4561. #define SPI_GETFONTSMOOTHING 0x004A
  4562. #define SPI_SETFONTSMOOTHING 0x004B
  4563. #define SPI_SETDRAGWIDTH 0x004C
  4564. #define SPI_SETDRAGHEIGHT 0x004D
  4565. #define SPI_SETHANDHELD 0x004E
  4566. #define SPI_GETLOWPOWERTIMEOUT 0x004F
  4567. #define SPI_GETPOWEROFFTIMEOUT 0x0050
  4568. #define SPI_SETLOWPOWERTIMEOUT 0x0051
  4569. #define SPI_SETPOWEROFFTIMEOUT 0x0052
  4570. #define SPI_GETLOWPOWERACTIVE 0x0053
  4571. #define SPI_GETPOWEROFFACTIVE 0x0054
  4572. #define SPI_SETLOWPOWERACTIVE 0x0055
  4573. #define SPI_SETPOWEROFFACTIVE 0x0056
  4574. #define SPI_SETCURSORS 0x0057
  4575. #define SPI_SETICONS 0x0058
  4576. #define SPI_GETDEFAULTINPUTLANG 0x0059
  4577. #define SPI_SETDEFAULTINPUTLANG 0x005A
  4578. #define SPI_SETLANGTOGGLE 0x005B
  4579. #define SPI_GETWINDOWSEXTENSION 0x005C
  4580. #define SPI_SETMOUSETRAILS 0x005D
  4581. #define SPI_GETMOUSETRAILS 0x005E
  4582. #define SPI_SETSCREENSAVERRUNNING 0x0061
  4583. #define SPI_SCREENSAVERRUNNING SPI_SETSCREENSAVERRUNNING
  4584. #define SPI_GETFILTERKEYS 0x0032
  4585. #define SPI_SETFILTERKEYS 0x0033
  4586. #define SPI_GETTOGGLEKEYS 0x0034
  4587. #define SPI_SETTOGGLEKEYS 0x0035
  4588. #define SPI_GETMOUSEKEYS 0x0036
  4589. #define SPI_SETMOUSEKEYS 0x0037
  4590. #define SPI_GETSHOWSOUNDS 0x0038
  4591. #define SPI_SETSHOWSOUNDS 0x0039
  4592. #define SPI_GETSTICKYKEYS 0x003A
  4593. #define SPI_SETSTICKYKEYS 0x003B
  4594. #define SPI_GETACCESSTIMEOUT 0x003C
  4595. #define SPI_SETACCESSTIMEOUT 0x003D
  4596. #define SPI_GETSERIALKEYS 0x003E
  4597. #define SPI_SETSERIALKEYS 0x003F
  4598. #define SPI_GETSOUNDSENTRY 0x0040
  4599. #define SPI_SETSOUNDSENTRY 0x0041
  4600. #define SPI_GETSNAPTODEFBUTTON 0x005F
  4601. #define SPI_SETSNAPTODEFBUTTON 0x0060
  4602. #define SPI_GETMOUSEHOVERWIDTH 0x0062
  4603. #define SPI_SETMOUSEHOVERWIDTH 0x0063
  4604. #define SPI_GETMOUSEHOVERHEIGHT 0x0064
  4605. #define SPI_SETMOUSEHOVERHEIGHT 0x0065
  4606. #define SPI_GETMOUSEHOVERTIME 0x0066
  4607. #define SPI_SETMOUSEHOVERTIME 0x0067
  4608. #define SPI_GETWHEELSCROLLLINES 0x0068
  4609. #define SPI_SETWHEELSCROLLLINES 0x0069
  4610. #define SPI_GETMENUSHOWDELAY 0x006A
  4611. #define SPI_SETMENUSHOWDELAY 0x006B
  4612. #define SPI_GETSHOWIMEUI 0x006E
  4613. #define SPI_SETSHOWIMEUI 0x006F
  4614. #define SPI_GETMOUSESPEED 0x0070
  4615. #define SPI_SETMOUSESPEED 0x0071
  4616. #define SPI_GETSCREENSAVERRUNNING 0x0072
  4617. #define SPI_GETDESKWALLPAPER 0x0073
  4618.  
  4619. #define SPI_GETACTIVEWINDOWTRACKING 0x1000
  4620. #define SPI_SETACTIVEWINDOWTRACKING 0x1001
  4621. #define SPI_GETMENUANIMATION 0x1002
  4622. #define SPI_SETMENUANIMATION 0x1003
  4623. #define SPI_GETCOMBOBOXANIMATION 0x1004
  4624. #define SPI_SETCOMBOBOXANIMATION 0x1005
  4625. #define SPI_GETLISTBOXSMOOTHSCROLLING 0x1006
  4626. #define SPI_SETLISTBOXSMOOTHSCROLLING 0x1007
  4627. #define SPI_GETGRADIENTCAPTIONS 0x1008
  4628. #define SPI_SETGRADIENTCAPTIONS 0x1009
  4629. #define SPI_GETKEYBOARDCUES 0x100A
  4630. #define SPI_SETKEYBOARDCUES 0x100B
  4631. #define SPI_GETMENUUNDERLINES SPI_GETKEYBOARDCUES
  4632. #define SPI_SETMENUUNDERLINES SPI_SETKEYBOARDCUES
  4633. #define SPI_GETACTIVEWNDTRKZORDER 0x100C
  4634. #define SPI_SETACTIVEWNDTRKZORDER 0x100D
  4635. #define SPI_GETHOTTRACKING 0x100E
  4636. #define SPI_SETHOTTRACKING 0x100F
  4637. #define SPI_GETMENUFADE 0x1012
  4638. #define SPI_SETMENUFADE 0x1013
  4639. #define SPI_GETSELECTIONFADE 0x1014
  4640. #define SPI_SETSELECTIONFADE 0x1015
  4641. #define SPI_GETTOOLTIPANIMATION 0x1016
  4642. #define SPI_SETTOOLTIPANIMATION 0x1017
  4643. #define SPI_GETTOOLTIPFADE 0x1018
  4644. #define SPI_SETTOOLTIPFADE 0x1019
  4645. #define SPI_GETCURSORSHADOW 0x101A
  4646. #define SPI_SETCURSORSHADOW 0x101B
  4647. #define SPI_GETMOUSESONAR 0x101C
  4648. #define SPI_SETMOUSESONAR 0x101D
  4649. #define SPI_GETMOUSECLICKLOCK 0x101E
  4650. #define SPI_SETMOUSECLICKLOCK 0x101F
  4651. #define SPI_GETMOUSEVANISH 0x1020
  4652. #define SPI_SETMOUSEVANISH 0x1021
  4653. #define SPI_GETFLATMENU 0x1022
  4654. #define SPI_SETFLATMENU 0x1023
  4655. #define SPI_GETDROPSHADOW 0x1024
  4656. #define SPI_SETDROPSHADOW 0x1025
  4657. #define SPI_GETBLOCKSENDINPUTRESETS 0x1026
  4658. #define SPI_SETBLOCKSENDINPUTRESETS 0x1027
  4659. #define SPI_GETUIEFFECTS 0x103E
  4660. #define SPI_SETUIEFFECTS 0x103F
  4661. #define SPI_GETFOREGROUNDLOCKTIMEOUT 0x2000
  4662. #define SPI_SETFOREGROUNDLOCKTIMEOUT 0x2001
  4663. #define SPI_GETACTIVEWNDTRKTIMEOUT 0x2002
  4664. #define SPI_SETACTIVEWNDTRKTIMEOUT 0x2003
  4665. #define SPI_GETFOREGROUNDFLASHCOUNT 0x2004
  4666. #define SPI_SETFOREGROUNDFLASHCOUNT 0x2005
  4667. #define SPI_GETCARETWIDTH 0x2006
  4668. #define SPI_SETCARETWIDTH 0x2007
  4669. #define SPI_GETMOUSECLICKLOCKTIME 0x2008
  4670. #define SPI_SETMOUSECLICKLOCKTIME 0x2009
  4671. #define SPI_GETFONTSMOOTHINGTYPE 0x200A
  4672. #define SPI_SETFONTSMOOTHINGTYPE 0x200B
  4673.  
  4674. #define FE_FONTSMOOTHINGSTANDARD 0x0001
  4675. #define FE_FONTSMOOTHINGCLEARTYPE 0x0002
  4676. #define FE_FONTSMOOTHINGDOCKING 0x8000
  4677.  
  4678. #define SPI_GETFONTSMOOTHINGCONTRAST 0x200C
  4679. #define SPI_SETFONTSMOOTHINGCONTRAST 0x200D
  4680. #define SPI_GETFOCUSBORDERWIDTH 0x200E
  4681. #define SPI_SETFOCUSBORDERWIDTH 0x200F
  4682. #define SPI_GETFOCUSBORDERHEIGHT 0x2010
  4683. #define SPI_SETFOCUSBORDERHEIGHT 0x2011
  4684. #define SPI_GETFONTSMOOTHINGORIENTATION 0x2012
  4685. #define SPI_SETFONTSMOOTHINGORIENTATION 0x2013
  4686.  
  4687. #define FE_FONTSMOOTHINGORIENTATIONBGR 0x0000
  4688. #define FE_FONTSMOOTHINGORIENTATIONRGB 0x0001
  4689.  
  4690. #define SPIF_UPDATEINIFILE 0x0001
  4691. #define SPIF_SENDWININICHANGE 0x0002
  4692. #define SPIF_SENDCHANGE SPIF_SENDWININICHANGE
  4693.  
  4694. #define METRICS_USEDEFAULT -1
  4695. #ifdef _WINGDI_
  4696. #ifndef NOGDI
  4697.   typedef struct tagNONCLIENTMETRICSA {
  4698.     UINT cbSize;
  4699.     int iBorderWidth;
  4700.     int iScrollWidth;
  4701.     int iScrollHeight;
  4702.     int iCaptionWidth;
  4703.     int iCaptionHeight;
  4704.     LOGFONTA lfCaptionFont;
  4705.     int iSmCaptionWidth;
  4706.     int iSmCaptionHeight;
  4707.     LOGFONTA lfSmCaptionFont;
  4708.     int iMenuWidth;
  4709.     int iMenuHeight;
  4710.     LOGFONTA lfMenuFont;
  4711.     LOGFONTA lfStatusFont;
  4712.     LOGFONTA lfMessageFont;
  4713.   } NONCLIENTMETRICSA,*PNONCLIENTMETRICSA,*LPNONCLIENTMETRICSA;
  4714.  
  4715.   typedef struct tagNONCLIENTMETRICSW {
  4716.     UINT cbSize;
  4717.     int iBorderWidth;
  4718.     int iScrollWidth;
  4719.     int iScrollHeight;
  4720.     int iCaptionWidth;
  4721.     int iCaptionHeight;
  4722.     LOGFONTW lfCaptionFont;
  4723.     int iSmCaptionWidth;
  4724.     int iSmCaptionHeight;
  4725.     LOGFONTW lfSmCaptionFont;
  4726.     int iMenuWidth;
  4727.     int iMenuHeight;
  4728.     LOGFONTW lfMenuFont;
  4729.     LOGFONTW lfStatusFont;
  4730.     LOGFONTW lfMessageFont;
  4731.   } NONCLIENTMETRICSW,*PNONCLIENTMETRICSW,*LPNONCLIENTMETRICSW;
  4732.  
  4733. #ifdef UNICODE
  4734.   typedef NONCLIENTMETRICSW NONCLIENTMETRICS;
  4735.   typedef PNONCLIENTMETRICSW PNONCLIENTMETRICS;
  4736.   typedef LPNONCLIENTMETRICSW LPNONCLIENTMETRICS;
  4737. #else
  4738.   typedef NONCLIENTMETRICSA NONCLIENTMETRICS;
  4739.   typedef PNONCLIENTMETRICSA PNONCLIENTMETRICS;
  4740.   typedef LPNONCLIENTMETRICSA LPNONCLIENTMETRICS;
  4741. #endif
  4742. #endif
  4743. #endif
  4744.  
  4745. #define ARW_BOTTOMLEFT 0x0000L
  4746. #define ARW_BOTTOMRIGHT 0x0001L
  4747. #define ARW_TOPLEFT 0x0002L
  4748. #define ARW_TOPRIGHT 0x0003L
  4749. #define ARW_STARTMASK 0x0003L
  4750. #define ARW_STARTRIGHT 0x0001L
  4751. #define ARW_STARTTOP 0x0002L
  4752.  
  4753. #define ARW_LEFT 0x0000L
  4754. #define ARW_RIGHT 0x0000L
  4755. #define ARW_UP 0x0004L
  4756. #define ARW_DOWN 0x0004L
  4757. #define ARW_HIDE 0x0008L
  4758.  
  4759.   typedef struct tagMINIMIZEDMETRICS {
  4760.     UINT cbSize;
  4761.     int iWidth;
  4762.     int iHorzGap;
  4763.     int iVertGap;
  4764.     int iArrange;
  4765.   } MINIMIZEDMETRICS,*PMINIMIZEDMETRICS,*LPMINIMIZEDMETRICS;
  4766.  
  4767. #ifdef _WINGDI_
  4768. #ifndef NOGDI
  4769.   typedef struct tagICONMETRICSA {
  4770.     UINT cbSize;
  4771.     int iHorzSpacing;
  4772.     int iVertSpacing;
  4773.     int iTitleWrap;
  4774.     LOGFONTA lfFont;
  4775.   } ICONMETRICSA,*PICONMETRICSA,*LPICONMETRICSA;
  4776.  
  4777.   typedef struct tagICONMETRICSW {
  4778.     UINT cbSize;
  4779.     int iHorzSpacing;
  4780.     int iVertSpacing;
  4781.     int iTitleWrap;
  4782.     LOGFONTW lfFont;
  4783.   } ICONMETRICSW,*PICONMETRICSW,*LPICONMETRICSW;
  4784.  
  4785. #ifdef UNICODE
  4786.   typedef ICONMETRICSW ICONMETRICS;
  4787.   typedef PICONMETRICSW PICONMETRICS;
  4788.   typedef LPICONMETRICSW LPICONMETRICS;
  4789. #else
  4790.   typedef ICONMETRICSA ICONMETRICS;
  4791.   typedef PICONMETRICSA PICONMETRICS;
  4792.   typedef LPICONMETRICSA LPICONMETRICS;
  4793. #endif
  4794. #endif
  4795. #endif
  4796.  
  4797.   typedef struct tagANIMATIONINFO {
  4798.     UINT cbSize;
  4799.     int iMinAnimate;
  4800.   } ANIMATIONINFO,*LPANIMATIONINFO;
  4801.  
  4802.   typedef struct tagSERIALKEYSA {
  4803.     UINT cbSize;
  4804.     DWORD dwFlags;
  4805.     LPSTR lpszActivePort;
  4806.     LPSTR lpszPort;
  4807.     UINT iBaudRate;
  4808.     UINT iPortState;
  4809.     UINT iActive;
  4810.   } SERIALKEYSA,*LPSERIALKEYSA;
  4811.  
  4812.   typedef struct tagSERIALKEYSW {
  4813.     UINT cbSize;
  4814.     DWORD dwFlags;
  4815.     LPWSTR lpszActivePort;
  4816.     LPWSTR lpszPort;
  4817.     UINT iBaudRate;
  4818.     UINT iPortState;
  4819.     UINT iActive;
  4820.   } SERIALKEYSW,*LPSERIALKEYSW;
  4821.  
  4822. #ifdef UNICODE
  4823.   typedef SERIALKEYSW SERIALKEYS;
  4824.   typedef LPSERIALKEYSW LPSERIALKEYS;
  4825. #else
  4826.   typedef SERIALKEYSA SERIALKEYS;
  4827.   typedef LPSERIALKEYSA LPSERIALKEYS;
  4828. #endif
  4829.  
  4830. #define SERKF_SERIALKEYSON 0x00000001
  4831. #define SERKF_AVAILABLE 0x00000002
  4832. #define SERKF_INDICATOR 0x00000004
  4833.  
  4834.   typedef struct tagHIGHCONTRASTA {
  4835.     UINT cbSize;
  4836.     DWORD dwFlags;
  4837.     LPSTR lpszDefaultScheme;
  4838.   } HIGHCONTRASTA,*LPHIGHCONTRASTA;
  4839.  
  4840.   typedef struct tagHIGHCONTRASTW {
  4841.     UINT cbSize;
  4842.     DWORD dwFlags;
  4843.     LPWSTR lpszDefaultScheme;
  4844.   } HIGHCONTRASTW,*LPHIGHCONTRASTW;
  4845.  
  4846. #ifdef UNICODE
  4847.   typedef HIGHCONTRASTW HIGHCONTRAST;
  4848.   typedef LPHIGHCONTRASTW LPHIGHCONTRAST;
  4849. #else
  4850.   typedef HIGHCONTRASTA HIGHCONTRAST;
  4851.   typedef LPHIGHCONTRASTA LPHIGHCONTRAST;
  4852. #endif
  4853.  
  4854. #define HCF_HIGHCONTRASTON 0x00000001
  4855. #define HCF_AVAILABLE 0x00000002
  4856. #define HCF_HOTKEYACTIVE 0x00000004
  4857. #define HCF_CONFIRMHOTKEY 0x00000008
  4858. #define HCF_HOTKEYSOUND 0x00000010
  4859. #define HCF_INDICATOR 0x00000020
  4860. #define HCF_HOTKEYAVAILABLE 0x00000040
  4861. #define HCF_LOGONDESKTOP 0x00000100
  4862. #define HCF_DEFAULTDESKTOP 0x00000200
  4863.  
  4864. #define CDS_UPDATEREGISTRY 0x00000001
  4865. #define CDS_TEST 0x00000002
  4866. #define CDS_FULLSCREEN 0x00000004
  4867. #define CDS_GLOBAL 0x00000008
  4868. #define CDS_SET_PRIMARY 0x00000010
  4869. #define CDS_VIDEOPARAMETERS 0x00000020
  4870. #define CDS_RESET 0x40000000
  4871. #define CDS_NORESET 0x10000000
  4872.  
  4873. #include <tvout.h>
  4874.  
  4875. #define DISP_CHANGE_SUCCESSFUL 0
  4876. #define DISP_CHANGE_RESTART 1
  4877. #define DISP_CHANGE_FAILED -1
  4878. #define DISP_CHANGE_BADMODE -2
  4879. #define DISP_CHANGE_NOTUPDATED -3
  4880. #define DISP_CHANGE_BADFLAGS -4
  4881. #define DISP_CHANGE_BADPARAM -5
  4882. #define DISP_CHANGE_BADDUALVIEW -6
  4883.  
  4884. #ifdef _WINGDI_
  4885. #ifndef NOGDI
  4886.  
  4887. #ifdef UNICODE
  4888. #define ChangeDisplaySettings ChangeDisplaySettingsW
  4889. #define ChangeDisplaySettingsEx ChangeDisplaySettingsExW
  4890. #define EnumDisplaySettings EnumDisplaySettingsW
  4891. #define EnumDisplaySettingsEx EnumDisplaySettingsExW
  4892. #define EnumDisplayDevices EnumDisplayDevicesW
  4893. #else
  4894. #define ChangeDisplaySettings ChangeDisplaySettingsA
  4895. #define ChangeDisplaySettingsEx ChangeDisplaySettingsExA
  4896. #define EnumDisplaySettings EnumDisplaySettingsA
  4897. #define EnumDisplaySettingsEx EnumDisplaySettingsExA
  4898. #define EnumDisplayDevices EnumDisplayDevicesA
  4899. #endif
  4900.  
  4901.   WINUSERAPI LONG WINAPI ChangeDisplaySettingsA(LPDEVMODEA lpDevMode,DWORD dwFlags);
  4902.   WINUSERAPI LONG WINAPI ChangeDisplaySettingsW(LPDEVMODEW lpDevMode,DWORD dwFlags);
  4903.   WINUSERAPI LONG WINAPI ChangeDisplaySettingsExA(LPCSTR lpszDeviceName,LPDEVMODEA lpDevMode,HWND hwnd,DWORD dwflags,LPVOID lParam);
  4904.   WINUSERAPI LONG WINAPI ChangeDisplaySettingsExW(LPCWSTR lpszDeviceName,LPDEVMODEW lpDevMode,HWND hwnd,DWORD dwflags,LPVOID lParam);
  4905.  
  4906. #define ENUM_CURRENT_SETTINGS ((DWORD)-1)
  4907. #define ENUM_REGISTRY_SETTINGS ((DWORD)-2)
  4908.  
  4909.   WINUSERAPI WINBOOL WINAPI EnumDisplaySettingsA(LPCSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEA lpDevMode);
  4910.   WINUSERAPI WINBOOL WINAPI EnumDisplaySettingsW(LPCWSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEW lpDevMode);
  4911.   WINUSERAPI WINBOOL WINAPI EnumDisplaySettingsExA(LPCSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEA lpDevMode,DWORD dwFlags);
  4912.   WINUSERAPI WINBOOL WINAPI EnumDisplaySettingsExW(LPCWSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEW lpDevMode,DWORD dwFlags);
  4913.  
  4914. #define EDS_RAWMODE 0x00000002
  4915.  
  4916.   WINUSERAPI WINBOOL WINAPI EnumDisplayDevicesA(LPCSTR lpDevice,DWORD iDevNum,PDISPLAY_DEVICEA lpDisplayDevice,DWORD dwFlags);
  4917.   WINUSERAPI WINBOOL WINAPI EnumDisplayDevicesW(LPCWSTR lpDevice,DWORD iDevNum,PDISPLAY_DEVICEW lpDisplayDevice,DWORD dwFlags);
  4918. #endif
  4919. #endif
  4920.  
  4921. #ifdef UNICODE
  4922. #define SystemParametersInfo SystemParametersInfoW
  4923. #else
  4924. #define SystemParametersInfo SystemParametersInfoA
  4925. #endif
  4926.  
  4927.   WINUSERAPI WINBOOL WINAPI SystemParametersInfoA(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinIni);
  4928.   WINUSERAPI WINBOOL WINAPI SystemParametersInfoW(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinIni);
  4929. #endif
  4930.  
  4931.   typedef struct tagFILTERKEYS {
  4932.     UINT cbSize;
  4933.     DWORD dwFlags;
  4934.     DWORD iWaitMSec;
  4935.     DWORD iDelayMSec;
  4936.     DWORD iRepeatMSec;
  4937.     DWORD iBounceMSec;
  4938.   } FILTERKEYS,*LPFILTERKEYS;
  4939.  
  4940. #define FKF_FILTERKEYSON 0x00000001
  4941. #define FKF_AVAILABLE 0x00000002
  4942. #define FKF_HOTKEYACTIVE 0x00000004
  4943. #define FKF_CONFIRMHOTKEY 0x00000008
  4944. #define FKF_HOTKEYSOUND 0x00000010
  4945. #define FKF_INDICATOR 0x00000020
  4946. #define FKF_CLICKON 0x00000040
  4947.  
  4948.   typedef struct tagSTICKYKEYS {
  4949.     UINT cbSize;
  4950.     DWORD dwFlags;
  4951.   } STICKYKEYS,*LPSTICKYKEYS;
  4952.  
  4953. #define SKF_STICKYKEYSON 0x00000001
  4954. #define SKF_AVAILABLE 0x00000002
  4955. #define SKF_HOTKEYACTIVE 0x00000004
  4956. #define SKF_CONFIRMHOTKEY 0x00000008
  4957. #define SKF_HOTKEYSOUND 0x00000010
  4958. #define SKF_INDICATOR 0x00000020
  4959. #define SKF_AUDIBLEFEEDBACK 0x00000040
  4960. #define SKF_TRISTATE 0x00000080
  4961. #define SKF_TWOKEYSOFF 0x00000100
  4962. #define SKF_LALTLATCHED 0x10000000
  4963. #define SKF_LCTLLATCHED 0x04000000
  4964. #define SKF_LSHIFTLATCHED 0x01000000
  4965. #define SKF_RALTLATCHED 0x20000000
  4966. #define SKF_RCTLLATCHED 0x08000000
  4967. #define SKF_RSHIFTLATCHED 0x02000000
  4968. #define SKF_LWINLATCHED 0x40000000
  4969. #define SKF_RWINLATCHED 0x80000000
  4970. #define SKF_LALTLOCKED 0x00100000
  4971. #define SKF_LCTLLOCKED 0x00040000
  4972. #define SKF_LSHIFTLOCKED 0x00010000
  4973. #define SKF_RALTLOCKED 0x00200000
  4974. #define SKF_RCTLLOCKED 0x00080000
  4975. #define SKF_RSHIFTLOCKED 0x00020000
  4976. #define SKF_LWINLOCKED 0x00400000
  4977. #define SKF_RWINLOCKED 0x00800000
  4978.  
  4979.   typedef struct tagMOUSEKEYS {
  4980.     UINT cbSize;
  4981.     DWORD dwFlags;
  4982.     DWORD iMaxSpeed;
  4983.     DWORD iTimeToMaxSpeed;
  4984.     DWORD iCtrlSpeed;
  4985.     DWORD dwReserved1;
  4986.     DWORD dwReserved2;
  4987.   } MOUSEKEYS,*LPMOUSEKEYS;
  4988.  
  4989. #define MKF_MOUSEKEYSON 0x00000001
  4990. #define MKF_AVAILABLE 0x00000002
  4991. #define MKF_HOTKEYACTIVE 0x00000004
  4992. #define MKF_CONFIRMHOTKEY 0x00000008
  4993. #define MKF_HOTKEYSOUND 0x00000010
  4994. #define MKF_INDICATOR 0x00000020
  4995. #define MKF_MODIFIERS 0x00000040
  4996. #define MKF_REPLACENUMBERS 0x00000080
  4997. #define MKF_LEFTBUTTONSEL 0x10000000
  4998. #define MKF_RIGHTBUTTONSEL 0x20000000
  4999. #define MKF_LEFTBUTTONDOWN 0x01000000
  5000. #define MKF_RIGHTBUTTONDOWN 0x02000000
  5001. #define MKF_MOUSEMODE 0x80000000
  5002.  
  5003.   typedef struct tagACCESSTIMEOUT {
  5004.     UINT cbSize;
  5005.     DWORD dwFlags;
  5006.     DWORD iTimeOutMSec;
  5007.   } ACCESSTIMEOUT,*LPACCESSTIMEOUT;
  5008.  
  5009. #define ATF_TIMEOUTON 0x00000001
  5010. #define ATF_ONOFFFEEDBACK 0x00000002
  5011.  
  5012. #define SSGF_NONE 0
  5013. #define SSGF_DISPLAY 3
  5014.  
  5015. #define SSTF_NONE 0
  5016. #define SSTF_CHARS 1
  5017. #define SSTF_BORDER 2
  5018. #define SSTF_DISPLAY 3
  5019.  
  5020. #define SSWF_NONE 0
  5021. #define SSWF_TITLE 1
  5022. #define SSWF_WINDOW 2
  5023. #define SSWF_DISPLAY 3
  5024. #define SSWF_CUSTOM 4
  5025.  
  5026.   typedef struct tagSOUNDSENTRYA {
  5027.     UINT cbSize;
  5028.     DWORD dwFlags;
  5029.     DWORD iFSTextEffect;
  5030.     DWORD iFSTextEffectMSec;
  5031.     DWORD iFSTextEffectColorBits;
  5032.     DWORD iFSGrafEffect;
  5033.     DWORD iFSGrafEffectMSec;
  5034.     DWORD iFSGrafEffectColor;
  5035.     DWORD iWindowsEffect;
  5036.     DWORD iWindowsEffectMSec;
  5037.     LPSTR lpszWindowsEffectDLL;
  5038.     DWORD iWindowsEffectOrdinal;
  5039.   } SOUNDSENTRYA,*LPSOUNDSENTRYA;
  5040.  
  5041.   typedef struct tagSOUNDSENTRYW {
  5042.     UINT cbSize;
  5043.     DWORD dwFlags;
  5044.     DWORD iFSTextEffect;
  5045.     DWORD iFSTextEffectMSec;
  5046.     DWORD iFSTextEffectColorBits;
  5047.     DWORD iFSGrafEffect;
  5048.     DWORD iFSGrafEffectMSec;
  5049.     DWORD iFSGrafEffectColor;
  5050.     DWORD iWindowsEffect;
  5051.     DWORD iWindowsEffectMSec;
  5052.     LPWSTR lpszWindowsEffectDLL;
  5053.     DWORD iWindowsEffectOrdinal;
  5054.   } SOUNDSENTRYW,*LPSOUNDSENTRYW;
  5055.  
  5056. #ifdef UNICODE
  5057.   typedef SOUNDSENTRYW SOUNDSENTRY;
  5058.   typedef LPSOUNDSENTRYW LPSOUNDSENTRY;
  5059. #else
  5060.   typedef SOUNDSENTRYA SOUNDSENTRY;
  5061.   typedef LPSOUNDSENTRYA LPSOUNDSENTRY;
  5062. #endif
  5063.  
  5064. #define SSF_SOUNDSENTRYON 0x00000001
  5065. #define SSF_AVAILABLE 0x00000002
  5066. #define SSF_INDICATOR 0x00000004
  5067.  
  5068.   typedef struct tagTOGGLEKEYS {
  5069.     UINT cbSize;
  5070.     DWORD dwFlags;
  5071.   } TOGGLEKEYS,*LPTOGGLEKEYS;
  5072.  
  5073. #define TKF_TOGGLEKEYSON 0x00000001
  5074. #define TKF_AVAILABLE 0x00000002
  5075. #define TKF_HOTKEYACTIVE 0x00000004
  5076. #define TKF_CONFIRMHOTKEY 0x00000008
  5077. #define TKF_HOTKEYSOUND 0x00000010
  5078. #define TKF_INDICATOR 0x00000020
  5079.  
  5080.   WINUSERAPI VOID WINAPI SetDebugErrorLevel(DWORD dwLevel);
  5081.  
  5082. #define SLE_ERROR 0x00000001
  5083. #define SLE_MINORERROR 0x00000002
  5084. #define SLE_WARNING 0x00000003
  5085.  
  5086.   WINUSERAPI VOID WINAPI SetLastErrorEx(DWORD dwErrCode,DWORD dwType);
  5087.   WINUSERAPI int WINAPI InternalGetWindowText(HWND hWnd,LPWSTR pString,int cchMaxCount);
  5088.  
  5089. #ifdef WINNT
  5090.   WINUSERAPI WINBOOL WINAPI EndTask(HWND hWnd,WINBOOL fShutDown,WINBOOL fForce);
  5091. #endif
  5092.  
  5093. #define MONITOR_DEFAULTTONULL 0x00000000
  5094. #define MONITOR_DEFAULTTOPRIMARY 0x00000001
  5095. #define MONITOR_DEFAULTTONEAREST 0x00000002
  5096.  
  5097.   WINUSERAPI HMONITOR WINAPI MonitorFromPoint(POINT pt,DWORD dwFlags);
  5098.   WINUSERAPI HMONITOR WINAPI MonitorFromRect(LPCRECT lprc,DWORD dwFlags);
  5099.   WINUSERAPI HMONITOR WINAPI MonitorFromWindow(HWND hwnd,DWORD dwFlags);
  5100.  
  5101. #define MONITORINFOF_PRIMARY 0x00000001
  5102.  
  5103. #ifndef CCHDEVICENAME
  5104. #define CCHDEVICENAME 32
  5105. #endif
  5106.  
  5107.   typedef struct tagMONITORINFO {
  5108.     DWORD cbSize;
  5109.     RECT rcMonitor;
  5110.     RECT rcWork;
  5111.     DWORD dwFlags;
  5112.   } MONITORINFO,*LPMONITORINFO;
  5113.  
  5114. #ifdef __cplusplus
  5115.   typedef struct tagMONITORINFOEXA : public tagMONITORINFO {
  5116.     CHAR szDevice[CCHDEVICENAME];
  5117.   } MONITORINFOEXA,*LPMONITORINFOEXA;
  5118.  
  5119.   typedef struct tagMONITORINFOEXW : public tagMONITORINFO {
  5120.     WCHAR szDevice[CCHDEVICENAME];
  5121.   } MONITORINFOEXW,*LPMONITORINFOEXW;
  5122.  
  5123. #ifdef UNICODE
  5124.   typedef MONITORINFOEXW MONITORINFOEX;
  5125.   typedef LPMONITORINFOEXW LPMONITORINFOEX;
  5126. #else
  5127.   typedef MONITORINFOEXA MONITORINFOEX;
  5128.   typedef LPMONITORINFOEXA LPMONITORINFOEX;
  5129. #endif
  5130. #else
  5131.   typedef struct tagMONITORINFOEXA {
  5132.     MONITORINFO mi;
  5133.     CHAR szDevice[CCHDEVICENAME];
  5134.   } MONITORINFOEXA,*LPMONITORINFOEXA;
  5135.  
  5136.   typedef struct tagMONITORINFOEXW {
  5137.     MONITORINFO mi;
  5138.     WCHAR szDevice[CCHDEVICENAME];
  5139.   } MONITORINFOEXW,*LPMONITORINFOEXW;
  5140. #ifdef UNICODE
  5141.   typedef MONITORINFOEXW MONITORINFOEX;
  5142.   typedef LPMONITORINFOEXW LPMONITORINFOEX;
  5143. #else
  5144.   typedef MONITORINFOEXA MONITORINFOEX;
  5145.   typedef LPMONITORINFOEXA LPMONITORINFOEX;
  5146. #endif
  5147. #endif
  5148.  
  5149. #ifdef UNICODE
  5150. #define GetMonitorInfo GetMonitorInfoW
  5151. #else
  5152. #define GetMonitorInfo GetMonitorInfoA
  5153. #endif
  5154.  
  5155.   WINUSERAPI WINBOOL WINAPI GetMonitorInfoA(HMONITOR hMonitor,LPMONITORINFO lpmi);
  5156.   WINUSERAPI WINBOOL WINAPI GetMonitorInfoW(HMONITOR hMonitor,LPMONITORINFO lpmi);
  5157.  
  5158.   typedef WINBOOL (CALLBACK *MONITORENUMPROC)(HMONITOR,HDC,LPRECT,LPARAM);
  5159.  
  5160.   WINUSERAPI WINBOOL WINAPI EnumDisplayMonitors(HDC hdc,LPCRECT lprcClip,MONITORENUMPROC lpfnEnum,LPARAM dwData);
  5161.  
  5162. #ifndef NOWINABLE
  5163.   WINUSERAPI VOID WINAPI NotifyWinEvent(DWORD event,HWND hwnd,LONG idObject,LONG idChild);
  5164.  
  5165.   typedef VOID (CALLBACK *WINEVENTPROC)(HWINEVENTHOOK hWinEventHook,DWORD event,HWND hwnd,LONG idObject,LONG idChild,DWORD idEventThread,DWORD dwmsEventTime);
  5166.  
  5167.   WINUSERAPI HWINEVENTHOOK WINAPI SetWinEventHook(DWORD eventMin,DWORD eventMax,HMODULE hmodWinEventProc,WINEVENTPROC pfnWinEventProc,DWORD idProcess,DWORD idThread,DWORD dwFlags);
  5168.   WINUSERAPI WINBOOL WINAPI IsWinEventHookInstalled(DWORD event);
  5169.  
  5170. #define WINEVENT_OUTOFCONTEXT 0x0000
  5171. #define WINEVENT_SKIPOWNTHREAD 0x0001
  5172. #define WINEVENT_SKIPOWNPROCESS 0x0002
  5173. #define WINEVENT_INCONTEXT 0x0004
  5174.  
  5175.   WINUSERAPI WINBOOL WINAPI UnhookWinEvent(HWINEVENTHOOK hWinEventHook);
  5176.  
  5177. #define CHILDID_SELF 0
  5178. #define INDEXID_OBJECT 0
  5179. #define INDEXID_CONTAINER 0
  5180.  
  5181. #define OBJID_WINDOW ((LONG)0x00000000)
  5182. #define OBJID_SYSMENU ((LONG)0xFFFFFFFF)
  5183. #define OBJID_TITLEBAR ((LONG)0xFFFFFFFE)
  5184. #define OBJID_MENU ((LONG)0xFFFFFFFD)
  5185. #define OBJID_CLIENT ((LONG)0xFFFFFFFC)
  5186. #define OBJID_VSCROLL ((LONG)0xFFFFFFFB)
  5187. #define OBJID_HSCROLL ((LONG)0xFFFFFFFA)
  5188. #define OBJID_SIZEGRIP ((LONG)0xFFFFFFF9)
  5189. #define OBJID_CARET ((LONG)0xFFFFFFF8)
  5190. #define OBJID_CURSOR ((LONG)0xFFFFFFF7)
  5191. #define OBJID_ALERT ((LONG)0xFFFFFFF6)
  5192. #define OBJID_SOUND ((LONG)0xFFFFFFF5)
  5193. #define OBJID_QUERYCLASSNAMEIDX ((LONG)0xFFFFFFF4)
  5194. #define OBJID_NATIVEOM ((LONG)0xFFFFFFF0)
  5195.  
  5196. #define EVENT_MIN 0x00000001
  5197. #define EVENT_MAX 0x7FFFFFFF
  5198.  
  5199. #define EVENT_SYSTEM_SOUND 0x0001
  5200. #define EVENT_SYSTEM_ALERT 0x0002
  5201. #define EVENT_SYSTEM_FOREGROUND 0x0003
  5202. #define EVENT_SYSTEM_MENUSTART 0x0004
  5203. #define EVENT_SYSTEM_MENUEND 0x0005
  5204. #define EVENT_SYSTEM_MENUPOPUPSTART 0x0006
  5205. #define EVENT_SYSTEM_MENUPOPUPEND 0x0007
  5206. #define EVENT_SYSTEM_CAPTURESTART 0x0008
  5207. #define EVENT_SYSTEM_CAPTUREEND 0x0009
  5208. #define EVENT_SYSTEM_MOVESIZESTART 0x000A
  5209. #define EVENT_SYSTEM_MOVESIZEEND 0x000B
  5210. #define EVENT_SYSTEM_CONTEXTHELPSTART 0x000C
  5211. #define EVENT_SYSTEM_CONTEXTHELPEND 0x000D
  5212. #define EVENT_SYSTEM_DRAGDROPSTART 0x000E
  5213. #define EVENT_SYSTEM_DRAGDROPEND 0x000F
  5214. #define EVENT_SYSTEM_DIALOGSTART 0x0010
  5215. #define EVENT_SYSTEM_DIALOGEND 0x0011
  5216. #define EVENT_SYSTEM_SCROLLINGSTART 0x0012
  5217. #define EVENT_SYSTEM_SCROLLINGEND 0x0013
  5218. #define EVENT_SYSTEM_SWITCHSTART 0x0014
  5219. #define EVENT_SYSTEM_SWITCHEND 0x0015
  5220. #define EVENT_SYSTEM_MINIMIZESTART 0x0016
  5221. #define EVENT_SYSTEM_MINIMIZEEND 0x0017
  5222.  
  5223. #define EVENT_CONSOLE_CARET 0x4001
  5224. #define EVENT_CONSOLE_UPDATE_REGION 0x4002
  5225. #define EVENT_CONSOLE_UPDATE_SIMPLE 0x4003
  5226. #define EVENT_CONSOLE_UPDATE_SCROLL 0x4004
  5227. #define EVENT_CONSOLE_LAYOUT 0x4005
  5228. #define EVENT_CONSOLE_START_APPLICATION 0x4006
  5229. #define EVENT_CONSOLE_END_APPLICATION 0x4007
  5230.  
  5231. #define CONSOLE_APPLICATION_16BIT 0x0001
  5232.  
  5233. #define CONSOLE_CARET_SELECTION 0x0001
  5234. #define CONSOLE_CARET_VISIBLE 0x0002
  5235.  
  5236. #define EVENT_OBJECT_CREATE 0x8000
  5237. #define EVENT_OBJECT_DESTROY 0x8001
  5238. #define EVENT_OBJECT_SHOW 0x8002
  5239. #define EVENT_OBJECT_HIDE 0x8003
  5240. #define EVENT_OBJECT_REORDER 0x8004
  5241.  
  5242. #define EVENT_OBJECT_FOCUS 0x8005
  5243. #define EVENT_OBJECT_SELECTION 0x8006
  5244. #define EVENT_OBJECT_SELECTIONADD 0x8007
  5245. #define EVENT_OBJECT_SELECTIONREMOVE 0x8008
  5246. #define EVENT_OBJECT_SELECTIONWITHIN 0x8009
  5247.  
  5248. #define EVENT_OBJECT_STATECHANGE 0x800A
  5249.  
  5250. #define EVENT_OBJECT_LOCATIONCHANGE 0x800B
  5251.  
  5252. #define EVENT_OBJECT_NAMECHANGE 0x800C
  5253. #define EVENT_OBJECT_DESCRIPTIONCHANGE 0x800D
  5254. #define EVENT_OBJECT_VALUECHANGE 0x800E
  5255. #define EVENT_OBJECT_PARENTCHANGE 0x800F
  5256. #define EVENT_OBJECT_HELPCHANGE 0x8010
  5257. #define EVENT_OBJECT_DEFACTIONCHANGE 0x8011
  5258. #define EVENT_OBJECT_ACCELERATORCHANGE 0x8012
  5259.  
  5260. #define SOUND_SYSTEM_STARTUP 1
  5261. #define SOUND_SYSTEM_SHUTDOWN 2
  5262. #define SOUND_SYSTEM_BEEP 3
  5263. #define SOUND_SYSTEM_ERROR 4
  5264. #define SOUND_SYSTEM_QUESTION 5
  5265. #define SOUND_SYSTEM_WARNING 6
  5266. #define SOUND_SYSTEM_INFORMATION 7
  5267. #define SOUND_SYSTEM_MAXIMIZE 8
  5268. #define SOUND_SYSTEM_MINIMIZE 9
  5269. #define SOUND_SYSTEM_RESTOREUP 10
  5270. #define SOUND_SYSTEM_RESTOREDOWN 11
  5271. #define SOUND_SYSTEM_APPSTART 12
  5272. #define SOUND_SYSTEM_FAULT 13
  5273. #define SOUND_SYSTEM_APPEND 14
  5274. #define SOUND_SYSTEM_MENUCOMMAND 15
  5275. #define SOUND_SYSTEM_MENUPOPUP 16
  5276. #define CSOUND_SYSTEM 16
  5277.  
  5278. #define ALERT_SYSTEM_INFORMATIONAL 1
  5279. #define ALERT_SYSTEM_WARNING 2
  5280. #define ALERT_SYSTEM_ERROR 3
  5281. #define ALERT_SYSTEM_QUERY 4
  5282. #define ALERT_SYSTEM_CRITICAL 5
  5283. #define CALERT_SYSTEM 6
  5284.  
  5285.   typedef struct tagGUITHREADINFO {
  5286.     DWORD cbSize;
  5287.     DWORD flags;
  5288.     HWND hwndActive;
  5289.     HWND hwndFocus;
  5290.     HWND hwndCapture;
  5291.     HWND hwndMenuOwner;
  5292.     HWND hwndMoveSize;
  5293.     HWND hwndCaret;
  5294.     RECT rcCaret;
  5295.   } GUITHREADINFO,*PGUITHREADINFO,*LPGUITHREADINFO;
  5296.  
  5297. #define GUI_CARETBLINKING 0x00000001
  5298. #define GUI_INMOVESIZE 0x00000002
  5299. #define GUI_INMENUMODE 0x00000004
  5300. #define GUI_SYSTEMMENUMODE 0x00000008
  5301. #define GUI_POPUPMENUMODE 0x00000010
  5302. #define GUI_16BITTASK 0x00000020
  5303.  
  5304. #ifdef UNICODE
  5305. #define GetWindowModuleFileName GetWindowModuleFileNameW
  5306. #else
  5307. #define GetWindowModuleFileName GetWindowModuleFileNameA
  5308. #endif
  5309.  
  5310.   WINUSERAPI WINBOOL WINAPI GetGUIThreadInfo(DWORD idThread,PGUITHREADINFO pgui);
  5311.   WINUSERAPI UINT WINAPI GetWindowModuleFileNameA(HWND hwnd,LPSTR pszFileName,UINT cchFileNameMax);
  5312.   WINUSERAPI UINT WINAPI GetWindowModuleFileNameW(HWND hwnd,LPWSTR pszFileName,UINT cchFileNameMax);
  5313.  
  5314. #ifndef NO_STATE_FLAGS
  5315. #define STATE_SYSTEM_UNAVAILABLE 0x00000001
  5316. #define STATE_SYSTEM_SELECTED 0x00000002
  5317. #define STATE_SYSTEM_FOCUSED 0x00000004
  5318. #define STATE_SYSTEM_PRESSED 0x00000008
  5319. #define STATE_SYSTEM_CHECKED 0x00000010
  5320. #define STATE_SYSTEM_MIXED 0x00000020
  5321. #define STATE_SYSTEM_INDETERMINATE STATE_SYSTEM_MIXED
  5322. #define STATE_SYSTEM_READONLY 0x00000040
  5323. #define STATE_SYSTEM_HOTTRACKED 0x00000080
  5324. #define STATE_SYSTEM_DEFAULT 0x00000100
  5325. #define STATE_SYSTEM_EXPANDED 0x00000200
  5326. #define STATE_SYSTEM_COLLAPSED 0x00000400
  5327. #define STATE_SYSTEM_BUSY 0x00000800
  5328. #define STATE_SYSTEM_FLOATING 0x00001000
  5329. #define STATE_SYSTEM_MARQUEED 0x00002000
  5330. #define STATE_SYSTEM_ANIMATED 0x00004000
  5331. #define STATE_SYSTEM_INVISIBLE 0x00008000
  5332. #define STATE_SYSTEM_OFFSCREEN 0x00010000
  5333. #define STATE_SYSTEM_SIZEABLE 0x00020000
  5334. #define STATE_SYSTEM_MOVEABLE 0x00040000
  5335. #define STATE_SYSTEM_SELFVOICING 0x00080000
  5336. #define STATE_SYSTEM_FOCUSABLE 0x00100000
  5337. #define STATE_SYSTEM_SELECTABLE 0x00200000
  5338. #define STATE_SYSTEM_LINKED 0x00400000
  5339. #define STATE_SYSTEM_TRAVERSED 0x00800000
  5340. #define STATE_SYSTEM_MULTISELECTABLE 0x01000000
  5341. #define STATE_SYSTEM_EXTSELECTABLE 0x02000000
  5342. #define STATE_SYSTEM_ALERT_LOW 0x04000000
  5343. #define STATE_SYSTEM_ALERT_MEDIUM 0x08000000
  5344. #define STATE_SYSTEM_ALERT_HIGH 0x10000000
  5345. #define STATE_SYSTEM_PROTECTED 0x20000000
  5346. #define STATE_SYSTEM_VALID 0x3FFFFFFF
  5347. #endif
  5348.  
  5349. #define CCHILDREN_TITLEBAR 5
  5350. #define CCHILDREN_SCROLLBAR 5
  5351.  
  5352.   typedef struct tagCURSORINFO {
  5353.     DWORD cbSize;
  5354.     DWORD flags;
  5355.     HCURSOR hCursor;
  5356.     POINT ptScreenPos;
  5357.   } CURSORINFO,*PCURSORINFO,*LPCURSORINFO;
  5358.  
  5359. #define CURSOR_SHOWING 0x00000001
  5360.  
  5361.   WINUSERAPI WINBOOL WINAPI GetCursorInfo(PCURSORINFO pci);
  5362.  
  5363.   typedef struct tagWINDOWINFO {
  5364.     DWORD cbSize;
  5365.     RECT rcWindow;
  5366.     RECT rcClient;
  5367.     DWORD dwStyle;
  5368.     DWORD dwExStyle;
  5369.     DWORD dwWindowStatus;
  5370.     UINT cxWindowBorders;
  5371.     UINT cyWindowBorders;
  5372.     ATOM atomWindowType;
  5373.     WORD wCreatorVersion;
  5374.   } WINDOWINFO,*PWINDOWINFO,*LPWINDOWINFO;
  5375.  
  5376. #define WS_ACTIVECAPTION 0x0001
  5377.  
  5378.   WINUSERAPI WINBOOL WINAPI GetWindowInfo(HWND hwnd,PWINDOWINFO pwi);
  5379.  
  5380.   typedef struct tagTITLEBARINFO {
  5381.     DWORD cbSize;
  5382.     RECT rcTitleBar;
  5383.     DWORD rgstate[CCHILDREN_TITLEBAR + 1];
  5384.   } TITLEBARINFO,*PTITLEBARINFO,*LPTITLEBARINFO;
  5385.  
  5386.   WINUSERAPI WINBOOL WINAPI GetTitleBarInfo(HWND hwnd,PTITLEBARINFO pti);
  5387.  
  5388.   typedef struct tagMENUBARINFO {
  5389.     DWORD cbSize;
  5390.     RECT rcBar;
  5391.     HMENU hMenu;
  5392.     HWND hwndMenu;
  5393.     WINBOOL fBarFocused:1;
  5394.     WINBOOL fFocused:1;
  5395.   } MENUBARINFO,*PMENUBARINFO,*LPMENUBARINFO;
  5396.  
  5397.   WINUSERAPI WINBOOL WINAPI GetMenuBarInfo(HWND hwnd,LONG idObject,LONG idItem,PMENUBARINFO pmbi);
  5398.  
  5399.   typedef struct tagSCROLLBARINFO {
  5400.     DWORD cbSize;
  5401.     RECT rcScrollBar;
  5402.     int dxyLineButton;
  5403.     int xyThumbTop;
  5404.     int xyThumbBottom;
  5405.     int reserved;
  5406.     DWORD rgstate[CCHILDREN_SCROLLBAR + 1];
  5407.   } SCROLLBARINFO,*PSCROLLBARINFO,*LPSCROLLBARINFO;
  5408.  
  5409.   WINUSERAPI WINBOOL WINAPI GetScrollBarInfo(HWND hwnd,LONG idObject,PSCROLLBARINFO psbi);
  5410.  
  5411.   typedef struct tagCOMBOBOXINFO {
  5412.     DWORD cbSize;
  5413.     RECT rcItem;
  5414.     RECT rcButton;
  5415.     DWORD stateButton;
  5416.     HWND hwndCombo;
  5417.     HWND hwndItem;
  5418.     HWND hwndList;
  5419.   } COMBOBOXINFO,*PCOMBOBOXINFO,*LPCOMBOBOXINFO;
  5420.  
  5421.   WINUSERAPI WINBOOL WINAPI GetComboBoxInfo(HWND hwndCombo,PCOMBOBOXINFO pcbi);
  5422.  
  5423. #define GA_PARENT 1
  5424. #define GA_ROOT 2
  5425. #define GA_ROOTOWNER 3
  5426.  
  5427.   WINUSERAPI HWND WINAPI GetAncestor(HWND hwnd,UINT gaFlags);
  5428.   WINUSERAPI HWND WINAPI RealChildWindowFromPoint(HWND hwndParent,POINT ptParentClientCoords);
  5429.   WINUSERAPI UINT WINAPI RealGetWindowClassA(HWND hwnd,LPSTR ptszClassName,UINT cchClassNameMax);
  5430.   WINUSERAPI UINT WINAPI RealGetWindowClassW(HWND hwnd,LPWSTR ptszClassName,UINT cchClassNameMax);
  5431. #ifdef UNICODE
  5432. #define RealGetWindowClass RealGetWindowClassW
  5433. #else
  5434. #define RealGetWindowClass RealGetWindowClassA
  5435. #endif
  5436.  
  5437.   typedef struct tagALTTABINFO {
  5438.     DWORD cbSize;
  5439.     int cItems;
  5440.     int cColumns;
  5441.     int cRows;
  5442.     int iColFocus;
  5443.     int iRowFocus;
  5444.     int cxItem;
  5445.     int cyItem;
  5446.     POINT ptStart;
  5447.   } ALTTABINFO,*PALTTABINFO,*LPALTTABINFO;
  5448.  
  5449. #ifdef UNICODE
  5450. #define GetAltTabInfo GetAltTabInfoW
  5451. #else
  5452. #define GetAltTabInfo GetAltTabInfoA
  5453. #endif
  5454.  
  5455.   WINUSERAPI WINBOOL WINAPI GetAltTabInfoA(HWND hwnd,int iItem,PALTTABINFO pati,LPSTR pszItemText,UINT cchItemText);
  5456.   WINUSERAPI WINBOOL WINAPI GetAltTabInfoW(HWND hwnd,int iItem,PALTTABINFO pati,LPWSTR pszItemText,UINT cchItemText);
  5457.   WINUSERAPI DWORD WINAPI GetListBoxInfo(HWND hwnd);
  5458. #endif
  5459.  
  5460.   WINUSERAPI WINBOOL WINAPI LockWorkStation(VOID);
  5461.   WINUSERAPI WINBOOL WINAPI UserHandleGrantAccess(HANDLE hUserHandle,HANDLE hJob,WINBOOL bGrant);
  5462.  
  5463.   DECLARE_HANDLE(HRAWINPUT);
  5464.  
  5465. #define GET_RAWINPUT_CODE_WPARAM(wParam) ((wParam) & 0xff)
  5466.  
  5467. #define RIM_INPUT 0
  5468. #define RIM_INPUTSINK 1
  5469.  
  5470.   typedef struct tagRAWINPUTHEADER {
  5471.     DWORD dwType;
  5472.     DWORD dwSize;
  5473.     HANDLE hDevice;
  5474.     WPARAM wParam;
  5475.   } RAWINPUTHEADER,*PRAWINPUTHEADER,*LPRAWINPUTHEADER;
  5476.  
  5477. #define RIM_TYPEMOUSE 0
  5478. #define RIM_TYPEKEYBOARD 1
  5479. #define RIM_TYPEHID 2
  5480.  
  5481.   typedef struct tagRAWMOUSE {
  5482.     USHORT usFlags;
  5483.     union {
  5484.       ULONG ulButtons;
  5485.       struct {
  5486.         USHORT usButtonFlags;
  5487.         USHORT usButtonData;
  5488.       };
  5489.     };
  5490.     ULONG ulRawButtons;
  5491.     LONG lLastX;
  5492.     LONG lLastY;
  5493.     ULONG ulExtraInformation;
  5494.   } RAWMOUSE,*PRAWMOUSE,*LPRAWMOUSE;
  5495.  
  5496. #define RI_MOUSE_LEFT_BUTTON_DOWN 0x0001
  5497. #define RI_MOUSE_LEFT_BUTTON_UP 0x0002
  5498. #define RI_MOUSE_RIGHT_BUTTON_DOWN 0x0004
  5499. #define RI_MOUSE_RIGHT_BUTTON_UP 0x0008
  5500. #define RI_MOUSE_MIDDLE_BUTTON_DOWN 0x0010
  5501. #define RI_MOUSE_MIDDLE_BUTTON_UP 0x0020
  5502.  
  5503. #define RI_MOUSE_BUTTON_1_DOWN RI_MOUSE_LEFT_BUTTON_DOWN
  5504. #define RI_MOUSE_BUTTON_1_UP RI_MOUSE_LEFT_BUTTON_UP
  5505. #define RI_MOUSE_BUTTON_2_DOWN RI_MOUSE_RIGHT_BUTTON_DOWN
  5506. #define RI_MOUSE_BUTTON_2_UP RI_MOUSE_RIGHT_BUTTON_UP
  5507. #define RI_MOUSE_BUTTON_3_DOWN RI_MOUSE_MIDDLE_BUTTON_DOWN
  5508. #define RI_MOUSE_BUTTON_3_UP RI_MOUSE_MIDDLE_BUTTON_UP
  5509.  
  5510. #define RI_MOUSE_BUTTON_4_DOWN 0x0040
  5511. #define RI_MOUSE_BUTTON_4_UP 0x0080
  5512. #define RI_MOUSE_BUTTON_5_DOWN 0x0100
  5513. #define RI_MOUSE_BUTTON_5_UP 0x0200
  5514.  
  5515. #define RI_MOUSE_WHEEL 0x0400
  5516.  
  5517. #define MOUSE_MOVE_RELATIVE 0
  5518. #define MOUSE_MOVE_ABSOLUTE 1
  5519. #define MOUSE_VIRTUAL_DESKTOP 0x02
  5520. #define MOUSE_ATTRIBUTES_CHANGED 0x04
  5521.  
  5522.   typedef struct tagRAWKEYBOARD {
  5523.     USHORT MakeCode;
  5524.     USHORT Flags;
  5525.     USHORT Reserved;
  5526.     USHORT VKey;
  5527.     UINT Message;
  5528.     ULONG ExtraInformation;
  5529.   } RAWKEYBOARD,*PRAWKEYBOARD,*LPRAWKEYBOARD;
  5530.  
  5531. #define KEYBOARD_OVERRUN_MAKE_CODE 0xFF
  5532.  
  5533. #define RI_KEY_MAKE 0
  5534. #define RI_KEY_BREAK 1
  5535. #define RI_KEY_E0 2
  5536. #define RI_KEY_E1 4
  5537. #define RI_KEY_TERMSRV_SET_LED 8
  5538. #define RI_KEY_TERMSRV_SHADOW 0x10
  5539.  
  5540.   typedef struct tagRAWHID {
  5541.     DWORD dwSizeHid;
  5542.     DWORD dwCount;
  5543.     BYTE bRawData[1];
  5544.   } RAWHID,*PRAWHID,*LPRAWHID;
  5545.  
  5546.   typedef struct tagRAWINPUT {
  5547.     RAWINPUTHEADER header;
  5548.     union {
  5549.       RAWMOUSE mouse;
  5550.       RAWKEYBOARD keyboard;
  5551.       RAWHID hid;
  5552.     } data;
  5553.   } RAWINPUT,*PRAWINPUT,*LPRAWINPUT;
  5554.  
  5555. #ifdef _WIN64
  5556. #define RAWINPUT_ALIGN(x) (((x) + sizeof(QWORD) - 1) & ~(sizeof(QWORD) - 1))
  5557. #else
  5558. #define RAWINPUT_ALIGN(x) (((x) + sizeof(DWORD) - 1) & ~(sizeof(DWORD) - 1))
  5559. #endif
  5560.  
  5561. #define NEXTRAWINPUTBLOCK(ptr) ((PRAWINPUT)RAWINPUT_ALIGN((ULONG_PTR)((PBYTE)(ptr) + (ptr)->header.dwSize)))
  5562.  
  5563. #define RID_INPUT 0x10000003
  5564. #define RID_HEADER 0x10000005
  5565.  
  5566.   WINUSERAPI UINT WINAPI GetRawInputData(HRAWINPUT hRawInput,UINT uiCommand,LPVOID pData,PUINT pcbSize,UINT cbSizeHeader);
  5567.  
  5568. #define RIDI_PREPARSEDDATA 0x20000005
  5569. #define RIDI_DEVICENAME 0x20000007
  5570. #define RIDI_DEVICEINFO 0x2000000b
  5571.  
  5572.   typedef struct tagRID_DEVICE_INFO_MOUSE {
  5573.     DWORD dwId;
  5574.     DWORD dwNumberOfButtons;
  5575.     DWORD dwSampleRate;
  5576.   } RID_DEVICE_INFO_MOUSE,*PRID_DEVICE_INFO_MOUSE;
  5577.  
  5578.   typedef struct tagRID_DEVICE_INFO_KEYBOARD {
  5579.     DWORD dwType;
  5580.     DWORD dwSubType;
  5581.     DWORD dwKeyboardMode;
  5582.     DWORD dwNumberOfFunctionKeys;
  5583.     DWORD dwNumberOfIndicators;
  5584.     DWORD dwNumberOfKeysTotal;
  5585.   } RID_DEVICE_INFO_KEYBOARD,*PRID_DEVICE_INFO_KEYBOARD;
  5586.  
  5587.   typedef struct tagRID_DEVICE_INFO_HID {
  5588.     DWORD dwVendorId;
  5589.     DWORD dwProductId;
  5590.     DWORD dwVersionNumber;
  5591.     USHORT usUsagePage;
  5592.     USHORT usUsage;
  5593.   } RID_DEVICE_INFO_HID,*PRID_DEVICE_INFO_HID;
  5594.  
  5595.   typedef struct tagRID_DEVICE_INFO {
  5596.     DWORD cbSize;
  5597.     DWORD dwType;
  5598.     union {
  5599.       RID_DEVICE_INFO_MOUSE mouse;
  5600.       RID_DEVICE_INFO_KEYBOARD keyboard;
  5601.       RID_DEVICE_INFO_HID hid;
  5602.     };
  5603.   } RID_DEVICE_INFO,*PRID_DEVICE_INFO,*LPRID_DEVICE_INFO;
  5604.  
  5605. #ifdef UNICODE
  5606. #define GetRawInputDeviceInfo GetRawInputDeviceInfoW
  5607. #else
  5608. #define GetRawInputDeviceInfo GetRawInputDeviceInfoA
  5609. #endif
  5610.  
  5611.   WINUSERAPI UINT WINAPI GetRawInputDeviceInfoA(HANDLE hDevice,UINT uiCommand,LPVOID pData,PUINT pcbSize);
  5612.   WINUSERAPI UINT WINAPI GetRawInputDeviceInfoW(HANDLE hDevice,UINT uiCommand,LPVOID pData,PUINT pcbSize);
  5613.   WINUSERAPI UINT WINAPI GetRawInputBuffer(PRAWINPUT pData,PUINT pcbSize,UINT cbSizeHeader);
  5614.  
  5615.   typedef struct tagRAWINPUTDEVICE {
  5616.     USHORT usUsagePage;
  5617.     USHORT usUsage;
  5618.     DWORD dwFlags;
  5619.     HWND hwndTarget;
  5620.   } RAWINPUTDEVICE,*PRAWINPUTDEVICE,*LPRAWINPUTDEVICE;
  5621.  
  5622.   typedef CONST RAWINPUTDEVICE *PCRAWINPUTDEVICE;
  5623.  
  5624. #define RIDEV_REMOVE 0x00000001
  5625. #define RIDEV_EXCLUDE 0x00000010
  5626. #define RIDEV_PAGEONLY 0x00000020
  5627. #define RIDEV_NOLEGACY 0x00000030
  5628. #define RIDEV_INPUTSINK 0x00000100
  5629. #define RIDEV_CAPTUREMOUSE 0x00000200
  5630. #define RIDEV_NOHOTKEYS 0x00000200
  5631. #define RIDEV_APPKEYS 0x00000400
  5632. #define RIDEV_EXMODEMASK 0x000000F0
  5633. #define RIDEV_EXMODE(mode) ((mode) & RIDEV_EXMODEMASK)
  5634.  
  5635.   WINUSERAPI WINBOOL WINAPI RegisterRawInputDevices(PCRAWINPUTDEVICE pRawInputDevices,UINT uiNumDevices,UINT cbSize);
  5636.   WINUSERAPI UINT WINAPI GetRegisteredRawInputDevices(PRAWINPUTDEVICE pRawInputDevices,PUINT puiNumDevices,UINT cbSize);
  5637.  
  5638.   typedef struct tagRAWINPUTDEVICELIST {
  5639.     HANDLE hDevice;
  5640.     DWORD dwType;
  5641.   } RAWINPUTDEVICELIST,*PRAWINPUTDEVICELIST;
  5642.  
  5643.   WINUSERAPI UINT WINAPI GetRawInputDeviceList(PRAWINPUTDEVICELIST pRawInputDeviceList,PUINT puiNumDevices,UINT cbSize);
  5644.   WINUSERAPI LRESULT WINAPI DefRawInputProc(PRAWINPUT *paRawInput,INT nInput,UINT cbSizeHeader);
  5645.  
  5646. #endif /* NOUSER */
  5647.  
  5648. #ifdef __cplusplus
  5649. }
  5650. #endif
  5651. #endif
  5652.