1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 //! USER procedure declarations, constant definitions and macros
7 use ctypes::{c_int, c_long, c_short, c_uint};
8 use shared::basetsd::{
9     DWORD_PTR, INT32, INT_PTR, PDWORD_PTR, UINT16, UINT32, UINT64, UINT_PTR, ULONG_PTR,
10 };
11 #[cfg(target_pointer_width = "64")]
12 use shared::basetsd::LONG_PTR;
13 use shared::guiddef::{GUID, LPCGUID};
14 use shared::minwindef::{
15     ATOM, BOOL, BYTE, DWORD, HINSTANCE, HIWORD, HKL, HMODULE, HRGN, HWINSTA, INT, LOWORD, LPARAM,
16     LPBYTE, LPDWORD, LPINT, LPVOID, LPWORD, LRESULT, PBYTE, PUINT, PULONG, TRUE, UCHAR, UINT,
17     ULONG, USHORT, WORD, WPARAM,
18 };
19 use shared::windef::{
20     COLORREF, DPI_AWARENESS, DPI_AWARENESS_CONTEXT, DPI_HOSTING_BEHAVIOR, HACCEL, HBITMAP, HBRUSH,
21     HCURSOR, HDC, HDESK, HHOOK, HICON, HMENU, HMONITOR, HWINEVENTHOOK, HWND, LPCRECT, LPPOINT,
22     LPRECT, POINT, RECT,
23 };
24 use um::minwinbase::LPSECURITY_ATTRIBUTES;
25 use um::wingdi::{
26     BLENDFUNCTION, DEVMODEA, DEVMODEW, LOGFONTA, LOGFONTW, PDISPLAY_DEVICEA, PDISPLAY_DEVICEW
27 };
28 use um::winnt::{
29     ACCESS_MASK, BOOLEAN, CHAR, HANDLE, LONG, LPCSTR, LPCWSTR, LPSTR, LPWSTR, LUID,
30     PSECURITY_DESCRIPTOR, PSECURITY_INFORMATION, PVOID, SHORT, VOID, WCHAR,
31 };
32 use vc::limits::UINT_MAX;
33 use vc::vadefs::va_list;
34 pub type HDWP = HANDLE;
35 pub type MENUTEMPLATEA = VOID;
36 pub type MENUTEMPLATEW = VOID;
37 pub type LPMENUTEMPLATEA = PVOID;
38 pub type LPMENUTEMPLATEW = PVOID;
39 FN!{stdcall WNDPROC(
40     HWND,
41     UINT,
42     WPARAM,
43     LPARAM,
44 ) -> LRESULT}
45 FN!{stdcall DLGPROC(
46     HWND,
47     UINT,
48     WPARAM,
49     LPARAM,
50 ) -> INT_PTR}
51 FN!{stdcall TIMERPROC(
52     HWND,
53     UINT,
54     UINT_PTR,
55     DWORD,
56 ) -> ()}
57 FN!{stdcall GRAYSTRINGPROC(
58     HDC,
59     LPARAM,
60     c_int,
61 ) -> BOOL}
62 FN!{stdcall WNDENUMPROC(
63     HWND,
64     LPARAM,
65 ) -> BOOL}
66 FN!{stdcall HOOKPROC(
67     code: c_int,
68     wParam: WPARAM,
69     lParam: LPARAM,
70 ) -> LRESULT}
71 FN!{stdcall SENDASYNCPROC(
72     HWND,
73     UINT,
74     ULONG_PTR,
75     LRESULT,
76 ) -> ()}
77 FN!{stdcall PROPENUMPROCA(
78     HWND,
79     LPCSTR,
80     HANDLE,
81 ) -> BOOL}
82 FN!{stdcall PROPENUMPROCW(
83     HWND,
84     LPCWSTR,
85     HANDLE,
86 ) -> BOOL}
87 FN!{stdcall PROPENUMPROCEXA(
88     HWND,
89     LPSTR,
90     HANDLE,
91     ULONG_PTR,
92 ) -> BOOL}
93 FN!{stdcall PROPENUMPROCEXW(
94     HWND,
95     LPWSTR,
96     HANDLE,
97     ULONG_PTR,
98 ) -> BOOL}
99 FN!{stdcall EDITWORDBREAKPROCA(
100     lpch: LPSTR,
101     ichCurrent: c_int,
102     cch: c_int,
103     code: c_int,
104 ) -> c_int}
105 FN!{stdcall EDITWORDBREAKPROCW(
106     lpch: LPWSTR,
107     ichCurrent: c_int,
108     cch: c_int,
109     code: c_int,
110 ) -> c_int}
111 FN!{stdcall DRAWSTATEPROC(
112     hdc: HDC,
113     lData: LPARAM,
114     wData: WPARAM,
115     cx: c_int,
116     cy: c_int,
117 ) -> BOOL}
118 FN!{stdcall NAMEENUMPROCA(
119     LPSTR,
120     LPARAM,
121 ) -> BOOL}
122 FN!{stdcall NAMEENUMPROCW(
123     LPWSTR,
124     LPARAM,
125 ) -> BOOL}
126 pub type WINSTAENUMPROCA = NAMEENUMPROCA;
127 pub type DESKTOPENUMPROCA = NAMEENUMPROCA;
128 pub type WINSTAENUMPROCW = NAMEENUMPROCW;
129 pub type DESKTOPENUMPROCW = NAMEENUMPROCW;
130 #[inline]
IS_INTRESOURCE(r: ULONG_PTR) -> bool131 pub fn IS_INTRESOURCE(r: ULONG_PTR) -> bool {
132     (r >> 16) == 0
133 }
134 #[inline]
MAKEINTRESOURCEA(i: WORD) -> LPSTR135 pub fn MAKEINTRESOURCEA(i: WORD) -> LPSTR {
136     i as ULONG_PTR as LPSTR
137 }
138 #[inline]
MAKEINTRESOURCEW(i: WORD) -> LPWSTR139 pub fn MAKEINTRESOURCEW(i: WORD) -> LPWSTR {
140     i as ULONG_PTR as LPWSTR
141 }
142 pub const RT_CURSOR: LPWSTR = MAKEINTRESOURCE!(1);
143 pub const RT_BITMAP: LPWSTR = MAKEINTRESOURCE!(2);
144 pub const RT_ICON: LPWSTR = MAKEINTRESOURCE!(3);
145 pub const RT_MENU: LPWSTR = MAKEINTRESOURCE!(4);
146 pub const RT_DIALOG: LPWSTR = MAKEINTRESOURCE!(5);
147 pub const RT_STRING: LPWSTR = MAKEINTRESOURCE!(6);
148 pub const RT_FONTDIR: LPWSTR = MAKEINTRESOURCE!(7);
149 pub const RT_FONT: LPWSTR = MAKEINTRESOURCE!(8);
150 pub const RT_ACCELERATOR: LPWSTR = MAKEINTRESOURCE!(9);
151 pub const RT_RCDATA: LPWSTR = MAKEINTRESOURCE!(10);
152 pub const RT_MESSAGETABLE: LPWSTR = MAKEINTRESOURCE!(11);
153 pub const DIFFERENCE: WORD = 11;
154 pub const RT_GROUP_CURSOR: LPWSTR = MAKEINTRESOURCE!(1 + DIFFERENCE);
155 pub const RT_GROUP_ICON: LPWSTR = MAKEINTRESOURCE!(3 + DIFFERENCE);
156 pub const RT_VERSION: LPWSTR = MAKEINTRESOURCE!(16);
157 pub const RT_DLGINCLUDE: LPWSTR = MAKEINTRESOURCE!(17);
158 pub const RT_PLUGPLAY: LPWSTR = MAKEINTRESOURCE!(19);
159 pub const RT_VXD: LPWSTR = MAKEINTRESOURCE!(20);
160 pub const RT_ANICURSOR: LPWSTR = MAKEINTRESOURCE!(21);
161 pub const RT_ANIICON: LPWSTR = MAKEINTRESOURCE!(22);
162 pub const RT_HTML: LPWSTR = MAKEINTRESOURCE!(23);
163 pub const RT_MANIFEST: LPWSTR = MAKEINTRESOURCE!(24);
164 pub const CREATEPROCESS_MANIFEST_RESOURCE_ID: LPWSTR = MAKEINTRESOURCE!(1);
165 pub const ISOLATIONAWARE_MANIFEST_RESOURCE_ID: LPWSTR = MAKEINTRESOURCE!(2);
166 pub const ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID: LPWSTR
167     = MAKEINTRESOURCE!(3);
168 pub const MINIMUM_RESERVED_MANIFEST_RESOURCE_ID: LPWSTR = MAKEINTRESOURCE!(1);
169 pub const MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID: LPWSTR = MAKEINTRESOURCE!(16);
170 extern "system" {
wvsprintfA( _: LPSTR, _: LPCSTR, arglist: va_list, ) -> c_int171     pub fn wvsprintfA(
172         _: LPSTR,
173         _: LPCSTR,
174         arglist: va_list,
175     ) -> c_int;
wvsprintfW( _: LPWSTR, _: LPCWSTR, arglist: va_list, ) -> c_int176     pub fn wvsprintfW(
177         _: LPWSTR,
178         _: LPCWSTR,
179         arglist: va_list,
180     ) -> c_int;
181 }
182 extern "C" {
wsprintfA( _: LPSTR, _: LPCSTR, ... ) -> c_int183     pub fn wsprintfA(
184         _: LPSTR,
185         _: LPCSTR,
186         ...
187     ) -> c_int;
wsprintfW( _: LPWSTR, _: LPCWSTR, ... ) -> c_int188     pub fn wsprintfW(
189         _: LPWSTR,
190         _: LPCWSTR,
191         ...
192     ) -> c_int;
193 }
194 pub const SETWALLPAPER_DEFAULT: LPWSTR = -1isize as LPWSTR;
195 pub const SB_HORZ: UINT = 0;
196 pub const SB_VERT: UINT = 1;
197 pub const SB_CTL: UINT = 2;
198 pub const SB_BOTH: UINT = 3;
199 pub const SB_LINEUP: LPARAM = 0;
200 pub const SB_LINELEFT: LPARAM = 0;
201 pub const SB_LINEDOWN: LPARAM = 1;
202 pub const SB_LINERIGHT: LPARAM = 1;
203 pub const SB_PAGEUP: LPARAM = 2;
204 pub const SB_PAGELEFT: LPARAM = 2;
205 pub const SB_PAGEDOWN: LPARAM = 3;
206 pub const SB_PAGERIGHT: LPARAM = 3;
207 pub const SB_THUMBPOSITION: LPARAM = 4;
208 pub const SB_THUMBTRACK: LPARAM = 5;
209 pub const SB_TOP: LPARAM = 6;
210 pub const SB_LEFT: LPARAM = 6;
211 pub const SB_BOTTOM: LPARAM = 7;
212 pub const SB_RIGHT: LPARAM = 7;
213 pub const SB_ENDSCROLL: LPARAM = 8;
214 pub const SW_HIDE: c_int = 0;
215 pub const SW_SHOWNORMAL: c_int = 1;
216 pub const SW_NORMAL: c_int = 1;
217 pub const SW_SHOWMINIMIZED: c_int = 2;
218 pub const SW_SHOWMAXIMIZED: c_int = 3;
219 pub const SW_MAXIMIZE: c_int = 3;
220 pub const SW_SHOWNOACTIVATE: c_int = 4;
221 pub const SW_SHOW: c_int = 5;
222 pub const SW_MINIMIZE: c_int = 6;
223 pub const SW_SHOWMINNOACTIVE: c_int = 7;
224 pub const SW_SHOWNA: c_int = 8;
225 pub const SW_RESTORE: c_int = 9;
226 pub const SW_SHOWDEFAULT: c_int = 10;
227 pub const SW_FORCEMINIMIZE: c_int = 11;
228 pub const SW_MAX: c_int = 11;
229 pub const HIDE_WINDOW: c_int = 0;
230 pub const SHOW_OPENWINDOW: c_int = 1;
231 pub const SHOW_ICONWINDOW: c_int = 2;
232 pub const SHOW_FULLSCREEN: c_int = 3;
233 pub const SHOW_OPENNOACTIVATE: c_int = 4;
234 pub const SW_PARENTCLOSING: LPARAM = 1;
235 pub const SW_OTHERZOOM: LPARAM = 2;
236 pub const SW_PARENTOPENING: LPARAM = 3;
237 pub const SW_OTHERUNZOOM: LPARAM = 4;
238 pub const AW_HOR_POSITIVE: DWORD = 0x00000001;
239 pub const AW_HOR_NEGATIVE: DWORD = 0x00000002;
240 pub const AW_VER_POSITIVE: DWORD = 0x00000004;
241 pub const AW_VER_NEGATIVE: DWORD = 0x00000008;
242 pub const AW_CENTER: DWORD = 0x00000010;
243 pub const AW_HIDE: DWORD = 0x00010000;
244 pub const AW_ACTIVATE: DWORD = 0x00020000;
245 pub const AW_SLIDE: DWORD = 0x00040000;
246 pub const AW_BLEND: DWORD = 0x00080000;
247 pub const KF_EXTENDED: WORD = 0x0100;
248 pub const KF_DLGMODE: WORD = 0x0800;
249 pub const KF_MENUMODE: WORD = 0x1000;
250 pub const KF_ALTDOWN: WORD = 0x2000;
251 pub const KF_REPEAT: WORD = 0x4000;
252 pub const KF_UP: WORD = 0x8000;
253 pub const VK_LBUTTON: c_int = 0x01;
254 pub const VK_RBUTTON: c_int = 0x02;
255 pub const VK_CANCEL: c_int = 0x03;
256 pub const VK_MBUTTON: c_int = 0x04;
257 pub const VK_XBUTTON1: c_int = 0x05;
258 pub const VK_XBUTTON2: c_int = 0x06;
259 pub const VK_BACK: c_int = 0x08;
260 pub const VK_TAB: c_int = 0x09;
261 pub const VK_CLEAR: c_int = 0x0C;
262 pub const VK_RETURN: c_int = 0x0D;
263 pub const VK_SHIFT: c_int = 0x10;
264 pub const VK_CONTROL: c_int = 0x11;
265 pub const VK_MENU: c_int = 0x12;
266 pub const VK_PAUSE: c_int = 0x13;
267 pub const VK_CAPITAL: c_int = 0x14;
268 pub const VK_KANA: c_int = 0x15;
269 pub const VK_HANGEUL: c_int = 0x15;
270 pub const VK_HANGUL: c_int = 0x15;
271 pub const VK_JUNJA: c_int = 0x17;
272 pub const VK_FINAL: c_int = 0x18;
273 pub const VK_HANJA: c_int = 0x19;
274 pub const VK_KANJI: c_int = 0x19;
275 pub const VK_ESCAPE: c_int = 0x1B;
276 pub const VK_CONVERT: c_int = 0x1C;
277 pub const VK_NONCONVERT: c_int = 0x1D;
278 pub const VK_ACCEPT: c_int = 0x1E;
279 pub const VK_MODECHANGE: c_int = 0x1F;
280 pub const VK_SPACE: c_int = 0x20;
281 pub const VK_PRIOR: c_int = 0x21;
282 pub const VK_NEXT: c_int = 0x22;
283 pub const VK_END: c_int = 0x23;
284 pub const VK_HOME: c_int = 0x24;
285 pub const VK_LEFT: c_int = 0x25;
286 pub const VK_UP: c_int = 0x26;
287 pub const VK_RIGHT: c_int = 0x27;
288 pub const VK_DOWN: c_int = 0x28;
289 pub const VK_SELECT: c_int = 0x29;
290 pub const VK_PRINT: c_int = 0x2A;
291 pub const VK_EXECUTE: c_int = 0x2B;
292 pub const VK_SNAPSHOT: c_int = 0x2C;
293 pub const VK_INSERT: c_int = 0x2D;
294 pub const VK_DELETE: c_int = 0x2E;
295 pub const VK_HELP: c_int = 0x2F;
296 pub const VK_LWIN: c_int = 0x5B;
297 pub const VK_RWIN: c_int = 0x5C;
298 pub const VK_APPS: c_int = 0x5D;
299 pub const VK_SLEEP: c_int = 0x5F;
300 pub const VK_NUMPAD0: c_int = 0x60;
301 pub const VK_NUMPAD1: c_int = 0x61;
302 pub const VK_NUMPAD2: c_int = 0x62;
303 pub const VK_NUMPAD3: c_int = 0x63;
304 pub const VK_NUMPAD4: c_int = 0x64;
305 pub const VK_NUMPAD5: c_int = 0x65;
306 pub const VK_NUMPAD6: c_int = 0x66;
307 pub const VK_NUMPAD7: c_int = 0x67;
308 pub const VK_NUMPAD8: c_int = 0x68;
309 pub const VK_NUMPAD9: c_int = 0x69;
310 pub const VK_MULTIPLY: c_int = 0x6A;
311 pub const VK_ADD: c_int = 0x6B;
312 pub const VK_SEPARATOR: c_int = 0x6C;
313 pub const VK_SUBTRACT: c_int = 0x6D;
314 pub const VK_DECIMAL: c_int = 0x6E;
315 pub const VK_DIVIDE: c_int = 0x6F;
316 pub const VK_F1: c_int = 0x70;
317 pub const VK_F2: c_int = 0x71;
318 pub const VK_F3: c_int = 0x72;
319 pub const VK_F4: c_int = 0x73;
320 pub const VK_F5: c_int = 0x74;
321 pub const VK_F6: c_int = 0x75;
322 pub const VK_F7: c_int = 0x76;
323 pub const VK_F8: c_int = 0x77;
324 pub const VK_F9: c_int = 0x78;
325 pub const VK_F10: c_int = 0x79;
326 pub const VK_F11: c_int = 0x7A;
327 pub const VK_F12: c_int = 0x7B;
328 pub const VK_F13: c_int = 0x7C;
329 pub const VK_F14: c_int = 0x7D;
330 pub const VK_F15: c_int = 0x7E;
331 pub const VK_F16: c_int = 0x7F;
332 pub const VK_F17: c_int = 0x80;
333 pub const VK_F18: c_int = 0x81;
334 pub const VK_F19: c_int = 0x82;
335 pub const VK_F20: c_int = 0x83;
336 pub const VK_F21: c_int = 0x84;
337 pub const VK_F22: c_int = 0x85;
338 pub const VK_F23: c_int = 0x86;
339 pub const VK_F24: c_int = 0x87;
340 pub const VK_NAVIGATION_VIEW: c_int = 0x88;
341 pub const VK_NAVIGATION_MENU: c_int = 0x89;
342 pub const VK_NAVIGATION_UP: c_int = 0x8A;
343 pub const VK_NAVIGATION_DOWN: c_int = 0x8B;
344 pub const VK_NAVIGATION_LEFT: c_int = 0x8C;
345 pub const VK_NAVIGATION_RIGHT: c_int = 0x8D;
346 pub const VK_NAVIGATION_ACCEPT: c_int = 0x8E;
347 pub const VK_NAVIGATION_CANCEL: c_int = 0x8F;
348 pub const VK_NUMLOCK: c_int = 0x90;
349 pub const VK_SCROLL: c_int = 0x91;
350 pub const VK_OEM_NEC_EQUAL: c_int = 0x92;
351 pub const VK_OEM_FJ_JISHO: c_int = 0x92;
352 pub const VK_OEM_FJ_MASSHOU: c_int = 0x93;
353 pub const VK_OEM_FJ_TOUROKU: c_int = 0x94;
354 pub const VK_OEM_FJ_LOYA: c_int = 0x95;
355 pub const VK_OEM_FJ_ROYA: c_int = 0x96;
356 pub const VK_LSHIFT: c_int = 0xA0;
357 pub const VK_RSHIFT: c_int = 0xA1;
358 pub const VK_LCONTROL: c_int = 0xA2;
359 pub const VK_RCONTROL: c_int = 0xA3;
360 pub const VK_LMENU: c_int = 0xA4;
361 pub const VK_RMENU: c_int = 0xA5;
362 pub const VK_BROWSER_BACK: c_int = 0xA6;
363 pub const VK_BROWSER_FORWARD: c_int = 0xA7;
364 pub const VK_BROWSER_REFRESH: c_int = 0xA8;
365 pub const VK_BROWSER_STOP: c_int = 0xA9;
366 pub const VK_BROWSER_SEARCH: c_int = 0xAA;
367 pub const VK_BROWSER_FAVORITES: c_int = 0xAB;
368 pub const VK_BROWSER_HOME: c_int = 0xAC;
369 pub const VK_VOLUME_MUTE: c_int = 0xAD;
370 pub const VK_VOLUME_DOWN: c_int = 0xAE;
371 pub const VK_VOLUME_UP: c_int = 0xAF;
372 pub const VK_MEDIA_NEXT_TRACK: c_int = 0xB0;
373 pub const VK_MEDIA_PREV_TRACK: c_int = 0xB1;
374 pub const VK_MEDIA_STOP: c_int = 0xB2;
375 pub const VK_MEDIA_PLAY_PAUSE: c_int = 0xB3;
376 pub const VK_LAUNCH_MAIL: c_int = 0xB4;
377 pub const VK_LAUNCH_MEDIA_SELECT: c_int = 0xB5;
378 pub const VK_LAUNCH_APP1: c_int = 0xB6;
379 pub const VK_LAUNCH_APP2: c_int = 0xB7;
380 pub const VK_OEM_1: c_int = 0xBA;
381 pub const VK_OEM_PLUS: c_int = 0xBB;
382 pub const VK_OEM_COMMA: c_int = 0xBC;
383 pub const VK_OEM_MINUS: c_int = 0xBD;
384 pub const VK_OEM_PERIOD: c_int = 0xBE;
385 pub const VK_OEM_2: c_int = 0xBF;
386 pub const VK_OEM_3: c_int = 0xC0;
387 pub const VK_GAMEPAD_A: c_int = 0xC3;
388 pub const VK_GAMEPAD_B: c_int = 0xC4;
389 pub const VK_GAMEPAD_X: c_int = 0xC5;
390 pub const VK_GAMEPAD_Y: c_int = 0xC6;
391 pub const VK_GAMEPAD_RIGHT_SHOULDER: c_int = 0xC7;
392 pub const VK_GAMEPAD_LEFT_SHOULDER: c_int = 0xC8;
393 pub const VK_GAMEPAD_LEFT_TRIGGER: c_int = 0xC9;
394 pub const VK_GAMEPAD_RIGHT_TRIGGER: c_int = 0xCA;
395 pub const VK_GAMEPAD_DPAD_UP: c_int = 0xCB;
396 pub const VK_GAMEPAD_DPAD_DOWN: c_int = 0xCC;
397 pub const VK_GAMEPAD_DPAD_LEFT: c_int = 0xCD;
398 pub const VK_GAMEPAD_DPAD_RIGHT: c_int = 0xCE;
399 pub const VK_GAMEPAD_MENU: c_int = 0xCF;
400 pub const VK_GAMEPAD_VIEW: c_int = 0xD0;
401 pub const VK_GAMEPAD_LEFT_THUMBSTICK_BUTTON: c_int = 0xD1;
402 pub const VK_GAMEPAD_RIGHT_THUMBSTICK_BUTTON: c_int = 0xD2;
403 pub const VK_GAMEPAD_LEFT_THUMBSTICK_UP: c_int = 0xD3;
404 pub const VK_GAMEPAD_LEFT_THUMBSTICK_DOWN: c_int = 0xD4;
405 pub const VK_GAMEPAD_LEFT_THUMBSTICK_RIGHT: c_int = 0xD5;
406 pub const VK_GAMEPAD_LEFT_THUMBSTICK_LEFT: c_int = 0xD6;
407 pub const VK_GAMEPAD_RIGHT_THUMBSTICK_UP: c_int = 0xD7;
408 pub const VK_GAMEPAD_RIGHT_THUMBSTICK_DOWN: c_int = 0xD8;
409 pub const VK_GAMEPAD_RIGHT_THUMBSTICK_RIGHT: c_int = 0xD9;
410 pub const VK_GAMEPAD_RIGHT_THUMBSTICK_LEFT: c_int = 0xDA;
411 pub const VK_OEM_4: c_int = 0xDB;
412 pub const VK_OEM_5: c_int = 0xDC;
413 pub const VK_OEM_6: c_int = 0xDD;
414 pub const VK_OEM_7: c_int = 0xDE;
415 pub const VK_OEM_8: c_int = 0xDF;
416 pub const VK_OEM_AX: c_int = 0xE1;
417 pub const VK_OEM_102: c_int = 0xE2;
418 pub const VK_ICO_HELP: c_int = 0xE3;
419 pub const VK_ICO_00: c_int = 0xE4;
420 pub const VK_PROCESSKEY: c_int = 0xE5;
421 pub const VK_ICO_CLEAR: c_int = 0xE6;
422 pub const VK_PACKET: c_int = 0xE7;
423 pub const VK_OEM_RESET: c_int = 0xE9;
424 pub const VK_OEM_JUMP: c_int = 0xEA;
425 pub const VK_OEM_PA1: c_int = 0xEB;
426 pub const VK_OEM_PA2: c_int = 0xEC;
427 pub const VK_OEM_PA3: c_int = 0xED;
428 pub const VK_OEM_WSCTRL: c_int = 0xEE;
429 pub const VK_OEM_CUSEL: c_int = 0xEF;
430 pub const VK_OEM_ATTN: c_int = 0xF0;
431 pub const VK_OEM_FINISH: c_int = 0xF1;
432 pub const VK_OEM_COPY: c_int = 0xF2;
433 pub const VK_OEM_AUTO: c_int = 0xF3;
434 pub const VK_OEM_ENLW: c_int = 0xF4;
435 pub const VK_OEM_BACKTAB: c_int = 0xF5;
436 pub const VK_ATTN: c_int = 0xF6;
437 pub const VK_CRSEL: c_int = 0xF7;
438 pub const VK_EXSEL: c_int = 0xF8;
439 pub const VK_EREOF: c_int = 0xF9;
440 pub const VK_PLAY: c_int = 0xFA;
441 pub const VK_ZOOM: c_int = 0xFB;
442 pub const VK_NONAME: c_int = 0xFC;
443 pub const VK_PA1: c_int = 0xFD;
444 pub const VK_OEM_CLEAR: c_int = 0xFE;
445 pub const WH_MIN: c_int = -1;
446 pub const WH_MSGFILTER: c_int = -1;
447 pub const WH_JOURNALRECORD: c_int = 0;
448 pub const WH_JOURNALPLAYBACK: c_int = 1;
449 pub const WH_KEYBOARD: c_int = 2;
450 pub const WH_GETMESSAGE: c_int = 3;
451 pub const WH_CALLWNDPROC: c_int = 4;
452 pub const WH_CBT: c_int = 5;
453 pub const WH_SYSMSGFILTER: c_int = 6;
454 pub const WH_MOUSE: c_int = 7;
455 pub const WH_HARDWARE: c_int = 8;
456 pub const WH_DEBUG: c_int = 9;
457 pub const WH_SHELL: c_int = 10;
458 pub const WH_FOREGROUNDIDLE: c_int = 11;
459 pub const WH_CALLWNDPROCRET: c_int = 12;
460 pub const WH_KEYBOARD_LL: c_int = 13;
461 pub const WH_MOUSE_LL: c_int = 14;
462 pub const WH_MAX: c_int = 14;
463 pub const WH_MINHOOK: c_int = WH_MIN;
464 pub const WH_MAXHOOK: c_int = WH_MAX;
465 pub const HC_ACTION: c_int = 0;
466 pub const HC_GETNEXT: c_int = 1;
467 pub const HC_SKIP: c_int = 2;
468 pub const HC_NOREMOVE: c_int = 3;
469 pub const HC_NOREM: c_int = HC_NOREMOVE;
470 pub const HC_SYSMODALON: c_int = 4;
471 pub const HC_SYSMODALOFF: c_int = 5;
472 pub const HCBT_MOVESIZE: c_int = 0;
473 pub const HCBT_MINMAX: c_int = 1;
474 pub const HCBT_QS: c_int = 2;
475 pub const HCBT_CREATEWND: c_int = 3;
476 pub const HCBT_DESTROYWND: c_int = 4;
477 pub const HCBT_ACTIVATE: c_int = 5;
478 pub const HCBT_CLICKSKIPPED: c_int = 6;
479 pub const HCBT_KEYSKIPPED: c_int = 7;
480 pub const HCBT_SYSCOMMAND: c_int = 8;
481 pub const HCBT_SETFOCUS: c_int = 9;
482 STRUCT!{struct CBT_CREATEWNDA {
483     lpcs: *mut CREATESTRUCTA,
484     hwndInsertAfter: HWND,
485 }}
486 pub type LPCBT_CREATEWNDA = *mut CBT_CREATEWNDA;
487 STRUCT!{struct CBT_CREATEWNDW {
488     lpcs: *mut CREATESTRUCTW,
489     hwndInsertAfter: HWND,
490 }}
491 pub type LPCBT_CREATEWNDW = *mut CBT_CREATEWNDW;
492 STRUCT!{struct CBTACTIVATESTRUCT {
493     fMouse: BOOL,
494     hWndActive: HWND,
495 }}
496 pub type LPCBTACTIVATESTRUCT = *mut CBTACTIVATESTRUCT;
497 STRUCT!{struct WTSSESSION_NOTIFICATION {
498     cbSize: DWORD,
499     dwSessionId: DWORD,
500 }}
501 pub type PWTSSESSION_NOTIFICATION = *mut WTSSESSION_NOTIFICATION;
502 pub const WTS_CONSOLE_CONNECT: WPARAM = 0x1;
503 pub const WTS_CONSOLE_DISCONNECT: WPARAM = 0x2;
504 pub const WTS_REMOTE_CONNECT: WPARAM = 0x3;
505 pub const WTS_REMOTE_DISCONNECT: WPARAM = 0x4;
506 pub const WTS_SESSION_LOGON: WPARAM = 0x5;
507 pub const WTS_SESSION_LOGOFF: WPARAM = 0x6;
508 pub const WTS_SESSION_LOCK: WPARAM = 0x7;
509 pub const WTS_SESSION_UNLOCK: WPARAM = 0x8;
510 pub const WTS_SESSION_REMOTE_CONTROL: WPARAM = 0x9;
511 pub const WTS_SESSION_CREATE: WPARAM = 0xa;
512 pub const WTS_SESSION_TERMINATE: WPARAM = 0xb;
513 pub const MSGF_DIALOGBOX: c_int = 0;
514 pub const MSGF_MESSAGEBOX: c_int = 1;
515 pub const MSGF_MENU: c_int = 2;
516 pub const MSGF_SCROLLBAR: c_int = 5;
517 pub const MSGF_NEXTWINDOW: c_int = 6;
518 pub const MSGF_MAX: c_int = 8;
519 pub const MSGF_USER: c_int = 4096;
520 pub const HSHELL_WINDOWCREATED: c_int = 1;
521 pub const HSHELL_WINDOWDESTROYED: c_int = 2;
522 pub const HSHELL_ACTIVATESHELLWINDOW: c_int = 3;
523 pub const HSHELL_WINDOWACTIVATED: c_int = 4;
524 pub const HSHELL_GETMINRECT: c_int = 5;
525 pub const HSHELL_REDRAW: c_int = 6;
526 pub const HSHELL_TASKMAN: c_int = 7;
527 pub const HSHELL_LANGUAGE: c_int = 8;
528 pub const HSHELL_SYSMENU: c_int = 9;
529 pub const HSHELL_ENDTASK: c_int = 10;
530 pub const HSHELL_ACCESSIBILITYSTATE: c_int = 11;
531 pub const HSHELL_APPCOMMAND: c_int = 12;
532 pub const HSHELL_WINDOWREPLACED: c_int = 13;
533 pub const HSHELL_WINDOWREPLACING: c_int = 14;
534 pub const HSHELL_MONITORCHANGED: c_int = 16;
535 pub const HSHELL_HIGHBIT: c_int = 0x8000;
536 pub const HSHELL_FLASH: c_int = HSHELL_REDRAW | HSHELL_HIGHBIT;
537 pub const HSHELL_RUDEAPPACTIVATED: c_int = HSHELL_WINDOWACTIVATED | HSHELL_HIGHBIT;
538 pub const APPCOMMAND_BROWSER_BACKWARD: c_short = 1;
539 pub const APPCOMMAND_BROWSER_FORWARD: c_short = 2;
540 pub const APPCOMMAND_BROWSER_REFRESH: c_short = 3;
541 pub const APPCOMMAND_BROWSER_STOP: c_short = 4;
542 pub const APPCOMMAND_BROWSER_SEARCH: c_short = 5;
543 pub const APPCOMMAND_BROWSER_FAVORITES: c_short = 6;
544 pub const APPCOMMAND_BROWSER_HOME: c_short = 7;
545 pub const APPCOMMAND_VOLUME_MUTE: c_short = 8;
546 pub const APPCOMMAND_VOLUME_DOWN: c_short = 9;
547 pub const APPCOMMAND_VOLUME_UP: c_short = 10;
548 pub const APPCOMMAND_MEDIA_NEXTTRACK: c_short = 11;
549 pub const APPCOMMAND_MEDIA_PREVIOUSTRACK: c_short = 12;
550 pub const APPCOMMAND_MEDIA_STOP: c_short = 13;
551 pub const APPCOMMAND_MEDIA_PLAY_PAUSE: c_short = 14;
552 pub const APPCOMMAND_LAUNCH_MAIL: c_short = 15;
553 pub const APPCOMMAND_LAUNCH_MEDIA_SELECT: c_short = 16;
554 pub const APPCOMMAND_LAUNCH_APP1: c_short = 17;
555 pub const APPCOMMAND_LAUNCH_APP2: c_short = 18;
556 pub const APPCOMMAND_BASS_DOWN: c_short = 19;
557 pub const APPCOMMAND_BASS_BOOST: c_short = 20;
558 pub const APPCOMMAND_BASS_UP: c_short = 21;
559 pub const APPCOMMAND_TREBLE_DOWN: c_short = 22;
560 pub const APPCOMMAND_TREBLE_UP: c_short = 23;
561 pub const APPCOMMAND_MICROPHONE_VOLUME_MUTE: c_short = 24;
562 pub const APPCOMMAND_MICROPHONE_VOLUME_DOWN: c_short = 25;
563 pub const APPCOMMAND_MICROPHONE_VOLUME_UP: c_short = 26;
564 pub const APPCOMMAND_HELP: c_short = 27;
565 pub const APPCOMMAND_FIND: c_short = 28;
566 pub const APPCOMMAND_NEW: c_short = 29;
567 pub const APPCOMMAND_OPEN: c_short = 30;
568 pub const APPCOMMAND_CLOSE: c_short = 31;
569 pub const APPCOMMAND_SAVE: c_short = 32;
570 pub const APPCOMMAND_PRINT: c_short = 33;
571 pub const APPCOMMAND_UNDO: c_short = 34;
572 pub const APPCOMMAND_REDO: c_short = 35;
573 pub const APPCOMMAND_COPY: c_short = 36;
574 pub const APPCOMMAND_CUT: c_short = 37;
575 pub const APPCOMMAND_PASTE: c_short = 38;
576 pub const APPCOMMAND_REPLY_TO_MAIL: c_short = 39;
577 pub const APPCOMMAND_FORWARD_MAIL: c_short = 40;
578 pub const APPCOMMAND_SEND_MAIL: c_short = 41;
579 pub const APPCOMMAND_SPELL_CHECK: c_short = 42;
580 pub const APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE: c_short = 43;
581 pub const APPCOMMAND_MIC_ON_OFF_TOGGLE: c_short = 44;
582 pub const APPCOMMAND_CORRECTION_LIST: c_short = 45;
583 pub const APPCOMMAND_MEDIA_PLAY: c_short = 46;
584 pub const APPCOMMAND_MEDIA_PAUSE: c_short = 47;
585 pub const APPCOMMAND_MEDIA_RECORD: c_short = 48;
586 pub const APPCOMMAND_MEDIA_FAST_FORWARD: c_short = 49;
587 pub const APPCOMMAND_MEDIA_REWIND: c_short = 50;
588 pub const APPCOMMAND_MEDIA_CHANNEL_UP: c_short = 51;
589 pub const APPCOMMAND_MEDIA_CHANNEL_DOWN: c_short = 52;
590 pub const APPCOMMAND_DELETE: c_short = 53;
591 pub const APPCOMMAND_DWM_FLIP3D: c_short = 54;
592 pub const FAPPCOMMAND_MOUSE: WORD = 0x8000;
593 pub const FAPPCOMMAND_KEY: WORD = 0;
594 pub const FAPPCOMMAND_OEM: WORD = 0x1000;
595 pub const FAPPCOMMAND_MASK: WORD = 0xF000;
596 #[inline]
GET_APPCOMMAND_LPARAM(lParam: LPARAM) -> c_short597 pub fn GET_APPCOMMAND_LPARAM(lParam: LPARAM) -> c_short {
598     (HIWORD(lParam as DWORD) & !FAPPCOMMAND_MASK) as c_short
599 }
600 #[inline]
GET_DEVICE_LPARAM(lParam: LPARAM) -> WORD601 pub fn GET_DEVICE_LPARAM(lParam: LPARAM) -> WORD {
602     HIWORD(lParam as DWORD) & FAPPCOMMAND_MASK
603 }
604 pub use self::GET_DEVICE_LPARAM as GET_MOUSEORKEY_LPARAM;
605 pub use shared::minwindef::LOWORD as GET_FLAGS_LPARAM;
606 pub use self::GET_FLAGS_LPARAM as GET_KEYSTATE_LPARAM;
607 STRUCT!{struct SHELLHOOKINFO {
608     hwnd: HWND,
609     rc: RECT,
610 }}
611 pub type LPSHELLHOOKINFO = *mut SHELLHOOKINFO;
612 STRUCT!{struct EVENTMSG {
613     message: UINT,
614     paramL: UINT,
615     paramH: UINT,
616     time: DWORD,
617     hwnd: HWND,
618 }}
619 pub type PEVENTMSGMSG = *mut EVENTMSG;
620 pub type NPEVENTMSGMSG = *mut EVENTMSG;
621 pub type LPEVENTMSGMSG = *mut EVENTMSG;
622 pub type PEVENTMSG = *mut EVENTMSG;
623 pub type NPEVENTMSG = *mut EVENTMSG;
624 pub type LPEVENTMSG = *mut EVENTMSG;
625 STRUCT!{struct CWPSTRUCT {
626     lParam: LPARAM,
627     wParam: WPARAM,
628     message: UINT,
629     hwnd: HWND,
630 }}
631 pub type PCWPSTRUCT = *mut CWPSTRUCT;
632 pub type NPCWPSTRUCT = *mut CWPSTRUCT;
633 pub type LPCWPSTRUCT = *mut CWPSTRUCT;
634 STRUCT!{struct CWPRETSTRUCT {
635     lResult: LRESULT,
636     lParam: LPARAM,
637     wParam: WPARAM,
638     message: UINT,
639     hwnd: HWND,
640 }}
641 pub type PCWPRETSTRUCT = *mut CWPRETSTRUCT;
642 pub type NPCWPRETSTRUCT = *mut CWPRETSTRUCT;
643 pub type LPCWPRETSTRUCT = *mut CWPRETSTRUCT;
644 pub const LLKHF_EXTENDED: DWORD = (KF_EXTENDED >> 8) as u32;
645 pub const LLKHF_INJECTED: DWORD = 0x00000010;
646 pub const LLKHF_ALTDOWN: DWORD = (KF_ALTDOWN >> 8) as u32;
647 pub const LLKHF_UP: DWORD = (KF_UP >> 8) as u32;
648 pub const LLKHF_LOWER_IL_INJECTED: DWORD = 0x00000002;
649 pub const LLMHF_INJECTED: DWORD = 0x00000001;
650 pub const LLMHF_LOWER_IL_INJECTED: DWORD = 0x00000002;
651 STRUCT!{struct KBDLLHOOKSTRUCT {
652     vkCode: DWORD,
653     scanCode: DWORD,
654     flags: DWORD,
655     time: DWORD,
656     dwExtraInfo: ULONG_PTR,
657 }}
658 pub type LPKBDLLHOOKSTRUCT = *mut KBDLLHOOKSTRUCT;
659 pub type PKBDLLHOOKSTRUCT = *mut KBDLLHOOKSTRUCT;
660 STRUCT!{struct MSLLHOOKSTRUCT {
661     pt: POINT,
662     mouseData: DWORD,
663     flags: DWORD,
664     time: DWORD,
665     dwExtraInfo: ULONG_PTR,
666 }}
667 pub type LPMSLLHOOKSTRUCT = *mut MSLLHOOKSTRUCT;
668 pub type PMSLLHOOKSTRUCT = *mut MSLLHOOKSTRUCT;
669 STRUCT!{struct DEBUGHOOKINFO {
670     idThread: DWORD,
671     idThreadInstaller: DWORD,
672     lParam: LPARAM,
673     wParam: WPARAM,
674     code: c_int,
675 }}
676 pub type PDEBUGHOOKINFO = *mut DEBUGHOOKINFO;
677 pub type NPDEBUGHOOKINFO = *mut DEBUGHOOKINFO;
678 pub type LPDEBUGHOOKINFO = *mut DEBUGHOOKINFO;
679 STRUCT!{struct MOUSEHOOKSTRUCT {
680     pt: POINT,
681     hwnd: HWND,
682     wHitTestCode: UINT,
683     dwExtraInfo: ULONG_PTR,
684 }}
685 pub type LPMOUSEHOOKSTRUCT = *mut MOUSEHOOKSTRUCT;
686 pub type PMOUSEHOOKSTRUCT = *mut MOUSEHOOKSTRUCT;
687 STRUCT!{struct MOUSEHOOKSTRUCTEX {
688     parent: MOUSEHOOKSTRUCT,
689     mouseData: DWORD,
690 }}
691 pub type LPMOUSEHOOKSTRUCTEX = *mut MOUSEHOOKSTRUCTEX;
692 pub type PMOUSEHOOKSTRUCTEX = *mut MOUSEHOOKSTRUCTEX;
693 STRUCT!{struct HARDWAREHOOKSTRUCT {
694     hwnd: HWND,
695     message: UINT,
696     wParam: WPARAM,
697     lParam: LPARAM,
698 }}
699 pub type LPHARDWAREHOOKSTRUCT = *mut HARDWAREHOOKSTRUCT;
700 pub type PHARDWAREHOOKSTRUCT = *mut HARDWAREHOOKSTRUCT;
701 pub const HKL_PREV: HKL = 0 as HKL;
702 pub const HKL_NEXT: HKL = 1 as HKL;
703 pub const KLF_ACTIVATE: UINT = 0x00000001;
704 pub const KLF_SUBSTITUTE_OK: UINT = 0x00000002;
705 pub const KLF_REORDER: UINT = 0x00000008;
706 pub const KLF_REPLACELANG: UINT = 0x00000010;
707 pub const KLF_NOTELLSHELL: UINT = 0x00000080;
708 pub const KLF_SETFORPROCESS: UINT = 0x00000100;
709 pub const KLF_SHIFTLOCK: UINT = 0x00010000;
710 pub const KLF_RESET: UINT = 0x40000000;
711 pub const INPUTLANGCHANGE_SYSCHARSET: WPARAM = 0x0001;
712 pub const INPUTLANGCHANGE_FORWARD: WPARAM = 0x0002;
713 pub const INPUTLANGCHANGE_BACKWARD: WPARAM = 0x0004;
714 pub const KL_NAMELENGTH: usize = 9;
715 extern "system" {
LoadKeyboardLayoutA( pwszKLID: LPCSTR, Flags: DWORD, ) -> HKL716     pub fn LoadKeyboardLayoutA(
717         pwszKLID: LPCSTR,
718         Flags: DWORD,
719     ) -> HKL;
LoadKeyboardLayoutW( pwszKLID: LPCWSTR, Flags: DWORD, ) -> HKL720     pub fn LoadKeyboardLayoutW(
721         pwszKLID: LPCWSTR,
722         Flags: DWORD,
723     ) -> HKL;
ActivateKeyboardLayout( hkl: HKL, Flags: UINT, ) -> HKL724     pub fn ActivateKeyboardLayout(
725         hkl: HKL,
726         Flags: UINT,
727     ) -> HKL;
ToUnicodeEx( wVirtKey: UINT, wScanCode: UINT, lpKeyState: *const BYTE, pwszBuff: LPWSTR, cchBuff: c_int, wFlags: UINT, dwhkl: HKL, ) -> c_int728     pub fn ToUnicodeEx(
729         wVirtKey: UINT,
730         wScanCode: UINT,
731         lpKeyState: *const BYTE,
732         pwszBuff: LPWSTR,
733         cchBuff: c_int,
734         wFlags: UINT,
735         dwhkl: HKL,
736     ) -> c_int;
UnloadKeyboardLayout( hkl: HKL, ) -> BOOL737     pub fn UnloadKeyboardLayout(
738         hkl: HKL,
739     ) -> BOOL;
GetKeyboardLayoutNameA( pwszKLID: LPSTR, ) -> BOOL740     pub fn GetKeyboardLayoutNameA(
741         pwszKLID: LPSTR,
742     ) -> BOOL;
GetKeyboardLayoutNameW( pwszKLID: LPWSTR, ) -> BOOL743     pub fn GetKeyboardLayoutNameW(
744         pwszKLID: LPWSTR,
745     ) -> BOOL;
GetKeyboardLayoutList( nBuff: c_int, lpList: *mut HKL, ) -> c_int746     pub fn GetKeyboardLayoutList(
747         nBuff: c_int,
748         lpList: *mut HKL,
749     ) -> c_int;
GetKeyboardLayout( idThread: DWORD, ) -> HKL750     pub fn GetKeyboardLayout(
751         idThread: DWORD,
752     ) -> HKL;
753 }
754 STRUCT!{struct MOUSEMOVEPOINT {
755     x: c_int,
756     y: c_int,
757     time: DWORD,
758     dwExtraInfo: ULONG_PTR,
759 }}
760 pub type PMOUSEMOVEPOINT = *mut MOUSEMOVEPOINT;
761 pub type LPMOUSEMOVEPOINT = *mut MOUSEMOVEPOINT;
762 pub const GMMP_USE_DISPLAY_POINTS: DWORD = 1;
763 pub const GMMP_USE_HIGH_RESOLUTION_POINTS: DWORD = 2;
764 extern "system" {
GetMouseMovePointsEx( cbSize: UINT, lppt: LPMOUSEMOVEPOINT, lpptBuf: LPMOUSEMOVEPOINT, nBufPoints: c_int, resolution: DWORD, ) -> c_int765     pub fn GetMouseMovePointsEx(
766         cbSize: UINT,
767         lppt: LPMOUSEMOVEPOINT,
768         lpptBuf: LPMOUSEMOVEPOINT,
769         nBufPoints: c_int,
770         resolution: DWORD,
771     ) -> c_int;
772 }
773 pub const DESKTOP_READOBJECTS: DWORD = 0x0001;
774 pub const DESKTOP_CREATEWINDOW: DWORD = 0x0002;
775 pub const DESKTOP_CREATEMENU: DWORD = 0x0004;
776 pub const DESKTOP_HOOKCONTROL: DWORD = 0x0008;
777 pub const DESKTOP_JOURNALRECORD: DWORD = 0x0010;
778 pub const DESKTOP_JOURNALPLAYBACK: DWORD = 0x0020;
779 pub const DESKTOP_ENUMERATE: DWORD = 0x0040;
780 pub const DESKTOP_WRITEOBJECTS: DWORD = 0x0080;
781 pub const DESKTOP_SWITCHDESKTOP: DWORD = 0x0100;
782 pub const DF_ALLOWOTHERACCOUNTHOOK: DWORD = 0x0001;
783 extern "system" {
CreateDesktopA( lpszDesktop: LPCSTR, lpszDevice: LPCSTR, pDevmode: *mut DEVMODEA, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES, ) -> HDESK784     pub fn CreateDesktopA(
785         lpszDesktop: LPCSTR,
786         lpszDevice: LPCSTR,
787         pDevmode: *mut DEVMODEA,
788         dwFlags: DWORD,
789         dwDesiredAccess: ACCESS_MASK,
790         lpsa: LPSECURITY_ATTRIBUTES,
791     ) -> HDESK;
CreateDesktopW( lpszDesktop: LPCWSTR, lpszDevice: LPCWSTR, pDevmode: *mut DEVMODEW, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES, ) -> HDESK792     pub fn CreateDesktopW(
793         lpszDesktop: LPCWSTR,
794         lpszDevice: LPCWSTR,
795         pDevmode: *mut DEVMODEW,
796         dwFlags: DWORD,
797         dwDesiredAccess: ACCESS_MASK,
798         lpsa: LPSECURITY_ATTRIBUTES,
799     ) -> HDESK;
CreateDesktopExA( lpszDesktop: LPCSTR, lpszDevice: LPCSTR, pDevmode: *mut DEVMODEA, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES, ulHeapSize: ULONG, pvoid: PVOID, ) -> HDESK800     pub fn CreateDesktopExA(
801         lpszDesktop: LPCSTR,
802         lpszDevice: LPCSTR,
803         pDevmode: *mut DEVMODEA,
804         dwFlags: DWORD,
805         dwDesiredAccess: ACCESS_MASK,
806         lpsa: LPSECURITY_ATTRIBUTES,
807         ulHeapSize: ULONG,
808         pvoid: PVOID,
809     ) -> HDESK;
CreateDesktopExW( lpszDesktop: LPCWSTR, lpszDevice: LPCWSTR, pDevmode: *mut DEVMODEW, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES, ulHeapSize: ULONG, pvoid: PVOID, ) -> HDESK810     pub fn CreateDesktopExW(
811         lpszDesktop: LPCWSTR,
812         lpszDevice: LPCWSTR,
813         pDevmode: *mut DEVMODEW,
814         dwFlags: DWORD,
815         dwDesiredAccess: ACCESS_MASK,
816         lpsa: LPSECURITY_ATTRIBUTES,
817         ulHeapSize: ULONG,
818         pvoid: PVOID,
819     ) -> HDESK;
OpenDesktopA( lpszDesktop: LPCSTR, dwFlags: DWORD, fInherit: BOOL, dwDesiredAccess: ACCESS_MASK, ) -> HDESK820     pub fn OpenDesktopA(
821         lpszDesktop: LPCSTR,
822         dwFlags: DWORD,
823         fInherit: BOOL,
824         dwDesiredAccess: ACCESS_MASK,
825     ) -> HDESK;
OpenDesktopW( lpszDesktop: LPCWSTR, dwFlags: DWORD, fInherit: BOOL, dwDesiredAccess: ACCESS_MASK, ) -> HDESK826     pub fn OpenDesktopW(
827         lpszDesktop: LPCWSTR,
828         dwFlags: DWORD,
829         fInherit: BOOL,
830         dwDesiredAccess: ACCESS_MASK,
831     ) -> HDESK;
OpenInputDesktop( dwFlags: DWORD, fInherit: BOOL, dwDesiredAccess: ACCESS_MASK, ) -> HDESK832     pub fn OpenInputDesktop(
833         dwFlags: DWORD,
834         fInherit: BOOL,
835         dwDesiredAccess: ACCESS_MASK,
836     ) -> HDESK;
EnumDesktopsA( hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROCA, lParam: LPARAM, ) -> BOOL837     pub fn EnumDesktopsA(
838         hwinsta: HWINSTA,
839         lpEnumFunc: DESKTOPENUMPROCA,
840         lParam: LPARAM,
841     ) -> BOOL;
EnumDesktopsW( hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROCW, lParam: LPARAM, ) -> BOOL842     pub fn EnumDesktopsW(
843         hwinsta: HWINSTA,
844         lpEnumFunc: DESKTOPENUMPROCW,
845         lParam: LPARAM,
846     ) -> BOOL;
EnumDesktopWindows( hDesktop: HDESK, lpfn: WNDENUMPROC, lParam: LPARAM, ) -> BOOL847     pub fn EnumDesktopWindows(
848         hDesktop: HDESK,
849         lpfn: WNDENUMPROC,
850         lParam: LPARAM,
851     ) -> BOOL;
SwitchDesktop( hDesktop: HDESK, ) -> BOOL852     pub fn SwitchDesktop(
853         hDesktop: HDESK,
854     ) -> BOOL;
SetThreadDesktop( hDesktop: HDESK, ) -> BOOL855     pub fn SetThreadDesktop(
856         hDesktop: HDESK,
857     ) -> BOOL;
CloseDesktop( hDesktop: HDESK, ) -> BOOL858     pub fn CloseDesktop(
859         hDesktop: HDESK,
860     ) -> BOOL;
GetThreadDesktop( dwThreadId: DWORD, ) -> HDESK861     pub fn GetThreadDesktop(
862         dwThreadId: DWORD,
863     ) -> HDESK;
864 }
865 pub const WINSTA_ENUMDESKTOPS: DWORD = 0x0001;
866 pub const WINSTA_READATTRIBUTES: DWORD = 0x0002;
867 pub const WINSTA_ACCESSCLIPBOARD: DWORD = 0x0004;
868 pub const WINSTA_CREATEDESKTOP: DWORD = 0x0008;
869 pub const WINSTA_WRITEATTRIBUTES: DWORD = 0x0010;
870 pub const WINSTA_ACCESSGLOBALATOMS: DWORD = 0x0020;
871 pub const WINSTA_EXITWINDOWS: DWORD = 0x0040;
872 pub const WINSTA_ENUMERATE: DWORD = 0x0100;
873 pub const WINSTA_READSCREEN: DWORD = 0x0200;
874 pub const WINSTA_ALL_ACCESS: DWORD = WINSTA_ENUMDESKTOPS | WINSTA_READATTRIBUTES
875     | WINSTA_ACCESSCLIPBOARD | WINSTA_CREATEDESKTOP | WINSTA_WRITEATTRIBUTES
876     | WINSTA_ACCESSGLOBALATOMS | WINSTA_EXITWINDOWS | WINSTA_ENUMERATE | WINSTA_READSCREEN;
877 pub const CWF_CREATE_ONLY: DWORD = 0x00000001;
878 pub const WSF_VISIBLE: DWORD = 0x0001;
879 extern "system" {
CreateWindowStationA( lpwinsta: LPCSTR, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES, ) -> HWINSTA880     pub fn CreateWindowStationA(
881         lpwinsta: LPCSTR,
882         dwFlags: DWORD,
883         dwDesiredAccess: ACCESS_MASK,
884         lpsa: LPSECURITY_ATTRIBUTES,
885     ) -> HWINSTA;
CreateWindowStationW( lpwinsta: LPCWSTR, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES, ) -> HWINSTA886     pub fn CreateWindowStationW(
887         lpwinsta: LPCWSTR,
888         dwFlags: DWORD,
889         dwDesiredAccess: ACCESS_MASK,
890         lpsa: LPSECURITY_ATTRIBUTES,
891     ) -> HWINSTA;
OpenWindowStationA( lpszWinSta: LPCSTR, fInherit: BOOL, dwDesiredAccess: ACCESS_MASK, ) -> HWINSTA892     pub fn OpenWindowStationA(
893         lpszWinSta: LPCSTR,
894         fInherit: BOOL,
895         dwDesiredAccess: ACCESS_MASK,
896     ) -> HWINSTA;
OpenWindowStationW( lpszWinSta: LPCWSTR, fInherit: BOOL, dwDesiredAccess: ACCESS_MASK, ) -> HWINSTA897     pub fn OpenWindowStationW(
898         lpszWinSta: LPCWSTR,
899         fInherit: BOOL,
900         dwDesiredAccess: ACCESS_MASK,
901     ) -> HWINSTA;
EnumWindowStationsA( lpEnumFunc: WINSTAENUMPROCA, lParam: LPARAM, ) -> BOOL902     pub fn EnumWindowStationsA(
903         lpEnumFunc: WINSTAENUMPROCA,
904         lParam: LPARAM,
905     ) -> BOOL;
EnumWindowStationsW( lpEnumFunc: WINSTAENUMPROCW, lParam: LPARAM, ) -> BOOL906     pub fn EnumWindowStationsW(
907         lpEnumFunc: WINSTAENUMPROCW,
908         lParam: LPARAM,
909     ) -> BOOL;
CloseWindowStation( hWinSta: HWINSTA, ) -> BOOL910     pub fn CloseWindowStation(
911         hWinSta: HWINSTA,
912     ) -> BOOL;
SetProcessWindowStation( hWinSta: HWINSTA, ) -> BOOL913     pub fn SetProcessWindowStation(
914         hWinSta: HWINSTA,
915     ) -> BOOL;
GetProcessWindowStation() -> HWINSTA916     pub fn GetProcessWindowStation() -> HWINSTA;
SetUserObjectSecurity( hObj: HANDLE, pSIRequested: PSECURITY_INFORMATION, pSID: PSECURITY_DESCRIPTOR, ) -> BOOL917     pub fn SetUserObjectSecurity(
918         hObj: HANDLE,
919         pSIRequested: PSECURITY_INFORMATION,
920         pSID: PSECURITY_DESCRIPTOR,
921     ) -> BOOL;
GetUserObjectSecurity( hObj: HANDLE, pSIRequested: PSECURITY_INFORMATION, pSID: PSECURITY_DESCRIPTOR, nLength: DWORD, lpnLengthNeeded: LPDWORD, ) -> BOOL922     pub fn GetUserObjectSecurity(
923         hObj: HANDLE,
924         pSIRequested: PSECURITY_INFORMATION,
925         pSID: PSECURITY_DESCRIPTOR,
926         nLength: DWORD,
927         lpnLengthNeeded: LPDWORD,
928     ) -> BOOL;
929 }
930 pub const UOI_FLAGS: DWORD = 1;
931 pub const UOI_NAME: DWORD = 2;
932 pub const UOI_TYPE: DWORD = 3;
933 pub const UOI_USER_SID: DWORD = 4;
934 pub const UOI_HEAPSIZE: DWORD = 5;
935 pub const UOI_IO: DWORD = 6;
936 pub const UOI_TIMERPROC_EXCEPTION_SUPPRESSION: DWORD = 7;
937 STRUCT!{struct USEROBJECTFLAGS {
938     fInherit: BOOL,
939     fReserved: BOOL,
940     dwFlags: DWORD,
941 }}
942 pub type PUSEROBJECTFLAGS = *mut USEROBJECTFLAGS;
943 extern "system" {
GetUserObjectInformationA( hObj: HANDLE, nIndex: c_int, pvInfo: PVOID, nLength: DWORD, lpnLengthNeeded: LPDWORD, ) -> BOOL944     pub fn GetUserObjectInformationA(
945         hObj: HANDLE,
946         nIndex: c_int,
947         pvInfo: PVOID,
948         nLength: DWORD,
949         lpnLengthNeeded: LPDWORD,
950     ) -> BOOL;
GetUserObjectInformationW( hObj: HANDLE, nIndex: c_int, pvInfo: PVOID, nLength: DWORD, lpnLengthNeeded: LPDWORD, ) -> BOOL951     pub fn GetUserObjectInformationW(
952         hObj: HANDLE,
953         nIndex: c_int,
954         pvInfo: PVOID,
955         nLength: DWORD,
956         lpnLengthNeeded: LPDWORD,
957     ) -> BOOL;
SetUserObjectInformationA( hObj: HANDLE, nIndex: c_int, pvInfo: PVOID, nLength: DWORD, ) -> BOOL958     pub fn SetUserObjectInformationA(
959         hObj: HANDLE,
960         nIndex: c_int,
961         pvInfo: PVOID,
962         nLength: DWORD,
963     ) -> BOOL;
SetUserObjectInformationW( hObj: HANDLE, nIndex: c_int, pvInfo: PVOID, nLength: DWORD, ) -> BOOL964     pub fn SetUserObjectInformationW(
965         hObj: HANDLE,
966         nIndex: c_int,
967         pvInfo: PVOID,
968         nLength: DWORD,
969     ) -> BOOL;
970 }
971 STRUCT!{struct WNDCLASSEXA {
972     cbSize: UINT,
973     style: UINT,
974     lpfnWndProc: WNDPROC,
975     cbClsExtra: c_int,
976     cbWndExtra: c_int,
977     hInstance: HINSTANCE,
978     hIcon: HICON,
979     hCursor: HCURSOR,
980     hbrBackground: HBRUSH,
981     lpszMenuName: LPCSTR,
982     lpszClassName: LPCSTR,
983     hIconSm: HICON,
984 }}
985 pub type PWNDCLASSEXA = *mut WNDCLASSEXA;
986 pub type NPWNDCLASSEXA = *mut WNDCLASSEXA;
987 pub type LPWNDCLASSEXA = *mut WNDCLASSEXA;
988 STRUCT!{struct WNDCLASSEXW {
989     cbSize: UINT,
990     style: UINT,
991     lpfnWndProc: WNDPROC,
992     cbClsExtra: c_int,
993     cbWndExtra: c_int,
994     hInstance: HINSTANCE,
995     hIcon: HICON,
996     hCursor: HCURSOR,
997     hbrBackground: HBRUSH,
998     lpszMenuName: LPCWSTR,
999     lpszClassName: LPCWSTR,
1000     hIconSm: HICON,
1001 }}
1002 pub type PWNDCLASSEXW = *mut WNDCLASSEXW;
1003 pub type NPWNDCLASSEXW = *mut WNDCLASSEXW;
1004 pub type LPWNDCLASSEXW = *mut WNDCLASSEXW;
1005 STRUCT!{struct WNDCLASSA {
1006     style: UINT,
1007     lpfnWndProc: WNDPROC,
1008     cbClsExtra: c_int,
1009     cbWndExtra: c_int,
1010     hInstance: HINSTANCE,
1011     hIcon: HICON,
1012     hCursor: HCURSOR,
1013     hbrBackground: HBRUSH,
1014     lpszMenuName: LPCSTR,
1015     lpszClassName: LPCSTR,
1016 }}
1017 pub type PWNDCLASSA = *mut WNDCLASSA;
1018 pub type NPWNDCLASSA = *mut WNDCLASSA;
1019 pub type LPWNDCLASSA = *mut WNDCLASSA;
1020 STRUCT!{struct WNDCLASSW {
1021     style: UINT,
1022     lpfnWndProc: WNDPROC,
1023     cbClsExtra: c_int,
1024     cbWndExtra: c_int,
1025     hInstance: HINSTANCE,
1026     hIcon: HICON,
1027     hCursor: HCURSOR,
1028     hbrBackground: HBRUSH,
1029     lpszMenuName: LPCWSTR,
1030     lpszClassName: LPCWSTR,
1031 }}
1032 pub type PWNDCLASSW = *mut WNDCLASSW;
1033 pub type NPWNDCLASSW = *mut WNDCLASSW;
1034 pub type LPWNDCLASSW = *mut WNDCLASSW;
1035 extern "system" {
IsHungAppWindow( hwnd: HWND, ) -> BOOL1036     pub fn IsHungAppWindow(
1037         hwnd: HWND,
1038     ) -> BOOL;
DisableProcessWindowsGhosting()1039     pub fn DisableProcessWindowsGhosting();
1040 }
1041 STRUCT!{struct MSG {
1042     hwnd: HWND,
1043     message: UINT,
1044     wParam: WPARAM,
1045     lParam: LPARAM,
1046     time: DWORD,
1047     pt: POINT,
1048 }}
1049 pub type PMSG = *mut MSG;
1050 pub type NPMSG = *mut MSG;
1051 pub type LPMSG = *mut MSG;
1052 //POINTSTOPOINT
1053 //POINTTOPOINTS
1054 //MAKEWPARAM
1055 //MAKELPARAM
1056 //MAKELRESULT
1057 pub const GWL_WNDPROC: c_int = -4;
1058 pub const GWL_HINSTANCE: c_int = -6;
1059 pub const GWL_HWNDPARENT: c_int = -8;
1060 pub const GWL_STYLE: c_int = -16;
1061 pub const GWL_EXSTYLE: c_int = -20;
1062 pub const GWL_USERDATA: c_int = -21;
1063 pub const GWL_ID: c_int = -12;
1064 pub const GWLP_WNDPROC: c_int = -4;
1065 pub const GWLP_HINSTANCE: c_int = -6;
1066 pub const GWLP_HWNDPARENT: c_int = -8;
1067 pub const GWLP_USERDATA: c_int = -21;
1068 pub const GWLP_ID: c_int = -12;
1069 pub const GCL_MENUNAME: c_int = -8;
1070 pub const GCL_HBRBACKGROUND: c_int = -10;
1071 pub const GCL_HCURSOR: c_int = -12;
1072 pub const GCL_HICON: c_int = -14;
1073 pub const GCL_HMODULE: c_int = -16;
1074 pub const GCL_CBWNDEXTRA: c_int = -18;
1075 pub const GCL_CBCLSEXTRA: c_int = -20;
1076 pub const GCL_WNDPROC: c_int = -24;
1077 pub const GCL_STYLE: c_int = -26;
1078 pub const GCW_ATOM: c_int = -32;
1079 pub const GCL_HICONSM: c_int = -34;
1080 pub const GCLP_MENUNAME: c_int = -8;
1081 pub const GCLP_HBRBACKGROUND: c_int = -10;
1082 pub const GCLP_HCURSOR: c_int = -12;
1083 pub const GCLP_HICON: c_int = -14;
1084 pub const GCLP_HMODULE: c_int = -16;
1085 pub const GCLP_WNDPROC: c_int = -24;
1086 pub const GCLP_HICONSM: c_int = -34;
1087 pub const WM_NULL: UINT = 0x0000;
1088 pub const WM_CREATE: UINT = 0x0001;
1089 pub const WM_DESTROY: UINT = 0x0002;
1090 pub const WM_MOVE: UINT = 0x0003;
1091 pub const WM_SIZE: UINT = 0x0005;
1092 pub const WM_ACTIVATE: UINT = 0x0006;
1093 pub const WA_INACTIVE: WORD = 0;
1094 pub const WA_ACTIVE: WORD = 1;
1095 pub const WA_CLICKACTIVE: WORD = 2;
1096 pub const WM_SETFOCUS: UINT = 0x0007;
1097 pub const WM_KILLFOCUS: UINT = 0x0008;
1098 pub const WM_ENABLE: UINT = 0x000A;
1099 pub const WM_SETREDRAW: UINT = 0x000B;
1100 pub const WM_SETTEXT: UINT = 0x000C;
1101 pub const WM_GETTEXT: UINT = 0x000D;
1102 pub const WM_GETTEXTLENGTH: UINT = 0x000E;
1103 pub const WM_PAINT: UINT = 0x000F;
1104 pub const WM_CLOSE: UINT = 0x0010;
1105 pub const WM_QUERYENDSESSION: UINT = 0x0011;
1106 pub const WM_QUERYOPEN: UINT = 0x0013;
1107 pub const WM_ENDSESSION: UINT = 0x0016;
1108 pub const WM_QUIT: UINT = 0x0012;
1109 pub const WM_ERASEBKGND: UINT = 0x0014;
1110 pub const WM_SYSCOLORCHANGE: UINT = 0x0015;
1111 pub const WM_SHOWWINDOW: UINT = 0x0018;
1112 pub const WM_WININICHANGE: UINT = 0x001A;
1113 pub const WM_SETTINGCHANGE: UINT = WM_WININICHANGE;
1114 pub const WM_DEVMODECHANGE: UINT = 0x001B;
1115 pub const WM_ACTIVATEAPP: UINT = 0x001C;
1116 pub const WM_FONTCHANGE: UINT = 0x001D;
1117 pub const WM_TIMECHANGE: UINT = 0x001E;
1118 pub const WM_CANCELMODE: UINT = 0x001F;
1119 pub const WM_SETCURSOR: UINT = 0x0020;
1120 pub const WM_MOUSEACTIVATE: UINT = 0x0021;
1121 pub const WM_CHILDACTIVATE: UINT = 0x0022;
1122 pub const WM_QUEUESYNC: UINT = 0x0023;
1123 pub const WM_GETMINMAXINFO: UINT = 0x0024;
1124 STRUCT!{struct MINMAXINFO {
1125     ptReserved: POINT,
1126     ptMaxSize: POINT,
1127     ptMaxPosition: POINT,
1128     ptMinTrackSize: POINT,
1129     ptMaxTrackSize: POINT,
1130 }}
1131 pub type PMINMAXINFO = *mut MINMAXINFO;
1132 pub type LPMINMAXINFO = *mut MINMAXINFO;
1133 pub const WM_PAINTICON: UINT = 0x0026;
1134 pub const WM_ICONERASEBKGND: UINT = 0x0027;
1135 pub const WM_NEXTDLGCTL: UINT = 0x0028;
1136 pub const WM_SPOOLERSTATUS: UINT = 0x002A;
1137 pub const WM_DRAWITEM: UINT = 0x002B;
1138 pub const WM_MEASUREITEM: UINT = 0x002C;
1139 pub const WM_DELETEITEM: UINT = 0x002D;
1140 pub const WM_VKEYTOITEM: UINT = 0x002E;
1141 pub const WM_CHARTOITEM: UINT = 0x002F;
1142 pub const WM_SETFONT: UINT = 0x0030;
1143 pub const WM_GETFONT: UINT = 0x0031;
1144 pub const WM_SETHOTKEY: UINT = 0x0032;
1145 pub const WM_GETHOTKEY: UINT = 0x0033;
1146 pub const WM_QUERYDRAGICON: UINT = 0x0037;
1147 pub const WM_COMPAREITEM: UINT = 0x0039;
1148 pub const WM_GETOBJECT: UINT = 0x003D;
1149 pub const WM_COMPACTING: UINT = 0x0041;
1150 pub const WM_COMMNOTIFY: UINT = 0x0044;
1151 pub const WM_WINDOWPOSCHANGING: UINT = 0x0046;
1152 pub const WM_WINDOWPOSCHANGED: UINT = 0x0047;
1153 pub const WM_POWER: UINT = 0x0048;
1154 pub const PWR_OK: WPARAM = 1;
1155 pub const PWR_FAIL: WPARAM = -1isize as usize;
1156 pub const PWR_SUSPENDREQUEST: WPARAM = 1;
1157 pub const PWR_SUSPENDRESUME: WPARAM = 2;
1158 pub const PWR_CRITICALRESUME: WPARAM = 3;
1159 pub const WM_COPYDATA: UINT = 0x004A;
1160 pub const WM_CANCELJOURNAL: UINT = 0x004B;
1161 STRUCT!{struct COPYDATASTRUCT {
1162     dwData: ULONG_PTR,
1163     cbData: DWORD,
1164     lpData: PVOID,
1165 }}
1166 pub type PCOPYDATASTRUCT = *mut COPYDATASTRUCT;
1167 STRUCT!{struct MDINEXTMENU {
1168     hmenuIn: HMENU,
1169     hmenuNext: HMENU,
1170     hwndNext: HWND,
1171 }}
1172 pub type PMDINEXTMENU = *mut MDINEXTMENU;
1173 pub type LPMDINEXTMENU = *mut MDINEXTMENU;
1174 pub const WM_NOTIFY: UINT = 0x004E;
1175 pub const WM_INPUTLANGCHANGEREQUEST: UINT = 0x0050;
1176 pub const WM_INPUTLANGCHANGE: UINT = 0x0051;
1177 pub const WM_TCARD: UINT = 0x0052;
1178 pub const WM_HELP: UINT = 0x0053;
1179 pub const WM_USERCHANGED: UINT = 0x0054;
1180 pub const WM_NOTIFYFORMAT: UINT = 0x0055;
1181 pub const NFR_ANSI: LRESULT = 1;
1182 pub const NFR_UNICODE: LRESULT = 2;
1183 pub const NF_QUERY: LPARAM = 3;
1184 pub const NF_REQUERY: LPARAM = 4;
1185 pub const WM_CONTEXTMENU: UINT = 0x007B;
1186 pub const WM_STYLECHANGING: UINT = 0x007C;
1187 pub const WM_STYLECHANGED: UINT = 0x007D;
1188 pub const WM_DISPLAYCHANGE: UINT = 0x007E;
1189 pub const WM_GETICON: UINT = 0x007F;
1190 pub const WM_SETICON: UINT = 0x0080;
1191 pub const WM_NCCREATE: UINT = 0x0081;
1192 pub const WM_NCDESTROY: UINT = 0x0082;
1193 pub const WM_NCCALCSIZE: UINT = 0x0083;
1194 pub const WM_NCHITTEST: UINT = 0x0084;
1195 pub const WM_NCPAINT: UINT = 0x0085;
1196 pub const WM_NCACTIVATE: UINT = 0x0086;
1197 pub const WM_GETDLGCODE: UINT = 0x0087;
1198 pub const WM_SYNCPAINT: UINT = 0x0088;
1199 pub const WM_NCMOUSEMOVE: UINT = 0x00A0;
1200 pub const WM_NCLBUTTONDOWN: UINT = 0x00A1;
1201 pub const WM_NCLBUTTONUP: UINT = 0x00A2;
1202 pub const WM_NCLBUTTONDBLCLK: UINT = 0x00A3;
1203 pub const WM_NCRBUTTONDOWN: UINT = 0x00A4;
1204 pub const WM_NCRBUTTONUP: UINT = 0x00A5;
1205 pub const WM_NCRBUTTONDBLCLK: UINT = 0x00A6;
1206 pub const WM_NCMBUTTONDOWN: UINT = 0x00A7;
1207 pub const WM_NCMBUTTONUP: UINT = 0x00A8;
1208 pub const WM_NCMBUTTONDBLCLK: UINT = 0x00A9;
1209 pub const WM_NCXBUTTONDOWN: UINT = 0x00AB;
1210 pub const WM_NCXBUTTONUP: UINT = 0x00AC;
1211 pub const WM_NCXBUTTONDBLCLK: UINT = 0x00AD;
1212 pub const WM_INPUT_DEVICE_CHANGE: UINT = 0x00FE;
1213 pub const WM_INPUT: UINT = 0x00FF;
1214 pub const WM_KEYFIRST: UINT = 0x0100;
1215 pub const WM_KEYDOWN: UINT = 0x0100;
1216 pub const WM_KEYUP: UINT = 0x0101;
1217 pub const WM_CHAR: UINT = 0x0102;
1218 pub const WM_DEADCHAR: UINT = 0x0103;
1219 pub const WM_SYSKEYDOWN: UINT = 0x0104;
1220 pub const WM_SYSKEYUP: UINT = 0x0105;
1221 pub const WM_SYSCHAR: UINT = 0x0106;
1222 pub const WM_SYSDEADCHAR: UINT = 0x0107;
1223 pub const WM_UNICHAR: UINT = 0x0109;
1224 pub const WM_KEYLAST: UINT = 0x0109;
1225 pub const UNICODE_NOCHAR: WPARAM = 0xFFFF;
1226 pub const WM_IME_STARTCOMPOSITION: UINT = 0x010D;
1227 pub const WM_IME_ENDCOMPOSITION: UINT = 0x010E;
1228 pub const WM_IME_COMPOSITION: UINT = 0x010F;
1229 pub const WM_IME_KEYLAST: UINT = 0x010F;
1230 pub const WM_INITDIALOG: UINT = 0x0110;
1231 pub const WM_COMMAND: UINT = 0x0111;
1232 pub const WM_SYSCOMMAND: UINT = 0x0112;
1233 pub const WM_TIMER: UINT = 0x0113;
1234 pub const WM_HSCROLL: UINT = 0x0114;
1235 pub const WM_VSCROLL: UINT = 0x0115;
1236 pub const WM_INITMENU: UINT = 0x0116;
1237 pub const WM_INITMENUPOPUP: UINT = 0x0117;
1238 pub const WM_GESTURE: UINT = 0x0119;
1239 pub const WM_GESTURENOTIFY: UINT = 0x011A;
1240 pub const WM_MENUSELECT: UINT = 0x011F;
1241 pub const WM_MENUCHAR: UINT = 0x0120;
1242 pub const WM_ENTERIDLE: UINT = 0x0121;
1243 pub const WM_MENURBUTTONUP: UINT = 0x0122;
1244 pub const WM_MENUDRAG: UINT = 0x0123;
1245 pub const WM_MENUGETOBJECT: UINT = 0x0124;
1246 pub const WM_UNINITMENUPOPUP: UINT = 0x0125;
1247 pub const WM_MENUCOMMAND: UINT = 0x0126;
1248 pub const WM_CHANGEUISTATE: UINT = 0x0127;
1249 pub const WM_UPDATEUISTATE: UINT = 0x0128;
1250 pub const WM_QUERYUISTATE: UINT = 0x0129;
1251 pub const UIS_SET: WORD = 1;
1252 pub const UIS_CLEAR: WORD = 2;
1253 pub const UIS_INITIALIZE: WORD = 3;
1254 pub const UISF_HIDEFOCUS: WORD = 0x1;
1255 pub const UISF_HIDEACCEL: WORD = 0x2;
1256 pub const UISF_ACTIVE: WORD = 0x4;
1257 pub const WM_CTLCOLORMSGBOX: UINT = 0x0132;
1258 pub const WM_CTLCOLOREDIT: UINT = 0x0133;
1259 pub const WM_CTLCOLORLISTBOX: UINT = 0x0134;
1260 pub const WM_CTLCOLORBTN: UINT = 0x0135;
1261 pub const WM_CTLCOLORDLG: UINT = 0x0136;
1262 pub const WM_CTLCOLORSCROLLBAR: UINT = 0x0137;
1263 pub const WM_CTLCOLORSTATIC: UINT = 0x0138;
1264 pub const MN_GETHMENU: UINT = 0x01E1;
1265 pub const WM_MOUSEFIRST: UINT = 0x0200;
1266 pub const WM_MOUSEMOVE: UINT = 0x0200;
1267 pub const WM_LBUTTONDOWN: UINT = 0x0201;
1268 pub const WM_LBUTTONUP: UINT = 0x0202;
1269 pub const WM_LBUTTONDBLCLK: UINT = 0x0203;
1270 pub const WM_RBUTTONDOWN: UINT = 0x0204;
1271 pub const WM_RBUTTONUP: UINT = 0x0205;
1272 pub const WM_RBUTTONDBLCLK: UINT = 0x0206;
1273 pub const WM_MBUTTONDOWN: UINT = 0x0207;
1274 pub const WM_MBUTTONUP: UINT = 0x0208;
1275 pub const WM_MBUTTONDBLCLK: UINT = 0x0209;
1276 pub const WM_MOUSEWHEEL: UINT = 0x020A;
1277 pub const WM_XBUTTONDOWN: UINT = 0x020B;
1278 pub const WM_XBUTTONUP: UINT = 0x020C;
1279 pub const WM_XBUTTONDBLCLK: UINT = 0x020D;
1280 pub const WM_MOUSEHWHEEL: UINT = 0x020E;
1281 pub const WM_MOUSELAST: UINT = 0x020E;
1282 pub const WHEEL_DELTA: c_short = 120;
1283 #[inline]
GET_WHEEL_DELTA_WPARAM(wParam: WPARAM) -> c_short1284 pub fn GET_WHEEL_DELTA_WPARAM(wParam: WPARAM) -> c_short {
1285     HIWORD(wParam as DWORD) as c_short
1286 }
1287 pub const WHEEL_PAGESCROLL: UINT = UINT_MAX;
1288 #[inline]
GET_KEYSTATE_WPARAM(wParam: WPARAM) -> WORD1289 pub fn GET_KEYSTATE_WPARAM(wParam: WPARAM) -> WORD {
1290     LOWORD(wParam as DWORD)
1291 }
1292 #[inline]
GET_NCHITTEST_WPARAM(wParam: WPARAM) -> c_short1293 pub fn GET_NCHITTEST_WPARAM(wParam: WPARAM) -> c_short {
1294     LOWORD(wParam as DWORD) as c_short
1295 }
1296 #[inline]
GET_XBUTTON_WPARAM(wParam: WPARAM) -> WORD1297 pub fn GET_XBUTTON_WPARAM(wParam: WPARAM) -> WORD {
1298     HIWORD(wParam as DWORD)
1299 }
1300 pub const XBUTTON1: WORD = 0x0001;
1301 pub const XBUTTON2: WORD = 0x0002;
1302 pub const WM_PARENTNOTIFY: UINT = 0x0210;
1303 pub const WM_ENTERMENULOOP: UINT = 0x0211;
1304 pub const WM_EXITMENULOOP: UINT = 0x0212;
1305 pub const WM_NEXTMENU: UINT = 0x0213;
1306 pub const WM_SIZING: UINT = 0x0214;
1307 pub const WM_CAPTURECHANGED: UINT = 0x0215;
1308 pub const WM_MOVING: UINT = 0x0216;
1309 pub const WM_POWERBROADCAST: UINT = 0x0218;
1310 pub const PBT_APMQUERYSUSPEND: WPARAM = 0x0000;
1311 pub const PBT_APMQUERYSTANDBY: WPARAM = 0x0001;
1312 pub const PBT_APMQUERYSUSPENDFAILED: WPARAM = 0x0002;
1313 pub const PBT_APMQUERYSTANDBYFAILED: WPARAM = 0x0003;
1314 pub const PBT_APMSUSPEND: WPARAM = 0x0004;
1315 pub const PBT_APMSTANDBY: WPARAM = 0x0005;
1316 pub const PBT_APMRESUMECRITICAL: WPARAM = 0x0006;
1317 pub const PBT_APMRESUMESUSPEND: WPARAM = 0x0007;
1318 pub const PBT_APMRESUMESTANDBY: WPARAM = 0x0008;
1319 pub const PBTF_APMRESUMEFROMFAILURE: LPARAM = 0x00000001;
1320 pub const PBT_APMBATTERYLOW: WPARAM = 0x0009;
1321 pub const PBT_APMPOWERSTATUSCHANGE: WPARAM = 0x000A;
1322 pub const PBT_APMOEMEVENT: WPARAM = 0x000B;
1323 pub const PBT_APMRESUMEAUTOMATIC: WPARAM = 0x0012;
1324 pub const PBT_POWERSETTINGCHANGE: WPARAM = 0x8013;
1325 STRUCT!{struct POWERBROADCAST_SETTING {
1326     PowerSetting: GUID,
1327     DataLength: DWORD,
1328     Data: [UCHAR; 1],
1329 }}
1330 pub type PPOWERBROADCAST_SETTING = *mut POWERBROADCAST_SETTING;
1331 pub const WM_DEVICECHANGE: UINT = 0x0219;
1332 pub const WM_MDICREATE: UINT = 0x0220;
1333 pub const WM_MDIDESTROY: UINT = 0x0221;
1334 pub const WM_MDIACTIVATE: UINT = 0x0222;
1335 pub const WM_MDIRESTORE: UINT = 0x0223;
1336 pub const WM_MDINEXT: UINT = 0x0224;
1337 pub const WM_MDIMAXIMIZE: UINT = 0x0225;
1338 pub const WM_MDITILE: UINT = 0x0226;
1339 pub const WM_MDICASCADE: UINT = 0x0227;
1340 pub const WM_MDIICONARRANGE: UINT = 0x0228;
1341 pub const WM_MDIGETACTIVE: UINT = 0x0229;
1342 pub const WM_MDISETMENU: UINT = 0x0230;
1343 pub const WM_ENTERSIZEMOVE: UINT = 0x0231;
1344 pub const WM_EXITSIZEMOVE: UINT = 0x0232;
1345 pub const WM_DROPFILES: UINT = 0x0233;
1346 pub const WM_MDIREFRESHMENU: UINT = 0x0234;
1347 pub const WM_POINTERDEVICECHANGE: UINT = 0x238;
1348 pub const WM_POINTERDEVICEINRANGE: UINT = 0x239;
1349 pub const WM_POINTERDEVICEOUTOFRANGE: UINT = 0x23A;
1350 pub const WM_TOUCH: UINT = 0x0240;
1351 pub const WM_NCPOINTERUPDATE: UINT = 0x0241;
1352 pub const WM_NCPOINTERDOWN: UINT = 0x0242;
1353 pub const WM_NCPOINTERUP: UINT = 0x0243;
1354 pub const WM_POINTERUPDATE: UINT = 0x0245;
1355 pub const WM_POINTERDOWN: UINT = 0x0246;
1356 pub const WM_POINTERUP: UINT = 0x0247;
1357 pub const WM_POINTERENTER: UINT = 0x0249;
1358 pub const WM_POINTERLEAVE: UINT = 0x024A;
1359 pub const WM_POINTERACTIVATE: UINT = 0x024B;
1360 pub const WM_POINTERCAPTURECHANGED: UINT = 0x024C;
1361 pub const WM_TOUCHHITTESTING: UINT = 0x024D;
1362 pub const WM_POINTERWHEEL: UINT = 0x024E;
1363 pub const WM_POINTERHWHEEL: UINT = 0x024F;
1364 pub const DM_POINTERHITTEST: UINT = 0x0250;
1365 pub const WM_POINTERROUTEDTO: UINT = 0x0251;
1366 pub const WM_POINTERROUTEDAWAY: UINT = 0x0252;
1367 pub const WM_POINTERROUTEDRELEASED: UINT = 0x0253;
1368 pub const WM_IME_SETCONTEXT: UINT = 0x0281;
1369 pub const WM_IME_NOTIFY: UINT = 0x0282;
1370 pub const WM_IME_CONTROL: UINT = 0x0283;
1371 pub const WM_IME_COMPOSITIONFULL: UINT = 0x0284;
1372 pub const WM_IME_SELECT: UINT = 0x0285;
1373 pub const WM_IME_CHAR: UINT = 0x0286;
1374 pub const WM_IME_REQUEST: UINT = 0x0288;
1375 pub const WM_IME_KEYDOWN: UINT = 0x0290;
1376 pub const WM_IME_KEYUP: UINT = 0x0291;
1377 pub const WM_MOUSEHOVER: UINT = 0x02A1;
1378 pub const WM_MOUSELEAVE: UINT = 0x02A3;
1379 pub const WM_NCMOUSEHOVER: UINT = 0x02A0;
1380 pub const WM_NCMOUSELEAVE: UINT = 0x02A2;
1381 pub const WM_WTSSESSION_CHANGE: UINT = 0x02B1;
1382 pub const WM_TABLET_FIRST: UINT = 0x02c0;
1383 pub const WM_TABLET_LAST: UINT = 0x02df;
1384 pub const WM_DPICHANGED: UINT = 0x02E0;
1385 pub const WM_DPICHANGED_BEFOREPARENT: UINT = 0x02E2;
1386 pub const WM_DPICHANGED_AFTERPARENT: UINT = 0x02E3;
1387 pub const WM_GETDPISCALEDSIZE: UINT = 0x02E4;
1388 pub const WM_CUT: UINT = 0x0300;
1389 pub const WM_COPY: UINT = 0x0301;
1390 pub const WM_PASTE: UINT = 0x0302;
1391 pub const WM_CLEAR: UINT = 0x0303;
1392 pub const WM_UNDO: UINT = 0x0304;
1393 pub const WM_RENDERFORMAT: UINT = 0x0305;
1394 pub const WM_RENDERALLFORMATS: UINT = 0x0306;
1395 pub const WM_DESTROYCLIPBOARD: UINT = 0x0307;
1396 pub const WM_DRAWCLIPBOARD: UINT = 0x0308;
1397 pub const WM_PAINTCLIPBOARD: UINT = 0x0309;
1398 pub const WM_VSCROLLCLIPBOARD: UINT = 0x030A;
1399 pub const WM_SIZECLIPBOARD: UINT = 0x030B;
1400 pub const WM_ASKCBFORMATNAME: UINT = 0x030C;
1401 pub const WM_CHANGECBCHAIN: UINT = 0x030D;
1402 pub const WM_HSCROLLCLIPBOARD: UINT = 0x030E;
1403 pub const WM_QUERYNEWPALETTE: UINT = 0x030F;
1404 pub const WM_PALETTEISCHANGING: UINT = 0x0310;
1405 pub const WM_PALETTECHANGED: UINT = 0x0311;
1406 pub const WM_HOTKEY: UINT = 0x0312;
1407 pub const WM_PRINT: UINT = 0x0317;
1408 pub const WM_PRINTCLIENT: UINT = 0x0318;
1409 pub const WM_APPCOMMAND: UINT = 0x0319;
1410 pub const WM_THEMECHANGED: UINT = 0x031A;
1411 pub const WM_CLIPBOARDUPDATE: UINT = 0x031D;
1412 pub const WM_DWMCOMPOSITIONCHANGED: UINT = 0x031E;
1413 pub const WM_DWMNCRENDERINGCHANGED: UINT = 0x031F;
1414 pub const WM_DWMCOLORIZATIONCOLORCHANGED: UINT = 0x0320;
1415 pub const WM_DWMWINDOWMAXIMIZEDCHANGE: UINT = 0x0321;
1416 pub const WM_DWMSENDICONICTHUMBNAIL: UINT = 0x0323;
1417 pub const WM_DWMSENDICONICLIVEPREVIEWBITMAP: UINT = 0x0326;
1418 pub const WM_GETTITLEBARINFOEX: UINT = 0x033F;
1419 pub const WM_HANDHELDFIRST: UINT = 0x0358;
1420 pub const WM_HANDHELDLAST: UINT = 0x035F;
1421 pub const WM_AFXFIRST: UINT = 0x0360;
1422 pub const WM_AFXLAST: UINT = 0x037F;
1423 pub const WM_PENWINFIRST: UINT = 0x0380;
1424 pub const WM_PENWINLAST: UINT = 0x038F;
1425 pub const WM_APP: UINT = 0x8000;
1426 pub const WM_USER: UINT = 0x0400;
1427 pub const WMSZ_LEFT: UINT = 1;
1428 pub const WMSZ_RIGHT: UINT = 2;
1429 pub const WMSZ_TOP: UINT = 3;
1430 pub const WMSZ_TOPLEFT: UINT = 4;
1431 pub const WMSZ_TOPRIGHT: UINT = 5;
1432 pub const WMSZ_BOTTOM: UINT = 6;
1433 pub const WMSZ_BOTTOMLEFT: UINT = 7;
1434 pub const WMSZ_BOTTOMRIGHT: UINT = 8;
1435 pub const HTERROR: LRESULT = (-2);
1436 pub const HTTRANSPARENT: LRESULT = (-1);
1437 pub const HTNOWHERE: LRESULT = 0;
1438 pub const HTCLIENT: LRESULT = 1;
1439 pub const HTCAPTION: LRESULT = 2;
1440 pub const HTSYSMENU: LRESULT = 3;
1441 pub const HTGROWBOX: LRESULT = 4;
1442 pub const HTSIZE: LRESULT = HTGROWBOX;
1443 pub const HTMENU: LRESULT = 5;
1444 pub const HTHSCROLL: LRESULT = 6;
1445 pub const HTVSCROLL: LRESULT = 7;
1446 pub const HTMINBUTTON: LRESULT = 8;
1447 pub const HTMAXBUTTON: LRESULT = 9;
1448 pub const HTLEFT: LRESULT = 10;
1449 pub const HTRIGHT: LRESULT = 11;
1450 pub const HTTOP: LRESULT = 12;
1451 pub const HTTOPLEFT: LRESULT = 13;
1452 pub const HTTOPRIGHT: LRESULT = 14;
1453 pub const HTBOTTOM: LRESULT = 15;
1454 pub const HTBOTTOMLEFT: LRESULT = 16;
1455 pub const HTBOTTOMRIGHT: LRESULT = 17;
1456 pub const HTBORDER: LRESULT = 18;
1457 pub const HTREDUCE: LRESULT = HTMINBUTTON;
1458 pub const HTZOOM: LRESULT = HTMAXBUTTON;
1459 pub const HTSIZEFIRST: LRESULT = HTLEFT;
1460 pub const HTSIZELAST: LRESULT = HTBOTTOMRIGHT;
1461 pub const HTOBJECT: LRESULT = 19;
1462 pub const HTCLOSE: LRESULT = 20;
1463 pub const HTHELP: LRESULT = 21;
1464 pub const SMTO_NORMAL: UINT = 0x0000;
1465 pub const SMTO_BLOCK: UINT = 0x0001;
1466 pub const SMTO_ABORTIFHUNG: UINT = 0x0002;
1467 pub const SMTO_NOTIMEOUTIFNOTHUNG: UINT = 0x0008;
1468 pub const SMTO_ERRORONEXIT: UINT = 0x0020;
1469 pub const MA_ACTIVATE: UINT = 1;
1470 pub const MA_ACTIVATEANDEAT: UINT = 2;
1471 pub const MA_NOACTIVATE: UINT = 3;
1472 pub const MA_NOACTIVATEANDEAT: UINT = 4;
1473 pub const ICON_SMALL: UINT = 0;
1474 pub const ICON_BIG: UINT = 1;
1475 pub const ICON_SMALL2: UINT = 2;
1476 extern "system" {
RegisterWindowMessageA( lpString: LPCSTR, ) -> UINT1477     pub fn RegisterWindowMessageA(
1478         lpString: LPCSTR,
1479     ) -> UINT;
RegisterWindowMessageW( lpString: LPCWSTR, ) -> UINT1480     pub fn RegisterWindowMessageW(
1481         lpString: LPCWSTR,
1482     ) -> UINT;
1483 }
1484 pub const SIZE_RESTORED: WPARAM = 0;
1485 pub const SIZE_MINIMIZED: WPARAM = 1;
1486 pub const SIZE_MAXIMIZED: WPARAM = 2;
1487 pub const SIZE_MAXSHOW: WPARAM = 3;
1488 pub const SIZE_MAXHIDE: WPARAM = 4;
1489 pub const SIZENORMAL: WPARAM = SIZE_RESTORED;
1490 pub const SIZEICONIC: WPARAM = SIZE_MINIMIZED;
1491 pub const SIZEFULLSCREEN: WPARAM = SIZE_MAXIMIZED;
1492 pub const SIZEZOOMSHOW: WPARAM = SIZE_MAXSHOW;
1493 pub const SIZEZOOMHIDE: WPARAM = SIZE_MAXHIDE;
1494 STRUCT!{struct WINDOWPOS {
1495     hwnd: HWND,
1496     hwndInsertAfter: HWND,
1497     x: c_int,
1498     y: c_int,
1499     cx: c_int,
1500     cy: c_int,
1501     flags: UINT,
1502 }}
1503 pub type LPWINDOWPOS = *mut WINDOWPOS;
1504 pub type PWINDOWPOS = *mut WINDOWPOS;
1505 STRUCT!{struct NCCALCSIZE_PARAMS {
1506     rgrc: [RECT; 3],
1507     lppos: PWINDOWPOS,
1508 }}
1509 pub type LPNCCALCSIZE_PARAMS = *mut NCCALCSIZE_PARAMS;
1510 pub const WVR_ALIGNTOP: LRESULT = 0x0010;
1511 pub const WVR_ALIGNLEFT: LRESULT = 0x0020;
1512 pub const WVR_ALIGNBOTTOM: LRESULT = 0x0040;
1513 pub const WVR_ALIGNRIGHT: LRESULT = 0x0080;
1514 pub const WVR_HREDRAW: LRESULT = 0x0100;
1515 pub const WVR_VREDRAW: LRESULT = 0x0200;
1516 pub const WVR_REDRAW: LRESULT = WVR_HREDRAW | WVR_VREDRAW;
1517 pub const WVR_VALIDRECTS: LRESULT = 0x0400;
1518 pub const MK_LBUTTON: WPARAM = 0x0001;
1519 pub const MK_RBUTTON: WPARAM = 0x0002;
1520 pub const MK_SHIFT: WPARAM = 0x0004;
1521 pub const MK_CONTROL: WPARAM = 0x0008;
1522 pub const MK_MBUTTON: WPARAM = 0x0010;
1523 pub const MK_XBUTTON1: WPARAM = 0x0020;
1524 pub const MK_XBUTTON2: WPARAM = 0x0040;
1525 pub const TME_HOVER: DWORD = 0x00000001;
1526 pub const TME_LEAVE: DWORD = 0x00000002;
1527 pub const TME_NONCLIENT: DWORD = 0x00000010;
1528 pub const TME_QUERY: DWORD = 0x40000000;
1529 pub const TME_CANCEL: DWORD = 0x80000000;
1530 pub const HOVER_DEFAULT: DWORD = 0xFFFFFFFF;
1531 STRUCT!{struct TRACKMOUSEEVENT {
1532     cbSize: DWORD,
1533     dwFlags: DWORD,
1534     hwndTrack: HWND,
1535     dwHoverTime: DWORD,
1536 }}
1537 pub type LPTRACKMOUSEEVENT = *mut TRACKMOUSEEVENT;
1538 extern "system" {
TrackMouseEvent( lpEventTrack: LPTRACKMOUSEEVENT, ) -> BOOL1539     pub fn TrackMouseEvent(
1540         lpEventTrack: LPTRACKMOUSEEVENT,
1541     ) -> BOOL;
1542 }
1543 pub const WS_OVERLAPPED: DWORD = 0x00000000;
1544 pub const WS_POPUP: DWORD = 0x80000000;
1545 pub const WS_CHILD: DWORD = 0x40000000;
1546 pub const WS_MINIMIZE: DWORD = 0x20000000;
1547 pub const WS_VISIBLE: DWORD = 0x10000000;
1548 pub const WS_DISABLED: DWORD = 0x08000000;
1549 pub const WS_CLIPSIBLINGS: DWORD = 0x04000000;
1550 pub const WS_CLIPCHILDREN: DWORD = 0x02000000;
1551 pub const WS_MAXIMIZE: DWORD = 0x01000000;
1552 pub const WS_CAPTION: DWORD = 0x00C00000;
1553 pub const WS_BORDER: DWORD = 0x00800000;
1554 pub const WS_DLGFRAME: DWORD = 0x00400000;
1555 pub const WS_VSCROLL: DWORD = 0x00200000;
1556 pub const WS_HSCROLL: DWORD = 0x00100000;
1557 pub const WS_SYSMENU: DWORD = 0x00080000;
1558 pub const WS_THICKFRAME: DWORD = 0x00040000;
1559 pub const WS_GROUP: DWORD = 0x00020000;
1560 pub const WS_TABSTOP: DWORD = 0x00010000;
1561 pub const WS_MINIMIZEBOX: DWORD = 0x00020000;
1562 pub const WS_MAXIMIZEBOX: DWORD = 0x00010000;
1563 pub const WS_TILED: DWORD = WS_OVERLAPPED;
1564 pub const WS_ICONIC: DWORD = WS_MINIMIZE;
1565 pub const WS_SIZEBOX: DWORD = WS_THICKFRAME;
1566 pub const WS_TILEDWINDOW: DWORD = WS_OVERLAPPEDWINDOW;
1567 pub const WS_OVERLAPPEDWINDOW: DWORD = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
1568     | WS_MINIMIZEBOX | WS_MAXIMIZEBOX;
1569 pub const WS_POPUPWINDOW: DWORD = WS_POPUP | WS_BORDER | WS_SYSMENU;
1570 pub const WS_CHILDWINDOW: DWORD = WS_CHILD;
1571 pub const WS_EX_DLGMODALFRAME: DWORD = 0x00000001;
1572 pub const WS_EX_NOPARENTNOTIFY: DWORD = 0x00000004;
1573 pub const WS_EX_TOPMOST: DWORD = 0x00000008;
1574 pub const WS_EX_ACCEPTFILES: DWORD = 0x00000010;
1575 pub const WS_EX_TRANSPARENT: DWORD = 0x00000020;
1576 pub const WS_EX_MDICHILD: DWORD = 0x00000040;
1577 pub const WS_EX_TOOLWINDOW: DWORD = 0x00000080;
1578 pub const WS_EX_WINDOWEDGE: DWORD = 0x00000100;
1579 pub const WS_EX_CLIENTEDGE: DWORD = 0x00000200;
1580 pub const WS_EX_CONTEXTHELP: DWORD = 0x00000400;
1581 pub const WS_EX_RIGHT: DWORD = 0x00001000;
1582 pub const WS_EX_LEFT: DWORD = 0x00000000;
1583 pub const WS_EX_RTLREADING: DWORD = 0x00002000;
1584 pub const WS_EX_LTRREADING: DWORD = 0x00000000;
1585 pub const WS_EX_LEFTSCROLLBAR: DWORD = 0x00004000;
1586 pub const WS_EX_RIGHTSCROLLBAR: DWORD = 0x00000000;
1587 pub const WS_EX_CONTROLPARENT: DWORD = 0x00010000;
1588 pub const WS_EX_STATICEDGE: DWORD = 0x00020000;
1589 pub const WS_EX_APPWINDOW: DWORD = 0x00040000;
1590 pub const WS_EX_OVERLAPPEDWINDOW: DWORD = WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE;
1591 pub const WS_EX_PALETTEWINDOW: DWORD = WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST;
1592 pub const WS_EX_LAYERED: DWORD = 0x00080000;
1593 pub const WS_EX_NOINHERITLAYOUT: DWORD = 0x00100000;
1594 pub const WS_EX_NOREDIRECTIONBITMAP: DWORD = 0x00200000;
1595 pub const WS_EX_LAYOUTRTL: DWORD = 0x00400000;
1596 pub const WS_EX_COMPOSITED: DWORD = 0x02000000;
1597 pub const WS_EX_NOACTIVATE: DWORD = 0x08000000;
1598 pub const CS_VREDRAW: UINT = 0x0001;
1599 pub const CS_HREDRAW: UINT = 0x0002;
1600 pub const CS_DBLCLKS: UINT = 0x0008;
1601 pub const CS_OWNDC: UINT = 0x0020;
1602 pub const CS_CLASSDC: UINT = 0x0040;
1603 pub const CS_PARENTDC: UINT = 0x0080;
1604 pub const CS_NOCLOSE: UINT = 0x0200;
1605 pub const CS_SAVEBITS: UINT = 0x0800;
1606 pub const CS_BYTEALIGNCLIENT: UINT = 0x1000;
1607 pub const CS_BYTEALIGNWINDOW: UINT = 0x2000;
1608 pub const CS_GLOBALCLASS: UINT = 0x4000;
1609 pub const CS_IME: UINT = 0x00010000;
1610 pub const CS_DROPSHADOW: UINT = 0x00020000;
1611 pub const PRF_CHECKVISIBLE: UINT = 0x00000001;
1612 pub const PRF_NONCLIENT: UINT = 0x00000002;
1613 pub const PRF_CLIENT: UINT = 0x00000004;
1614 pub const PRF_ERASEBKGND: UINT = 0x00000008;
1615 pub const PRF_CHILDREN: UINT = 0x00000010;
1616 pub const PRF_OWNED: UINT = 0x00000020;
1617 pub const BDR_RAISEDOUTER: UINT = 0x0001;
1618 pub const BDR_SUNKENOUTER: UINT = 0x0002;
1619 pub const BDR_RAISEDINNER: UINT = 0x0004;
1620 pub const BDR_SUNKENINNER: UINT = 0x0008;
1621 pub const BDR_OUTER: UINT = BDR_RAISEDOUTER | BDR_SUNKENOUTER;
1622 pub const BDR_INNER: UINT = BDR_RAISEDINNER | BDR_SUNKENINNER;
1623 pub const BDR_RAISED: UINT = BDR_RAISEDOUTER | BDR_RAISEDINNER;
1624 pub const BDR_SUNKEN: UINT = BDR_SUNKENOUTER | BDR_SUNKENINNER;
1625 pub const EDGE_RAISED: UINT = BDR_RAISEDOUTER | BDR_RAISEDINNER;
1626 pub const EDGE_SUNKEN: UINT = BDR_SUNKENOUTER | BDR_SUNKENINNER;
1627 pub const EDGE_ETCHED: UINT = BDR_SUNKENOUTER | BDR_RAISEDINNER;
1628 pub const EDGE_BUMP: UINT = BDR_RAISEDOUTER | BDR_SUNKENINNER;
1629 pub const BF_LEFT: UINT = 0x0001;
1630 pub const BF_TOP: UINT = 0x0002;
1631 pub const BF_RIGHT: UINT = 0x0004;
1632 pub const BF_BOTTOM: UINT = 0x0008;
1633 pub const BF_TOPLEFT: UINT = BF_TOP | BF_LEFT;
1634 pub const BF_TOPRIGHT: UINT = BF_TOP | BF_RIGHT;
1635 pub const BF_BOTTOMLEFT: UINT = BF_BOTTOM | BF_LEFT;
1636 pub const BF_BOTTOMRIGHT: UINT = BF_BOTTOM | BF_RIGHT;
1637 pub const BF_RECT: UINT = BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM;
1638 pub const BF_DIAGONAL: UINT = 0x0010;
1639 pub const BF_DIAGONAL_ENDTOPRIGHT: UINT = BF_DIAGONAL | BF_TOP | BF_RIGHT;
1640 pub const BF_DIAGONAL_ENDTOPLEFT: UINT = BF_DIAGONAL | BF_TOP | BF_LEFT;
1641 pub const BF_DIAGONAL_ENDBOTTOMLEFT: UINT = BF_DIAGONAL | BF_BOTTOM | BF_LEFT;
1642 pub const BF_DIAGONAL_ENDBOTTOMRIGHT: UINT = BF_DIAGONAL | BF_BOTTOM | BF_RIGHT;
1643 pub const BF_MIDDLE: UINT = 0x0800;
1644 pub const BF_SOFT: UINT = 0x1000;
1645 pub const BF_ADJUST: UINT = 0x2000;
1646 pub const BF_FLAT: UINT = 0x4000;
1647 pub const BF_MONO: UINT = 0x8000;
1648 extern "system" {
DrawEdge( hdc: HDC, qrc: LPRECT, edge: UINT, grfFlags: UINT, ) -> BOOL1649     pub fn DrawEdge(
1650         hdc: HDC,
1651         qrc: LPRECT,
1652         edge: UINT,
1653         grfFlags: UINT,
1654     ) -> BOOL;
1655 }
1656 pub const DFC_CAPTION: UINT = 1;
1657 pub const DFC_MENU: UINT = 2;
1658 pub const DFC_SCROLL: UINT = 3;
1659 pub const DFC_BUTTON: UINT = 4;
1660 pub const DFC_POPUPMENU: UINT = 5;
1661 pub const DFCS_CAPTIONCLOSE: UINT = 0x0000;
1662 pub const DFCS_CAPTIONMIN: UINT = 0x0001;
1663 pub const DFCS_CAPTIONMAX: UINT = 0x0002;
1664 pub const DFCS_CAPTIONRESTORE: UINT = 0x0003;
1665 pub const DFCS_CAPTIONHELP: UINT = 0x0004;
1666 pub const DFCS_MENUARROW: UINT = 0x0000;
1667 pub const DFCS_MENUCHECK: UINT = 0x0001;
1668 pub const DFCS_MENUBULLET: UINT = 0x0002;
1669 pub const DFCS_MENUARROWRIGHT: UINT = 0x0004;
1670 pub const DFCS_SCROLLUP: UINT = 0x0000;
1671 pub const DFCS_SCROLLDOWN: UINT = 0x0001;
1672 pub const DFCS_SCROLLLEFT: UINT = 0x0002;
1673 pub const DFCS_SCROLLRIGHT: UINT = 0x0003;
1674 pub const DFCS_SCROLLCOMBOBOX: UINT = 0x0005;
1675 pub const DFCS_SCROLLSIZEGRIP: UINT = 0x0008;
1676 pub const DFCS_SCROLLSIZEGRIPRIGHT: UINT = 0x0010;
1677 pub const DFCS_BUTTONCHECK: UINT = 0x0000;
1678 pub const DFCS_BUTTONRADIOIMAGE: UINT = 0x0001;
1679 pub const DFCS_BUTTONRADIOMASK: UINT = 0x0002;
1680 pub const DFCS_BUTTONRADIO: UINT = 0x0004;
1681 pub const DFCS_BUTTON3STATE: UINT = 0x0008;
1682 pub const DFCS_BUTTONPUSH: UINT = 0x0010;
1683 pub const DFCS_INACTIVE: UINT = 0x0100;
1684 pub const DFCS_PUSHED: UINT = 0x0200;
1685 pub const DFCS_CHECKED: UINT = 0x0400;
1686 pub const DFCS_TRANSPARENT: UINT = 0x0800;
1687 pub const DFCS_HOT: UINT = 0x1000;
1688 pub const DFCS_ADJUSTRECT: UINT = 0x2000;
1689 pub const DFCS_FLAT: UINT = 0x4000;
1690 pub const DFCS_MONO: UINT = 0x8000;
1691 extern "system" {
DrawFrameControl( hdc: HDC, lprc: LPRECT, uType: UINT, uState: UINT, ) -> BOOL1692     pub fn DrawFrameControl(
1693         hdc: HDC,
1694         lprc: LPRECT,
1695         uType: UINT,
1696         uState: UINT,
1697     ) -> BOOL;
1698 }
1699 pub const DC_ACTIVE: UINT = 0x0001;
1700 pub const DC_SMALLCAP: UINT = 0x0002;
1701 pub const DC_ICON: UINT = 0x0004;
1702 pub const DC_TEXT: UINT = 0x0008;
1703 pub const DC_INBUTTON: UINT = 0x0010;
1704 pub const DC_GRADIENT: UINT = 0x0020;
1705 pub const DC_BUTTONS: UINT = 0x1000;
1706 extern "system" {
DrawCaption( hwnd: HWND, hdc: HDC, lprect: *const RECT, flags: UINT, ) -> BOOL1707     pub fn DrawCaption(
1708         hwnd: HWND,
1709         hdc: HDC,
1710         lprect: *const RECT,
1711         flags: UINT,
1712     ) -> BOOL;
1713 }
1714 pub const IDANI_OPEN: c_int = 1;
1715 pub const IDANI_CAPTION: c_int = 3;
1716 extern "system" {
DrawAnimatedRects( hwnd: HWND, idAni: c_int, lprcFrom: *const RECT, lprcTo: *const RECT, ) -> BOOL1717     pub fn DrawAnimatedRects(
1718         hwnd: HWND,
1719         idAni: c_int,
1720         lprcFrom: *const RECT,
1721         lprcTo: *const RECT,
1722     ) -> BOOL;
1723 }
1724 pub const CF_TEXT: UINT = 1;
1725 pub const CF_BITMAP: UINT = 2;
1726 pub const CF_METAFILEPICT: UINT = 3;
1727 pub const CF_SYLK: UINT = 4;
1728 pub const CF_DIF: UINT = 5;
1729 pub const CF_TIFF: UINT = 6;
1730 pub const CF_OEMTEXT: UINT = 7;
1731 pub const CF_DIB: UINT = 8;
1732 pub const CF_PALETTE: UINT = 9;
1733 pub const CF_PENDATA: UINT = 10;
1734 pub const CF_RIFF: UINT = 11;
1735 pub const CF_WAVE: UINT = 12;
1736 pub const CF_UNICODETEXT: UINT = 13;
1737 pub const CF_ENHMETAFILE: UINT = 14;
1738 pub const CF_HDROP: UINT = 15;
1739 pub const CF_LOCALE: UINT = 16;
1740 pub const CF_DIBV5: UINT = 17;
1741 pub const CF_MAX: UINT = 18;
1742 pub const CF_OWNERDISPLAY: UINT = 0x0080;
1743 pub const CF_DSPTEXT: UINT = 0x0081;
1744 pub const CF_DSPBITMAP: UINT = 0x0082;
1745 pub const CF_DSPMETAFILEPICT: UINT = 0x0083;
1746 pub const CF_DSPENHMETAFILE: UINT = 0x008E;
1747 pub const CF_PRIVATEFIRST: UINT = 0x0200;
1748 pub const CF_PRIVATELAST: UINT = 0x02FF;
1749 pub const CF_GDIOBJFIRST: UINT = 0x0300;
1750 pub const CF_GDIOBJLAST: UINT = 0x03FF;
1751 pub const FVIRTKEY: BYTE = TRUE as u8;
1752 pub const FNOINVERT: BYTE = 0x02;
1753 pub const FSHIFT: BYTE = 0x04;
1754 pub const FCONTROL: BYTE = 0x08;
1755 pub const FALT: BYTE = 0x10;
1756 STRUCT!{struct ACCEL {
1757     fVirt: BYTE,
1758     key: WORD,
1759     cmd: WORD,
1760 }}
1761 pub type LPACCEL = *mut ACCEL;
1762 STRUCT!{struct PAINTSTRUCT {
1763     hdc: HDC,
1764     fErase: BOOL,
1765     rcPaint: RECT,
1766     fRestore: BOOL,
1767     fIncUpdate: BOOL,
1768     rgbReserved: [BYTE; 32],
1769 }}
1770 pub type PPAINTSTRUCT = *mut PAINTSTRUCT;
1771 pub type NPPAINTSTRUCT = *mut PAINTSTRUCT;
1772 pub type LPPAINTSTRUCT = *mut PAINTSTRUCT;
1773 STRUCT!{struct CREATESTRUCTA {
1774     lpCreateParams: LPVOID,
1775     hInstance: HINSTANCE,
1776     hMenu: HMENU,
1777     hwndParent: HWND,
1778     cy: c_int,
1779     cx: c_int,
1780     y: c_int,
1781     x: c_int,
1782     style: LONG,
1783     lpszName: LPCSTR,
1784     lpszClass: LPCSTR,
1785     dwExStyle: DWORD,
1786 }}
1787 pub type LPCREATESTRUCTA = *mut CREATESTRUCTA;
1788 STRUCT!{struct CREATESTRUCTW {
1789     lpCreateParams: LPVOID,
1790     hInstance: HINSTANCE,
1791     hMenu: HMENU,
1792     hwndParent: HWND,
1793     cy: c_int,
1794     cx: c_int,
1795     y: c_int,
1796     x: c_int,
1797     style: LONG,
1798     lpszName: LPCWSTR,
1799     lpszClass: LPCWSTR,
1800     dwExStyle: DWORD,
1801 }}
1802 pub type LPCREATESTRUCTW = *mut CREATESTRUCTW;
1803 STRUCT!{struct WINDOWPLACEMENT {
1804     length: UINT,
1805     flags: UINT,
1806     showCmd: UINT,
1807     ptMinPosition: POINT,
1808     ptMaxPosition: POINT,
1809     rcNormalPosition: RECT,
1810 }}
1811 pub type PWINDOWPLACEMENT = *mut WINDOWPLACEMENT;
1812 pub type LPWINDOWPLACEMENT = *mut WINDOWPLACEMENT;
1813 pub const WPF_SETMINPOSITION: UINT = 0x0001;
1814 pub const WPF_RESTORETOMAXIMIZED: UINT = 0x0002;
1815 pub const WPF_ASYNCWINDOWPLACEMENT: UINT = 0x0004;
1816 STRUCT!{struct NMHDR {
1817     hwndFrom: HWND,
1818     idFrom: UINT_PTR,
1819     code: UINT,
1820 }}
1821 pub type LPNMHDR = *mut NMHDR;
1822 STRUCT!{struct STYLESTRUCT {
1823     styleOld: DWORD,
1824     styleNew: DWORD,
1825 }}
1826 pub type LPSTYLESTRUCT = *mut STYLESTRUCT;
1827 pub const ODT_MENU: UINT = 1;
1828 pub const ODT_LISTBOX: UINT = 2;
1829 pub const ODT_COMBOBOX: UINT = 3;
1830 pub const ODT_BUTTON: UINT = 4;
1831 pub const ODT_STATIC: UINT = 5;
1832 pub const ODA_DRAWENTIRE: UINT = 0x0001;
1833 pub const ODA_SELECT: UINT = 0x0002;
1834 pub const ODA_FOCUS: UINT = 0x0004;
1835 pub const ODS_SELECTED: UINT = 0x0001;
1836 pub const ODS_GRAYED: UINT = 0x0002;
1837 pub const ODS_DISABLED: UINT = 0x0004;
1838 pub const ODS_CHECKED: UINT = 0x0008;
1839 pub const ODS_FOCUS: UINT = 0x0010;
1840 pub const ODS_DEFAULT: UINT = 0x0020;
1841 pub const ODS_COMBOBOXEDIT: UINT = 0x1000;
1842 pub const ODS_HOTLIGHT: UINT = 0x0040;
1843 pub const ODS_INACTIVE: UINT = 0x0080;
1844 pub const ODS_NOACCEL: UINT = 0x0100;
1845 pub const ODS_NOFOCUSRECT: UINT = 0x0200;
1846 STRUCT!{struct MEASUREITEMSTRUCT {
1847     CtlType: UINT,
1848     CtlID: UINT,
1849     itemID: UINT,
1850     itemWidth: UINT,
1851     itemHeight: UINT,
1852     itemData: ULONG_PTR,
1853 }}
1854 pub type PMEASUREITEMSTRUCT = *mut MEASUREITEMSTRUCT;
1855 pub type LPMEASUREITEMSTRUCT = *mut MEASUREITEMSTRUCT;
1856 STRUCT!{struct DRAWITEMSTRUCT {
1857     CtlType: UINT,
1858     CtlID: UINT,
1859     itemID: UINT,
1860     itemAction: UINT,
1861     itemState: UINT,
1862     hwndItem: HWND,
1863     hDC: HDC,
1864     rcItem: RECT,
1865     itemData: ULONG_PTR,
1866 }}
1867 pub type PDRAWITEMSTRUCT = *mut DRAWITEMSTRUCT;
1868 pub type LPDRAWITEMSTRUCT = *mut DRAWITEMSTRUCT;
1869 STRUCT!{struct DELETEITEMSTRUCT {
1870     CtlType: UINT,
1871     CtlID: UINT,
1872     itemID: UINT,
1873     hwndItem: HWND,
1874     itemData: ULONG_PTR,
1875 }}
1876 pub type PDELETEITEMSTRUCT = *mut DELETEITEMSTRUCT;
1877 pub type LPDELETEITEMSTRUCT = *mut DELETEITEMSTRUCT;
1878 STRUCT!{struct COMPAREITEMSTRUCT {
1879     CtlType: UINT,
1880     CtlID: UINT,
1881     hwndItem: HWND,
1882     itemID1: UINT,
1883     itemData1: ULONG_PTR,
1884     itemID2: UINT,
1885     itemData2: ULONG_PTR,
1886     dwLocaleId: DWORD,
1887 }}
1888 pub type PCOMPAREITEMSTRUCT = *mut COMPAREITEMSTRUCT;
1889 pub type LPCOMPAREITEMSTRUCT = *mut COMPAREITEMSTRUCT;
1890 extern "system" {
GetMessageA( lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, ) -> BOOL1891     pub fn GetMessageA(
1892         lpMsg: LPMSG,
1893         hWnd: HWND,
1894         wMsgFilterMin: UINT,
1895         wMsgFilterMax: UINT,
1896     ) -> BOOL;
GetMessageW( lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, ) -> BOOL1897     pub fn GetMessageW(
1898         lpMsg: LPMSG,
1899         hWnd: HWND,
1900         wMsgFilterMin: UINT,
1901         wMsgFilterMax: UINT,
1902     ) -> BOOL;
TranslateMessage( lpmsg: *const MSG, ) -> BOOL1903     pub fn TranslateMessage(
1904         lpmsg: *const MSG,
1905     ) -> BOOL;
DispatchMessageA( lpmsg: *const MSG, ) -> LRESULT1906     pub fn DispatchMessageA(
1907         lpmsg: *const MSG,
1908     ) -> LRESULT;
DispatchMessageW( lpmsg: *const MSG, ) -> LRESULT1909     pub fn DispatchMessageW(
1910         lpmsg: *const MSG,
1911     ) -> LRESULT;
SetMessageQueue( cMessagesMax: c_int, ) -> BOOL1912     pub fn SetMessageQueue(
1913         cMessagesMax: c_int,
1914     ) -> BOOL;
PeekMessageA( lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT, ) -> BOOL1915     pub fn PeekMessageA(
1916         lpMsg: LPMSG,
1917         hWnd: HWND,
1918         wMsgFilterMin: UINT,
1919         wMsgFilterMax: UINT,
1920         wRemoveMsg: UINT,
1921     ) -> BOOL;
PeekMessageW( lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT, ) -> BOOL1922     pub fn PeekMessageW(
1923         lpMsg: LPMSG,
1924         hWnd: HWND,
1925         wMsgFilterMin: UINT,
1926         wMsgFilterMax: UINT,
1927         wRemoveMsg: UINT,
1928     ) -> BOOL;
1929 }
1930 pub const PM_NOREMOVE: UINT = 0x0000;
1931 pub const PM_REMOVE: UINT = 0x0001;
1932 pub const PM_NOYIELD: UINT = 0x0002;
1933 pub const PM_QS_INPUT: UINT = QS_INPUT << 16;
1934 pub const PM_QS_POSTMESSAGE: UINT = (QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16;
1935 pub const PM_QS_PAINT: UINT = QS_PAINT << 16;
1936 pub const PM_QS_SENDMESSAGE: UINT = QS_SENDMESSAGE << 16;
1937 extern "system" {
RegisterHotKey( hwnd: HWND, id: c_int, fsModifiers: UINT, vk: UINT, ) -> BOOL1938     pub fn RegisterHotKey(
1939         hwnd: HWND,
1940         id: c_int,
1941         fsModifiers: UINT,
1942         vk: UINT,
1943     ) -> BOOL;
UnregisterHotKey( hWnd: HWND, id: c_int, ) -> BOOL1944     pub fn UnregisterHotKey(
1945         hWnd: HWND,
1946         id: c_int,
1947     ) -> BOOL;
1948 }
1949 pub const MOD_ALT: LPARAM = 0x0001;
1950 pub const MOD_CONTROL: LPARAM = 0x0002;
1951 pub const MOD_SHIFT: LPARAM = 0x0004;
1952 pub const MOD_WIN: LPARAM = 0x0008;
1953 pub const MOD_NOREPEAT: LPARAM = 0x4000;
1954 pub const IDHOT_SNAPWINDOW: WPARAM = -1isize as usize;
1955 pub const IDHOT_SNAPDESKTOP: WPARAM = -2isize as usize;
1956 pub const ENDSESSION_CLOSEAPP: UINT = 0x00000001;
1957 pub const ENDSESSION_CRITICAL: UINT = 0x40000000;
1958 pub const ENDSESSION_LOGOFF: UINT = 0x80000000;
1959 pub const EWX_LOGOFF: UINT = 0x00000000;
1960 pub const EWX_SHUTDOWN: UINT = 0x00000001;
1961 pub const EWX_REBOOT: UINT = 0x00000002;
1962 pub const EWX_FORCE: UINT = 0x00000004;
1963 pub const EWX_POWEROFF: UINT = 0x00000008;
1964 pub const EWX_FORCEIFHUNG: UINT = 0x00000010;
1965 pub const EWX_QUICKRESOLVE: UINT = 0x00000020;
1966 pub const EWX_RESTARTAPPS: UINT = 0x00000040;
1967 pub const EWX_HYBRID_SHUTDOWN: UINT = 0x00400000;
1968 pub const EWX_BOOTOPTIONS: UINT = 0x01000000;
1969 // ExitWindows
1970 extern "system" {
ExitWindowsEx( uFlags: UINT, dwReason: DWORD, ) -> BOOL1971     pub fn ExitWindowsEx(
1972         uFlags: UINT,
1973         dwReason: DWORD,
1974     ) -> BOOL;
SwapMouseButton( fSwap: BOOL, ) -> BOOL1975     pub fn SwapMouseButton(
1976         fSwap: BOOL,
1977     ) -> BOOL;
GetMessagePos() -> DWORD1978     pub fn GetMessagePos() -> DWORD;
GetMessageTime() -> LONG1979     pub fn GetMessageTime() -> LONG;
GetMessageExtraInfo() -> LPARAM1980     pub fn GetMessageExtraInfo() -> LPARAM;
GetUnpredictedMessagePos() -> DWORD1981     pub fn GetUnpredictedMessagePos() -> DWORD;
IsWow64Message() -> BOOL1982     pub fn IsWow64Message() -> BOOL;
SetMessageExtraInfo( lParam: LPARAM, ) -> LPARAM1983     pub fn SetMessageExtraInfo(
1984         lParam: LPARAM,
1985     ) -> LPARAM;
SendMessageA( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT1986     pub fn SendMessageA(
1987         hWnd: HWND,
1988         Msg: UINT,
1989         wParam: WPARAM,
1990         lParam: LPARAM,
1991     ) -> LRESULT;
SendMessageW( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT1992     pub fn SendMessageW(
1993         hWnd: HWND,
1994         Msg: UINT,
1995         wParam: WPARAM,
1996         lParam: LPARAM,
1997     ) -> LRESULT;
SendMessageTimeoutA( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, fuFlags: UINT, uTimeout: UINT, lpdwResult: PDWORD_PTR, ) -> LRESULT1998     pub fn SendMessageTimeoutA(
1999         hWnd: HWND,
2000         Msg: UINT,
2001         wParam: WPARAM,
2002         lParam: LPARAM,
2003         fuFlags: UINT,
2004         uTimeout: UINT,
2005         lpdwResult: PDWORD_PTR,
2006     ) -> LRESULT;
SendMessageTimeoutW( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, fuFlags: UINT, uTimeout: UINT, lpdwResult: PDWORD_PTR, ) -> LRESULT2007     pub fn SendMessageTimeoutW(
2008         hWnd: HWND,
2009         Msg: UINT,
2010         wParam: WPARAM,
2011         lParam: LPARAM,
2012         fuFlags: UINT,
2013         uTimeout: UINT,
2014         lpdwResult: PDWORD_PTR,
2015     ) -> LRESULT;
SendNotifyMessageA( hWnd: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> BOOL2016     pub fn SendNotifyMessageA(
2017         hWnd: HWND,
2018         msg: UINT,
2019         wParam: WPARAM,
2020         lParam: LPARAM,
2021     ) -> BOOL;
SendNotifyMessageW( hWnd: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> BOOL2022     pub fn SendNotifyMessageW(
2023         hWnd: HWND,
2024         msg: UINT,
2025         wParam: WPARAM,
2026         lParam: LPARAM,
2027     ) -> BOOL;
SendMessageCallbackA( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, lpResultCallBack: SENDASYNCPROC, dwData: ULONG_PTR, ) -> BOOL2028     pub fn SendMessageCallbackA(
2029         hWnd: HWND,
2030         Msg: UINT,
2031         wParam: WPARAM,
2032         lParam: LPARAM,
2033         lpResultCallBack: SENDASYNCPROC,
2034         dwData: ULONG_PTR,
2035     ) -> BOOL;
SendMessageCallbackW( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, lpResultCallBack: SENDASYNCPROC, dwData: ULONG_PTR, ) -> BOOL2036     pub fn SendMessageCallbackW(
2037         hWnd: HWND,
2038         Msg: UINT,
2039         wParam: WPARAM,
2040         lParam: LPARAM,
2041         lpResultCallBack: SENDASYNCPROC,
2042         dwData: ULONG_PTR,
2043     ) -> BOOL;
2044 }
2045 STRUCT!{struct BSMINFO {
2046     cbSize: UINT,
2047     hdesk: HDESK,
2048     hwnd: HWND,
2049     luid: LUID,
2050 }}
2051 pub type PBSMINFO = *mut BSMINFO;
2052 extern "system" {
BroadcastSystemMessageExA( flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM, pbsmInfo: PBSMINFO, ) -> c_long2053     pub fn BroadcastSystemMessageExA(
2054         flags: DWORD,
2055         lpInfo: LPDWORD,
2056         Msg: UINT,
2057         wParam: WPARAM,
2058         lParam: LPARAM,
2059         pbsmInfo: PBSMINFO,
2060     ) -> c_long;
BroadcastSystemMessageExW( flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM, pbsmInfo: PBSMINFO, ) -> c_long2061     pub fn BroadcastSystemMessageExW(
2062         flags: DWORD,
2063         lpInfo: LPDWORD,
2064         Msg: UINT,
2065         wParam: WPARAM,
2066         lParam: LPARAM,
2067         pbsmInfo: PBSMINFO,
2068     ) -> c_long;
BroadcastSystemMessageA( flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LONG2069     pub fn BroadcastSystemMessageA(
2070         flags: DWORD,
2071         lpInfo: LPDWORD,
2072         Msg: UINT,
2073         wParam: WPARAM,
2074         lParam: LPARAM,
2075     ) -> LONG;
BroadcastSystemMessageW( flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LONG2076     pub fn BroadcastSystemMessageW(
2077         flags: DWORD,
2078         lpInfo: LPDWORD,
2079         Msg: UINT,
2080         wParam: WPARAM,
2081         lParam: LPARAM,
2082     ) -> LONG;
2083 }
2084 pub const BSM_ALLCOMPONENTS: DWORD = 0x00000000;
2085 pub const BSM_VXDS: DWORD = 0x00000001;
2086 pub const BSM_NETDRIVER: DWORD = 0x00000002;
2087 pub const BSM_INSTALLABLEDRIVERS: DWORD = 0x00000004;
2088 pub const BSM_APPLICATIONS: DWORD = 0x00000008;
2089 pub const BSM_ALLDESKTOPS: DWORD = 0x00000010;
2090 pub const BSF_QUERY: DWORD = 0x00000001;
2091 pub const BSF_IGNORECURRENTTASK: DWORD = 0x00000002;
2092 pub const BSF_FLUSHDISK: DWORD = 0x00000004;
2093 pub const BSF_NOHANG: DWORD = 0x00000008;
2094 pub const BSF_POSTMESSAGE: DWORD = 0x00000010;
2095 pub const BSF_FORCEIFHUNG: DWORD = 0x00000020;
2096 pub const BSF_NOTIMEOUTIFNOTHUNG: DWORD = 0x00000040;
2097 pub const BSF_ALLOWSFW: DWORD = 0x00000080;
2098 pub const BSF_SENDNOTIFYMESSAGE: DWORD = 0x00000100;
2099 pub const BSF_RETURNHDESK: DWORD = 0x00000200;
2100 pub const BSF_LUID: DWORD = 0x00000400;
2101 pub const BROADCAST_QUERY_DENY: DWORD = 0x424D5144;
2102 pub type HDEVNOTIFY = PVOID;
2103 pub type PHDEVNOTIFY = *mut HDEVNOTIFY;
2104 pub const DEVICE_NOTIFY_WINDOW_HANDLE: DWORD = 0x00000000;
2105 pub const DEVICE_NOTIFY_SERVICE_HANDLE: DWORD = 0x00000001;
2106 pub const DEVICE_NOTIFY_ALL_INTERFACE_CLASSES: DWORD = 0x00000004;
2107 extern "system" {
RegisterDeviceNotificationA( hRecipient: HANDLE, notificationFilter: LPVOID, flags: DWORD, ) -> HDEVNOTIFY2108     pub fn RegisterDeviceNotificationA(
2109         hRecipient: HANDLE,
2110         notificationFilter: LPVOID,
2111         flags: DWORD,
2112     ) -> HDEVNOTIFY;
RegisterDeviceNotificationW( hRecipient: HANDLE, notificationFilter: LPVOID, flags: DWORD, ) -> HDEVNOTIFY2113     pub fn RegisterDeviceNotificationW(
2114         hRecipient: HANDLE,
2115         notificationFilter: LPVOID,
2116         flags: DWORD,
2117     ) -> HDEVNOTIFY;
UnregisterDeviceNotification( Handle: HDEVNOTIFY, ) -> BOOL2118     pub fn UnregisterDeviceNotification(
2119         Handle: HDEVNOTIFY,
2120     ) -> BOOL;
2121 }
2122 pub type HPOWERNOTIFY = PVOID;
2123 pub type PHPOWERNOTIFY = *mut HPOWERNOTIFY;
2124 extern "system" {
RegisterPowerSettingNotification( hRecipient: HANDLE, PowerSettingGuid: LPCGUID, Flags: DWORD, ) -> HPOWERNOTIFY2125     pub fn RegisterPowerSettingNotification(
2126         hRecipient: HANDLE,
2127         PowerSettingGuid: LPCGUID,
2128         Flags: DWORD,
2129     ) -> HPOWERNOTIFY;
UnregisterPowerSettingNotification( Handle: HPOWERNOTIFY, ) -> BOOL2130     pub fn UnregisterPowerSettingNotification(
2131         Handle: HPOWERNOTIFY,
2132     ) -> BOOL;
RegisterSuspendResumeNotification( hRecipient: HANDLE, Flags: DWORD, ) -> HPOWERNOTIFY2133     pub fn RegisterSuspendResumeNotification(
2134         hRecipient: HANDLE,
2135         Flags: DWORD,
2136     ) -> HPOWERNOTIFY;
UnregisterSuspendResumeNotification( Handle: HPOWERNOTIFY, ) -> BOOL2137     pub fn UnregisterSuspendResumeNotification(
2138         Handle: HPOWERNOTIFY,
2139     ) -> BOOL;
PostMessageA( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> BOOL2140     pub fn PostMessageA(
2141         hWnd: HWND,
2142         Msg: UINT,
2143         wParam: WPARAM,
2144         lParam: LPARAM,
2145     ) -> BOOL;
PostMessageW( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> BOOL2146     pub fn PostMessageW(
2147         hWnd: HWND,
2148         Msg: UINT,
2149         wParam: WPARAM,
2150         lParam: LPARAM,
2151     ) -> BOOL;
PostThreadMessageA( idThread: DWORD, msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> BOOL2152     pub fn PostThreadMessageA(
2153         idThread: DWORD,
2154         msg: UINT,
2155         wParam: WPARAM,
2156         lParam: LPARAM,
2157     ) -> BOOL;
PostThreadMessageW( idThread: DWORD, msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> BOOL2158     pub fn PostThreadMessageW(
2159         idThread: DWORD,
2160         msg: UINT,
2161         wParam: WPARAM,
2162         lParam: LPARAM,
2163     ) -> BOOL;
2164 }
2165 // PostAppMessageA
2166 // PostAppMessageW
2167 pub const HWND_BROADCAST: HWND = 0xffff as HWND;
2168 pub const HWND_MESSAGE: HWND = -3isize as HWND;
2169 extern "system" {
AttachThreadInput( idAttach: DWORD, idAttachTo: DWORD, fAttach: BOOL, ) -> BOOL2170     pub fn AttachThreadInput(
2171         idAttach: DWORD,
2172         idAttachTo: DWORD,
2173         fAttach: BOOL,
2174     ) -> BOOL;
ReplyMessage( lResult: LRESULT, ) -> BOOL2175     pub fn ReplyMessage(
2176         lResult: LRESULT,
2177     ) -> BOOL;
WaitMessage() -> BOOL2178     pub fn WaitMessage() -> BOOL;
WaitForInputIdle( hProcess: HANDLE, dwMilliseconds: DWORD, ) -> DWORD2179     pub fn WaitForInputIdle(
2180         hProcess: HANDLE,
2181         dwMilliseconds: DWORD,
2182     ) -> DWORD;
DefWindowProcA( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT2183     pub fn DefWindowProcA(
2184         hWnd: HWND,
2185         Msg: UINT,
2186         wParam: WPARAM,
2187         lParam: LPARAM,
2188     ) -> LRESULT;
DefWindowProcW( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT2189     pub fn DefWindowProcW(
2190         hWnd: HWND,
2191         Msg: UINT,
2192         wParam: WPARAM,
2193         lParam: LPARAM,
2194     ) -> LRESULT;
PostQuitMessage( nExitCode: c_int, )2195     pub fn PostQuitMessage(
2196         nExitCode: c_int,
2197     );
CallWindowProcA( lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT2198     pub fn CallWindowProcA(
2199         lpPrevWndFunc: WNDPROC,
2200         hWnd: HWND,
2201         Msg: UINT,
2202         wParam: WPARAM,
2203         lParam: LPARAM,
2204     ) -> LRESULT;
CallWindowProcW( lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT2205     pub fn CallWindowProcW(
2206         lpPrevWndFunc: WNDPROC,
2207         hWnd: HWND,
2208         Msg: UINT,
2209         wParam: WPARAM,
2210         lParam: LPARAM,
2211     ) -> LRESULT;
InSendMessage() -> BOOL2212     pub fn InSendMessage() -> BOOL;
InSendMessageEx( lpReserved: LPVOID, ) -> DWORD2213     pub fn InSendMessageEx(
2214         lpReserved: LPVOID,
2215     ) -> DWORD;
2216 }
2217 pub const ISMEX_NOSEND: DWORD = 0x00000000;
2218 pub const ISMEX_SEND: DWORD = 0x00000001;
2219 pub const ISMEX_NOTIFY: DWORD = 0x00000002;
2220 pub const ISMEX_CALLBACK: DWORD = 0x00000004;
2221 pub const ISMEX_REPLIED: DWORD = 0x00000008;
2222 extern "system" {
GetDoubleClickTime() -> UINT2223     pub fn GetDoubleClickTime() -> UINT;
SetDoubleClickTime( uInterval: UINT, ) -> BOOL2224     pub fn SetDoubleClickTime(
2225         uInterval: UINT,
2226     ) -> BOOL;
RegisterClassA( lpWndClass: *const WNDCLASSA, ) -> ATOM2227     pub fn RegisterClassA(
2228         lpWndClass: *const WNDCLASSA,
2229     ) -> ATOM;
RegisterClassW( lpWndClass: *const WNDCLASSW, ) -> ATOM2230     pub fn RegisterClassW(
2231         lpWndClass: *const WNDCLASSW,
2232     ) -> ATOM;
UnregisterClassA( lpClassName: LPCSTR, hInstance: HINSTANCE, ) -> BOOL2233     pub fn UnregisterClassA(
2234         lpClassName: LPCSTR,
2235         hInstance: HINSTANCE,
2236     ) -> BOOL;
UnregisterClassW( lpClassName: LPCWSTR, hInstance: HINSTANCE, ) -> BOOL2237     pub fn UnregisterClassW(
2238         lpClassName: LPCWSTR,
2239         hInstance: HINSTANCE,
2240     ) -> BOOL;
GetClassInfoA( hInstance: HINSTANCE, lpClassName: LPCSTR, lpWndClass: LPWNDCLASSA, ) -> BOOL2241     pub fn GetClassInfoA(
2242         hInstance: HINSTANCE,
2243         lpClassName: LPCSTR,
2244         lpWndClass: LPWNDCLASSA,
2245     ) -> BOOL;
GetClassInfoW( hInstance: HINSTANCE, lpClassName: LPCWSTR, lpWndClass: LPWNDCLASSW, ) -> BOOL2246     pub fn GetClassInfoW(
2247         hInstance: HINSTANCE,
2248         lpClassName: LPCWSTR,
2249         lpWndClass: LPWNDCLASSW,
2250     ) -> BOOL;
RegisterClassExA( lpWndClass: *const WNDCLASSEXA, ) -> ATOM2251     pub fn RegisterClassExA(
2252         lpWndClass: *const WNDCLASSEXA,
2253     ) -> ATOM;
RegisterClassExW( lpWndClass: *const WNDCLASSEXW, ) -> ATOM2254     pub fn RegisterClassExW(
2255         lpWndClass: *const WNDCLASSEXW,
2256     ) -> ATOM;
GetClassInfoExA( hinst: HINSTANCE, lpszClass: LPCSTR, lpwcx: LPWNDCLASSEXA, ) -> BOOL2257     pub fn GetClassInfoExA(
2258         hinst: HINSTANCE,
2259         lpszClass: LPCSTR,
2260         lpwcx: LPWNDCLASSEXA,
2261     ) -> BOOL;
GetClassInfoExW( hinst: HINSTANCE, lpszClass: LPCWSTR, lpwcx: LPWNDCLASSEXW, ) -> BOOL2262     pub fn GetClassInfoExW(
2263         hinst: HINSTANCE,
2264         lpszClass: LPCWSTR,
2265         lpwcx: LPWNDCLASSEXW,
2266     ) -> BOOL;
2267 }
2268 pub const CW_USEDEFAULT: c_int = 0x80000000;
2269 pub const HWND_DESKTOP: HWND = 0 as HWND;
2270 FN!{stdcall PREGISTERCLASSNAMEW(
2271     LPCWSTR,
2272 ) -> BOOLEAN}
2273 extern "system" {
CreateWindowExA( dwExStyle: DWORD, lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD, x: c_int, y: c_int, nWidth: c_int, nHeight: c_int, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpParam: LPVOID, ) -> HWND2274     pub fn CreateWindowExA(
2275         dwExStyle: DWORD,
2276         lpClassName: LPCSTR,
2277         lpWindowName: LPCSTR,
2278         dwStyle: DWORD,
2279         x: c_int,
2280         y: c_int,
2281         nWidth: c_int,
2282         nHeight: c_int,
2283         hWndParent: HWND,
2284         hMenu: HMENU,
2285         hInstance: HINSTANCE,
2286         lpParam: LPVOID,
2287     ) -> HWND;
CreateWindowExW( dwExStyle: DWORD, lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD, x: c_int, y: c_int, nWidth: c_int, nHeight: c_int, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpParam: LPVOID, ) -> HWND2288     pub fn CreateWindowExW(
2289         dwExStyle: DWORD,
2290         lpClassName: LPCWSTR,
2291         lpWindowName: LPCWSTR,
2292         dwStyle: DWORD,
2293         x: c_int,
2294         y: c_int,
2295         nWidth: c_int,
2296         nHeight: c_int,
2297         hWndParent: HWND,
2298         hMenu: HMENU,
2299         hInstance: HINSTANCE,
2300         lpParam: LPVOID,
2301     ) -> HWND;
2302 }
2303 // CreateWindowA
2304 // CreateWindowW
2305 extern "system" {
IsWindow( hWnd: HWND, ) -> BOOL2306     pub fn IsWindow(
2307         hWnd: HWND,
2308     ) -> BOOL;
IsMenu( hMenu: HMENU, ) -> BOOL2309     pub fn IsMenu(
2310         hMenu: HMENU,
2311     ) -> BOOL;
IsChild( hWndParent: HWND, hWnd: HWND, ) -> BOOL2312     pub fn IsChild(
2313         hWndParent: HWND,
2314         hWnd: HWND,
2315     ) -> BOOL;
DestroyWindow( hWnd: HWND, ) -> BOOL2316     pub fn DestroyWindow(
2317         hWnd: HWND,
2318     ) -> BOOL;
ShowWindow( hWnd: HWND, nCmdShow: c_int, ) -> BOOL2319     pub fn ShowWindow(
2320         hWnd: HWND,
2321         nCmdShow: c_int,
2322     ) -> BOOL;
AnimateWindow( hWnd: HWND, dwTime: DWORD, dwFlags: DWORD, ) -> BOOL2323     pub fn AnimateWindow(
2324         hWnd: HWND,
2325         dwTime: DWORD,
2326         dwFlags: DWORD,
2327     ) -> BOOL;
UpdateLayeredWindow( hWnd: HWND, hdcDst: HDC, pptDst: *mut POINT, psize: *mut SIZE, hdcSrc: HDC, pptSrc: *mut POINT, crKey: COLORREF, pblend: *mut BLENDFUNCTION, dwFlags: DWORD, ) -> BOOL2328     pub fn UpdateLayeredWindow(
2329         hWnd: HWND,
2330         hdcDst: HDC,
2331         pptDst: *mut POINT,
2332         psize: *mut SIZE,
2333         hdcSrc: HDC,
2334         pptSrc: *mut POINT,
2335         crKey: COLORREF,
2336         pblend: *mut BLENDFUNCTION,
2337         dwFlags: DWORD,
2338     ) -> BOOL;
2339 }
2340 STRUCT!{struct UPDATELAYEREDWINDOWINFO {
2341     cbSize: DWORD,
2342     hdcDst: HDC,
2343     pptDst: *const POINT,
2344     psize: *const SIZE,
2345     hdcSrc: HDC,
2346     pptSrc: *const POINT,
2347     crKey: COLORREF,
2348     pblend: *const BLENDFUNCTION,
2349     dwFlags: DWORD,
2350     prcDirty: *const RECT,
2351 }}
2352 pub type PUPDATELAYEREDWINDOWINFO = *mut UPDATELAYEREDWINDOWINFO;
2353 extern "system" {
UpdateLayeredWindowIndirect( hWnd: HWND, pULWInfo: *mut UPDATELAYEREDWINDOWINFO, ) -> BOOL2354     pub fn UpdateLayeredWindowIndirect(
2355         hWnd: HWND,
2356         pULWInfo: *mut UPDATELAYEREDWINDOWINFO,
2357     ) -> BOOL;
GetLayeredWindowAttributes( hwnd: HWND, pcrKey: *mut COLORREF, pbAlpha: *mut BYTE, pdwFlags: *mut DWORD, ) -> BOOL2358     pub fn GetLayeredWindowAttributes(
2359         hwnd: HWND,
2360         pcrKey: *mut COLORREF,
2361         pbAlpha: *mut BYTE,
2362         pdwFlags: *mut DWORD,
2363     ) -> BOOL;
2364 }
2365 pub const PW_CLIENTONLY: DWORD = 0x00000001;
2366 pub const PW_RENDERFULLCONTENT: DWORD = 0x00000002;
2367 extern "system" {
PrintWindow( hwnd: HWND, hdcBlt: HDC, nFlags: UINT, ) -> BOOL2368     pub fn PrintWindow(
2369         hwnd: HWND,
2370         hdcBlt: HDC,
2371         nFlags: UINT,
2372     ) -> BOOL;
SetLayeredWindowAttributes( hwnd: HWND, crKey: COLORREF, bAlpha: BYTE, dwFlags: DWORD, ) -> BOOL2373     pub fn SetLayeredWindowAttributes(
2374         hwnd: HWND,
2375         crKey: COLORREF,
2376         bAlpha: BYTE,
2377         dwFlags: DWORD,
2378     ) -> BOOL;
2379 }
2380 pub const LWA_COLORKEY: DWORD = 0x00000001;
2381 pub const LWA_ALPHA: DWORD = 0x00000002;
2382 pub const ULW_COLORKEY: DWORD = 0x00000001;
2383 pub const ULW_ALPHA: DWORD = 0x00000002;
2384 pub const ULW_OPAQUE: DWORD = 0x00000004;
2385 pub const ULW_EX_NORESIZE: DWORD = 0x00000008;
2386 extern "system" {
ShowWindowAsync( hWnd: HWND, nCmdShow: c_int, ) -> BOOL2387     pub fn ShowWindowAsync(
2388         hWnd: HWND,
2389         nCmdShow: c_int,
2390     ) -> BOOL;
FlashWindow( hwnd: HWND, bInvert: BOOL, ) -> BOOL2391     pub fn FlashWindow(
2392         hwnd: HWND,
2393         bInvert: BOOL,
2394     ) -> BOOL;
2395 }
2396 STRUCT!{struct FLASHWINFO {
2397     cbSize: UINT,
2398     hwnd: HWND,
2399     dwFlags: DWORD,
2400     uCount: UINT,
2401     dwTimeout: DWORD,
2402 }}
2403 pub type PFLASHWINFO = *mut FLASHWINFO;
2404 extern "system" {
FlashWindowEx( pfwi: PFLASHWINFO, ) -> BOOL2405     pub fn FlashWindowEx(
2406         pfwi: PFLASHWINFO,
2407     ) -> BOOL;
2408 }
2409 pub const FLASHW_STOP: DWORD = 0;
2410 pub const FLASHW_CAPTION: DWORD = 0x00000001;
2411 pub const FLASHW_TRAY: DWORD = 0x00000002;
2412 pub const FLASHW_ALL: DWORD = FLASHW_CAPTION | FLASHW_TRAY;
2413 pub const FLASHW_TIMER: DWORD = 0x00000004;
2414 pub const FLASHW_TIMERNOFG: DWORD = 0x0000000C;
2415 extern "system" {
ShowOwnedPopups( hWnd: HWND, fShow: BOOL, ) -> BOOL2416     pub fn ShowOwnedPopups(
2417         hWnd: HWND,
2418         fShow: BOOL,
2419     ) -> BOOL;
OpenIcon( hWnd: HWND, ) -> BOOL2420     pub fn OpenIcon(
2421         hWnd: HWND,
2422     ) -> BOOL;
CloseWindow( hWnd: HWND, ) -> BOOL2423     pub fn CloseWindow(
2424         hWnd: HWND,
2425     ) -> BOOL;
MoveWindow( hWnd: HWND, X: c_int, Y: c_int, nWidth: c_int, nHeight: c_int, bRepaint: BOOL, ) -> BOOL2426     pub fn MoveWindow(
2427         hWnd: HWND,
2428         X: c_int,
2429         Y: c_int,
2430         nWidth: c_int,
2431         nHeight: c_int,
2432         bRepaint: BOOL,
2433     ) -> BOOL;
SetWindowPos( hWnd: HWND, hWndInsertAfter: HWND, X: c_int, Y: c_int, cx: c_int, cy: c_int, uFlags: UINT, ) -> BOOL2434     pub fn SetWindowPos(
2435         hWnd: HWND,
2436         hWndInsertAfter: HWND,
2437         X: c_int,
2438         Y: c_int,
2439         cx: c_int,
2440         cy: c_int,
2441         uFlags: UINT,
2442     ) -> BOOL;
GetWindowPlacement( hWnd: HWND, lpwndpl: *mut WINDOWPLACEMENT, ) -> BOOL2443     pub fn GetWindowPlacement(
2444         hWnd: HWND,
2445         lpwndpl: *mut WINDOWPLACEMENT,
2446     ) -> BOOL;
SetWindowPlacement( hWnd: HWND, lpwndpl: *const WINDOWPLACEMENT, ) -> BOOL2447     pub fn SetWindowPlacement(
2448         hWnd: HWND,
2449         lpwndpl: *const WINDOWPLACEMENT,
2450     ) -> BOOL;
2451 }
2452 pub const WDA_NONE: DWORD = 0x00000000;
2453 pub const WDA_MONITOR: DWORD = 0x00000001;
2454 extern "system" {
GetWindowDisplayAffinity( hWnd: HWND, pdwAffinity: *mut DWORD, ) -> BOOL2455     pub fn GetWindowDisplayAffinity(
2456         hWnd: HWND,
2457         pdwAffinity: *mut DWORD,
2458     ) -> BOOL;
SetWindowDisplayAffinity( hWnd: HWND, dwAffinity: DWORD, ) -> BOOL2459     pub fn SetWindowDisplayAffinity(
2460         hWnd: HWND,
2461         dwAffinity: DWORD,
2462     ) -> BOOL;
BeginDeferWindowPos( nNumWindows: c_int, ) -> HDWP2463     pub fn BeginDeferWindowPos(
2464         nNumWindows: c_int,
2465     ) -> HDWP;
DeferWindowPos( hWinPosInfo: HDWP, hWnd: HWND, hWndInserAfter: HWND, x: c_int, y: c_int, cx: c_int, cy: c_int, uFlags: UINT, ) -> HDWP2466     pub fn DeferWindowPos(
2467         hWinPosInfo: HDWP,
2468         hWnd: HWND,
2469         hWndInserAfter: HWND,
2470         x: c_int,
2471         y: c_int,
2472         cx: c_int,
2473         cy: c_int,
2474         uFlags: UINT,
2475     ) -> HDWP;
EndDeferWindowPos( hWinPosInfo: HDWP, ) -> BOOL2476     pub fn EndDeferWindowPos(
2477         hWinPosInfo: HDWP,
2478     ) -> BOOL;
IsWindowVisible( hWnd: HWND, ) -> BOOL2479     pub fn IsWindowVisible(
2480         hWnd: HWND,
2481     ) -> BOOL;
IsIconic( hWnd: HWND, ) -> BOOL2482     pub fn IsIconic(
2483         hWnd: HWND,
2484     ) -> BOOL;
AnyPopup() -> BOOL2485     pub fn AnyPopup() -> BOOL;
BringWindowToTop( hWnd: HWND, ) -> BOOL2486     pub fn BringWindowToTop(
2487         hWnd: HWND,
2488     ) -> BOOL;
IsZoomed( hwnd: HWND, ) -> BOOL2489     pub fn IsZoomed(
2490         hwnd: HWND,
2491     ) -> BOOL;
2492 }
2493 pub const SWP_NOSIZE: UINT = 0x0001;
2494 pub const SWP_NOMOVE: UINT = 0x0002;
2495 pub const SWP_NOZORDER: UINT = 0x0004;
2496 pub const SWP_NOREDRAW: UINT = 0x0008;
2497 pub const SWP_NOACTIVATE: UINT = 0x0010;
2498 pub const SWP_FRAMECHANGED: UINT = 0x0020;
2499 pub const SWP_SHOWWINDOW: UINT = 0x0040;
2500 pub const SWP_HIDEWINDOW: UINT = 0x0080;
2501 pub const SWP_NOCOPYBITS: UINT = 0x0100;
2502 pub const SWP_NOOWNERZORDER: UINT = 0x0200;
2503 pub const SWP_NOSENDCHANGING: UINT = 0x0400;
2504 pub const SWP_DRAWFRAME: UINT = SWP_FRAMECHANGED;
2505 pub const SWP_NOREPOSITION: UINT = SWP_NOOWNERZORDER;
2506 pub const SWP_DEFERERASE: UINT = 0x2000;
2507 pub const SWP_ASYNCWINDOWPOS: UINT = 0x4000;
2508 pub const HWND_TOP: HWND = 0 as HWND;
2509 pub const HWND_BOTTOM: HWND = 1 as HWND;
2510 pub const HWND_TOPMOST: HWND = -1isize as HWND;
2511 pub const HWND_NOTOPMOST: HWND = -2isize as HWND;
2512 STRUCT!{struct DLGTEMPLATE {
2513     style: DWORD,
2514     dwExtendedStyle: DWORD,
2515     cdit: WORD,
2516     x: c_short,
2517     y: c_short,
2518     cx: c_short,
2519     cy: c_short,
2520 }}
2521 pub type LPDLGTEMPLATEA = *mut DLGTEMPLATE;
2522 pub type LPDLGTEMPLATEW = *mut DLGTEMPLATE;
2523 pub type LPCDLGTEMPLATEA = *const DLGTEMPLATE;
2524 pub type LPCDLGTEMPLATEW = *const DLGTEMPLATE;
2525 STRUCT!{struct DLGITEMTEMPLATE {
2526     style: DWORD,
2527     dwExtendedStyle: DWORD,
2528     x: c_short,
2529     y: c_short,
2530     cx: c_short,
2531     cy: c_short,
2532     id: WORD,
2533 }}
2534 pub type PDLGITEMTEMPLATEA = *mut DLGITEMTEMPLATE;
2535 pub type PDLGITEMTEMPLATEW = *mut DLGITEMTEMPLATE;
2536 pub type LPDLGITEMTEMPLATEA = *mut DLGITEMTEMPLATE;
2537 pub type LPDLGITEMTEMPLATEW = *mut DLGITEMTEMPLATE;
2538 extern "system" {
CreateDialogParamA( hInstance: HINSTANCE, lpTemplateName: LPCSTR, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM, ) -> HWND2539     pub fn CreateDialogParamA(
2540         hInstance: HINSTANCE,
2541         lpTemplateName: LPCSTR,
2542         hWndParent: HWND,
2543         lpDialogFunc: DLGPROC,
2544         dwInitParam: LPARAM,
2545     ) -> HWND;
CreateDialogParamW( hInstance: HINSTANCE, lpTemplateName: LPCWSTR, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM, ) -> HWND2546     pub fn CreateDialogParamW(
2547         hInstance: HINSTANCE,
2548         lpTemplateName: LPCWSTR,
2549         hWndParent: HWND,
2550         lpDialogFunc: DLGPROC,
2551         dwInitParam: LPARAM,
2552     ) -> HWND;
CreateDialogIndirectParamA( hInstance: HINSTANCE, lpTemplate: LPCDLGTEMPLATEA, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM, ) -> HWND2553     pub fn CreateDialogIndirectParamA(
2554         hInstance: HINSTANCE,
2555         lpTemplate: LPCDLGTEMPLATEA,
2556         hWndParent: HWND,
2557         lpDialogFunc: DLGPROC,
2558         dwInitParam: LPARAM,
2559     ) -> HWND;
CreateDialogIndirectParamW( hInstance: HINSTANCE, lpTemplate: LPCDLGTEMPLATEW, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM, ) -> HWND2560     pub fn CreateDialogIndirectParamW(
2561         hInstance: HINSTANCE,
2562         lpTemplate: LPCDLGTEMPLATEW,
2563         hWndParent: HWND,
2564         lpDialogFunc: DLGPROC,
2565         dwInitParam: LPARAM,
2566     ) -> HWND;
2567 }
2568 // CreateDialogA
2569 // CreateDialogW
2570 // CreateDialogIndirectA
2571 // CreateDialogIndirectW
2572 extern "system" {
DialogBoxParamA( hInstance: HINSTANCE, lpTemplateName: LPCSTR, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM, ) -> INT_PTR2573     pub fn DialogBoxParamA(
2574         hInstance: HINSTANCE,
2575         lpTemplateName: LPCSTR,
2576         hWndParent: HWND,
2577         lpDialogFunc: DLGPROC,
2578         dwInitParam: LPARAM,
2579     ) -> INT_PTR;
DialogBoxParamW( hInstance: HINSTANCE, lpTemplateName: LPCWSTR, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM, ) -> INT_PTR2580     pub fn DialogBoxParamW(
2581         hInstance: HINSTANCE,
2582         lpTemplateName: LPCWSTR,
2583         hWndParent: HWND,
2584         lpDialogFunc: DLGPROC,
2585         dwInitParam: LPARAM,
2586     ) -> INT_PTR;
DialogBoxIndirectParamA( hInstance: HINSTANCE, hDialogTemplate: LPCDLGTEMPLATEA, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM, ) -> INT_PTR2587     pub fn DialogBoxIndirectParamA(
2588         hInstance: HINSTANCE,
2589         hDialogTemplate: LPCDLGTEMPLATEA,
2590         hWndParent: HWND,
2591         lpDialogFunc: DLGPROC,
2592         dwInitParam: LPARAM,
2593     ) -> INT_PTR;
DialogBoxIndirectParamW( hInstance: HINSTANCE, hDialogTemplate: LPCDLGTEMPLATEW, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM, ) -> INT_PTR2594     pub fn DialogBoxIndirectParamW(
2595         hInstance: HINSTANCE,
2596         hDialogTemplate: LPCDLGTEMPLATEW,
2597         hWndParent: HWND,
2598         lpDialogFunc: DLGPROC,
2599         dwInitParam: LPARAM,
2600     ) -> INT_PTR;
2601 }
2602 // DialogBoxA
2603 // DialogBoxW
2604 // DialogBoxIndirectA
2605 // DialogBoxIndirectW
2606 extern "system" {
EndDialog( hDlg: HWND, nResult: INT_PTR, ) -> BOOL2607     pub fn EndDialog(
2608         hDlg: HWND,
2609         nResult: INT_PTR,
2610     ) -> BOOL;
GetDlgItem( hDlg: HWND, nIDDlgItem: c_int, ) -> HWND2611     pub fn GetDlgItem(
2612         hDlg: HWND,
2613         nIDDlgItem: c_int,
2614     ) -> HWND;
SetDlgItemInt( hDlg: HWND, nIDDlgItem: c_int, uValue: UINT, bSigned: BOOL, ) -> BOOL2615     pub fn SetDlgItemInt(
2616         hDlg: HWND,
2617         nIDDlgItem: c_int,
2618         uValue: UINT,
2619         bSigned: BOOL,
2620     ) -> BOOL;
GetDlgItemInt( hDlg: HWND, nIDDlgItem: c_int, lpTranslated: *mut BOOL, bSigned: BOOL, ) -> UINT2621     pub fn GetDlgItemInt(
2622         hDlg: HWND,
2623         nIDDlgItem: c_int,
2624         lpTranslated: *mut BOOL,
2625         bSigned: BOOL,
2626     ) -> UINT;
SetDlgItemTextA( hDlg: HWND, nIDDlgItem: c_int, lpString: LPCSTR, ) -> BOOL2627     pub fn SetDlgItemTextA(
2628         hDlg: HWND,
2629         nIDDlgItem: c_int,
2630         lpString: LPCSTR,
2631     ) -> BOOL;
SetDlgItemTextW( hDlg: HWND, nIDDlgItem: c_int, lpString: LPCWSTR, ) -> BOOL2632     pub fn SetDlgItemTextW(
2633         hDlg: HWND,
2634         nIDDlgItem: c_int,
2635         lpString: LPCWSTR,
2636     ) -> BOOL;
GetDlgItemTextA( hDlg: HWND, nIDDlgItem: c_int, lpString: LPSTR, nMaxCount: c_int, ) -> UINT2637     pub fn GetDlgItemTextA(
2638         hDlg: HWND,
2639         nIDDlgItem: c_int,
2640         lpString: LPSTR,
2641         nMaxCount: c_int,
2642     ) -> UINT;
GetDlgItemTextW( hDlg: HWND, nIDDlgItem: c_int, lpString: LPWSTR, nMaxCount: c_int, ) -> UINT2643     pub fn GetDlgItemTextW(
2644         hDlg: HWND,
2645         nIDDlgItem: c_int,
2646         lpString: LPWSTR,
2647         nMaxCount: c_int,
2648     ) -> UINT;
CheckDlgButton( hDlg: HWND, nIDButton: c_int, uCheck: UINT, ) -> BOOL2649     pub fn CheckDlgButton(
2650         hDlg: HWND,
2651         nIDButton: c_int,
2652         uCheck: UINT,
2653     ) -> BOOL;
CheckRadioButton( hDlg: HWND, nIDFirstButton: c_int, nIDLasatButton: c_int, nIDCheckButton: c_int, ) -> BOOL2654     pub fn CheckRadioButton(
2655         hDlg: HWND,
2656         nIDFirstButton: c_int,
2657         nIDLasatButton: c_int,
2658         nIDCheckButton: c_int,
2659     ) -> BOOL;
IsDlgButtonChecked( hDlg: HWND, nIDButton: c_int, ) -> UINT2660     pub fn IsDlgButtonChecked(
2661         hDlg: HWND,
2662         nIDButton: c_int,
2663     ) -> UINT;
SendDlgItemMessageA( hDlg: HWND, nIDDlgItem: c_int, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT2664     pub fn SendDlgItemMessageA(
2665         hDlg: HWND,
2666         nIDDlgItem: c_int,
2667         Msg: UINT,
2668         wParam: WPARAM,
2669         lParam: LPARAM,
2670     ) -> LRESULT;
SendDlgItemMessageW( hDlg: HWND, nIDDlgItem: c_int, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT2671     pub fn SendDlgItemMessageW(
2672         hDlg: HWND,
2673         nIDDlgItem: c_int,
2674         Msg: UINT,
2675         wParam: WPARAM,
2676         lParam: LPARAM,
2677     ) -> LRESULT;
GetNextDlgGroupItem( hDlg: HWND, hCtl: HWND, bPrevious: BOOL, ) -> HWND2678     pub fn GetNextDlgGroupItem(
2679         hDlg: HWND,
2680         hCtl: HWND,
2681         bPrevious: BOOL,
2682     ) -> HWND;
GetNextDlgTabItem( hDlg: HWND, hCtl: HWND, bPrevious: BOOL, ) -> HWND2683     pub fn GetNextDlgTabItem(
2684         hDlg: HWND,
2685         hCtl: HWND,
2686         bPrevious: BOOL,
2687     ) -> HWND;
GetDlgCtrlID( hwnd: HWND, ) -> c_int2688     pub fn GetDlgCtrlID(
2689         hwnd: HWND,
2690     ) -> c_int;
GetDialogBaseUnits() -> LONG2691     pub fn GetDialogBaseUnits() -> LONG;
DefDlgProcA( hDlg: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT2692     pub fn DefDlgProcA(
2693         hDlg: HWND,
2694         msg: UINT,
2695         wParam: WPARAM,
2696         lParam: LPARAM,
2697     ) -> LRESULT;
DefDlgProcW( hDlg: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT2698     pub fn DefDlgProcW(
2699         hDlg: HWND,
2700         msg: UINT,
2701         wParam: WPARAM,
2702         lParam: LPARAM,
2703     ) -> LRESULT;
2704 }
2705 ENUM!{enum DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS {
2706     DCDC_DEFAULT = 0x0000,
2707     DCDC_DISABLE_FONT_UPDATE = 0x0001,
2708     DCDC_DISABLE_RELAYOUT = 0x0002,
2709 }}
2710 extern "system" {
SetDialogControlDpiChangeBehavior( hwnd: HWND, mask: DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS, values: DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS, ) -> BOOL2711     pub fn SetDialogControlDpiChangeBehavior(
2712         hwnd: HWND,
2713         mask: DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS,
2714         values: DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS,
2715     ) -> BOOL;
GetDialogControlDpiChangeBehavior( hwnd: HWND, ) -> DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS2716     pub fn GetDialogControlDpiChangeBehavior(
2717         hwnd: HWND,
2718     ) -> DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS;
2719 }
2720 ENUM!{enum DIALOG_DPI_CHANGE_BEHAVIORS {
2721     DDC_DEFAULT = 0x0000,
2722     DDC_DISABLE_ALL = 0x0001,
2723     DDC_DISABLE_RESIZE = 0x0002,
2724     DDC_DISABLE_CONTROL_RELAYOUT = 0x0004,
2725 }}
2726 extern "system" {
SetDialogDpiChangeBehavior( hDlg: HWND, mask: DIALOG_DPI_CHANGE_BEHAVIORS, values: DIALOG_DPI_CHANGE_BEHAVIORS, ) -> BOOL2727     pub fn SetDialogDpiChangeBehavior(
2728         hDlg: HWND,
2729         mask: DIALOG_DPI_CHANGE_BEHAVIORS,
2730         values: DIALOG_DPI_CHANGE_BEHAVIORS,
2731     ) -> BOOL;
GetDialogDpiChangeBehavior( hDlg: HWND, ) -> DIALOG_DPI_CHANGE_BEHAVIORS2732     pub fn GetDialogDpiChangeBehavior(
2733         hDlg: HWND,
2734     ) -> DIALOG_DPI_CHANGE_BEHAVIORS;
CallMsgFilterA( lpMsg: LPMSG, nCode: c_int, ) -> BOOL2735     pub fn CallMsgFilterA(
2736         lpMsg: LPMSG,
2737         nCode: c_int,
2738     ) -> BOOL;
CallMsgFilterW( lpMsg: LPMSG, nCode: c_int, ) -> BOOL2739     pub fn CallMsgFilterW(
2740         lpMsg: LPMSG,
2741         nCode: c_int,
2742     ) -> BOOL;
OpenClipboard( hWnd: HWND, ) -> BOOL2743     pub fn OpenClipboard(
2744         hWnd: HWND,
2745     ) -> BOOL;
CloseClipboard() -> BOOL2746     pub fn CloseClipboard() -> BOOL;
GetClipboardSequenceNumber() -> DWORD2747     pub fn GetClipboardSequenceNumber() -> DWORD;
GetClipboardOwner() -> HWND2748     pub fn GetClipboardOwner() -> HWND;
SetClipboardViewer( hWndNewViewer: HWND, ) -> HWND2749     pub fn SetClipboardViewer(
2750         hWndNewViewer: HWND,
2751     ) -> HWND;
GetClipboardViewer() -> HWND2752     pub fn GetClipboardViewer() -> HWND;
ChangeClipboardChain( hwndRemove: HWND, hwndNewNext: HWND, ) -> BOOL2753     pub fn ChangeClipboardChain(
2754         hwndRemove: HWND,
2755         hwndNewNext: HWND,
2756     ) -> BOOL;
SetClipboardData( uFormat: UINT, hMem: HANDLE, ) -> HANDLE2757     pub fn SetClipboardData(
2758         uFormat: UINT,
2759         hMem: HANDLE,
2760     ) -> HANDLE;
GetClipboardData( uFormat: UINT, ) -> HANDLE2761     pub fn GetClipboardData(
2762         uFormat: UINT,
2763     ) -> HANDLE;
RegisterClipboardFormatA( lpszFormat: LPCSTR, ) -> UINT2764     pub fn RegisterClipboardFormatA(
2765         lpszFormat: LPCSTR,
2766     ) -> UINT;
RegisterClipboardFormatW( lpszFormat: LPCWSTR, ) -> UINT2767     pub fn RegisterClipboardFormatW(
2768         lpszFormat: LPCWSTR,
2769     ) -> UINT;
CountClipboardFormats() -> c_int2770     pub fn CountClipboardFormats() -> c_int;
EnumClipboardFormats( format: UINT, ) -> UINT2771     pub fn EnumClipboardFormats(
2772         format: UINT,
2773     ) -> UINT;
GetClipboardFormatNameA( format: UINT, lpszFormatName: LPSTR, cchMaxCount: c_int, ) -> c_int2774     pub fn GetClipboardFormatNameA(
2775         format: UINT,
2776         lpszFormatName: LPSTR,
2777         cchMaxCount: c_int,
2778     ) -> c_int;
GetClipboardFormatNameW( format: UINT, lpszFormatName: LPWSTR, cchMaxCount: c_int, ) -> c_int2779     pub fn GetClipboardFormatNameW(
2780         format: UINT,
2781         lpszFormatName: LPWSTR,
2782         cchMaxCount: c_int,
2783     ) -> c_int;
EmptyClipboard() -> BOOL2784     pub fn EmptyClipboard() -> BOOL;
IsClipboardFormatAvailable( format: UINT, ) -> BOOL2785     pub fn IsClipboardFormatAvailable(
2786         format: UINT,
2787     ) -> BOOL;
GetPriorityClipboardFormat( paFormatPriorityList: *mut UINT, cFormats: c_int, ) -> c_int2788     pub fn GetPriorityClipboardFormat(
2789         paFormatPriorityList: *mut UINT,
2790         cFormats: c_int,
2791     ) -> c_int;
GetOpenClipboardWindow() -> HWND2792     pub fn GetOpenClipboardWindow() -> HWND;
AddClipboardFormatListener( hWnd: HWND, ) -> BOOL2793     pub fn AddClipboardFormatListener(
2794         hWnd: HWND,
2795     ) -> BOOL;
RemoveClipboardFormatListener( hWnd: HWND, ) -> BOOL2796     pub fn RemoveClipboardFormatListener(
2797         hWnd: HWND,
2798     ) -> BOOL;
GetUpdatedClipboardFormats( lpuiFormats: PUINT, cFormats: UINT, pcFormatsOUT: PUINT, ) -> BOOL2799     pub fn GetUpdatedClipboardFormats(
2800         lpuiFormats: PUINT,
2801         cFormats: UINT,
2802         pcFormatsOUT: PUINT,
2803     ) -> BOOL;
CharToOemA( pSrc: LPCSTR, pDst: LPSTR, ) -> BOOL2804     pub fn CharToOemA(
2805         pSrc: LPCSTR,
2806         pDst: LPSTR,
2807     ) -> BOOL;
CharToOemW( pSrc: LPCWSTR, pDst: LPSTR, ) -> BOOL2808     pub fn CharToOemW(
2809         pSrc: LPCWSTR,
2810         pDst: LPSTR,
2811     ) -> BOOL;
OemToCharA( pSrc: LPCSTR, pDst: LPSTR, ) -> BOOL2812     pub fn OemToCharA(
2813         pSrc: LPCSTR,
2814         pDst: LPSTR,
2815     ) -> BOOL;
OemToCharW( pSrc: LPCSTR, pDst: LPWSTR, ) -> BOOL2816     pub fn OemToCharW(
2817         pSrc: LPCSTR,
2818         pDst: LPWSTR,
2819     ) -> BOOL;
CharToOemBuffA( lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD, ) -> BOOL2820     pub fn CharToOemBuffA(
2821         lpszSrc: LPCSTR,
2822         lpszDst: LPSTR,
2823         cchDstLength: DWORD,
2824     ) -> BOOL;
CharToOemBuffW( lpszSrc: LPCWSTR, lpszDst: LPSTR, cchDstLength: DWORD, ) -> BOOL2825     pub fn CharToOemBuffW(
2826         lpszSrc: LPCWSTR,
2827         lpszDst: LPSTR,
2828         cchDstLength: DWORD,
2829     ) -> BOOL;
OemToCharBuffA( lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD, ) -> BOOL2830     pub fn OemToCharBuffA(
2831         lpszSrc: LPCSTR,
2832         lpszDst: LPSTR,
2833         cchDstLength: DWORD,
2834     ) -> BOOL;
OemToCharBuffW( lpszSrc: LPCSTR, lpszDst: LPWSTR, cchDstLength: DWORD, ) -> BOOL2835     pub fn OemToCharBuffW(
2836         lpszSrc: LPCSTR,
2837         lpszDst: LPWSTR,
2838         cchDstLength: DWORD,
2839     ) -> BOOL;
CharUpperA( lpsz: LPSTR, ) -> LPSTR2840     pub fn CharUpperA(
2841         lpsz: LPSTR,
2842     ) -> LPSTR;
CharUpperW( lpsz: LPWSTR, ) -> LPWSTR2843     pub fn CharUpperW(
2844         lpsz: LPWSTR,
2845     ) -> LPWSTR;
CharUpperBuffA( lpsz: LPSTR, cchLength: DWORD, ) -> DWORD2846     pub fn CharUpperBuffA(
2847         lpsz: LPSTR,
2848         cchLength: DWORD,
2849     ) -> DWORD;
CharUpperBuffW( lpsz: LPWSTR, cchLength: DWORD, ) -> DWORD2850     pub fn CharUpperBuffW(
2851         lpsz: LPWSTR,
2852         cchLength: DWORD,
2853     ) -> DWORD;
CharLowerA( lpsz: LPSTR, ) -> LPSTR2854     pub fn CharLowerA(
2855         lpsz: LPSTR,
2856     ) -> LPSTR;
CharLowerW( lpsz: LPWSTR, ) -> LPWSTR2857     pub fn CharLowerW(
2858         lpsz: LPWSTR,
2859     ) -> LPWSTR;
CharLowerBuffA( lpsz: LPSTR, cchLength: DWORD, ) -> DWORD2860     pub fn CharLowerBuffA(
2861         lpsz: LPSTR,
2862         cchLength: DWORD,
2863     ) -> DWORD;
CharLowerBuffW( lpsz: LPWSTR, cchLength: DWORD, ) -> DWORD2864     pub fn CharLowerBuffW(
2865         lpsz: LPWSTR,
2866         cchLength: DWORD,
2867     ) -> DWORD;
CharNextA( lpsz: LPCSTR, ) -> LPSTR2868     pub fn CharNextA(
2869         lpsz: LPCSTR,
2870     ) -> LPSTR;
CharNextW( lpsz: LPCWSTR, ) -> LPWSTR2871     pub fn CharNextW(
2872         lpsz: LPCWSTR,
2873     ) -> LPWSTR;
CharPrevA( lpszStart: LPCSTR, lpszCurrent: LPCSTR, ) -> LPSTR2874     pub fn CharPrevA(
2875         lpszStart: LPCSTR,
2876         lpszCurrent: LPCSTR,
2877     ) -> LPSTR;
CharPrevW( lpszStart: LPCWSTR, lpszCurrent: LPCWSTR, ) -> LPWSTR2878     pub fn CharPrevW(
2879         lpszStart: LPCWSTR,
2880         lpszCurrent: LPCWSTR,
2881     ) -> LPWSTR;
CharNextExA( codePage: WORD, lpCurrentChar: LPSTR, dwFlags: DWORD, ) -> LPSTR2882     pub fn CharNextExA(
2883         codePage: WORD,
2884         lpCurrentChar: LPSTR,
2885         dwFlags: DWORD,
2886     ) -> LPSTR;
CharPrevExA( codePage: WORD, lpStart: LPCSTR, lpCurrentChar: LPCSTR, dwFlags: DWORD, ) -> LPSTR2887     pub fn CharPrevExA(
2888         codePage: WORD,
2889         lpStart: LPCSTR,
2890         lpCurrentChar: LPCSTR,
2891         dwFlags: DWORD,
2892     ) -> LPSTR;
2893 }
2894 // AnsiToOem
2895 // OemToAnsi
2896 // AnsiToOemBuff
2897 // OemToAnsiBuff
2898 // AnsiUpper
2899 // AnsiUpperBuff
2900 // AnsiLower
2901 // AnsiLowerBuff
2902 // AnsiNext
2903 // AnsiPrev
2904 extern "system" {
IsCharAlphaA( ch: CHAR, ) -> BOOL2905     pub fn IsCharAlphaA(
2906         ch: CHAR,
2907     ) -> BOOL;
IsCharAlphaW( ch: WCHAR, ) -> BOOL2908     pub fn IsCharAlphaW(
2909         ch: WCHAR,
2910     ) -> BOOL;
IsCharAlphaNumericA( ch: CHAR, ) -> BOOL2911     pub fn IsCharAlphaNumericA(
2912         ch: CHAR,
2913     ) -> BOOL;
IsCharAlphaNumericW( ch: WCHAR, ) -> BOOL2914     pub fn IsCharAlphaNumericW(
2915         ch: WCHAR,
2916     ) -> BOOL;
IsCharUpperA( ch: CHAR, ) -> BOOL2917     pub fn IsCharUpperA(
2918         ch: CHAR,
2919     ) -> BOOL;
IsCharUpperW( ch: WCHAR, ) -> BOOL2920     pub fn IsCharUpperW(
2921         ch: WCHAR,
2922     ) -> BOOL;
IsCharLowerA( ch: CHAR, ) -> BOOL2923     pub fn IsCharLowerA(
2924         ch: CHAR,
2925     ) -> BOOL;
IsCharLowerW( ch: WCHAR, ) -> BOOL2926     pub fn IsCharLowerW(
2927         ch: WCHAR,
2928     ) -> BOOL;
SetFocus( hWnd: HWND, ) -> HWND2929     pub fn SetFocus(
2930         hWnd: HWND,
2931     ) -> HWND;
GetActiveWindow() -> HWND2932     pub fn GetActiveWindow() -> HWND;
GetFocus() -> HWND2933     pub fn GetFocus() -> HWND;
GetKBCodePage() -> UINT2934     pub fn GetKBCodePage() -> UINT;
GetKeyState( nVirtKey: c_int, ) -> SHORT2935     pub fn GetKeyState(
2936         nVirtKey: c_int,
2937     ) -> SHORT;
GetAsyncKeyState( vKey: c_int, ) -> SHORT2938     pub fn GetAsyncKeyState(
2939         vKey: c_int,
2940     ) -> SHORT;
GetKeyboardState( lpKeyState: PBYTE, ) -> BOOL2941     pub fn GetKeyboardState(
2942         lpKeyState: PBYTE,
2943     ) -> BOOL;
SetKeyboardState( lpKeyState: LPBYTE, ) -> BOOL2944     pub fn SetKeyboardState(
2945         lpKeyState: LPBYTE,
2946     ) -> BOOL;
GetKeyNameTextA( lparam: LONG, lpString: LPSTR, cchSize: c_int, ) -> c_int2947     pub fn GetKeyNameTextA(
2948         lparam: LONG,
2949         lpString: LPSTR,
2950         cchSize: c_int,
2951     ) -> c_int;
GetKeyNameTextW( lParam: LONG, lpString: LPWSTR, cchSize: c_int, ) -> c_int2952     pub fn GetKeyNameTextW(
2953         lParam: LONG,
2954         lpString: LPWSTR,
2955         cchSize: c_int,
2956     ) -> c_int;
GetKeyboardType( nTypeFlag: c_int, ) -> c_int2957     pub fn GetKeyboardType(
2958         nTypeFlag: c_int,
2959     ) -> c_int;
ToAscii( uVirtKey: UINT, uScanCode: UINT, lpKeyState: *const BYTE, lpChar: LPWORD, uFlags: UINT, ) -> c_int2960     pub fn ToAscii(
2961         uVirtKey: UINT,
2962         uScanCode: UINT,
2963         lpKeyState: *const BYTE,
2964         lpChar: LPWORD,
2965         uFlags: UINT,
2966     ) -> c_int;
ToAsciiEx( uVirtKey: UINT, uScanCode: UINT, lpKeyState: *const BYTE, lpChar: LPWORD, uFlags: UINT, dwhkl: HKL, ) -> c_int2967     pub fn ToAsciiEx(
2968         uVirtKey: UINT,
2969         uScanCode: UINT,
2970         lpKeyState: *const BYTE,
2971         lpChar: LPWORD,
2972         uFlags: UINT,
2973         dwhkl: HKL,
2974     ) -> c_int;
ToUnicode( wVirtKey: UINT, wScanCode: UINT, lpKeyState: *const BYTE, lwszBuff: LPWSTR, cchBuff: c_int, wFlags: UINT, ) -> c_int2975     pub fn ToUnicode(
2976         wVirtKey: UINT,
2977         wScanCode: UINT,
2978         lpKeyState: *const BYTE,
2979         lwszBuff: LPWSTR,
2980         cchBuff: c_int,
2981         wFlags: UINT,
2982     ) -> c_int;
OemKeyScan( wOemChar: WORD, ) -> DWORD2983     pub fn OemKeyScan(
2984         wOemChar: WORD,
2985     ) -> DWORD;
VkKeyScanA( ch: CHAR, ) -> SHORT2986     pub fn VkKeyScanA(
2987         ch: CHAR,
2988     ) -> SHORT;
VkKeyScanW( ch: WCHAR, ) -> SHORT2989     pub fn VkKeyScanW(
2990         ch: WCHAR,
2991     ) -> SHORT;
VkKeyScanExA( ch: CHAR, dwhkl: HKL, ) -> SHORT2992     pub fn VkKeyScanExA(
2993         ch: CHAR,
2994         dwhkl: HKL,
2995     ) -> SHORT;
VkKeyScanExW( ch: WCHAR, dwhkl: HKL, ) -> SHORT2996     pub fn VkKeyScanExW(
2997         ch: WCHAR,
2998         dwhkl: HKL,
2999     ) -> SHORT;
3000 }
3001 pub const KEYEVENTF_EXTENDEDKEY: DWORD = 0x0001;
3002 pub const KEYEVENTF_KEYUP: DWORD = 0x0002;
3003 pub const KEYEVENTF_UNICODE: DWORD = 0x0004;
3004 pub const KEYEVENTF_SCANCODE: DWORD = 0x0008;
3005 extern "system" {
keybd_event( bVk: BYTE, bScan: BYTE, dwFlags: DWORD, dwExtraInfo: ULONG_PTR, )3006     pub fn keybd_event(
3007         bVk: BYTE,
3008         bScan: BYTE,
3009         dwFlags: DWORD,
3010         dwExtraInfo: ULONG_PTR,
3011     );
3012 }
3013 pub const MOUSEEVENTF_MOVE: DWORD = 0x0001;
3014 pub const MOUSEEVENTF_LEFTDOWN: DWORD = 0x0002;
3015 pub const MOUSEEVENTF_LEFTUP: DWORD = 0x0004;
3016 pub const MOUSEEVENTF_RIGHTDOWN: DWORD = 0x0008;
3017 pub const MOUSEEVENTF_RIGHTUP: DWORD = 0x0010;
3018 pub const MOUSEEVENTF_MIDDLEDOWN: DWORD = 0x0020;
3019 pub const MOUSEEVENTF_MIDDLEUP: DWORD = 0x0040;
3020 pub const MOUSEEVENTF_XDOWN: DWORD = 0x0080;
3021 pub const MOUSEEVENTF_XUP: DWORD = 0x0100;
3022 pub const MOUSEEVENTF_WHEEL: DWORD = 0x0800;
3023 pub const MOUSEEVENTF_HWHEEL: DWORD = 0x01000;
3024 pub const MOUSEEVENTF_MOVE_NOCOALESCE: DWORD = 0x2000;
3025 pub const MOUSEEVENTF_VIRTUALDESK: DWORD = 0x4000;
3026 pub const MOUSEEVENTF_ABSOLUTE: DWORD = 0x8000;
3027 extern "system" {
mouse_event( dwFlags: DWORD, dx: DWORD, dy: DWORD, dwData: DWORD, dwExtraInfo: ULONG_PTR, )3028     pub fn mouse_event(
3029         dwFlags: DWORD,
3030         dx: DWORD,
3031         dy: DWORD,
3032         dwData: DWORD,
3033         dwExtraInfo: ULONG_PTR,
3034     );
3035 }
3036 STRUCT!{struct MOUSEINPUT {
3037     dx: LONG,
3038     dy: LONG,
3039     mouseData: DWORD,
3040     dwFlags: DWORD,
3041     time: DWORD,
3042     dwExtraInfo: ULONG_PTR,
3043 }}
3044 pub type PMOUSEINPUT = *mut MOUSEINPUT;
3045 pub type LPMOUSEINPUT = *mut MOUSEINPUT;
3046 STRUCT!{struct KEYBDINPUT {
3047     wVk: WORD,
3048     wScan: WORD,
3049     dwFlags: DWORD,
3050     time: DWORD,
3051     dwExtraInfo: ULONG_PTR,
3052 }}
3053 pub type PKEYBDINPUT = *mut KEYBDINPUT;
3054 pub type LPKEYBDINPUT = *mut KEYBDINPUT;
3055 STRUCT!{struct HARDWAREINPUT {
3056     uMsg: DWORD,
3057     wParamL: WORD,
3058     wParamH: WORD,
3059 }}
3060 pub type PHARDWAREINPUT = *mut HARDWAREINPUT;
3061 pub type LPHARDWAREINPUT= *mut HARDWAREINPUT;
3062 pub const INPUT_MOUSE: DWORD = 0;
3063 pub const INPUT_KEYBOARD: DWORD = 1;
3064 pub const INPUT_HARDWARE: DWORD = 2;
3065 UNION!{union INPUT_u {
3066     [u32; 6] [u64; 4],
3067     mi mi_mut: MOUSEINPUT,
3068     ki ki_mut: KEYBDINPUT,
3069     hi hi_mut: HARDWAREINPUT,
3070 }}
3071 STRUCT!{struct INPUT {
3072     type_: DWORD,
3073     u: INPUT_u,
3074 }}
3075 pub type PINPUT = *mut INPUT;
3076 pub type LPINPUT = *mut INPUT;
3077 extern "system" {
SendInput( cInputs: UINT, pInputs: LPINPUT, cbSize: c_int, ) -> UINT3078     pub fn SendInput(
3079         cInputs: UINT,
3080         pInputs: LPINPUT,
3081         cbSize: c_int,
3082     ) -> UINT;
3083 }
3084 DECLARE_HANDLE!{HTOUCHINPUT, HTOUCHINPUT__}
3085 STRUCT!{struct TOUCHINPUT {
3086     x: LONG,
3087     y: LONG,
3088     hSource: HANDLE,
3089     dwID: DWORD,
3090     dwFlags: DWORD,
3091     dwMask: DWORD,
3092     dwTime: DWORD,
3093     dwExtraInfo: ULONG_PTR,
3094     cxContact: DWORD,
3095     cyContact: DWORD,
3096 }}
3097 pub type PTOUCHINPUT = *mut TOUCHINPUT;
3098 pub type PCTOUCHINPUT = *const TOUCHINPUT;
3099 // TOUCH_COORD_TO_PIXEL
3100 pub const TOUCHEVENTF_MOVE: DWORD = 0x0001;
3101 pub const TOUCHEVENTF_DOWN: DWORD = 0x0002;
3102 pub const TOUCHEVENTF_UP: DWORD = 0x0004;
3103 pub const TOUCHEVENTF_INRANGE: DWORD = 0x0008;
3104 pub const TOUCHEVENTF_PRIMARY: DWORD = 0x0010;
3105 pub const TOUCHEVENTF_NOCOALESCE: DWORD = 0x0020;
3106 pub const TOUCHEVENTF_PEN: DWORD = 0x0040;
3107 pub const TOUCHEVENTF_PALM: DWORD = 0x0080;
3108 pub const TOUCHINPUTMASKF_TIMEFROMSYSTEM: DWORD = 0x0001;
3109 pub const TOUCHINPUTMASKF_EXTRAINFO: DWORD = 0x0002;
3110 pub const TOUCHINPUTMASKF_CONTACTAREA: DWORD = 0x0004;
3111 extern "system" {
GetTouchInputInfo( hTouchInput: HTOUCHINPUT, cInputs: c_uint, pInputs: PTOUCHINPUT, cbSize: c_int, ) -> BOOL3112     pub fn GetTouchInputInfo(
3113         hTouchInput: HTOUCHINPUT,
3114         cInputs: c_uint,
3115         pInputs: PTOUCHINPUT,
3116         cbSize: c_int,
3117     ) -> BOOL;
CloseTouchInputHandle( hTouchInput: HTOUCHINPUT, ) -> BOOL3118     pub fn CloseTouchInputHandle(
3119         hTouchInput: HTOUCHINPUT,
3120     ) -> BOOL;
3121 }
3122 pub const TWF_FINETOUCH: DWORD = 0x00000001;
3123 pub const TWF_WANTPALM: DWORD = 0x00000002;
3124 extern "system" {
RegisterTouchWindow( hWnd: HWND, flags: ULONG, ) -> BOOL3125     pub fn RegisterTouchWindow(
3126         hWnd: HWND,
3127         flags: ULONG,
3128     ) -> BOOL;
UnregisterTouchWindow( hwnd: HWND, ) -> BOOL3129     pub fn UnregisterTouchWindow(
3130         hwnd: HWND,
3131     ) -> BOOL;
IsTouchWindow( hwnd: HWND, pulFlags: PULONG, ) -> BOOL3132     pub fn IsTouchWindow(
3133         hwnd: HWND,
3134         pulFlags: PULONG,
3135     ) -> BOOL;
3136 }
3137 ENUM!{enum POINTER_INPUT_TYPE {
3138     PT_POINTER = 0x00000001,
3139     PT_TOUCH = 0x00000002,
3140     PT_PEN = 0x00000003,
3141     PT_MOUSE = 0x00000004,
3142     PT_TOUCHPAD = 0x00000005,
3143 }}
3144 ENUM!{enum POINTER_FLAGS {
3145     POINTER_FLAG_NONE = 0x00000000,
3146     POINTER_FLAG_NEW = 0x00000001,
3147     POINTER_FLAG_INRANGE = 0x00000002,
3148     POINTER_FLAG_INCONTACT = 0x00000004,
3149     POINTER_FLAG_FIRSTBUTTON = 0x00000010,
3150     POINTER_FLAG_SECONDBUTTON = 0x00000020,
3151     POINTER_FLAG_THIRDBUTTON = 0x00000040,
3152     POINTER_FLAG_FOURTHBUTTON = 0x00000080,
3153     POINTER_FLAG_FIFTHBUTTON = 0x00000100,
3154     POINTER_FLAG_PRIMARY = 0x00002000,
3155     POINTER_FLAG_CONFIDENCE = 0x00004000,
3156     POINTER_FLAG_CANCELED = 0x00008000,
3157     POINTER_FLAG_DOWN = 0x00010000,
3158     POINTER_FLAG_UPDATE = 0x00020000,
3159     POINTER_FLAG_UP = 0x00040000,
3160     POINTER_FLAG_WHEEL = 0x00080000,
3161     POINTER_FLAG_HWHEEL = 0x00100000,
3162     POINTER_FLAG_CAPTURECHANGED = 0x00200000,
3163     POINTER_FLAG_HASTRANSFORM = 0x00400000,
3164 }}
3165 pub const POINTER_MOD_SHIFT: DWORD = 0x0004;
3166 pub const POINTER_MOD_CTRL: DWORD = 0x0008;
3167 ENUM!{enum POINTER_BUTTON_CHANGE_TYPE {
3168     POINTER_CHANGE_NONE,
3169     POINTER_CHANGE_FIRSTBUTTON_DOWN,
3170     POINTER_CHANGE_FIRSTBUTTON_UP,
3171     POINTER_CHANGE_SECONDBUTTON_DOWN,
3172     POINTER_CHANGE_SECONDBUTTON_UP,
3173     POINTER_CHANGE_THIRDBUTTON_DOWN,
3174     POINTER_CHANGE_THIRDBUTTON_UP,
3175     POINTER_CHANGE_FOURTHBUTTON_DOWN,
3176     POINTER_CHANGE_FOURTHBUTTON_UP,
3177     POINTER_CHANGE_FIFTHBUTTON_DOWN,
3178     POINTER_CHANGE_FIFTHBUTTON_UP,
3179 }}
3180 STRUCT!{struct POINTER_INFO {
3181     pointerType: POINTER_INPUT_TYPE,
3182     pointerId: UINT32,
3183     frameId: UINT32,
3184     pointerFlags: POINTER_FLAGS,
3185     sourceDevice: HANDLE,
3186     hwndTarget: HWND,
3187     ptPixelLocation: POINT,
3188     ptHimetricLocation: POINT,
3189     ptPixelLocationRaw: POINT,
3190     ptHimetricLocationRaw: POINT,
3191     dwTime: DWORD,
3192     historyCount: UINT32,
3193     InputData: INT32,
3194     dwKeyStates: DWORD,
3195     PerformanceCount: UINT64,
3196     ButtonChangeType: POINTER_BUTTON_CHANGE_TYPE,
3197 }}
3198 ENUM!{enum TOUCH_FLAGS {
3199     TOUCH_FLAG_NONE = 0x00000000,
3200 }}
3201 ENUM!{enum TOUCH_MASK {
3202     TOUCH_MASK_NONE = 0x00000000,
3203     TOUCH_MASK_CONTACTAREA = 0x00000001,
3204     TOUCH_MASK_ORIENTATION = 0x00000002,
3205     TOUCH_MASK_PRESSURE = 0x00000004,
3206 }}
3207 STRUCT!{struct POINTER_TOUCH_INFO {
3208     pointerInfo: POINTER_INFO,
3209     touchFlags: TOUCH_FLAGS,
3210     touchMask: TOUCH_MASK,
3211     rcContact: RECT,
3212     rcContactRaw: RECT,
3213     orientation: UINT32,
3214     pressure: UINT32,
3215 }}
3216 ENUM!{enum PEN_FLAGS {
3217     PEN_FLAG_NONE = 0x00000000,
3218     PEN_FLAG_BARREL = 0x00000001,
3219     PEN_FLAG_INVERTED = 0x00000002,
3220     PEN_FLAG_ERASER = 0x00000004,
3221 }}
3222 ENUM!{enum PEN_MASK {
3223     PEN_MASK_NONE = 0x00000000,
3224     PEN_MASK_PRESSURE = 0x00000001,
3225     PEN_MASK_ROTATION = 0x00000002,
3226     PEN_MASK_TILT_X = 0x00000004,
3227     PEN_MASK_TILT_Y = 0x00000008,
3228 }}
3229 STRUCT!{struct POINTER_PEN_INFO {
3230     pointerInfo: POINTER_INFO,
3231     penFlags: PEN_FLAGS,
3232     penMask: PEN_MASK,
3233     pressure: UINT32,
3234     rotation: UINT32,
3235     tiltX: INT32,
3236     tiltY: INT32,
3237 }}
3238 pub const POINTER_MESSAGE_FLAG_NEW: DWORD = 0x00000001;
3239 pub const POINTER_MESSAGE_FLAG_INRANGE: DWORD = 0x00000002;
3240 pub const POINTER_MESSAGE_FLAG_INCONTACT: DWORD = 0x00000004;
3241 pub const POINTER_MESSAGE_FLAG_FIRSTBUTTON: DWORD = 0x00000010;
3242 pub const POINTER_MESSAGE_FLAG_SECONDBUTTON: DWORD = 0x00000020;
3243 pub const POINTER_MESSAGE_FLAG_THIRDBUTTON: DWORD = 0x00000040;
3244 pub const POINTER_MESSAGE_FLAG_FOURTHBUTTON: DWORD = 0x00000080;
3245 pub const POINTER_MESSAGE_FLAG_FIFTHBUTTON: DWORD = 0x00000100;
3246 pub const POINTER_MESSAGE_FLAG_PRIMARY: DWORD = 0x00002000;
3247 pub const POINTER_MESSAGE_FLAG_CONFIDENCE: DWORD = 0x00004000;
3248 pub const POINTER_MESSAGE_FLAG_CANCELED: DWORD = 0x00008000;
3249 pub const PA_ACTIVATE: UINT = MA_ACTIVATE;
3250 pub const PA_NOACTIVATE: UINT = MA_NOACTIVATE;
3251 pub const MAX_TOUCH_COUNT: UINT32 = 256;
3252 pub const TOUCH_FEEDBACK_DEFAULT: DWORD = 0x1;
3253 pub const TOUCH_FEEDBACK_INDIRECT: DWORD = 0x2;
3254 pub const TOUCH_FEEDBACK_NONE: DWORD = 0x3;
3255 extern "system" {
InitializeTouchInjection( maxCount: UINT32, dwMode: DWORD, ) -> BOOL3256     pub fn InitializeTouchInjection(
3257         maxCount: UINT32,
3258         dwMode: DWORD,
3259     ) -> BOOL;
InjectTouchInput( count: UINT32, contacts: *const POINTER_TOUCH_INFO, ) -> BOOL3260     pub fn InjectTouchInput(
3261         count: UINT32,
3262         contacts: *const POINTER_TOUCH_INFO,
3263     ) -> BOOL;
3264 }
3265 STRUCT!{struct USAGE_PROPERTIES {
3266     level: USHORT,
3267     page: USHORT,
3268     usage: USHORT,
3269     logicalMinimum: INT32,
3270     logicalMaximum: INT32,
3271     unit: USHORT,
3272     exponent: USHORT,
3273     count: BYTE,
3274     physicalMinimum: INT32,
3275     physicalMaximum: INT32,
3276 }}
3277 pub type PUSAGE_PROPERTIES = *mut USAGE_PROPERTIES;
3278 UNION!{union POINTER_TYPE_INFO_u {
3279     [u64; 17] [u64; 18],
3280     touchInfo touchInfo_mut: POINTER_TOUCH_INFO,
3281     penInfo penInfo_mut: POINTER_PEN_INFO,
3282 }}
3283 STRUCT!{struct POINTER_TYPE_INFO {
3284     type_: POINTER_INPUT_TYPE,
3285     u: POINTER_TYPE_INFO_u,
3286 }}
3287 pub type PPOINTER_TYPE_INFO = *mut POINTER_TYPE_INFO;
3288 STRUCT!{struct INPUT_INJECTION_VALUE {
3289     page: USHORT,
3290     usage: USHORT,
3291     value: INT32,
3292     index: USHORT,
3293 }}
3294 pub type PINPUT_INJECTION_VALUE = *mut INPUT_INJECTION_VALUE;
3295 extern "system" {
GetPointerType( pointerId: UINT32, pointerType: *mut POINTER_INPUT_TYPE, ) -> BOOL3296     pub fn GetPointerType(
3297         pointerId: UINT32,
3298         pointerType: *mut POINTER_INPUT_TYPE,
3299     ) -> BOOL;
GetPointerCursorId( pointerId: UINT32, cursorId: *mut UINT32, ) -> BOOL3300     pub fn GetPointerCursorId(
3301         pointerId: UINT32,
3302         cursorId: *mut UINT32,
3303     ) -> BOOL;
GetPointerInfo( pointerId: UINT32, pointerInfo: *mut POINTER_INFO, ) -> BOOL3304     pub fn GetPointerInfo(
3305         pointerId: UINT32,
3306         pointerInfo: *mut POINTER_INFO,
3307     ) -> BOOL;
GetPointerInfoHistory( pointerId: UINT32, entriesCount: *mut UINT32, pointerInfo: *mut POINTER_INFO, ) -> BOOL3308     pub fn GetPointerInfoHistory(
3309         pointerId: UINT32,
3310         entriesCount: *mut UINT32,
3311         pointerInfo: *mut POINTER_INFO,
3312     ) -> BOOL;
GetPointerFrameInfo( pointerId: UINT32, pointerCount: *mut UINT32, pointerInfo: *mut POINTER_INFO, ) -> BOOL3313     pub fn GetPointerFrameInfo(
3314         pointerId: UINT32,
3315         pointerCount: *mut UINT32,
3316         pointerInfo: *mut POINTER_INFO,
3317     ) -> BOOL;
GetPointerFrameInfoHistory( pointerId: UINT32, entriesCount: *mut UINT32, pointerCount: *mut UINT32, pointerInfo: *mut POINTER_INFO, ) -> BOOL3318     pub fn GetPointerFrameInfoHistory(
3319         pointerId: UINT32,
3320         entriesCount: *mut UINT32,
3321         pointerCount: *mut UINT32,
3322         pointerInfo: *mut POINTER_INFO,
3323     ) -> BOOL;
GetPointerTouchInfo( pointerId: UINT32, touchInfo: *mut POINTER_TOUCH_INFO, ) -> BOOL3324     pub fn GetPointerTouchInfo(
3325         pointerId: UINT32,
3326         touchInfo: *mut POINTER_TOUCH_INFO,
3327     ) -> BOOL;
GetPointerTouchInfoHistory( pointerId: UINT32, entriesCount: *mut UINT32, touchInfo: *mut POINTER_TOUCH_INFO, ) -> BOOL3328     pub fn GetPointerTouchInfoHistory(
3329         pointerId: UINT32,
3330         entriesCount: *mut UINT32,
3331         touchInfo: *mut POINTER_TOUCH_INFO,
3332     ) -> BOOL;
GetPointerFrameTouchInfo( pointerId: UINT32, pointerCount: *mut UINT32, touchInfo: *mut POINTER_TOUCH_INFO, ) -> BOOL3333     pub fn GetPointerFrameTouchInfo(
3334         pointerId: UINT32,
3335         pointerCount: *mut UINT32,
3336         touchInfo: *mut POINTER_TOUCH_INFO,
3337     ) -> BOOL;
GetPointerFrameTouchInfoHistory( pointerId: UINT32, entriesCount: *mut UINT32, pointerCount: *mut UINT32, touchInfo: *mut POINTER_TOUCH_INFO, ) -> BOOL3338     pub fn GetPointerFrameTouchInfoHistory(
3339         pointerId: UINT32,
3340         entriesCount: *mut UINT32,
3341         pointerCount: *mut UINT32,
3342         touchInfo: *mut POINTER_TOUCH_INFO,
3343     ) -> BOOL;
GetPointerPenInfo( pointerId: UINT32, penInfo: *mut POINTER_PEN_INFO, ) -> BOOL3344     pub fn GetPointerPenInfo(
3345         pointerId: UINT32,
3346         penInfo: *mut POINTER_PEN_INFO,
3347     ) -> BOOL;
GetPointerPenInfoHistory( pointerId: UINT32, entriesCount: *mut UINT32, penInfo: *mut POINTER_PEN_INFO, ) -> BOOL3348     pub fn GetPointerPenInfoHistory(
3349         pointerId: UINT32,
3350         entriesCount: *mut UINT32,
3351         penInfo: *mut POINTER_PEN_INFO,
3352     ) -> BOOL;
GetPointerFramePenInfo( pointerId: UINT32, pointerCount: *mut UINT32, penInfo: *mut POINTER_PEN_INFO, ) -> BOOL3353     pub fn GetPointerFramePenInfo(
3354         pointerId: UINT32,
3355         pointerCount: *mut UINT32,
3356         penInfo: *mut POINTER_PEN_INFO,
3357     ) -> BOOL;
GetPointerFramePenInfoHistory( pointerId: UINT32, entriesCount: *mut UINT32, pointerCount: *mut UINT32, penInfo: *mut POINTER_PEN_INFO, ) -> BOOL3358     pub fn GetPointerFramePenInfoHistory(
3359         pointerId: UINT32,
3360         entriesCount: *mut UINT32,
3361         pointerCount: *mut UINT32,
3362         penInfo: *mut POINTER_PEN_INFO,
3363     ) -> BOOL;
SkipPointerFrameMessages( pointerId: UINT32, ) -> BOOL3364     pub fn SkipPointerFrameMessages(
3365         pointerId: UINT32,
3366     ) -> BOOL;
RegisterPointerInputTarget( hwnd: HWND, pointerType: POINTER_INPUT_TYPE, ) -> BOOL3367     pub fn RegisterPointerInputTarget(
3368         hwnd: HWND,
3369         pointerType: POINTER_INPUT_TYPE,
3370     ) -> BOOL;
UnregisterPointerInputTarget( hwnd: HWND, pointerType: POINTER_INPUT_TYPE, ) -> BOOL3371     pub fn UnregisterPointerInputTarget(
3372         hwnd: HWND,
3373         pointerType: POINTER_INPUT_TYPE,
3374     ) -> BOOL;
RegisterPointerInputTargetEx( hwnd: HWND, pointerType: POINTER_INPUT_TYPE, fObserve: BOOL, ) -> BOOL3375     pub fn RegisterPointerInputTargetEx(
3376         hwnd: HWND,
3377         pointerType: POINTER_INPUT_TYPE,
3378         fObserve: BOOL,
3379     ) -> BOOL;
UnregisterPointerInputTargetEx( hwnd: HWND, pointerType: POINTER_INPUT_TYPE, ) -> BOOL3380     pub fn UnregisterPointerInputTargetEx(
3381         hwnd: HWND,
3382         pointerType: POINTER_INPUT_TYPE,
3383     ) -> BOOL;
EnableMouseInPointer( fEnable: BOOL, ) -> BOOL3384     pub fn EnableMouseInPointer(
3385         fEnable: BOOL,
3386     ) -> BOOL;
IsMouseInPointerEnabled() -> BOOL3387     pub fn IsMouseInPointerEnabled() -> BOOL;
3388 }
3389 pub const TOUCH_HIT_TESTING_DEFAULT: ULONG = 0x0;
3390 pub const TOUCH_HIT_TESTING_CLIENT: ULONG = 0x1;
3391 pub const TOUCH_HIT_TESTING_NONE: ULONG = 0x2;
3392 extern "system" {
RegisterTouchHitTestingWindow( hwnd: HWND, value: ULONG, ) -> BOOL3393     pub fn RegisterTouchHitTestingWindow(
3394         hwnd: HWND,
3395         value: ULONG,
3396     ) -> BOOL;
3397 }
3398 STRUCT!{struct TOUCH_HIT_TESTING_PROXIMITY_EVALUATION {
3399     score: UINT16,
3400     adjustedPoint: POINT,
3401 }}
3402 pub type PTOUCH_HIT_TESTING_PROXIMITY_EVALUATION = *mut TOUCH_HIT_TESTING_PROXIMITY_EVALUATION;
3403 STRUCT!{struct TOUCH_HIT_TESTING_INPUT {
3404     pointerId: UINT32,
3405     point: POINT,
3406     boundingBox: RECT,
3407     nonOccludedBoundingBox: RECT,
3408     orientation: UINT32,
3409 }}
3410 pub type PTOUCH_HIT_TESTING_INPUT = *mut TOUCH_HIT_TESTING_INPUT;
3411 pub const TOUCH_HIT_TESTING_PROXIMITY_CLOSEST: UINT16 = 0x0;
3412 pub const TOUCH_HIT_TESTING_PROXIMITY_FARTHEST: UINT16 = 0xFFF;
3413 extern "system" {
EvaluateProximityToRect( controlBoundingBox: *const RECT, pHitTestingInput: *const TOUCH_HIT_TESTING_INPUT, pProximityEval: *mut TOUCH_HIT_TESTING_PROXIMITY_EVALUATION, ) -> BOOL3414     pub fn EvaluateProximityToRect(
3415         controlBoundingBox: *const RECT,
3416         pHitTestingInput: *const TOUCH_HIT_TESTING_INPUT,
3417         pProximityEval: *mut TOUCH_HIT_TESTING_PROXIMITY_EVALUATION,
3418     ) -> BOOL;
EvaluateProximityToPolygon( numVertices: UINT32, controlPolygon: *const POINT, pHitTestingInput: *const TOUCH_HIT_TESTING_INPUT, pProximityEval: *mut TOUCH_HIT_TESTING_PROXIMITY_EVALUATION, ) -> BOOL3419     pub fn EvaluateProximityToPolygon(
3420         numVertices: UINT32,
3421         controlPolygon: *const POINT,
3422         pHitTestingInput: *const TOUCH_HIT_TESTING_INPUT,
3423         pProximityEval: *mut TOUCH_HIT_TESTING_PROXIMITY_EVALUATION,
3424     ) -> BOOL;
PackTouchHitTestingProximityEvaluation( pHitTestingInput: *const TOUCH_HIT_TESTING_INPUT, pProximityEval: *const TOUCH_HIT_TESTING_PROXIMITY_EVALUATION, ) -> LRESULT3425     pub fn PackTouchHitTestingProximityEvaluation(
3426         pHitTestingInput: *const TOUCH_HIT_TESTING_INPUT,
3427         pProximityEval: *const TOUCH_HIT_TESTING_PROXIMITY_EVALUATION,
3428     ) -> LRESULT;
3429 }
3430 ENUM!{enum FEEDBACK_TYPE {
3431     FEEDBACK_TOUCH_CONTACTVISUALIZATION = 1,
3432     FEEDBACK_PEN_BARRELVISUALIZATION = 2,
3433     FEEDBACK_PEN_TAP = 3,
3434     FEEDBACK_PEN_DOUBLETAP = 4,
3435     FEEDBACK_PEN_PRESSANDHOLD = 5,
3436     FEEDBACK_PEN_RIGHTTAP = 6,
3437     FEEDBACK_TOUCH_TAP = 7,
3438     FEEDBACK_TOUCH_DOUBLETAP = 8,
3439     FEEDBACK_TOUCH_PRESSANDHOLD = 9,
3440     FEEDBACK_TOUCH_RIGHTTAP = 10,
3441     FEEDBACK_GESTURE_PRESSANDTAP = 11,
3442     FEEDBACK_MAX = 0xFFFFFFFF,
3443 }}
3444 pub const GWFS_INCLUDE_ANCESTORS: DWORD = 0x00000001;
3445 extern "system" {
GetWindowFeedbackSetting( hwnd: HWND, feedback: FEEDBACK_TYPE, dwFlags: DWORD, pSize: *mut UINT32, config: *mut VOID, ) -> BOOL3446     pub fn GetWindowFeedbackSetting(
3447         hwnd: HWND,
3448         feedback: FEEDBACK_TYPE,
3449         dwFlags: DWORD,
3450         pSize: *mut UINT32,
3451         config: *mut VOID,
3452     ) -> BOOL;
SetWindowFeedbackSetting( hwnd: HWND, feedback: FEEDBACK_TYPE, dwFlags: DWORD, size: UINT32, configuration: *const VOID, ) -> BOOL3453     pub fn SetWindowFeedbackSetting(
3454         hwnd: HWND,
3455         feedback: FEEDBACK_TYPE,
3456         dwFlags: DWORD,
3457         size: UINT32,
3458         configuration: *const VOID,
3459     ) -> BOOL;
3460 }
3461 STRUCT!{struct INPUT_TRANSFORM {
3462     m: [[f32; 4]; 4],
3463 }}
3464 extern "system" {
GetPointerInputTransform( pointerId: UINT32, historyCount: UINT32, inputTransform: *mut INPUT_TRANSFORM, ) -> BOOL3465     pub fn GetPointerInputTransform(
3466         pointerId: UINT32,
3467         historyCount: UINT32,
3468         inputTransform: *mut INPUT_TRANSFORM,
3469     ) -> BOOL;
3470 }
3471 STRUCT!{struct LASTINPUTINFO {
3472     cbSize: UINT,
3473     dwTime: DWORD,
3474 }}
3475 pub type PLASTINPUTINFO = *mut LASTINPUTINFO;
3476 extern "system" {
GetLastInputInfo( plii: PLASTINPUTINFO, ) -> BOOL3477     pub fn GetLastInputInfo(
3478         plii: PLASTINPUTINFO,
3479     ) -> BOOL;
MapVirtualKeyA( nCode: UINT, uMapType: UINT, ) -> UINT3480     pub fn MapVirtualKeyA(
3481         nCode: UINT,
3482         uMapType: UINT,
3483     ) -> UINT;
MapVirtualKeyW( nCode: UINT, uMapType: UINT, ) -> UINT3484     pub fn MapVirtualKeyW(
3485         nCode: UINT,
3486         uMapType: UINT,
3487     ) -> UINT;
MapVirtualKeyExA( nCode: UINT, uMapType: UINT, dwhkl: HKL, ) -> UINT3488     pub fn MapVirtualKeyExA(
3489         nCode: UINT,
3490         uMapType: UINT,
3491         dwhkl: HKL,
3492     ) -> UINT;
MapVirtualKeyExW( nCode: UINT, uMapType: UINT, dwhkl: HKL, ) -> UINT3493     pub fn MapVirtualKeyExW(
3494         nCode: UINT,
3495         uMapType: UINT,
3496         dwhkl: HKL,
3497     ) -> UINT;
3498 }
3499 pub const MAPVK_VK_TO_VSC: UINT = 0;
3500 pub const MAPVK_VSC_TO_VK: UINT = 1;
3501 pub const MAPVK_VK_TO_CHAR: UINT = 2;
3502 pub const MAPVK_VSC_TO_VK_EX: UINT = 3;
3503 pub const MAPVK_VK_TO_VSC_EX: UINT = 4;
3504 extern "system" {
GetInputState() -> BOOL3505     pub fn GetInputState() -> BOOL;
GetQueueStatus( flags: UINT, ) -> DWORD3506     pub fn GetQueueStatus(
3507         flags: UINT,
3508     ) -> DWORD;
GetCapture() -> HWND3509     pub fn GetCapture() -> HWND;
SetCapture( hWnd: HWND, ) -> HWND3510     pub fn SetCapture(
3511         hWnd: HWND,
3512     ) -> HWND;
ReleaseCapture() -> BOOL3513     pub fn ReleaseCapture() -> BOOL;
MsgWaitForMultipleObjects( nCount: DWORD, pHandles: *const HANDLE, fWaitAll: BOOL, dwMilliseconds: DWORD, dwWakeMask: DWORD, ) -> DWORD3514     pub fn MsgWaitForMultipleObjects(
3515         nCount: DWORD,
3516         pHandles: *const HANDLE,
3517         fWaitAll: BOOL,
3518         dwMilliseconds: DWORD,
3519         dwWakeMask: DWORD,
3520     ) -> DWORD;
MsgWaitForMultipleObjectsEx( nCount: DWORD, pHandles: *const HANDLE, dwMilliseconds: DWORD, dwWakeMask: DWORD, dwFlags: DWORD, ) -> DWORD3521     pub fn MsgWaitForMultipleObjectsEx(
3522         nCount: DWORD,
3523         pHandles: *const HANDLE,
3524         dwMilliseconds: DWORD,
3525         dwWakeMask: DWORD,
3526         dwFlags: DWORD,
3527     ) -> DWORD;
3528 }
3529 pub const MWMO_WAITALL: UINT = 0x0001;
3530 pub const MWMO_ALERTABLE: UINT = 0x0002;
3531 pub const MWMO_INPUTAVAILABLE: UINT = 0x0004;
3532 pub const QS_KEY: UINT = 0x0001;
3533 pub const QS_MOUSEMOVE: UINT = 0x0002;
3534 pub const QS_MOUSEBUTTON: UINT = 0x0004;
3535 pub const QS_POSTMESSAGE: UINT = 0x0008;
3536 pub const QS_TIMER: UINT = 0x0010;
3537 pub const QS_PAINT: UINT = 0x0020;
3538 pub const QS_SENDMESSAGE: UINT = 0x0040;
3539 pub const QS_HOTKEY: UINT = 0x0080;
3540 pub const QS_ALLPOSTMESSAGE: UINT = 0x0100;
3541 pub const QS_RAWINPUT: UINT = 0x0400;
3542 pub const QS_TOUCH: UINT = 0x0800;
3543 pub const QS_POINTER: UINT = 0x1000;
3544 pub const QS_MOUSE: UINT = QS_MOUSEMOVE | QS_MOUSEBUTTON;
3545 pub const QS_INPUT: UINT = QS_MOUSE | QS_KEY | QS_RAWINPUT | QS_TOUCH | QS_POINTER;
3546 pub const QS_ALLEVENTS: UINT = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY;
3547 pub const QS_ALLINPUT: UINT = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY
3548     | QS_SENDMESSAGE;
3549 pub const USER_TIMER_MAXIMUM: UINT = 0x7FFFFFFF;
3550 pub const USER_TIMER_MINIMUM: UINT = 0x0000000A;
3551 extern "system" {
SetTimer( hWnd: HWND, nIDEvent: UINT_PTR, uElapse: UINT, lpTimerFunc: TIMERPROC, ) -> UINT_PTR3552     pub fn SetTimer(
3553         hWnd: HWND,
3554         nIDEvent: UINT_PTR,
3555         uElapse: UINT,
3556         lpTimerFunc: TIMERPROC,
3557     ) -> UINT_PTR;
3558 }
3559 pub const TIMERV_DEFAULT_COALESCING: ULONG = 0;
3560 pub const TIMERV_NO_COALESCING: ULONG = 0xFFFFFFFF;
3561 pub const TIMERV_COALESCING_MIN: ULONG = 1;
3562 pub const TIMERV_COALESCING_MAX: ULONG = 0x7FFFFFF5;
3563 extern "system" {
SetCoalescableTimer( hWnd: HWND, nIDEvent: UINT_PTR, uElapse: UINT, lpTimerFunc: TIMERPROC, uToleranceDelay: ULONG, ) -> UINT_PTR3564     pub fn SetCoalescableTimer(
3565         hWnd: HWND,
3566         nIDEvent: UINT_PTR,
3567         uElapse: UINT,
3568         lpTimerFunc: TIMERPROC,
3569         uToleranceDelay: ULONG,
3570     ) -> UINT_PTR;
KillTimer( hWnd: HWND, uIDEvent: UINT_PTR, ) -> BOOL3571     pub fn KillTimer(
3572         hWnd: HWND,
3573         uIDEvent: UINT_PTR,
3574     ) -> BOOL;
IsWindowUnicode( hWnd: HWND, ) -> BOOL3575     pub fn IsWindowUnicode(
3576         hWnd: HWND,
3577     ) -> BOOL;
EnableWindow( hWnd: HWND, bEnable: BOOL, ) -> BOOL3578     pub fn EnableWindow(
3579         hWnd: HWND,
3580         bEnable: BOOL,
3581     ) -> BOOL;
IsWindowEnabled( hWnd: HWND, ) -> BOOL3582     pub fn IsWindowEnabled(
3583         hWnd: HWND,
3584     ) -> BOOL;
LoadAcceleratorsA( hInstance: HINSTANCE, lpTableName: LPCSTR, ) -> HACCEL3585     pub fn LoadAcceleratorsA(
3586         hInstance: HINSTANCE,
3587         lpTableName: LPCSTR,
3588     ) -> HACCEL;
LoadAcceleratorsW( hInstance: HINSTANCE, lpTableName: LPCWSTR, ) -> HACCEL3589     pub fn LoadAcceleratorsW(
3590         hInstance: HINSTANCE,
3591         lpTableName: LPCWSTR,
3592     ) -> HACCEL;
CreateAcceleratorTableA( paccel: LPACCEL, cAccel: c_int, ) -> HACCEL3593     pub fn CreateAcceleratorTableA(
3594         paccel: LPACCEL,
3595         cAccel: c_int,
3596     ) -> HACCEL;
CreateAcceleratorTableW( paccel: LPACCEL, cAccel: c_int, ) -> HACCEL3597     pub fn CreateAcceleratorTableW(
3598         paccel: LPACCEL,
3599         cAccel: c_int,
3600     ) -> HACCEL;
DestroyAcceleratorTable( hAccel: HACCEL, ) -> BOOL3601     pub fn DestroyAcceleratorTable(
3602         hAccel: HACCEL,
3603     ) -> BOOL;
CopyAcceleratorTableA( hAccelSrc: HACCEL, lpAccelDst: LPACCEL, cAccelEntries: c_int, ) -> c_int3604     pub fn CopyAcceleratorTableA(
3605         hAccelSrc: HACCEL,
3606         lpAccelDst: LPACCEL,
3607         cAccelEntries: c_int,
3608     ) -> c_int;
CopyAcceleratorTableW( hAccelSrc: HACCEL, lpAccelDst: LPACCEL, cAccelEntries: c_int, ) -> c_int3609     pub fn CopyAcceleratorTableW(
3610         hAccelSrc: HACCEL,
3611         lpAccelDst: LPACCEL,
3612         cAccelEntries: c_int,
3613     ) -> c_int;
TranslateAcceleratorA( hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG, ) -> c_int3614     pub fn TranslateAcceleratorA(
3615         hWnd: HWND,
3616         hAccTable: HACCEL,
3617         lpMsg: LPMSG,
3618     ) -> c_int;
TranslateAcceleratorW( hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG, ) -> c_int3619     pub fn TranslateAcceleratorW(
3620         hWnd: HWND,
3621         hAccTable: HACCEL,
3622         lpMsg: LPMSG,
3623     ) -> c_int;
3624 }
3625 pub const SM_CXSCREEN: c_int = 0;
3626 pub const SM_CYSCREEN: c_int = 1;
3627 pub const SM_CXVSCROLL: c_int = 2;
3628 pub const SM_CYHSCROLL: c_int = 3;
3629 pub const SM_CYCAPTION: c_int = 4;
3630 pub const SM_CXBORDER: c_int = 5;
3631 pub const SM_CYBORDER: c_int = 6;
3632 pub const SM_CXDLGFRAME: c_int = 7;
3633 pub const SM_CYDLGFRAME: c_int = 8;
3634 pub const SM_CYVTHUMB: c_int = 9;
3635 pub const SM_CXHTHUMB: c_int = 10;
3636 pub const SM_CXICON: c_int = 11;
3637 pub const SM_CYICON: c_int = 12;
3638 pub const SM_CXCURSOR: c_int = 13;
3639 pub const SM_CYCURSOR: c_int = 14;
3640 pub const SM_CYMENU: c_int = 15;
3641 pub const SM_CXFULLSCREEN: c_int = 16;
3642 pub const SM_CYFULLSCREEN: c_int = 17;
3643 pub const SM_CYKANJIWINDOW: c_int = 18;
3644 pub const SM_MOUSEPRESENT: c_int = 19;
3645 pub const SM_CYVSCROLL: c_int = 20;
3646 pub const SM_CXHSCROLL: c_int = 21;
3647 pub const SM_DEBUG: c_int = 22;
3648 pub const SM_SWAPBUTTON: c_int = 23;
3649 pub const SM_RESERVED1: c_int = 24;
3650 pub const SM_RESERVED2: c_int = 25;
3651 pub const SM_RESERVED3: c_int = 26;
3652 pub const SM_RESERVED4: c_int = 27;
3653 pub const SM_CXMIN: c_int = 28;
3654 pub const SM_CYMIN: c_int = 29;
3655 pub const SM_CXSIZE: c_int = 30;
3656 pub const SM_CYSIZE: c_int = 31;
3657 pub const SM_CXFRAME: c_int = 32;
3658 pub const SM_CYFRAME: c_int = 33;
3659 pub const SM_CXMINTRACK: c_int = 34;
3660 pub const SM_CYMINTRACK: c_int = 35;
3661 pub const SM_CXDOUBLECLK: c_int = 36;
3662 pub const SM_CYDOUBLECLK: c_int = 37;
3663 pub const SM_CXICONSPACING: c_int = 38;
3664 pub const SM_CYICONSPACING: c_int = 39;
3665 pub const SM_MENUDROPALIGNMENT: c_int = 40;
3666 pub const SM_PENWINDOWS: c_int = 41;
3667 pub const SM_DBCSENABLED: c_int = 42;
3668 pub const SM_CMOUSEBUTTONS: c_int = 43;
3669 pub const SM_CXFIXEDFRAME: c_int = SM_CXDLGFRAME;
3670 pub const SM_CYFIXEDFRAME: c_int = SM_CYDLGFRAME;
3671 pub const SM_CXSIZEFRAME: c_int = SM_CXFRAME;
3672 pub const SM_CYSIZEFRAME: c_int = SM_CYFRAME;
3673 pub const SM_SECURE: c_int = 44;
3674 pub const SM_CXEDGE: c_int = 45;
3675 pub const SM_CYEDGE: c_int = 46;
3676 pub const SM_CXMINSPACING: c_int = 47;
3677 pub const SM_CYMINSPACING: c_int = 48;
3678 pub const SM_CXSMICON: c_int = 49;
3679 pub const SM_CYSMICON: c_int = 50;
3680 pub const SM_CYSMCAPTION: c_int = 51;
3681 pub const SM_CXSMSIZE: c_int = 52;
3682 pub const SM_CYSMSIZE: c_int = 53;
3683 pub const SM_CXMENUSIZE: c_int = 54;
3684 pub const SM_CYMENUSIZE: c_int = 55;
3685 pub const SM_ARRANGE: c_int = 56;
3686 pub const SM_CXMINIMIZED: c_int = 57;
3687 pub const SM_CYMINIMIZED: c_int = 58;
3688 pub const SM_CXMAXTRACK: c_int = 59;
3689 pub const SM_CYMAXTRACK: c_int = 60;
3690 pub const SM_CXMAXIMIZED: c_int = 61;
3691 pub const SM_CYMAXIMIZED: c_int = 62;
3692 pub const SM_NETWORK: c_int = 63;
3693 pub const SM_CLEANBOOT: c_int = 67;
3694 pub const SM_CXDRAG: c_int = 68;
3695 pub const SM_CYDRAG: c_int = 69;
3696 pub const SM_SHOWSOUNDS: c_int = 70;
3697 pub const SM_CXMENUCHECK: c_int = 71;
3698 pub const SM_CYMENUCHECK: c_int = 72;
3699 pub const SM_SLOWMACHINE: c_int = 73;
3700 pub const SM_MIDEASTENABLED: c_int = 74;
3701 pub const SM_MOUSEWHEELPRESENT: c_int = 75;
3702 pub const SM_XVIRTUALSCREEN: c_int = 76;
3703 pub const SM_YVIRTUALSCREEN: c_int = 77;
3704 pub const SM_CXVIRTUALSCREEN: c_int = 78;
3705 pub const SM_CYVIRTUALSCREEN: c_int = 79;
3706 pub const SM_CMONITORS: c_int = 80;
3707 pub const SM_SAMEDISPLAYFORMAT: c_int = 81;
3708 pub const SM_IMMENABLED: c_int = 82;
3709 pub const SM_CXFOCUSBORDER: c_int = 83;
3710 pub const SM_CYFOCUSBORDER: c_int = 84;
3711 pub const SM_TABLETPC: c_int = 86;
3712 pub const SM_MEDIACENTER: c_int = 87;
3713 pub const SM_STARTER: c_int = 88;
3714 pub const SM_SERVERR2: c_int = 89;
3715 pub const SM_MOUSEHORIZONTALWHEELPRESENT: c_int = 91;
3716 pub const SM_CXPADDEDBORDER: c_int = 92;
3717 pub const SM_DIGITIZER: c_int = 94;
3718 pub const SM_MAXIMUMTOUCHES: c_int = 95;
3719 pub const SM_CMETRICS: c_int = 97;
3720 pub const SM_REMOTESESSION: c_int = 0x1000;
3721 pub const SM_SHUTTINGDOWN: c_int = 0x2000;
3722 pub const SM_REMOTECONTROL: c_int = 0x2001;
3723 pub const SM_CARETBLINKINGENABLED: c_int = 0x2002;
3724 pub const SM_CONVERTIBLESLATEMODE: c_int = 0x2003;
3725 pub const SM_SYSTEMDOCKED: c_int = 0x2004;
3726 extern "system" {
GetSystemMetrics( nIndex: c_int, ) -> c_int3727     pub fn GetSystemMetrics(
3728         nIndex: c_int,
3729     ) -> c_int;
GetSystemMetricsForDpi( nIndex: c_int, dpi: UINT, ) -> c_int3730     pub fn GetSystemMetricsForDpi(
3731         nIndex: c_int,
3732         dpi: UINT,
3733     ) -> c_int;
LoadMenuA( hInstance: HINSTANCE, lpMenuName: LPCSTR, ) -> HMENU3734     pub fn LoadMenuA(
3735         hInstance: HINSTANCE,
3736         lpMenuName: LPCSTR,
3737     ) -> HMENU;
LoadMenuW( hInstance: HINSTANCE, lpMenuName: LPCWSTR, ) -> HMENU3738     pub fn LoadMenuW(
3739         hInstance: HINSTANCE,
3740         lpMenuName: LPCWSTR,
3741     ) -> HMENU;
LoadMenuIndirectA( lpMenuTemplate: *const MENUTEMPLATEA, ) -> HMENU3742     pub fn LoadMenuIndirectA(
3743         lpMenuTemplate: *const MENUTEMPLATEA,
3744     ) -> HMENU;
LoadMenuIndirectW( lpMenuTemplate: *const MENUTEMPLATEW, ) -> HMENU3745     pub fn LoadMenuIndirectW(
3746         lpMenuTemplate: *const MENUTEMPLATEW,
3747     ) -> HMENU;
GetMenu( hWnd: HWND, ) -> HMENU3748     pub fn GetMenu(
3749         hWnd: HWND,
3750     ) -> HMENU;
SetMenu( hWnd: HWND, hMenu: HMENU, ) -> BOOL3751     pub fn SetMenu(
3752         hWnd: HWND,
3753         hMenu: HMENU,
3754     ) -> BOOL;
ChangeMenuA( hMenu: HMENU, cmd: UINT, lpszNewItem: LPCSTR, cmdInsert: UINT, flags: UINT, ) -> BOOL3755     pub fn ChangeMenuA(
3756         hMenu: HMENU,
3757         cmd: UINT,
3758         lpszNewItem: LPCSTR,
3759         cmdInsert: UINT,
3760         flags: UINT,
3761     ) -> BOOL;
ChangeMenuW( hMenu: HMENU, cmd: UINT, lpszNewItem: LPCWSTR, cmdInsert: UINT, flags: UINT, ) -> BOOL3762     pub fn ChangeMenuW(
3763         hMenu: HMENU,
3764         cmd: UINT,
3765         lpszNewItem: LPCWSTR,
3766         cmdInsert: UINT,
3767         flags: UINT,
3768     ) -> BOOL;
HiliteMenuItem( hWnd: HWND, hMenu: HMENU, uIDHiliteItem: UINT, uHilite: UINT, ) -> BOOL3769     pub fn HiliteMenuItem(
3770         hWnd: HWND,
3771         hMenu: HMENU,
3772         uIDHiliteItem: UINT,
3773         uHilite: UINT,
3774     ) -> BOOL;
GetMenuStringA( hMenu: HMENU, uIDItem: UINT, lpString: LPSTR, cchMax: c_int, flags: UINT, ) -> c_int3775     pub fn GetMenuStringA(
3776         hMenu: HMENU,
3777         uIDItem: UINT,
3778         lpString: LPSTR,
3779         cchMax: c_int,
3780         flags: UINT,
3781     ) -> c_int;
GetMenuStringW( hMenu: HMENU, uIDItem: UINT, lpString: LPWSTR, cchMax: c_int, flags: UINT, ) -> c_int3782     pub fn GetMenuStringW(
3783         hMenu: HMENU,
3784         uIDItem: UINT,
3785         lpString: LPWSTR,
3786         cchMax: c_int,
3787         flags: UINT,
3788     ) -> c_int;
GetMenuState( hMenu: HMENU, uId: UINT, uFlags: UINT, ) -> UINT3789     pub fn GetMenuState(
3790         hMenu: HMENU,
3791         uId: UINT,
3792         uFlags: UINT,
3793     ) -> UINT;
DrawMenuBar( hwnd: HWND, ) -> BOOL3794     pub fn DrawMenuBar(
3795         hwnd: HWND,
3796     ) -> BOOL;
3797 }
3798 pub const PMB_ACTIVE: DWORD = 0x00000001;
3799 extern "system" {
GetSystemMenu( hWnd: HWND, bRevert: BOOL, ) -> HMENU3800     pub fn GetSystemMenu(
3801         hWnd: HWND,
3802         bRevert: BOOL,
3803     ) -> HMENU;
CreateMenu() -> HMENU3804     pub fn CreateMenu() -> HMENU;
CreatePopupMenu() ->HMENU3805     pub fn CreatePopupMenu() ->HMENU;
DestroyMenu( hMenu: HMENU, ) -> BOOL3806     pub fn DestroyMenu(
3807         hMenu: HMENU,
3808     ) -> BOOL;
CheckMenuItem( hMenu: HMENU, uIDCheckItem: UINT, uCheck: UINT, ) -> DWORD3809     pub fn CheckMenuItem(
3810         hMenu: HMENU,
3811         uIDCheckItem: UINT,
3812         uCheck: UINT,
3813     ) -> DWORD;
EnableMenuItem( hMenu: HMENU, uIDEnableItem: UINT, uEnable: UINT, ) -> BOOL3814     pub fn EnableMenuItem(
3815         hMenu: HMENU,
3816         uIDEnableItem: UINT,
3817         uEnable: UINT,
3818     ) -> BOOL;
GetSubMenu( hMenu: HMENU, nPos: c_int, ) -> HMENU3819     pub fn GetSubMenu(
3820         hMenu: HMENU,
3821         nPos: c_int,
3822     ) -> HMENU;
GetMenuItemID( hMenu: HMENU, nPos: c_int, ) -> UINT3823     pub fn GetMenuItemID(
3824         hMenu: HMENU,
3825         nPos: c_int,
3826     ) -> UINT;
GetMenuItemCount( hMenu: HMENU, ) -> c_int3827     pub fn GetMenuItemCount(
3828         hMenu: HMENU,
3829     ) -> c_int;
InsertMenuA( hMenu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR, ) -> BOOL3830     pub fn InsertMenuA(
3831         hMenu: HMENU,
3832         uPosition: UINT,
3833         uFlags: UINT,
3834         uIDNewItem: UINT_PTR,
3835         lpNewItem: LPCSTR,
3836     ) -> BOOL;
InsertMenuW( hMenu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR, ) -> BOOL3837     pub fn InsertMenuW(
3838         hMenu: HMENU,
3839         uPosition: UINT,
3840         uFlags: UINT,
3841         uIDNewItem: UINT_PTR,
3842         lpNewItem: LPCWSTR,
3843     ) -> BOOL;
AppendMenuA( hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR, ) -> BOOL3844     pub fn AppendMenuA(
3845         hMenu: HMENU,
3846         uFlags: UINT,
3847         uIDNewItem: UINT_PTR,
3848         lpNewItem: LPCSTR,
3849     ) -> BOOL;
AppendMenuW( hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR, ) -> BOOL3850     pub fn AppendMenuW(
3851         hMenu: HMENU,
3852         uFlags: UINT,
3853         uIDNewItem: UINT_PTR,
3854         lpNewItem: LPCWSTR,
3855     ) -> BOOL;
ModifyMenuA( hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR, ) -> BOOL3856     pub fn ModifyMenuA(
3857         hMnu: HMENU,
3858         uPosition: UINT,
3859         uFlags: UINT,
3860         uIDNewItem: UINT_PTR,
3861         lpNewItem: LPCSTR,
3862     ) -> BOOL;
ModifyMenuW( hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR, ) -> BOOL3863     pub fn ModifyMenuW(
3864         hMnu: HMENU,
3865         uPosition: UINT,
3866         uFlags: UINT,
3867         uIDNewItem: UINT_PTR,
3868         lpNewItem: LPCWSTR,
3869     ) -> BOOL;
RemoveMenu( hMenu: HMENU, uPosition: UINT, uFlags: UINT, ) -> BOOL3870     pub fn RemoveMenu(
3871         hMenu: HMENU,
3872         uPosition: UINT,
3873         uFlags: UINT,
3874     ) -> BOOL;
DeleteMenu( hMenu: HMENU, uPosition: UINT, uFlags: UINT, ) -> BOOL3875     pub fn DeleteMenu(
3876         hMenu: HMENU,
3877         uPosition: UINT,
3878         uFlags: UINT,
3879     ) -> BOOL;
SetMenuItemBitmaps( hMenu: HMENU, uPosition: UINT, uFlags: UINT, hBitmapUnchecked: HBITMAP, hBitmapChecked: HBITMAP, ) -> BOOL3880     pub fn SetMenuItemBitmaps(
3881         hMenu: HMENU,
3882         uPosition: UINT,
3883         uFlags: UINT,
3884         hBitmapUnchecked: HBITMAP,
3885         hBitmapChecked: HBITMAP,
3886     ) -> BOOL;
GetMenuCheckMarkDimensions() -> LONG3887     pub fn GetMenuCheckMarkDimensions() -> LONG;
TrackPopupMenu( hMenu: HMENU, uFlags: UINT, x: c_int, y: c_int, nReserved: c_int, hWnd: HWND, prcRect: *const RECT, ) -> BOOL3888     pub fn TrackPopupMenu(
3889         hMenu: HMENU,
3890         uFlags: UINT,
3891         x: c_int,
3892         y: c_int,
3893         nReserved: c_int,
3894         hWnd: HWND,
3895         prcRect: *const RECT,
3896     ) -> BOOL;
3897 }
3898 pub const MNC_IGNORE: DWORD = 0;
3899 pub const MNC_CLOSE: DWORD = 1;
3900 pub const MNC_EXECUTE: DWORD = 2;
3901 pub const MNC_SELECT: DWORD = 3;
3902 STRUCT!{struct TPMPARAMS {
3903     cbSize: UINT,
3904     rcExclude: RECT,
3905 }}
3906 pub type LPTPMPARAMS = *mut TPMPARAMS;
3907 extern "system" {
TrackPopupMenuEx( hMenu: HMENU, uFlags: UINT, x: INT, y: INT, hwnd: HWND, lptpm: LPTPMPARAMS, ) -> BOOL3908     pub fn TrackPopupMenuEx(
3909         hMenu: HMENU,
3910         uFlags: UINT,
3911         x: INT,
3912         y: INT,
3913         hwnd: HWND,
3914         lptpm: LPTPMPARAMS,
3915     ) -> BOOL;
CalculatePopupWindowPosition( anchorPoint: *const POINT, windowSize: *const SIZE, flags: UINT, excludeRect: *mut RECT, popupWindowPosition: *mut RECT, ) -> BOOL3916     pub fn CalculatePopupWindowPosition(
3917         anchorPoint: *const POINT,
3918         windowSize: *const SIZE,
3919         flags: UINT,
3920         excludeRect: *mut RECT,
3921         popupWindowPosition: *mut RECT,
3922     ) -> BOOL;
3923 }
3924 pub const MNS_NOCHECK: DWORD = 0x80000000;
3925 pub const MNS_MODELESS: DWORD = 0x40000000;
3926 pub const MNS_DRAGDROP: DWORD = 0x20000000;
3927 pub const MNS_AUTODISMISS: DWORD = 0x10000000;
3928 pub const MNS_NOTIFYBYPOS: DWORD = 0x08000000;
3929 pub const MNS_CHECKORBMP: DWORD = 0x04000000;
3930 pub const MIM_MAXHEIGHT: DWORD = 0x00000001;
3931 pub const MIM_BACKGROUND: DWORD = 0x00000002;
3932 pub const MIM_HELPID: DWORD = 0x00000004;
3933 pub const MIM_MENUDATA: DWORD = 0x00000008;
3934 pub const MIM_STYLE: DWORD = 0x00000010;
3935 pub const MIM_APPLYTOSUBMENUS: DWORD = 0x80000000;
3936 STRUCT!{struct MENUINFO {
3937     cbSize: DWORD,
3938     fMask: DWORD,
3939     dwStyle: DWORD,
3940     cyMax: UINT,
3941     hbrBack: HBRUSH,
3942     dwContextHelpID: DWORD,
3943     dwMenuData: ULONG_PTR,
3944 }}
3945 pub type LPMENUINFO = *mut MENUINFO;
3946 pub type LPCMENUINFO = *const MENUINFO;
3947 extern "system" {
GetMenuInfo( hMenu: HMENU, lpcmi: LPMENUINFO, ) -> BOOL3948     pub fn GetMenuInfo(
3949         hMenu: HMENU,
3950         lpcmi: LPMENUINFO,
3951     ) -> BOOL;
SetMenuInfo( hMenu: HMENU, lpcmi: LPCMENUINFO, ) -> BOOL3952     pub fn SetMenuInfo(
3953         hMenu: HMENU,
3954         lpcmi: LPCMENUINFO,
3955     ) -> BOOL;
EndMenu( hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR, ) -> BOOL3956     pub fn EndMenu(
3957         hMenu: HMENU,
3958         uFlags: UINT,
3959         uIDNewItem: UINT_PTR,
3960         lpNewItem: LPCSTR,
3961     ) -> BOOL;
3962 }
3963 pub const MND_CONTINUE: DWORD = 0;
3964 pub const MND_ENDMENU: DWORD = 1;
3965 STRUCT!{struct MENUGETOBJECTINFO {
3966     dwFlags: DWORD,
3967     uPos: UINT,
3968     hmenu: HMENU,
3969     riid: PVOID,
3970     pvObj: PVOID,
3971 }}
3972 pub type PMENUGETOBJECTINFO = *mut MENUGETOBJECTINFO;
3973 pub const MNGOF_TOPGAP: DWORD = 0x00000001;
3974 pub const MNGOF_BOTTOMGAP: DWORD = 0x00000002;
3975 pub const MNGO_NOINTERFACE: DWORD = 0x00000000;
3976 pub const MNGO_NOERROR: DWORD = 0x00000001;
3977 pub const MIIM_STATE: DWORD = 0x00000001;
3978 pub const MIIM_ID: DWORD = 0x00000002;
3979 pub const MIIM_SUBMENU: DWORD = 0x00000004;
3980 pub const MIIM_CHECKMARKS: DWORD = 0x00000008;
3981 pub const MIIM_TYPE: DWORD = 0x00000010;
3982 pub const MIIM_DATA: DWORD = 0x00000020;
3983 pub const MIIM_STRING: DWORD = 0x00000040;
3984 pub const MIIM_BITMAP: DWORD = 0x00000080;
3985 pub const MIIM_FTYPE: DWORD = 0x00000100;
3986 pub const HBMMENU_CALLBACK: HBITMAP = -1isize as HBITMAP;
3987 pub const HBMMENU_SYSTEM: HBITMAP = 1 as HBITMAP;
3988 pub const HBMMENU_MBAR_RESTORE: HBITMAP = 2 as HBITMAP;
3989 pub const HBMMENU_MBAR_MINIMIZE: HBITMAP = 3 as HBITMAP;
3990 pub const HBMMENU_MBAR_CLOSE: HBITMAP = 5 as HBITMAP;
3991 pub const HBMMENU_MBAR_CLOSE_D: HBITMAP = 6 as HBITMAP;
3992 pub const HBMMENU_MBAR_MINIMIZE_D: HBITMAP = 7 as HBITMAP;
3993 pub const HBMMENU_POPUP_CLOSE: HBITMAP = 8 as HBITMAP;
3994 pub const HBMMENU_POPUP_RESTORE: HBITMAP = 9 as HBITMAP;
3995 pub const HBMMENU_POPUP_MAXIMIZE: HBITMAP = 10 as HBITMAP;
3996 pub const HBMMENU_POPUP_MINIMIZE: HBITMAP = 11 as HBITMAP;
3997 STRUCT!{struct MENUITEMINFOA {
3998     cbSize: UINT,
3999     fMask: UINT,
4000     fType: UINT,
4001     fState: UINT,
4002     wID: UINT,
4003     hSubMenu: HMENU,
4004     hbmpChecked: HBITMAP,
4005     hbmpUnchecked: HBITMAP,
4006     dwItemData: ULONG_PTR,
4007     dwTypeData: LPSTR,
4008     cch: UINT,
4009     hbmpItem: HBITMAP,
4010 }}
4011 pub type LPMENUITEMINFOA = *mut MENUITEMINFOA;
4012 pub type LPCMENUITEMINFOA = *const MENUITEMINFOA;
4013 STRUCT!{struct MENUITEMINFOW {
4014     cbSize: UINT,
4015     fMask: UINT,
4016     fType: UINT,
4017     fState: UINT,
4018     wID: UINT,
4019     hSubMenu: HMENU,
4020     hbmpChecked: HBITMAP,
4021     hbmpUnchecked: HBITMAP,
4022     dwItemData: ULONG_PTR,
4023     dwTypeData: LPWSTR,
4024     cch: UINT,
4025     hbmpItem: HBITMAP,
4026 }}
4027 pub type LPMENUITEMINFOW = *mut MENUITEMINFOW;
4028 pub type LPCMENUITEMINFOW = *const MENUITEMINFOW;
4029 extern "system" {
InsertMenuItemA( hmenu: HMENU, item: UINT, fByPosition: BOOL, lpmi: LPCMENUITEMINFOA, ) -> BOOL4030     pub fn InsertMenuItemA(
4031         hmenu: HMENU,
4032         item: UINT,
4033         fByPosition: BOOL,
4034         lpmi: LPCMENUITEMINFOA,
4035     ) -> BOOL;
InsertMenuItemW( hmenu: HMENU, item: UINT, fByPosition: BOOL, lpmi: LPCMENUITEMINFOW, ) -> BOOL4036     pub fn InsertMenuItemW(
4037         hmenu: HMENU,
4038         item: UINT,
4039         fByPosition: BOOL,
4040         lpmi: LPCMENUITEMINFOW,
4041     ) -> BOOL;
GetMenuItemInfoA( hMenu: HMENU, uItem: UINT, fByPosition: BOOL, lpmii: LPMENUITEMINFOA, ) -> BOOL4042     pub fn GetMenuItemInfoA(
4043         hMenu: HMENU,
4044         uItem: UINT,
4045         fByPosition: BOOL,
4046         lpmii: LPMENUITEMINFOA,
4047     ) -> BOOL;
GetMenuItemInfoW( hMenu: HMENU, uItem: UINT, fByPosition: BOOL, lpmii: LPMENUITEMINFOW, ) -> BOOL4048     pub fn GetMenuItemInfoW(
4049         hMenu: HMENU,
4050         uItem: UINT,
4051         fByPosition: BOOL,
4052         lpmii: LPMENUITEMINFOW,
4053     ) -> BOOL;
SetMenuItemInfoA( hmenu: HMENU, item: UINT, fByPositon: BOOL, lpmii: LPCMENUITEMINFOA, ) -> BOOL4054     pub fn SetMenuItemInfoA(
4055         hmenu: HMENU,
4056         item: UINT,
4057         fByPositon: BOOL,
4058         lpmii: LPCMENUITEMINFOA,
4059     ) -> BOOL;
SetMenuItemInfoW( hmenu: HMENU, item: UINT, fByPositon: BOOL, lpmii: LPCMENUITEMINFOW, ) -> BOOL4060     pub fn SetMenuItemInfoW(
4061         hmenu: HMENU,
4062         item: UINT,
4063         fByPositon: BOOL,
4064         lpmii: LPCMENUITEMINFOW,
4065     ) -> BOOL;
4066 }
4067 pub const GMDI_USEDISABLED: DWORD = 0x0001;
4068 pub const GMDI_GOINTOPOPUPS: DWORD = 0x0002;
4069 extern "system" {
GetMenuDefaultItem( hMenu: HMENU, fByPos: UINT, gmdiFlags: UINT, ) -> UINT4070     pub fn GetMenuDefaultItem(
4071         hMenu: HMENU,
4072         fByPos: UINT,
4073         gmdiFlags: UINT,
4074     ) -> UINT;
SetMenuDefaultItem( hMenu: HMENU, uItem: UINT, fByPos: UINT, ) -> BOOL4075     pub fn SetMenuDefaultItem(
4076         hMenu: HMENU,
4077         uItem: UINT,
4078         fByPos: UINT,
4079     ) -> BOOL;
GetMenuItemRect( hWnd: HWND, hMenu: HMENU, uItem: UINT, lprcItem: LPRECT, ) -> BOOL4080     pub fn GetMenuItemRect(
4081         hWnd: HWND,
4082         hMenu: HMENU,
4083         uItem: UINT,
4084         lprcItem: LPRECT,
4085     ) -> BOOL;
MenuItemFromPoint( hWnd: HWND, hMenu: HMENU, ptScreen: POINT, ) -> c_int4086     pub fn MenuItemFromPoint(
4087         hWnd: HWND,
4088         hMenu: HMENU,
4089         ptScreen: POINT,
4090     ) -> c_int;
4091 }
4092 pub const TPM_LEFTBUTTON: UINT = 0x0000;
4093 pub const TPM_RIGHTBUTTON: UINT = 0x0002;
4094 pub const TPM_LEFTALIGN: UINT = 0x0000;
4095 pub const TPM_CENTERALIGN: UINT = 0x0004;
4096 pub const TPM_RIGHTALIGN: UINT = 0x0008;
4097 pub const TPM_TOPALIGN: UINT = 0x0000;
4098 pub const TPM_VCENTERALIGN: UINT = 0x0010;
4099 pub const TPM_BOTTOMALIGN: UINT = 0x0020;
4100 pub const TPM_HORIZONTAL: UINT = 0x0000;
4101 pub const TPM_VERTICAL: UINT = 0x0040;
4102 pub const TPM_NONOTIFY: UINT = 0x0080;
4103 pub const TPM_RETURNCMD: UINT = 0x0100;
4104 pub const TPM_RECURSE: UINT = 0x0001;
4105 pub const TPM_HORPOSANIMATION: UINT = 0x0400;
4106 pub const TPM_HORNEGANIMATION: UINT = 0x0800;
4107 pub const TPM_VERPOSANIMATION: UINT = 0x1000;
4108 pub const TPM_VERNEGANIMATION: UINT = 0x2000;
4109 pub const TPM_NOANIMATION: UINT = 0x4000;
4110 pub const TPM_LAYOUTRTL: UINT = 0x8000;
4111 pub const TPM_WORKAREA: UINT = 0x10000;
4112 STRUCT!{struct DROPSTRUCT {
4113     hwndSource: HWND,
4114     hwndSink: HWND,
4115     wFmt: DWORD,
4116     dwData: ULONG_PTR,
4117     ptDrop: POINT,
4118     dwControlData: DWORD,
4119 }}
4120 pub type PDROPSTRUCT = *mut DROPSTRUCT;
4121 pub type LPDROPSTRUCT = *mut DROPSTRUCT;
4122 pub const DOF_EXECUTABLE: DWORD = 0x8001;
4123 pub const DOF_DOCUMENT: DWORD = 0x8002;
4124 pub const DOF_DIRECTORY: DWORD = 0x8003;
4125 pub const DOF_MULTIPLE: DWORD = 0x8004;
4126 pub const DOF_PROGMAN: DWORD = 0x0001;
4127 pub const DOF_SHELLDATA: DWORD = 0x0002;
4128 pub const DO_DROPFILE: DWORD = 0x454C4946;
4129 pub const DO_PRINTFILE: DWORD = 0x544E5250;
4130 extern "system" {
DragObject( hwndParent: HWND, hwndFrom: HWND, fmt: UINT, data: ULONG_PTR, hcur: HCURSOR, ) -> DWORD4131     pub fn DragObject(
4132         hwndParent: HWND,
4133         hwndFrom: HWND,
4134         fmt: UINT,
4135         data: ULONG_PTR,
4136         hcur: HCURSOR,
4137     ) -> DWORD;
DragDetect( hwnd: HWND, pt: POINT, ) -> BOOL4138     pub fn DragDetect(
4139         hwnd: HWND,
4140         pt: POINT,
4141     ) -> BOOL;
DrawIcon( hDC: HDC, x: c_int, y: c_int, hIcon: HICON, ) -> BOOL4142     pub fn DrawIcon(
4143         hDC: HDC,
4144         x: c_int,
4145         y: c_int,
4146         hIcon: HICON,
4147     ) -> BOOL;
4148 }
4149 pub const DT_TOP: UINT = 0x00000000;
4150 pub const DT_LEFT: UINT = 0x00000000;
4151 pub const DT_CENTER: UINT = 0x00000001;
4152 pub const DT_RIGHT: UINT = 0x00000002;
4153 pub const DT_VCENTER: UINT = 0x00000004;
4154 pub const DT_BOTTOM: UINT = 0x00000008;
4155 pub const DT_WORDBREAK: UINT = 0x00000010;
4156 pub const DT_SINGLELINE: UINT = 0x00000020;
4157 pub const DT_EXPANDTABS: UINT = 0x00000040;
4158 pub const DT_TABSTOP: UINT = 0x00000080;
4159 pub const DT_NOCLIP: UINT = 0x00000100;
4160 pub const DT_EXTERNALLEADING: UINT = 0x00000200;
4161 pub const DT_CALCRECT: UINT = 0x00000400;
4162 pub const DT_NOPREFIX: UINT = 0x00000800;
4163 pub const DT_INTERNAL: UINT = 0x00001000;
4164 pub const DT_EDITCONTROL: UINT = 0x00002000;
4165 pub const DT_PATH_ELLIPSIS: UINT = 0x00004000;
4166 pub const DT_END_ELLIPSIS: UINT = 0x00008000;
4167 pub const DT_MODIFYSTRING: UINT = 0x00010000;
4168 pub const DT_RTLREADING: UINT = 0x00020000;
4169 pub const DT_WORD_ELLIPSIS: UINT = 0x00040000;
4170 pub const DT_NOFULLWIDTHCHARBREAK: UINT = 0x00080000;
4171 pub const DT_HIDEPREFIX: UINT = 0x00100000;
4172 pub const DT_PREFIXONLY: UINT = 0x00200000;
4173 STRUCT!{struct DRAWTEXTPARAMS {
4174     cbSize: UINT,
4175     iTabLength: c_int,
4176     iLeftMargin: c_int,
4177     iRightMargin: c_int,
4178     uiLengthDrawn: UINT,
4179 }}
4180 pub type LPDRAWTEXTPARAMS = *mut DRAWTEXTPARAMS;
4181 extern "system" {
DrawTextA( hdc: HDC, lpchText: LPCSTR, cchText: c_int, lprc: LPRECT, format: UINT, ) -> c_int4182     pub fn DrawTextA(
4183         hdc: HDC,
4184         lpchText: LPCSTR,
4185         cchText: c_int,
4186         lprc: LPRECT,
4187         format: UINT,
4188     ) -> c_int;
DrawTextW( hdc: HDC, lpchText: LPCWSTR, cchText: c_int, lprc: LPRECT, format: UINT, ) -> c_int4189     pub fn DrawTextW(
4190         hdc: HDC,
4191         lpchText: LPCWSTR,
4192         cchText: c_int,
4193         lprc: LPRECT,
4194         format: UINT,
4195     ) -> c_int;
DrawTextExA( hdc: HDC, lpchText: LPCSTR, cchText: c_int, lprc: LPRECT, format: UINT, lpdtp: LPDRAWTEXTPARAMS, ) -> c_int4196     pub fn DrawTextExA(
4197         hdc: HDC,
4198         lpchText: LPCSTR,
4199         cchText: c_int,
4200         lprc: LPRECT,
4201         format: UINT,
4202         lpdtp: LPDRAWTEXTPARAMS,
4203     ) -> c_int;
DrawTextExW( hdc: HDC, lpchText: LPCWSTR, cchText: c_int, lprc: LPRECT, format: UINT, lpdtp: LPDRAWTEXTPARAMS, ) -> c_int4204     pub fn DrawTextExW(
4205         hdc: HDC,
4206         lpchText: LPCWSTR,
4207         cchText: c_int,
4208         lprc: LPRECT,
4209         format: UINT,
4210         lpdtp: LPDRAWTEXTPARAMS,
4211     ) -> c_int;
GrayStringA( hDC: HDC, hBrush: HBRUSH, lpOutputFunc: GRAYSTRINGPROC, lpData: LPARAM, nCount: c_int, X: c_int, Y: c_int, nWidth: c_int, nHeight: c_int, ) -> BOOL4212     pub fn GrayStringA(
4213         hDC: HDC,
4214         hBrush: HBRUSH,
4215         lpOutputFunc: GRAYSTRINGPROC,
4216         lpData: LPARAM,
4217         nCount: c_int,
4218         X: c_int,
4219         Y: c_int,
4220         nWidth: c_int,
4221         nHeight: c_int,
4222     ) -> BOOL;
GrayStringW( hDC: HDC, hBrush: HBRUSH, lpOutputFunc: GRAYSTRINGPROC, lpData: LPARAM, nCount: c_int, X: c_int, Y: c_int, nWidth: c_int, nHeight: c_int, ) -> BOOL4223     pub fn GrayStringW(
4224         hDC: HDC,
4225         hBrush: HBRUSH,
4226         lpOutputFunc: GRAYSTRINGPROC,
4227         lpData: LPARAM,
4228         nCount: c_int,
4229         X: c_int,
4230         Y: c_int,
4231         nWidth: c_int,
4232         nHeight: c_int,
4233     ) -> BOOL;
4234 }
4235 pub const DST_COMPLEX: UINT = 0x0000;
4236 pub const DST_TEXT: UINT = 0x0001;
4237 pub const DST_PREFIXTEXT: UINT = 0x0002;
4238 pub const DST_ICON: UINT = 0x0003;
4239 pub const DST_BITMAP: UINT = 0x0004;
4240 pub const DSS_NORMAL: UINT = 0x0000;
4241 pub const DSS_UNION: UINT = 0x0010;
4242 pub const DSS_DISABLED: UINT = 0x0020;
4243 pub const DSS_MONO: UINT = 0x0080;
4244 pub const DSS_HIDEPREFIX: UINT = 0x0200;
4245 pub const DSS_PREFIXONLY: UINT = 0x0400;
4246 pub const DSS_RIGHT: UINT = 0x8000;
4247 extern "system" {
DrawStateA( hdc: HDC, hbrFore: HBRUSH, qfnCallBack: DRAWSTATEPROC, lData: LPARAM, wData: WPARAM, x: c_int, y: c_int, cx: c_int, cy: c_int, uFlags: UINT, ) -> BOOL4248     pub fn DrawStateA(
4249         hdc: HDC,
4250         hbrFore: HBRUSH,
4251         qfnCallBack: DRAWSTATEPROC,
4252         lData: LPARAM,
4253         wData: WPARAM,
4254         x: c_int,
4255         y: c_int,
4256         cx: c_int,
4257         cy: c_int,
4258         uFlags: UINT,
4259     ) -> BOOL;
DrawStateW( hdc: HDC, hbrFore: HBRUSH, qfnCallBack: DRAWSTATEPROC, lData: LPARAM, wData: WPARAM, x: c_int, y: c_int, cx: c_int, cy: c_int, uFlags: UINT, ) -> BOOL4260     pub fn DrawStateW(
4261         hdc: HDC,
4262         hbrFore: HBRUSH,
4263         qfnCallBack: DRAWSTATEPROC,
4264         lData: LPARAM,
4265         wData: WPARAM,
4266         x: c_int,
4267         y: c_int,
4268         cx: c_int,
4269         cy: c_int,
4270         uFlags: UINT,
4271     ) -> BOOL;
TabbedTextOutA( hdc: HDC, x: c_int, y: c_int, lpString: LPCSTR, chCount: c_int, nTabPositions: c_int, lpnTabStopPositions: *const INT, nTabOrigin: c_int, ) -> LONG4272     pub fn TabbedTextOutA(
4273         hdc: HDC,
4274         x: c_int,
4275         y: c_int,
4276         lpString: LPCSTR,
4277         chCount: c_int,
4278         nTabPositions: c_int,
4279         lpnTabStopPositions: *const INT,
4280         nTabOrigin: c_int,
4281     ) -> LONG;
TabbedTextOutW( hdc: HDC, x: c_int, y: c_int, lpString: LPCWSTR, chCount: c_int, nTabPositions: c_int, lpnTabStopPositions: *const INT, nTabOrigin: c_int, ) -> LONG4282     pub fn TabbedTextOutW(
4283         hdc: HDC,
4284         x: c_int,
4285         y: c_int,
4286         lpString: LPCWSTR,
4287         chCount: c_int,
4288         nTabPositions: c_int,
4289         lpnTabStopPositions: *const INT,
4290         nTabOrigin: c_int,
4291     ) -> LONG;
GetTabbedTextExtentA( hdc: HDC, lpString: LPCSTR, chCount: c_int, nTabPositions: c_int, lpnTabStopPositions: *const INT, ) -> DWORD4292     pub fn GetTabbedTextExtentA(
4293         hdc: HDC,
4294         lpString: LPCSTR,
4295         chCount: c_int,
4296         nTabPositions: c_int,
4297         lpnTabStopPositions: *const INT,
4298     ) -> DWORD;
GetTabbedTextExtentW( hdc: HDC, lpString: LPCWSTR, chCount: c_int, nTabPositions: c_int, lpnTabStopPositions: *const INT, ) -> DWORD4299     pub fn GetTabbedTextExtentW(
4300         hdc: HDC,
4301         lpString: LPCWSTR,
4302         chCount: c_int,
4303         nTabPositions: c_int,
4304         lpnTabStopPositions: *const INT,
4305     ) -> DWORD;
UpdateWindow( hWnd: HWND, ) -> BOOL4306     pub fn UpdateWindow(
4307         hWnd: HWND,
4308     ) -> BOOL;
SetActiveWindow( hWnd: HWND, ) -> HWND4309     pub fn SetActiveWindow(
4310         hWnd: HWND,
4311     ) -> HWND;
GetForegroundWindow() -> HWND4312     pub fn GetForegroundWindow() -> HWND;
PaintDesktop( hdc: HDC, ) -> BOOL4313     pub fn PaintDesktop(
4314         hdc: HDC,
4315     ) -> BOOL;
SwitchToThisWindow( hwnd: HWND, fUnknown: BOOL, )4316     pub fn SwitchToThisWindow(
4317         hwnd: HWND,
4318         fUnknown: BOOL,
4319     );
SetForegroundWindow( hWnd: HWND, ) -> BOOL4320     pub fn SetForegroundWindow(
4321         hWnd: HWND,
4322     ) -> BOOL;
AllowSetForegroundWindow( dwProcessId: DWORD, ) -> BOOL4323     pub fn AllowSetForegroundWindow(
4324         dwProcessId: DWORD,
4325     ) -> BOOL;
4326 }
4327 pub const ASFW_ANY: DWORD = -1i32 as u32;
4328 extern "system" {
LockSetForegroundWindow( uLockCode: UINT, ) -> BOOL4329     pub fn LockSetForegroundWindow(
4330         uLockCode: UINT,
4331     ) -> BOOL;
4332 }
4333 pub const LSFW_LOCK: UINT = 1;
4334 pub const LSFW_UNLOCK: UINT = 2;
4335 extern "system" {
WindowFromDC( hDC: HDC, ) -> HWND4336     pub fn WindowFromDC(
4337         hDC: HDC,
4338     ) -> HWND;
GetDC( hWnd: HWND, ) -> HDC4339     pub fn GetDC(
4340         hWnd: HWND,
4341     ) -> HDC;
GetDCEx( hWnd: HWND, hrgnClip: HRGN, flags: DWORD, ) -> HDC4342     pub fn GetDCEx(
4343         hWnd: HWND,
4344         hrgnClip: HRGN,
4345         flags: DWORD,
4346     ) -> HDC;
4347 }
4348 pub const DCX_WINDOW: DWORD = 0x00000001;
4349 pub const DCX_CACHE: DWORD = 0x00000002;
4350 pub const DCX_NORESETATTRS: DWORD = 0x00000004;
4351 pub const DCX_CLIPCHILDREN: DWORD = 0x00000008;
4352 pub const DCX_CLIPSIBLINGS: DWORD = 0x00000010;
4353 pub const DCX_PARENTCLIP: DWORD = 0x00000020;
4354 pub const DCX_EXCLUDERGN: DWORD = 0x00000040;
4355 pub const DCX_INTERSECTRGN: DWORD = 0x00000080;
4356 pub const DCX_EXCLUDEUPDATE: DWORD = 0x00000100;
4357 pub const DCX_INTERSECTUPDATE: DWORD = 0x00000200;
4358 pub const DCX_LOCKWINDOWUPDATE: DWORD = 0x00000400;
4359 pub const DCX_VALIDATE: DWORD = 0x00200000;
4360 extern "system" {
GetWindowDC( hWnd: HWND, ) -> HDC4361     pub fn GetWindowDC(
4362         hWnd: HWND,
4363     ) -> HDC;
ReleaseDC( hWnd: HWND, hDC: HDC, ) -> c_int4364     pub fn ReleaseDC(
4365         hWnd: HWND,
4366         hDC: HDC,
4367     ) -> c_int;
BeginPaint( hwnd: HWND, lpPaint: LPPAINTSTRUCT, ) -> HDC4368     pub fn BeginPaint(
4369         hwnd: HWND,
4370         lpPaint: LPPAINTSTRUCT,
4371     ) -> HDC;
EndPaint( hWnd: HWND, lpPaint: *const PAINTSTRUCT, ) -> BOOL4372     pub fn EndPaint(
4373         hWnd: HWND,
4374         lpPaint: *const PAINTSTRUCT,
4375     ) -> BOOL;
GetUpdateRect( hWnd: HWND, lpRect: LPRECT, bErase: BOOL, ) -> BOOL4376     pub fn GetUpdateRect(
4377         hWnd: HWND,
4378         lpRect: LPRECT,
4379         bErase: BOOL,
4380     ) -> BOOL;
GetUpdateRgn( hWnd: HWND, hRgn: HRGN, bErase: BOOL, ) -> c_int4381     pub fn GetUpdateRgn(
4382         hWnd: HWND,
4383         hRgn: HRGN,
4384         bErase: BOOL,
4385     ) -> c_int;
SetWindowRgn( hWnd: HWND, hRgn: HRGN, bRedraw: BOOL, ) -> c_int4386     pub fn SetWindowRgn(
4387         hWnd: HWND,
4388         hRgn: HRGN,
4389         bRedraw: BOOL,
4390     ) -> c_int;
GetWindowRgn( hWnd: HWND, hRgn: HRGN, ) -> c_int4391     pub fn GetWindowRgn(
4392         hWnd: HWND,
4393         hRgn: HRGN,
4394     ) -> c_int;
GetWindowRgnBox( hWnd: HWND, lprc: LPRECT, ) -> c_int4395     pub fn GetWindowRgnBox(
4396         hWnd: HWND,
4397         lprc: LPRECT,
4398     ) -> c_int;
ExcludeUpdateRgn( hDC: HDC, hWnd: HWND, ) -> c_int4399     pub fn ExcludeUpdateRgn(
4400         hDC: HDC,
4401         hWnd: HWND,
4402     ) -> c_int;
InvalidateRect( hWnd: HWND, lpRect: *const RECT, bErase: BOOL, ) -> BOOL4403     pub fn InvalidateRect(
4404         hWnd: HWND,
4405         lpRect: *const RECT,
4406         bErase: BOOL,
4407     ) -> BOOL;
ValidateRect( hWnd: HWND, lpRect: *const RECT, ) -> BOOL4408     pub fn ValidateRect(
4409         hWnd: HWND,
4410         lpRect: *const RECT,
4411     ) -> BOOL;
InvalidateRgn( hWnd: HWND, hRgn: HRGN, bErase: BOOL, ) -> BOOL4412     pub fn InvalidateRgn(
4413         hWnd: HWND,
4414         hRgn: HRGN,
4415         bErase: BOOL,
4416     ) -> BOOL;
ValidateRgn( hWnd: HWND, hRgn: HRGN, ) -> BOOL4417     pub fn ValidateRgn(
4418         hWnd: HWND,
4419         hRgn: HRGN,
4420     ) -> BOOL;
RedrawWindow( hwnd: HWND, lprcUpdate: *const RECT, hrgnUpdate: HRGN, flags: UINT, ) -> BOOL4421     pub fn RedrawWindow(
4422         hwnd: HWND,
4423         lprcUpdate: *const RECT,
4424         hrgnUpdate: HRGN,
4425         flags: UINT,
4426     ) -> BOOL;
4427 }
4428 pub const RDW_INVALIDATE: UINT = 0x0001;
4429 pub const RDW_INTERNALPAINT: UINT = 0x0002;
4430 pub const RDW_ERASE: UINT = 0x0004;
4431 pub const RDW_VALIDATE: UINT = 0x0008;
4432 pub const RDW_NOINTERNALPAINT: UINT = 0x0010;
4433 pub const RDW_NOERASE: UINT = 0x0020;
4434 pub const RDW_NOCHILDREN: UINT = 0x0040;
4435 pub const RDW_ALLCHILDREN: UINT = 0x0080;
4436 pub const RDW_UPDATENOW: UINT = 0x0100;
4437 pub const RDW_ERASENOW: UINT = 0x0200;
4438 pub const RDW_FRAME: UINT = 0x0400;
4439 pub const RDW_NOFRAME: UINT = 0x0800;
4440 extern "system" {
LockWindowUpdate( hWndLock: HWND, ) -> BOOL4441     pub fn LockWindowUpdate(
4442         hWndLock: HWND,
4443     ) -> BOOL;
ScrollWindow( hWnd: HWND, xAmount: c_int, yAmount: c_int, lpRect: *const RECT, lpClipRect: *const RECT, ) -> BOOL4444     pub fn ScrollWindow(
4445         hWnd: HWND,
4446         xAmount: c_int,
4447         yAmount: c_int,
4448         lpRect: *const RECT,
4449         lpClipRect: *const RECT,
4450     ) -> BOOL;
ScrollDC( hDC: HDC, dx: c_int, dy: c_int, lprcScroll: *const RECT, lprcClip: *const RECT, hrgnUpdate: HRGN, lprcUpdate: LPRECT, ) -> BOOL4451     pub fn ScrollDC(
4452         hDC: HDC,
4453         dx: c_int,
4454         dy: c_int,
4455         lprcScroll: *const RECT,
4456         lprcClip: *const RECT,
4457         hrgnUpdate: HRGN,
4458         lprcUpdate: LPRECT,
4459     ) -> BOOL;
ScrollWindowEx( hWnd: HWND, dx: c_int, dy: c_int, prcScroll: *const RECT, prcClip: *const RECT, hrgnUpdate: HRGN, prcUpdate: LPRECT, flags: UINT, ) -> c_int4460     pub fn ScrollWindowEx(
4461         hWnd: HWND,
4462         dx: c_int,
4463         dy: c_int,
4464         prcScroll: *const RECT,
4465         prcClip: *const RECT,
4466         hrgnUpdate: HRGN,
4467         prcUpdate: LPRECT,
4468         flags: UINT,
4469     ) -> c_int;
4470 }
4471 pub const SW_SCROLLCHILDREN: UINT = 0x0001;
4472 pub const SW_INVALIDATE: UINT = 0x0002;
4473 pub const SW_ERASE: UINT = 0x0004;
4474 pub const SW_SMOOTHSCROLL: UINT = 0x0010;
4475 extern "system" {
SetScrollPos( hWnd: HWND, nBar: c_int, nPos: c_int, bRedraw: BOOL, ) -> c_int4476     pub fn SetScrollPos(
4477         hWnd: HWND,
4478         nBar: c_int,
4479         nPos: c_int,
4480         bRedraw: BOOL,
4481     ) -> c_int;
GetScrollPos( hWnd: HWND, nBar: c_int, ) -> c_int4482     pub fn GetScrollPos(
4483         hWnd: HWND,
4484         nBar: c_int,
4485     ) -> c_int;
SetScrollRange( hWnd: HWND, nBar: c_int, nMinPos: c_int, nMaxPos: c_int, bRedraw: BOOL, ) -> BOOL4486     pub fn SetScrollRange(
4487         hWnd: HWND,
4488         nBar: c_int,
4489         nMinPos: c_int,
4490         nMaxPos: c_int,
4491         bRedraw: BOOL,
4492     ) -> BOOL;
GetScrollRange( hWnd: HWND, nBar: c_int, lpMinPos: LPINT, lpMaxPos: LPINT, ) -> BOOL4493     pub fn GetScrollRange(
4494         hWnd: HWND,
4495         nBar: c_int,
4496         lpMinPos: LPINT,
4497         lpMaxPos: LPINT,
4498     ) -> BOOL;
ShowScrollBar( hWnd: HWND, wBar: c_int, bShow: BOOL, ) -> BOOL4499     pub fn ShowScrollBar(
4500         hWnd: HWND,
4501         wBar: c_int,
4502         bShow: BOOL,
4503     ) -> BOOL;
EnableScrollBar( hWnd: HWND, wSBflags: UINT, wArrows: UINT, ) -> BOOL4504     pub fn EnableScrollBar(
4505         hWnd: HWND,
4506         wSBflags: UINT,
4507         wArrows: UINT,
4508     ) -> BOOL;
4509 }
4510 pub const ESB_ENABLE_BOTH: UINT = 0x0000;
4511 pub const ESB_DISABLE_BOTH: UINT = 0x0003;
4512 pub const ESB_DISABLE_LEFT: UINT = 0x0001;
4513 pub const ESB_DISABLE_RIGHT: UINT = 0x0002;
4514 pub const ESB_DISABLE_UP: UINT = 0x0001;
4515 pub const ESB_DISABLE_DOWN: UINT = 0x0002;
4516 pub const ESB_DISABLE_LTUP: UINT = ESB_DISABLE_LEFT;
4517 pub const ESB_DISABLE_RTDN: UINT = ESB_DISABLE_RIGHT;
4518 extern "system" {
SetPropA( hWnd: HWND, lpString: LPCSTR, hData: HANDLE, ) -> BOOL4519     pub fn SetPropA(
4520         hWnd: HWND,
4521         lpString: LPCSTR,
4522         hData: HANDLE,
4523     ) -> BOOL;
SetPropW( hWnd: HWND, lpString: LPCWSTR, hData: HANDLE, ) -> BOOL4524     pub fn SetPropW(
4525         hWnd: HWND,
4526         lpString: LPCWSTR,
4527         hData: HANDLE,
4528     ) -> BOOL;
GetPropA( hwnd: HWND, lpString: LPCSTR, ) -> HANDLE4529     pub fn GetPropA(
4530         hwnd: HWND,
4531         lpString: LPCSTR,
4532     ) -> HANDLE;
GetPropW( hwnd: HWND, lpString: LPCWSTR, ) -> HANDLE4533     pub fn GetPropW(
4534         hwnd: HWND,
4535         lpString: LPCWSTR,
4536     ) -> HANDLE;
RemovePropA( hWnd: HWND, lpStr: LPCSTR, ) -> HANDLE4537     pub fn RemovePropA(
4538         hWnd: HWND,
4539         lpStr: LPCSTR,
4540     ) -> HANDLE;
RemovePropW( hWnd: HWND, lpStr: LPCWSTR, ) -> HANDLE4541     pub fn RemovePropW(
4542         hWnd: HWND,
4543         lpStr: LPCWSTR,
4544     ) -> HANDLE;
EnumPropsExA( hWnd: HWND, lpEnumFunc: PROPENUMPROCA, lParam: LPARAM, ) -> c_int4545     pub fn EnumPropsExA(
4546         hWnd: HWND,
4547         lpEnumFunc: PROPENUMPROCA,
4548         lParam: LPARAM,
4549     ) -> c_int;
EnumPropsExW( hWnd: HWND, lpEnumFunc: PROPENUMPROCW, lParam: LPARAM, ) -> c_int4550     pub fn EnumPropsExW(
4551         hWnd: HWND,
4552         lpEnumFunc: PROPENUMPROCW,
4553         lParam: LPARAM,
4554     ) -> c_int;
EnumPropsA( hWnd: HWND, lpEnumFunc: PROPENUMPROCA, ) -> c_int4555     pub fn EnumPropsA(
4556         hWnd: HWND,
4557         lpEnumFunc: PROPENUMPROCA,
4558     ) -> c_int;
EnumPropsW( hWnd: HWND, lpEnumFunc: PROPENUMPROCW, ) -> c_int4559     pub fn EnumPropsW(
4560         hWnd: HWND,
4561         lpEnumFunc: PROPENUMPROCW,
4562     ) -> c_int;
SetWindowTextA( hWnd: HWND, lpString: LPCSTR, ) -> BOOL4563     pub fn SetWindowTextA(
4564         hWnd: HWND,
4565         lpString: LPCSTR,
4566     ) -> BOOL;
SetWindowTextW( hWnd: HWND, lpString: LPCWSTR, ) -> BOOL4567     pub fn SetWindowTextW(
4568         hWnd: HWND,
4569         lpString: LPCWSTR,
4570     ) -> BOOL;
GetWindowTextA( hWnd: HWND, lpString: LPSTR, nMaxCount: c_int, ) -> c_int4571     pub fn GetWindowTextA(
4572         hWnd: HWND,
4573         lpString: LPSTR,
4574         nMaxCount: c_int,
4575     ) -> c_int;
GetWindowTextW( hWnd: HWND, lpString: LPWSTR, nMaxCount: c_int, ) -> c_int4576     pub fn GetWindowTextW(
4577         hWnd: HWND,
4578         lpString: LPWSTR,
4579         nMaxCount: c_int,
4580     ) -> c_int;
GetWindowTextLengthA( hWnd: HWND, ) -> c_int4581     pub fn GetWindowTextLengthA(
4582         hWnd: HWND,
4583     ) -> c_int;
GetWindowTextLengthW( hWnd: HWND, ) -> c_int4584     pub fn GetWindowTextLengthW(
4585         hWnd: HWND,
4586     ) -> c_int;
GetClientRect( hWnd: HWND, lpRect: LPRECT, ) -> BOOL4587     pub fn GetClientRect(
4588         hWnd: HWND,
4589         lpRect: LPRECT,
4590     ) -> BOOL;
GetWindowRect( hWnd: HWND, lpRect: LPRECT, ) -> BOOL4591     pub fn GetWindowRect(
4592         hWnd: HWND,
4593         lpRect: LPRECT,
4594     ) -> BOOL;
AdjustWindowRect( lpRect: LPRECT, dwStyle: DWORD, bMenu: BOOL, ) -> BOOL4595     pub fn AdjustWindowRect(
4596         lpRect: LPRECT,
4597         dwStyle: DWORD,
4598         bMenu: BOOL,
4599     ) -> BOOL;
AdjustWindowRectEx( lpRect: LPRECT, dwStyle: DWORD, bMenu: BOOL, dwExStyle: DWORD, ) -> BOOL4600     pub fn AdjustWindowRectEx(
4601         lpRect: LPRECT,
4602         dwStyle: DWORD,
4603         bMenu: BOOL,
4604         dwExStyle: DWORD,
4605     ) -> BOOL;
AdjustWindowRectExForDpi( lpRect: LPRECT, dwStyle: DWORD, bMenu: BOOL, dwExStyle: DWORD, dpi: UINT, ) -> BOOL4606     pub fn AdjustWindowRectExForDpi(
4607         lpRect: LPRECT,
4608         dwStyle: DWORD,
4609         bMenu: BOOL,
4610         dwExStyle: DWORD,
4611         dpi: UINT,
4612     ) -> BOOL;
4613 }
4614 pub const HELPINFO_WINDOW: UINT = 0x0001;
4615 pub const HELPINFO_MENUITEM: UINT = 0x0002;
4616 STRUCT!{struct HELPINFO {
4617     cbSize: UINT,
4618     iContextType: c_int,
4619     iCtrlId: c_int,
4620     hItemHandle: HANDLE,
4621     dwContextId: DWORD,
4622     MousePos: POINT,
4623 }}
4624 pub type LPHELPINFO = *mut HELPINFO;
4625 extern "system" {
SetWindowContextHelpId( _: HWND, _: DWORD, ) -> BOOL4626     pub fn SetWindowContextHelpId(
4627         _: HWND,
4628         _: DWORD,
4629     ) -> BOOL;
GetWindowContextHelpId( _: HWND, ) -> DWORD4630     pub fn GetWindowContextHelpId(
4631         _: HWND,
4632     ) -> DWORD;
SetMenuContextHelpId( _: HMENU, _: DWORD, ) -> BOOL4633     pub fn SetMenuContextHelpId(
4634         _: HMENU,
4635         _: DWORD,
4636     ) -> BOOL;
GetMenuContextHelpId( _: HMENU, ) -> DWORD4637     pub fn GetMenuContextHelpId(
4638         _: HMENU,
4639     ) -> DWORD;
4640 }
4641 pub const MB_OK: UINT = 0x00000000;
4642 pub const MB_OKCANCEL: UINT = 0x00000001;
4643 pub const MB_ABORTRETRYIGNORE: UINT = 0x00000002;
4644 pub const MB_YESNOCANCEL: UINT = 0x00000003;
4645 pub const MB_YESNO: UINT = 0x00000004;
4646 pub const MB_RETRYCANCEL: UINT = 0x00000005;
4647 pub const MB_CANCELTRYCONTINUE: UINT = 0x00000006;
4648 pub const MB_ICONHAND: UINT = 0x00000010;
4649 pub const MB_ICONQUESTION: UINT = 0x00000020;
4650 pub const MB_ICONEXCLAMATION: UINT = 0x00000030;
4651 pub const MB_ICONASTERISK: UINT = 0x00000040;
4652 pub const MB_USERICON: UINT = 0x00000080;
4653 pub const MB_ICONWARNING: UINT = MB_ICONEXCLAMATION;
4654 pub const MB_ICONERROR: UINT = MB_ICONHAND;
4655 pub const MB_ICONINFORMATION: UINT = MB_ICONASTERISK;
4656 pub const MB_ICONSTOP: UINT = MB_ICONHAND;
4657 pub const MB_DEFBUTTON1: UINT = 0x00000000;
4658 pub const MB_DEFBUTTON2: UINT = 0x00000100;
4659 pub const MB_DEFBUTTON3: UINT = 0x00000200;
4660 pub const MB_DEFBUTTON4: UINT = 0x00000300;
4661 pub const MB_APPLMODAL: UINT = 0x00000000;
4662 pub const MB_SYSTEMMODAL: UINT = 0x00001000;
4663 pub const MB_TASKMODAL: UINT = 0x00002000;
4664 pub const MB_HELP: UINT = 0x00004000;
4665 pub const MB_NOFOCUS: UINT = 0x00008000;
4666 pub const MB_SETFOREGROUND: UINT = 0x00010000;
4667 pub const MB_DEFAULT_DESKTOP_ONLY: UINT = 0x00020000;
4668 pub const MB_TOPMOST: UINT = 0x00040000;
4669 pub const MB_RIGHT: UINT = 0x00080000;
4670 pub const MB_RTLREADING: UINT = 0x00100000;
4671 pub const MB_SERVICE_NOTIFICATION: UINT = 0x00200000;
4672 pub const MB_SERVICE_NOTIFICATION_NT3X: UINT = 0x00040000;
4673 pub const MB_TYPEMASK: UINT = 0x0000000F;
4674 pub const MB_ICONMASK: UINT = 0x000000F0;
4675 pub const MB_DEFMASK: UINT = 0x00000F00;
4676 pub const MB_MODEMASK: UINT = 0x00003000;
4677 pub const MB_MISCMASK: UINT = 0x0000C000;
4678 extern "system" {
MessageBoxA( hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT, ) -> c_int4679     pub fn MessageBoxA(
4680         hWnd: HWND,
4681         lpText: LPCSTR,
4682         lpCaption: LPCSTR,
4683         uType: UINT,
4684     ) -> c_int;
MessageBoxW( hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT, ) -> c_int4685     pub fn MessageBoxW(
4686         hWnd: HWND,
4687         lpText: LPCWSTR,
4688         lpCaption: LPCWSTR,
4689         uType: UINT,
4690     ) -> c_int;
MessageBoxExA( hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT, wLanguageId: WORD, ) -> c_int4691     pub fn MessageBoxExA(
4692         hWnd: HWND,
4693         lpText: LPCSTR,
4694         lpCaption: LPCSTR,
4695         uType: UINT,
4696         wLanguageId: WORD,
4697     ) -> c_int;
MessageBoxExW( hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT, wLanguageId: WORD, ) -> c_int4698     pub fn MessageBoxExW(
4699         hWnd: HWND,
4700         lpText: LPCWSTR,
4701         lpCaption: LPCWSTR,
4702         uType: UINT,
4703         wLanguageId: WORD,
4704     ) -> c_int;
4705 }
4706 STRUCT!{struct MSGBOXPARAMSA {
4707     cbSize: UINT,
4708     hwndOwner: HWND,
4709     hInstance: HINSTANCE,
4710     lpszText: LPCSTR,
4711     lpszCaption: LPCSTR,
4712     dwStyle: DWORD,
4713     lpszIcon: LPCSTR,
4714     dwContextHelpId: DWORD_PTR,
4715     lpfnMsgBoxCallback: MSGBOXCALLBACK,
4716     dwLanguageId: DWORD,
4717 }}
4718 pub type PMSGBOXPARAMSA = *mut MSGBOXPARAMSA;
4719 pub type LPMSGBOXPARAMSA = *mut MSGBOXPARAMSA;
4720 STRUCT!{struct MSGBOXPARAMSW {
4721     cbSize: UINT,
4722     hwndOwner: HWND,
4723     hInstance: HINSTANCE,
4724     lpszText: LPCWSTR,
4725     lpszCaption: LPCWSTR,
4726     dwStyle: DWORD,
4727     lpszIcon: LPCWSTR,
4728     dwContextHelpId: DWORD_PTR,
4729     lpfnMsgBoxCallback: MSGBOXCALLBACK,
4730     dwLanguageId: DWORD,
4731 }}
4732 pub type PMSGBOXPARAMSW = *mut MSGBOXPARAMSW;
4733 pub type LPMSGBOXPARAMSW = *mut MSGBOXPARAMSW;
4734 extern "system" {
MessageBoxIndirectA( lpmbp: *const MSGBOXPARAMSA, ) -> c_int4735     pub fn MessageBoxIndirectA(
4736         lpmbp: *const MSGBOXPARAMSA,
4737     ) -> c_int;
MessageBoxIndirectW( lpmbp: *const MSGBOXPARAMSW, ) -> c_int4738     pub fn MessageBoxIndirectW(
4739         lpmbp: *const MSGBOXPARAMSW,
4740     ) -> c_int;
MessageBeep( uType: UINT, ) -> BOOL4741     pub fn MessageBeep(
4742         uType: UINT,
4743     ) -> BOOL;
ShowCursor( bShow: BOOL, ) -> c_int4744     pub fn ShowCursor(
4745         bShow: BOOL,
4746     ) -> c_int;
SetCursorPos( X: c_int, Y: c_int, ) -> BOOL4747     pub fn SetCursorPos(
4748         X: c_int,
4749         Y: c_int,
4750     ) -> BOOL;
SetPhysicalCursorPos( X: c_int, Y: c_int, ) -> BOOL4751     pub fn SetPhysicalCursorPos(
4752         X: c_int,
4753         Y: c_int,
4754     ) -> BOOL;
SetCursor( hCursor: HCURSOR, ) -> HCURSOR4755     pub fn SetCursor(
4756         hCursor: HCURSOR,
4757     ) -> HCURSOR;
GetCursorPos( lpPoint: LPPOINT, ) -> BOOL4758     pub fn GetCursorPos(
4759         lpPoint: LPPOINT,
4760     ) -> BOOL;
GetPhysicalCursorPos( lpPoint: LPPOINT, ) -> BOOL4761     pub fn GetPhysicalCursorPos(
4762         lpPoint: LPPOINT,
4763     ) -> BOOL;
GetClipCursor( lpRect: LPRECT, ) -> BOOL4764     pub fn GetClipCursor(
4765         lpRect: LPRECT,
4766     ) -> BOOL;
GetCursor() -> HCURSOR4767     pub fn GetCursor() -> HCURSOR;
CreateCaret( hWnd: HWND, hBitmap: HBITMAP, nWidth: c_int, nHeight: c_int, ) -> BOOL4768     pub fn CreateCaret(
4769         hWnd: HWND,
4770         hBitmap: HBITMAP,
4771         nWidth: c_int,
4772         nHeight: c_int,
4773     ) -> BOOL;
GetCaretBlinkTime() -> UINT4774     pub fn GetCaretBlinkTime() -> UINT;
SetCaretBlinkTime( uMSeconds: UINT, ) -> BOOL4775     pub fn SetCaretBlinkTime(
4776         uMSeconds: UINT,
4777     ) -> BOOL;
DestroyCaret() -> BOOL4778     pub fn DestroyCaret() -> BOOL;
HideCaret( hWnd: HWND, ) -> BOOL4779     pub fn HideCaret(
4780         hWnd: HWND,
4781     ) -> BOOL;
ShowCaret( hWnd: HWND, ) -> BOOL4782     pub fn ShowCaret(
4783         hWnd: HWND,
4784     ) -> BOOL;
SetCaretPos( X: c_int, Y: c_int, ) -> BOOL4785     pub fn SetCaretPos(
4786         X: c_int,
4787         Y: c_int,
4788     ) -> BOOL;
GetCaretPos( lpPoint: LPPOINT, ) -> BOOL4789     pub fn GetCaretPos(
4790         lpPoint: LPPOINT,
4791     ) -> BOOL;
ClientToScreen( hWnd: HWND, lpPoint: LPPOINT, ) -> BOOL4792     pub fn ClientToScreen(
4793         hWnd: HWND,
4794         lpPoint: LPPOINT,
4795     ) -> BOOL;
ScreenToClient( hWnd: HWND, lpPoint: LPPOINT, ) -> BOOL4796     pub fn ScreenToClient(
4797         hWnd: HWND,
4798         lpPoint: LPPOINT,
4799     ) -> BOOL;
LogicalToPhysicalPoint( hWnd: HWND, lpPoint: LPPOINT, ) -> BOOL4800     pub fn LogicalToPhysicalPoint(
4801         hWnd: HWND,
4802         lpPoint: LPPOINT,
4803     ) -> BOOL;
PhysicalToLogicalPoint( hWnd: HWND, lpPoint: LPPOINT, ) -> BOOL4804     pub fn PhysicalToLogicalPoint(
4805         hWnd: HWND,
4806         lpPoint: LPPOINT,
4807     ) -> BOOL;
LogicalToPhysicalPointForPerMonitorDPI( hWnd: HWND, lpPoint: LPPOINT, ) -> BOOL4808     pub fn LogicalToPhysicalPointForPerMonitorDPI(
4809         hWnd: HWND,
4810         lpPoint: LPPOINT,
4811     ) -> BOOL;
PhysicalToLogicalPointForPerMonitorDPI( hWnd: HWND, lpPoint: LPPOINT, ) -> BOOL4812     pub fn PhysicalToLogicalPointForPerMonitorDPI(
4813         hWnd: HWND,
4814         lpPoint: LPPOINT,
4815     ) -> BOOL;
MapWindowPoints( hWndFrom: HWND, hWndTo: HWND, lpPoints: LPPOINT, cPoints: UINT, ) -> c_int4816     pub fn MapWindowPoints(
4817         hWndFrom: HWND,
4818         hWndTo: HWND,
4819         lpPoints: LPPOINT,
4820         cPoints: UINT,
4821     ) -> c_int;
WindowFromPoint( Point: POINT, ) -> HWND4822     pub fn WindowFromPoint(
4823         Point: POINT,
4824     ) -> HWND;
WindowFromPhysicalPoint( Point: POINT, ) -> HWND4825     pub fn WindowFromPhysicalPoint(
4826         Point: POINT,
4827     ) -> HWND;
ChildWindowFromPoint( hWndParent: HWND, point: POINT, ) -> HWND4828     pub fn ChildWindowFromPoint(
4829         hWndParent: HWND,
4830         point: POINT,
4831     ) -> HWND;
ClipCursor( lpRect: *const RECT, ) -> BOOL4832     pub fn ClipCursor(
4833         lpRect: *const RECT,
4834     ) -> BOOL;
4835 }
4836 pub const CWP_ALL: UINT = 0x0000;
4837 pub const CWP_SKIPINVISIBLE: UINT = 0x0001;
4838 pub const CWP_SKIPDISABLED: UINT = 0x0002;
4839 pub const CWP_SKIPTRANSPARENT: UINT = 0x0004;
4840 extern "system" {
ChildWindowFromPointEx( hwnd: HWND, pt: POINT, flags: UINT, ) -> HWND4841     pub fn ChildWindowFromPointEx(
4842         hwnd: HWND,
4843         pt: POINT,
4844         flags: UINT,
4845     ) -> HWND;
4846 }
4847 pub const CTLCOLOR_MSGBOX: c_int = 0;
4848 pub const CTLCOLOR_EDIT: c_int = 1;
4849 pub const CTLCOLOR_LISTBOX: c_int = 2;
4850 pub const CTLCOLOR_BTN: c_int = 3;
4851 pub const CTLCOLOR_DLG: c_int = 4;
4852 pub const CTLCOLOR_SCROLLBAR: c_int = 5;
4853 pub const CTLCOLOR_STATIC: c_int = 6;
4854 pub const CTLCOLOR_MAX: c_int = 7;
4855 pub const COLOR_SCROLLBAR: c_int = 0;
4856 pub const COLOR_BACKGROUND: c_int = 1;
4857 pub const COLOR_ACTIVECAPTION: c_int = 2;
4858 pub const COLOR_INACTIVECAPTION: c_int = 3;
4859 pub const COLOR_MENU: c_int = 4;
4860 pub const COLOR_WINDOW: c_int = 5;
4861 pub const COLOR_WINDOWFRAME: c_int = 6;
4862 pub const COLOR_MENUTEXT: c_int = 7;
4863 pub const COLOR_WINDOWTEXT: c_int = 8;
4864 pub const COLOR_CAPTIONTEXT: c_int = 9;
4865 pub const COLOR_ACTIVEBORDER: c_int = 10;
4866 pub const COLOR_INACTIVEBORDER: c_int = 11;
4867 pub const COLOR_APPWORKSPACE: c_int = 12;
4868 pub const COLOR_HIGHLIGHT: c_int = 13;
4869 pub const COLOR_HIGHLIGHTTEXT: c_int = 14;
4870 pub const COLOR_BTNFACE: c_int = 15;
4871 pub const COLOR_BTNSHADOW: c_int = 16;
4872 pub const COLOR_GRAYTEXT: c_int = 17;
4873 pub const COLOR_BTNTEXT: c_int = 18;
4874 pub const COLOR_INACTIVECAPTIONTEXT: c_int = 19;
4875 pub const COLOR_BTNHIGHLIGHT: c_int = 20;
4876 pub const COLOR_3DDKSHADOW: c_int = 21;
4877 pub const COLOR_3DLIGHT: c_int = 22;
4878 pub const COLOR_INFOTEXT: c_int = 23;
4879 pub const COLOR_INFOBK: c_int = 24;
4880 pub const COLOR_HOTLIGHT: c_int = 26;
4881 pub const COLOR_GRADIENTACTIVECAPTION: c_int = 27;
4882 pub const COLOR_GRADIENTINACTIVECAPTION: c_int = 28;
4883 pub const COLOR_MENUHILIGHT: c_int = 29;
4884 pub const COLOR_MENUBAR: c_int = 30;
4885 pub const COLOR_DESKTOP: c_int = COLOR_BACKGROUND;
4886 pub const COLOR_3DFACE: c_int = COLOR_BTNFACE;
4887 pub const COLOR_3DSHADOW: c_int = COLOR_BTNSHADOW;
4888 pub const COLOR_3DHIGHLIGHT: c_int = COLOR_BTNHIGHLIGHT;
4889 pub const COLOR_3DHILIGHT: c_int = COLOR_BTNHIGHLIGHT;
4890 pub const COLOR_BTNHILIGHT: c_int = COLOR_BTNHIGHLIGHT;
4891 extern "system" {
GetSysColor( nIndex: c_int, ) -> DWORD4892     pub fn GetSysColor(
4893         nIndex: c_int,
4894     ) -> DWORD;
GetSysColorBrush( nIndex: c_int, ) -> HBRUSH4895     pub fn GetSysColorBrush(
4896         nIndex: c_int,
4897     ) -> HBRUSH;
SetSysColors( cElements: c_int, lpaElements: *const INT, lpaRgbValues: *const COLORREF, ) -> BOOL4898     pub fn SetSysColors(
4899         cElements: c_int,
4900         lpaElements: *const INT,
4901         lpaRgbValues: *const COLORREF,
4902     ) -> BOOL;
DrawFocusRect( hDC: HDC, lprc: *const RECT, ) -> BOOL4903     pub fn DrawFocusRect(
4904         hDC: HDC,
4905         lprc: *const RECT,
4906     ) -> BOOL;
FillRect( hDC: HDC, lprc: *const RECT, hbr: HBRUSH, ) -> c_int4907     pub fn FillRect(
4908         hDC: HDC,
4909         lprc: *const RECT,
4910         hbr: HBRUSH,
4911     ) -> c_int;
FrameRect( hDC: HDC, lprc: *const RECT, hbr: HBRUSH, ) -> c_int4912     pub fn FrameRect(
4913         hDC: HDC,
4914         lprc: *const RECT,
4915         hbr: HBRUSH,
4916     ) -> c_int;
InvertRect( hDC: HDC, lprc: *const RECT, ) -> BOOL4917     pub fn InvertRect(
4918         hDC: HDC,
4919         lprc: *const RECT,
4920     ) -> BOOL;
SetRect( lprc: LPRECT, xLeft: c_int, yTop: c_int, xRight: c_int, yBottom: c_int, ) -> BOOL4921     pub fn SetRect(
4922         lprc: LPRECT,
4923         xLeft: c_int,
4924         yTop: c_int,
4925         xRight: c_int,
4926         yBottom: c_int,
4927     ) -> BOOL;
SetRectEmpty( lprc: LPRECT, ) -> BOOL4928     pub fn SetRectEmpty(
4929         lprc: LPRECT,
4930     ) -> BOOL;
CopyRect( lprcDst: LPRECT, lprcSrc: *const RECT, ) -> BOOL4931     pub fn CopyRect(
4932         lprcDst: LPRECT,
4933         lprcSrc: *const RECT,
4934     ) -> BOOL;
InflateRect( lprc: LPRECT, dx: c_int, dy: c_int, ) -> BOOL4935     pub fn InflateRect(
4936         lprc: LPRECT,
4937         dx: c_int,
4938         dy: c_int,
4939     ) -> BOOL;
IntersectRect( lprcDst: LPRECT, lprcSrc1: *const RECT, lprcSrc2: *const RECT, ) -> BOOL4940     pub fn IntersectRect(
4941         lprcDst: LPRECT,
4942         lprcSrc1: *const RECT,
4943         lprcSrc2: *const RECT,
4944     ) -> BOOL;
UnionRect( lprcDst: LPRECT, lprcSrc1: *const RECT, lprcSrc2: *const RECT, ) -> BOOL4945     pub fn UnionRect(
4946         lprcDst: LPRECT,
4947         lprcSrc1: *const RECT,
4948         lprcSrc2: *const RECT,
4949     ) -> BOOL;
SubtractRect( lprcDst: LPRECT, lprcSrc1: *const RECT, lprcSrc2: *const RECT, ) -> BOOL4950     pub fn SubtractRect(
4951         lprcDst: LPRECT,
4952         lprcSrc1: *const RECT,
4953         lprcSrc2: *const RECT,
4954     ) -> BOOL;
OffsetRect( lprc: LPRECT, dx: c_int, dy: c_int, ) -> BOOL4955     pub fn OffsetRect(
4956         lprc: LPRECT,
4957         dx: c_int,
4958         dy: c_int,
4959     ) -> BOOL;
IsRectEmpty( lprc: *const RECT, ) -> BOOL4960     pub fn IsRectEmpty(
4961         lprc: *const RECT,
4962     ) -> BOOL;
EqualRect( lprc1: *const RECT, lprc2: *const RECT, ) -> BOOL4963     pub fn EqualRect(
4964         lprc1: *const RECT,
4965         lprc2: *const RECT,
4966     ) -> BOOL;
PtInRect( lprc: *const RECT, pt: POINT, ) -> BOOL4967     pub fn PtInRect(
4968         lprc: *const RECT,
4969         pt: POINT,
4970     ) -> BOOL;
GetWindowWord( hWnd: HWND, nIndex: c_int, ) -> WORD4971     pub fn GetWindowWord(
4972         hWnd: HWND,
4973         nIndex: c_int,
4974     ) -> WORD;
SetWindowWord( hwnd: HWND, nIndex: c_int, wNewWord: WORD, ) -> WORD4975     pub fn SetWindowWord(
4976         hwnd: HWND,
4977         nIndex: c_int,
4978         wNewWord: WORD,
4979     ) -> WORD;
GetWindowLongA( hWnd: HWND, nIndex: c_int, ) -> LONG4980     pub fn GetWindowLongA(
4981         hWnd: HWND,
4982         nIndex: c_int,
4983     ) -> LONG;
GetWindowLongW( hWnd: HWND, nIndex: c_int, ) -> LONG4984     pub fn GetWindowLongW(
4985         hWnd: HWND,
4986         nIndex: c_int,
4987     ) -> LONG;
SetWindowLongA( hWnd: HWND, nIndex: c_int, dwNewLong: LONG, ) -> LONG4988     pub fn SetWindowLongA(
4989         hWnd: HWND,
4990         nIndex: c_int,
4991         dwNewLong: LONG,
4992     ) -> LONG;
SetWindowLongW( hWnd: HWND, nIndex: c_int, dwNewLong: LONG, ) -> LONG4993     pub fn SetWindowLongW(
4994         hWnd: HWND,
4995         nIndex: c_int,
4996         dwNewLong: LONG,
4997     ) -> LONG;
4998     #[cfg(target_pointer_width = "64")]
GetWindowLongPtrA( hWnd: HWND, nIndex: c_int, ) -> LONG_PTR4999     pub fn GetWindowLongPtrA(
5000         hWnd: HWND,
5001         nIndex: c_int,
5002     ) -> LONG_PTR;
5003     #[cfg(target_pointer_width = "64")]
GetWindowLongPtrW( hWnd: HWND, nIndex: c_int, ) -> LONG_PTR5004     pub fn GetWindowLongPtrW(
5005         hWnd: HWND,
5006         nIndex: c_int,
5007     ) -> LONG_PTR;
5008     #[cfg(target_pointer_width = "64")]
SetWindowLongPtrA( hWnd: HWND, nIndex: c_int, dwNewLong: LONG_PTR, ) -> LONG_PTR5009     pub fn SetWindowLongPtrA(
5010         hWnd: HWND,
5011         nIndex: c_int,
5012         dwNewLong: LONG_PTR,
5013     ) -> LONG_PTR;
5014     #[cfg(target_pointer_width = "64")]
SetWindowLongPtrW( hWnd: HWND, nIndex: c_int, dwNewLong: LONG_PTR, ) -> LONG_PTR5015     pub fn SetWindowLongPtrW(
5016         hWnd: HWND,
5017         nIndex: c_int,
5018         dwNewLong: LONG_PTR,
5019     ) -> LONG_PTR;
5020 }
5021 #[cfg(target_arch = "x86")]
5022 pub use self::GetWindowLongA as GetWindowLongPtrA;
5023 #[cfg(target_arch = "x86")]
5024 pub use self::GetWindowLongW as GetWindowLongPtrW;
5025 #[cfg(target_arch = "x86")]
5026 pub use self::SetWindowLongA as SetWindowLongPtrA;
5027 #[cfg(target_arch = "x86")]
5028 pub use self::SetWindowLongW as SetWindowLongPtrW;
5029 extern "system" {
GetClassWord( hWnd: HWND, nIndex: c_int, ) -> WORD5030     pub fn GetClassWord(
5031         hWnd: HWND,
5032         nIndex: c_int,
5033     ) -> WORD;
SetClassWord( hWnd: HWND, nIndex: c_int, wNewWord: WORD, ) -> WORD5034     pub fn SetClassWord(
5035         hWnd: HWND,
5036         nIndex: c_int,
5037         wNewWord: WORD,
5038     ) -> WORD;
GetClassLongA( hWnd: HWND, nIndex: c_int, ) -> DWORD5039     pub fn GetClassLongA(
5040         hWnd: HWND,
5041         nIndex: c_int,
5042     ) -> DWORD;
GetClassLongW( hWnd: HWND, nIndex: c_int, ) -> DWORD5043     pub fn GetClassLongW(
5044         hWnd: HWND,
5045         nIndex: c_int,
5046     ) -> DWORD;
SetClassLongA( hWnd: HWND, nIndex: c_int, dwNewLong: LONG, ) -> DWORD5047     pub fn SetClassLongA(
5048         hWnd: HWND,
5049         nIndex: c_int,
5050         dwNewLong: LONG,
5051     ) -> DWORD;
SetClassLongW( hWnd: HWND, nIndex: c_int, dwNewLong: LONG, ) -> DWORD5052     pub fn SetClassLongW(
5053         hWnd: HWND,
5054         nIndex: c_int,
5055         dwNewLong: LONG,
5056     ) -> DWORD;
5057     #[cfg(target_pointer_width = "64")]
GetClassLongPtrA( hWnd: HWND, nIndex: c_int, ) -> ULONG_PTR5058     pub fn GetClassLongPtrA(
5059         hWnd: HWND,
5060         nIndex: c_int,
5061     ) -> ULONG_PTR;
5062     #[cfg(target_pointer_width = "64")]
GetClassLongPtrW( hWnd: HWND, nIndex: c_int, ) -> ULONG_PTR5063     pub fn GetClassLongPtrW(
5064         hWnd: HWND,
5065         nIndex: c_int,
5066     ) -> ULONG_PTR;
5067     #[cfg(target_pointer_width = "64")]
SetClassLongPtrA( hWnd: HWND, nIndex: c_int, dwNewLong: LONG_PTR, ) -> ULONG_PTR5068     pub fn SetClassLongPtrA(
5069         hWnd: HWND,
5070         nIndex: c_int,
5071         dwNewLong: LONG_PTR,
5072     ) -> ULONG_PTR;
5073     #[cfg(target_pointer_width = "64")]
SetClassLongPtrW( hWnd: HWND, nIndex: c_int, dwNewLong: LONG_PTR, ) -> ULONG_PTR5074     pub fn SetClassLongPtrW(
5075         hWnd: HWND,
5076         nIndex: c_int,
5077         dwNewLong: LONG_PTR,
5078     ) -> ULONG_PTR;
5079 }
5080 #[cfg(target_arch = "x86")]
5081 pub use self::GetClassLongA as GetClassLongPtrA;
5082 #[cfg(target_arch = "x86")]
5083 pub use self::GetClassLongW as GetClassLongPtrW;
5084 #[cfg(target_arch = "x86")]
5085 pub use self::SetClassLongA as SetClassLongPtrA;
5086 #[cfg(target_arch = "x86")]
5087 pub use self::SetClassLongW as SetClassLongPtrW;
5088 extern "system" {
GetProcessDefaultLayout( pdwDefaultLayout: *mut DWORD, ) -> BOOL5089     pub fn GetProcessDefaultLayout(
5090         pdwDefaultLayout: *mut DWORD,
5091     ) -> BOOL;
SetProcessDefaultLayout( dwDefaultLayout: DWORD, ) -> BOOL5092     pub fn SetProcessDefaultLayout(
5093         dwDefaultLayout: DWORD,
5094     ) -> BOOL;
GetDesktopWindow() -> HWND5095     pub fn GetDesktopWindow() -> HWND;
GetParent( hWnd: HWND, ) -> HWND5096     pub fn GetParent(
5097         hWnd: HWND,
5098     ) -> HWND;
SetParent( hWndChild: HWND, hWndNewParent: HWND, ) -> HWND5099     pub fn SetParent(
5100         hWndChild: HWND,
5101         hWndNewParent: HWND,
5102     ) -> HWND;
EnumChildWindows( hWndParent: HWND, lpEnumFunc: WNDENUMPROC, lParam: LPARAM, ) -> BOOL5103     pub fn EnumChildWindows(
5104         hWndParent: HWND,
5105         lpEnumFunc: WNDENUMPROC,
5106         lParam: LPARAM,
5107     ) -> BOOL;
FindWindowA( lpClassName: LPCSTR, lpWindowName: LPCSTR, ) -> HWND5108     pub fn FindWindowA(
5109         lpClassName: LPCSTR,
5110         lpWindowName: LPCSTR,
5111     ) -> HWND;
FindWindowW( lpClassName: LPCWSTR, lpWindowName: LPCWSTR, ) -> HWND5112     pub fn FindWindowW(
5113         lpClassName: LPCWSTR,
5114         lpWindowName: LPCWSTR,
5115     ) -> HWND;
FindWindowExA( hWndParent: HWND, hWndChildAfter: HWND, lpszClass: LPCSTR, lpszWindow: LPCSTR, ) -> HWND5116     pub fn FindWindowExA(
5117         hWndParent: HWND,
5118         hWndChildAfter: HWND,
5119         lpszClass: LPCSTR,
5120         lpszWindow: LPCSTR,
5121     ) -> HWND;
FindWindowExW( hWndParent: HWND, hWndChildAfter: HWND, lpszClass: LPCWSTR, lpszWindow: LPCWSTR, ) -> HWND5122     pub fn FindWindowExW(
5123         hWndParent: HWND,
5124         hWndChildAfter: HWND,
5125         lpszClass: LPCWSTR,
5126         lpszWindow: LPCWSTR,
5127     ) -> HWND;
GetShellWindow() -> HWND5128     pub fn GetShellWindow() -> HWND;
RegisterShellHookWindow( hwnd: HWND, ) -> BOOL5129     pub fn RegisterShellHookWindow(
5130         hwnd: HWND,
5131     ) -> BOOL;
DeregisterShellHookWindow( hwnd: HWND, ) -> BOOL5132     pub fn DeregisterShellHookWindow(
5133         hwnd: HWND,
5134     ) -> BOOL;
EnumWindows( lpEnumFunc: WNDENUMPROC, lParam: LPARAM, ) -> BOOL5135     pub fn EnumWindows(
5136         lpEnumFunc: WNDENUMPROC,
5137         lParam: LPARAM,
5138     ) -> BOOL;
EnumThreadWindows( dwThreadId: DWORD, lpfn: WNDENUMPROC, lParam: LPARAM, ) -> BOOL5139     pub fn EnumThreadWindows(
5140         dwThreadId: DWORD,
5141         lpfn: WNDENUMPROC,
5142         lParam: LPARAM,
5143     ) -> BOOL;
5144 }
5145 // EnumTaskWindows
5146 extern "system" {
GetClassNameA( hWnd: HWND, lpClassName: LPCSTR, nMaxCount: c_int, ) -> c_int5147     pub fn GetClassNameA(
5148         hWnd: HWND,
5149         lpClassName: LPCSTR,
5150         nMaxCount: c_int,
5151     ) -> c_int;
GetClassNameW( hWnd: HWND, lpClassName: LPCWSTR, nMaxCount: c_int, ) -> c_int5152     pub fn GetClassNameW(
5153         hWnd: HWND,
5154         lpClassName: LPCWSTR,
5155         nMaxCount: c_int,
5156     ) -> c_int;
GetTopWindow( hWnd: HWND, ) -> HWND5157     pub fn GetTopWindow(
5158         hWnd: HWND,
5159     ) -> HWND;
5160 }
5161 // GetNextWindow
5162 // GetSysModalWindow
5163 // SetSysModalWindow
5164 extern "system" {
GetWindowThreadProcessId( hWnd: HWND, lpdwProcessId: LPDWORD, ) -> DWORD5165     pub fn GetWindowThreadProcessId(
5166         hWnd: HWND,
5167         lpdwProcessId: LPDWORD,
5168     ) -> DWORD;
IsGUIThread( bConvert: BOOL, ) -> BOOL5169     pub fn IsGUIThread(
5170         bConvert: BOOL,
5171     ) -> BOOL;
GetLastActivePopup( hWnd: HWND, ) -> HWND5172     pub fn GetLastActivePopup(
5173         hWnd: HWND,
5174     ) -> HWND;
5175 }
5176 pub const GW_HWNDFIRST: UINT = 0;
5177 pub const GW_HWNDLAST: UINT = 1;
5178 pub const GW_HWNDNEXT: UINT = 2;
5179 pub const GW_HWNDPREV: UINT = 3;
5180 pub const GW_OWNER: UINT = 4;
5181 pub const GW_CHILD: UINT = 5;
5182 pub const GW_ENABLEDPOPUP: UINT = 6;
5183 pub const GW_MAX: UINT = 6;
5184 extern "system" {
GetWindow( hWnd: HWND, uCmd: UINT, ) -> HWND5185     pub fn GetWindow(
5186         hWnd: HWND,
5187         uCmd: UINT,
5188     ) -> HWND;
SetWindowsHookA( nFilterType: c_int, pfnFilterProc: HOOKPROC, ) -> HHOOK5189     pub fn SetWindowsHookA(
5190         nFilterType: c_int,
5191         pfnFilterProc: HOOKPROC,
5192     ) -> HHOOK;
SetWindowsHookW( nFilterType: c_int, pfnFilterProc: HOOKPROC, ) -> HHOOK5193     pub fn SetWindowsHookW(
5194         nFilterType: c_int,
5195         pfnFilterProc: HOOKPROC,
5196     ) -> HHOOK;
UnhookWindowsHook( nFilterType: c_int, pfnFilterProc: HOOKPROC, ) -> BOOL5197     pub fn UnhookWindowsHook(
5198         nFilterType: c_int,
5199         pfnFilterProc: HOOKPROC,
5200     ) -> BOOL;
SetWindowsHookExA( idHook: c_int, lpfn: HOOKPROC, hmod: HINSTANCE, dwThreadId: DWORD, ) -> HHOOK5201     pub fn SetWindowsHookExA(
5202         idHook: c_int,
5203         lpfn: HOOKPROC,
5204         hmod: HINSTANCE,
5205         dwThreadId: DWORD,
5206     ) -> HHOOK;
SetWindowsHookExW( idHook: c_int, lpfn: HOOKPROC, hmod: HINSTANCE, dwThreadId: DWORD, ) -> HHOOK5207     pub fn SetWindowsHookExW(
5208         idHook: c_int,
5209         lpfn: HOOKPROC,
5210         hmod: HINSTANCE,
5211         dwThreadId: DWORD,
5212     ) -> HHOOK;
UnhookWindowsHookEx( hhk: HHOOK, ) -> BOOL5213     pub fn UnhookWindowsHookEx(
5214         hhk: HHOOK,
5215     ) -> BOOL;
CallNextHookEx( hhk: HHOOK, nCode: c_int, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT5216     pub fn CallNextHookEx(
5217         hhk: HHOOK,
5218         nCode: c_int,
5219         wParam: WPARAM,
5220         lParam: LPARAM,
5221     ) -> LRESULT;
5222 }
5223 // DefHookProc
5224 pub const MF_INSERT: UINT = 0x00000000;
5225 pub const MF_CHANGE: UINT = 0x00000080;
5226 pub const MF_APPEND: UINT = 0x00000100;
5227 pub const MF_DELETE: UINT = 0x00000200;
5228 pub const MF_REMOVE: UINT = 0x00001000;
5229 pub const MF_BYCOMMAND: UINT = 0x00000000;
5230 pub const MF_BYPOSITION: UINT = 0x00000400;
5231 pub const MF_SEPARATOR: UINT = 0x00000800;
5232 pub const MF_ENABLED: UINT = 0x00000000;
5233 pub const MF_GRAYED: UINT = 0x00000001;
5234 pub const MF_DISABLED: UINT = 0x00000002;
5235 pub const MF_UNCHECKED: UINT = 0x00000000;
5236 pub const MF_CHECKED: UINT = 0x00000008;
5237 pub const MF_USECHECKBITMAPS: UINT = 0x00000200;
5238 pub const MF_STRING: UINT = 0x00000000;
5239 pub const MF_BITMAP: UINT = 0x00000004;
5240 pub const MF_OWNERDRAW: UINT = 0x00000100;
5241 pub const MF_POPUP: UINT = 0x00000010;
5242 pub const MF_MENUBARBREAK: UINT = 0x00000020;
5243 pub const MF_MENUBREAK: UINT = 0x00000040;
5244 pub const MF_UNHILITE: UINT = 0x00000000;
5245 pub const MF_HILITE: UINT = 0x00000080;
5246 pub const MF_DEFAULT: UINT = 0x00001000;
5247 pub const MF_SYSMENU: UINT = 0x00002000;
5248 pub const MF_HELP: UINT = 0x00004000;
5249 pub const MF_RIGHTJUSTIFY: UINT = 0x00004000;
5250 pub const MF_MOUSESELECT: UINT = 0x00008000;
5251 pub const MF_END: UINT = 0x00000080;
5252 pub const MFT_STRING: UINT = MF_STRING;
5253 pub const MFT_BITMAP: UINT = MF_BITMAP;
5254 pub const MFT_MENUBARBREAK: UINT = MF_MENUBARBREAK;
5255 pub const MFT_MENUBREAK: UINT = MF_MENUBREAK;
5256 pub const MFT_OWNERDRAW: UINT = MF_OWNERDRAW;
5257 pub const MFT_RADIOCHECK: UINT = 0x00000200;
5258 pub const MFT_SEPARATOR: UINT = MF_SEPARATOR;
5259 pub const MFT_RIGHTORDER: UINT = 0x00002000;
5260 pub const MFT_RIGHTJUSTIFY: UINT = MF_RIGHTJUSTIFY;
5261 pub const MFS_GRAYED: UINT = 0x00000003;
5262 pub const MFS_DISABLED: UINT = MFS_GRAYED;
5263 pub const MFS_CHECKED: UINT = MF_CHECKED;
5264 pub const MFS_HILITE: UINT = MF_HILITE;
5265 pub const MFS_ENABLED: UINT = MF_ENABLED;
5266 pub const MFS_UNCHECKED: UINT = MF_UNCHECKED;
5267 pub const MFS_UNHILITE: UINT = MF_UNHILITE;
5268 pub const MFS_DEFAULT: UINT = MF_DEFAULT;
5269 extern "system" {
CheckMenuRadioItem( hMenu: HMENU, first: UINT, last: UINT, check: UINT, flags: UINT, ) -> BOOL5270     pub fn CheckMenuRadioItem(
5271         hMenu: HMENU,
5272         first: UINT,
5273         last: UINT,
5274         check: UINT,
5275         flags: UINT,
5276     ) -> BOOL;
5277 }
5278 /*********
5279 * CUTOFF *
5280 *********/
5281 pub const IDOK: c_int = 1;
5282 pub const IDCANCEL: c_int = 2;
5283 pub const IDABORT: c_int = 3;
5284 pub const IDRETRY: c_int = 4;
5285 pub const IDIGNORE: c_int = 5;
5286 pub const IDYES: c_int = 6;
5287 pub const IDNO: c_int = 7;
5288 pub const IDCLOSE: c_int = 8;
5289 pub const IDHELP: c_int = 9;
5290 pub const IDTRYAGAIN: c_int = 10;
5291 pub const IDCONTINUE: c_int = 11;
5292 pub const IDTIMEOUT: c_int = 32000;
5293 // Edit Control Styles
5294 //
5295 pub const ES_LEFT: DWORD = 0x0000;
5296 pub const ES_CENTER: DWORD = 0x0001;
5297 pub const ES_RIGHT: DWORD = 0x0002;
5298 pub const ES_MULTILINE: DWORD = 0x0004;
5299 pub const ES_UPPERCASE: DWORD = 0x0008;
5300 pub const ES_LOWERCASE: DWORD = 0x0010;
5301 pub const ES_PASSWORD: DWORD = 0x0020;
5302 pub const ES_AUTOVSCROLL: DWORD = 0x0040;
5303 pub const ES_AUTOHSCROLL: DWORD = 0x0080;
5304 pub const ES_NOHIDESEL: DWORD = 0x0100;
5305 pub const ES_OEMCONVERT: DWORD = 0x0400;
5306 pub const ES_READONLY: DWORD = 0x0800;
5307 pub const ES_WANTRETURN: DWORD = 0x1000;
5308 pub const ES_NUMBER: DWORD = 0x2000;
5309 // Edit Control Notification Codes
5310 //
5311 pub const EN_SETFOCUS: WORD = 0x0100;
5312 pub const EN_KILLFOCUS: WORD = 0x0200;
5313 pub const EN_CHANGE: WORD = 0x0300;
5314 pub const EN_UPDATE: WORD = 0x0400;
5315 pub const EN_ERRSPACE: WORD = 0x0500;
5316 pub const EN_MAXTEXT: WORD = 0x0501;
5317 pub const EN_HSCROLL: WORD = 0x0601;
5318 pub const EN_VSCROLL: WORD = 0x0602;
5319 pub const EN_ALIGN_LTR_EC: WORD = 0x0700;
5320 pub const EN_ALIGN_RTL_EC: WORD = 0x0701;
5321 // Edit control EM_SETMARGIN parameters
5322 pub const EC_LEFTMARGIN: WORD = 0x0001;
5323 pub const EC_RIGHTMARGIN: WORD = 0x0002;
5324 pub const EC_USEFONTINFO: WORD = 0xffff;
5325 // wParam of EM_GET/SETIMESTATUS
5326 pub const EMSIS_COMPOSITIONSTRING: WORD = 0x0001;
5327 // lParam for EMSIS_COMPOSITIONSTRING
5328 pub const EIMES_GETCOMPSTRATONCE: WORD = 0x0001;
5329 pub const EIMES_CANCELCOMPSTRINFOCUS: WORD = 0x0002;
5330 pub const EIMES_COMPLETECOMPSTRKILLFOCUS: WORD = 0x0004;
5331 // Edit Control Messages
5332 //
5333 pub const EM_GETSEL: WORD = 0x00B0;
5334 pub const EM_SETSEL: WORD = 0x00B1;
5335 pub const EM_GETRECT: WORD = 0x00B2;
5336 pub const EM_SETRECT: WORD = 0x00B3;
5337 pub const EM_SETRECTNP: WORD = 0x00B4;
5338 pub const EM_SCROLL: WORD = 0x00B5;
5339 pub const EM_LINESCROLL: WORD = 0x00B6;
5340 pub const EM_SCROLLCARET: WORD = 0x00B7;
5341 pub const EM_GETMODIFY: WORD = 0x00B8;
5342 pub const EM_SETMODIFY: WORD = 0x00B9;
5343 pub const EM_GETLINECOUNT: WORD = 0x00BA;
5344 pub const EM_LINEINDEX: WORD = 0x00BB;
5345 pub const EM_SETHANDLE: WORD = 0x00BC;
5346 pub const EM_GETHANDLE: WORD = 0x00BD;
5347 pub const EM_GETTHUMB: WORD = 0x00BE;
5348 pub const EM_LINELENGTH: WORD = 0x00C1;
5349 pub const EM_REPLACESEL: WORD = 0x00C2;
5350 pub const EM_GETLINE: WORD = 0x00C4;
5351 pub const EM_LIMITTEXT: WORD = 0x00C5;
5352 pub const EM_CANUNDO: WORD = 0x00C6;
5353 pub const EM_UNDO: WORD = 0x00C7;
5354 pub const EM_FMTLINES: WORD = 0x00C8;
5355 pub const EM_LINEFROMCHAR: WORD = 0x00C9;
5356 pub const EM_SETTABSTOPS: WORD = 0x00CB;
5357 pub const EM_SETPASSWORDCHAR: WORD = 0x00CC;
5358 pub const EM_EMPTYUNDOBUFFER: WORD = 0x00CD;
5359 pub const EM_GETFIRSTVISIBLELINE: WORD = 0x00CE;
5360 pub const EM_SETREADONLY: WORD = 0x00CF;
5361 pub const EM_SETWORDBREAKPROC: WORD = 0x00D0;
5362 pub const EM_GETWORDBREAKPROC: WORD = 0x00D1;
5363 pub const EM_GETPASSWORDCHAR: WORD = 0x00D2;
5364 pub const EM_SETMARGINS: WORD = 0x00D3;
5365 pub const EM_GETMARGINS: WORD = 0x00D4;
5366 pub const EM_SETLIMITTEXT: WORD = EM_LIMITTEXT;
5367 pub const EM_GETLIMITTEXT: WORD = 0x00D5;
5368 pub const EM_POSFROMCHAR: WORD = 0x00D6;
5369 pub const EM_CHARFROMPOS: WORD = 0x00D7;
5370 pub const EM_SETIMESTATUS: WORD = 0x00D8;
5371 pub const EM_GETIMESTATUS: WORD = 0x00D9;
5372 // EDITWORDBREAKPROC code values
5373 //
5374 pub const WB_LEFT: WORD = 0;
5375 pub const WB_RIGHT: WORD = 1;
5376 pub const WB_ISDELIMITER: WORD = 2;
5377 pub const BN_CLICKED: WORD = 0;
5378 pub const BN_PAINT: WORD = 1;
5379 pub const BN_HILITE: WORD = 2;
5380 pub const BN_UNHILITE: WORD = 3;
5381 pub const BN_DISABLE: WORD = 4;
5382 pub const BN_DOUBLECLICKED: WORD = 5;
5383 pub const BN_PUSHED: WORD = BN_HILITE;
5384 pub const BN_UNPUSHED: WORD = BN_UNHILITE;
5385 pub const BN_DBLCLK: WORD = BN_DOUBLECLICKED;
5386 pub const BN_SETFOCUS: WORD = 6;
5387 pub const BN_KILLFOCUS: WORD = 7;
5388 pub const BS_PUSHBUTTON: DWORD = 0x00000000;
5389 pub const BS_DEFPUSHBUTTON: DWORD = 0x00000001;
5390 pub const BS_CHECKBOX: DWORD = 0x00000002;
5391 pub const BS_AUTOCHECKBOX: DWORD = 0x00000003;
5392 pub const BS_RADIOBUTTON: DWORD = 0x00000004;
5393 pub const BS_3STATE: DWORD = 0x00000005;
5394 pub const BS_AUTO3STATE: DWORD = 0x00000006;
5395 pub const BS_GROUPBOX: DWORD = 0x00000007;
5396 pub const BS_USERBUTTON: DWORD = 0x00000008;
5397 pub const BS_AUTORADIOBUTTON: DWORD = 0x00000009;
5398 pub const BS_PUSHBOX: DWORD = 0x0000000A;
5399 pub const BS_OWNERDRAW: DWORD = 0x0000000B;
5400 pub const BS_TYPEMASK: DWORD = 0x0000000F;
5401 pub const BS_LEFTTEXT: DWORD = 0x00000020;
5402 pub const BS_TEXT: DWORD = 0x00000000;
5403 pub const BS_ICON: DWORD = 0x00000040;
5404 pub const BS_BITMAP: DWORD = 0x00000080;
5405 pub const BS_LEFT: DWORD = 0x00000100;
5406 pub const BS_RIGHT: DWORD = 0x00000200;
5407 pub const BS_CENTER: DWORD = 0x00000300;
5408 pub const BS_TOP: DWORD = 0x00000400;
5409 pub const BS_BOTTOM: DWORD = 0x00000800;
5410 pub const BS_VCENTER: DWORD = 0x00000C00;
5411 pub const BS_PUSHLIKE: DWORD = 0x00001000;
5412 pub const BS_MULTILINE: DWORD = 0x00002000;
5413 pub const BS_NOTIFY: DWORD = 0x00004000;
5414 pub const BS_FLAT: DWORD = 0x00008000;
5415 pub const BS_RIGHTBUTTON: DWORD = BS_LEFTTEXT;
5416 pub const BM_GETCHECK: UINT = 0x00F0;
5417 pub const BM_SETCHECK: UINT = 0x00F1;
5418 pub const BM_GETSTATE: UINT = 0x00F2;
5419 pub const BM_SETSTATE: UINT = 0x00F3;
5420 pub const BM_SETSTYLE: UINT = 0x00F4;
5421 pub const BM_CLICK: UINT = 0x00F5;
5422 pub const BM_GETIMAGE: UINT = 0x00F6;
5423 pub const BM_SETIMAGE: UINT = 0x00F7;
5424 pub const BM_SETDONTCLICK: UINT = 0x00F8;
5425 pub const BST_UNCHECKED: WPARAM = 0x0000;
5426 pub const BST_CHECKED: WPARAM = 0x0001;
5427 pub const BST_INDETERMINATE: WPARAM = 0x0002;
5428 pub const BST_PUSHED: LRESULT = 0x0004;
5429 pub const BST_FOCUS: LRESULT = 0x0008;
5430 pub const SS_LEFT: DWORD = 0x00000000;
5431 pub const SS_CENTER: DWORD = 0x00000001;
5432 pub const SS_RIGHT: DWORD = 0x00000002;
5433 pub const SS_ICON: DWORD = 0x00000003;
5434 pub const SS_BLACKRECT: DWORD = 0x00000004;
5435 pub const SS_GRAYRECT: DWORD = 0x00000005;
5436 pub const SS_WHITERECT: DWORD = 0x00000006;
5437 pub const SS_BLACKFRAME: DWORD = 0x00000007;
5438 pub const SS_GRAYFRAME: DWORD = 0x00000008;
5439 pub const SS_WHITEFRAME: DWORD = 0x00000009;
5440 pub const SS_USERITEM: DWORD = 0x0000000A;
5441 pub const SS_SIMPLE: DWORD = 0x0000000B;
5442 pub const SS_LEFTNOWORDWRAP: DWORD = 0x0000000C;
5443 pub const SS_OWNERDRAW: DWORD = 0x0000000D;
5444 pub const SS_BITMAP: DWORD = 0x0000000E;
5445 pub const SS_ENHMETAFILE: DWORD = 0x0000000F;
5446 pub const SS_ETCHEDHORZ: DWORD = 0x00000010;
5447 pub const SS_ETCHEDVERT: DWORD = 0x00000011;
5448 pub const SS_ETCHEDFRAME: DWORD = 0x00000012;
5449 pub const SS_TYPEMASK: DWORD = 0x0000001F;
5450 pub const SS_REALSIZECONTROL: DWORD = 0x00000040;
5451 pub const SS_NOPREFIX: DWORD = 0x00000080;
5452 pub const SS_NOTIFY: DWORD = 0x00000100;
5453 pub const SS_CENTERIMAGE: DWORD = 0x00000200;
5454 pub const SS_RIGHTJUST: DWORD = 0x00000400;
5455 pub const SS_REALSIZEIMAGE: DWORD = 0x00000800;
5456 pub const SS_SUNKEN: DWORD = 0x00001000;
5457 pub const SS_EDITCONTROL: DWORD = 0x00002000;
5458 pub const SS_ENDELLIPSIS: DWORD = 0x00004000;
5459 pub const SS_PATHELLIPSIS: DWORD = 0x00008000;
5460 pub const SS_WORDELLIPSIS: DWORD = 0x0000C000;
5461 pub const SS_ELLIPSISMASK: DWORD = 0x0000C000;
5462 pub const STM_SETICON: UINT = 0x0170;
5463 pub const STM_GETICON: UINT = 0x0171;
5464 pub const STM_SETIMAGE: UINT = 0x0172;
5465 pub const STM_GETIMAGE: UINT = 0x0173;
5466 pub const STN_CLICKED: WORD = 0;
5467 pub const STN_DBLCLK: WORD = 1;
5468 pub const STN_ENABLE: WORD = 2;
5469 pub const STN_DISABLE: WORD = 3;
5470 pub const STM_MSGMAX: WORD = 0x0174;
5471 extern "system" {
IsDialogMessageA( hDlg: HWND, lpMsg: LPMSG, ) -> BOOL5472     pub fn IsDialogMessageA(
5473         hDlg: HWND,
5474         lpMsg: LPMSG,
5475     ) -> BOOL;
IsDialogMessageW( hDlg: HWND, lpMsg: LPMSG, ) -> BOOL5476     pub fn IsDialogMessageW(
5477         hDlg: HWND,
5478         lpMsg: LPMSG,
5479     ) -> BOOL;
MapDialogRect( hDlg: HWND, lpRect: LPRECT, ) -> BOOL5480     pub fn MapDialogRect(
5481         hDlg: HWND,
5482         lpRect: LPRECT,
5483     ) -> BOOL;
DlgDirListA( hDlg: HWND, lpPathSpec: LPSTR, nIDListBox: c_int, nIDStaticPath: c_int, uFileType: UINT, ) -> c_int5484     pub fn DlgDirListA(
5485         hDlg: HWND,
5486         lpPathSpec: LPSTR,
5487         nIDListBox: c_int,
5488         nIDStaticPath: c_int,
5489         uFileType: UINT,
5490     ) -> c_int;
DlgDirListW( hDlg: HWND, lpPathSpec: LPWSTR, nIDListBox: c_int, nIDStaticPath: c_int, uFileType: UINT, ) -> c_int5491     pub fn DlgDirListW(
5492         hDlg: HWND,
5493         lpPathSpec: LPWSTR,
5494         nIDListBox: c_int,
5495         nIDStaticPath: c_int,
5496         uFileType: UINT,
5497     ) -> c_int;
DlgDirSelectExA( hwndDlg: HWND, lpString: LPSTR, chCount: c_int, idListBox: c_int, ) -> BOOL5498     pub fn DlgDirSelectExA(
5499         hwndDlg: HWND,
5500         lpString: LPSTR,
5501         chCount: c_int,
5502         idListBox: c_int,
5503     ) -> BOOL;
DlgDirSelectExW( hwndDlg: HWND, lpString: LPWSTR, chCount: c_int, idListBox: c_int, ) -> BOOL5504     pub fn DlgDirSelectExW(
5505         hwndDlg: HWND,
5506         lpString: LPWSTR,
5507         chCount: c_int,
5508         idListBox: c_int,
5509     ) -> BOOL;
DlgDirListComboBoxA( hDlg: HWND, lpPathSpec: LPSTR, nIDComboBox: c_int, nIDStaticPath: c_int, uFiletype: UINT, ) -> c_int5510     pub fn DlgDirListComboBoxA(
5511         hDlg: HWND,
5512         lpPathSpec: LPSTR,
5513         nIDComboBox: c_int,
5514         nIDStaticPath: c_int,
5515         uFiletype: UINT,
5516     ) -> c_int;
DlgDirListComboBoxW( hDlg: HWND, lpPathSpec: LPWSTR, nIDComboBox: c_int, nIDStaticPath: c_int, uFiletype: UINT, ) -> c_int5517     pub fn DlgDirListComboBoxW(
5518         hDlg: HWND,
5519         lpPathSpec: LPWSTR,
5520         nIDComboBox: c_int,
5521         nIDStaticPath: c_int,
5522         uFiletype: UINT,
5523     ) -> c_int;
DlgDirSelectComboBoxExA( hwndDlg: HWND, lpString: LPSTR, cchOut: c_int, idComboBox: c_int, ) -> BOOL5524     pub fn DlgDirSelectComboBoxExA(
5525         hwndDlg: HWND,
5526         lpString: LPSTR,
5527         cchOut: c_int,
5528         idComboBox: c_int,
5529     ) -> BOOL;
DlgDirSelectComboBoxExW( hwndDlg: HWND, lpString: LPWSTR, cchOut: c_int, idComboBox: c_int, ) -> BOOL5530     pub fn DlgDirSelectComboBoxExW(
5531         hwndDlg: HWND,
5532         lpString: LPWSTR,
5533         cchOut: c_int,
5534         idComboBox: c_int,
5535     ) -> BOOL;
5536 }
5537 pub const DS_ABSALIGN: DWORD = 0x01;
5538 pub const DS_SYSMODAL: DWORD = 0x02;
5539 pub const DS_LOCALEDIT: DWORD = 0x20;
5540 pub const DS_SETFONT: DWORD = 0x40;
5541 pub const DS_MODALFRAME: DWORD = 0x80;
5542 pub const DS_NOIDLEMSG: DWORD = 0x100;
5543 pub const DS_SETFOREGROUND: DWORD = 0x200;
5544 pub const DS_3DLOOK: DWORD = 0x0004;
5545 pub const DS_FIXEDSYS: DWORD = 0x0008;
5546 pub const DS_NOFAILCREATE: DWORD = 0x0010;
5547 pub const DS_CONTROL: DWORD = 0x0400;
5548 pub const DS_CENTER: DWORD = 0x0800;
5549 pub const DS_CENTERMOUSE: DWORD = 0x1000;
5550 pub const DS_CONTEXTHELP: DWORD = 0x2000;
5551 pub const DS_SHELLFONT: DWORD = DS_SETFONT | DS_FIXEDSYS;
5552 pub const DS_USEPIXELS: DWORD = 0x8000;
5553 pub const DM_GETDEFID: UINT = WM_USER + 0;
5554 pub const DM_SETDEFID: UINT = WM_USER + 1;
5555 pub const DM_REPOSITION: UINT = WM_USER + 2;
5556 pub const DC_HASDEFID: WORD = 0x534B;
5557 pub const DLGC_WANTARROWS: LRESULT = 0x0001;
5558 pub const DLGC_WANTTAB: LRESULT = 0x0002;
5559 pub const DLGC_WANTALLKEYS: LRESULT = 0x0004;
5560 pub const DLGC_WANTMESSAGE: LRESULT = 0x0004;
5561 pub const DLGC_HASSETSEL: LRESULT = 0x0008;
5562 pub const DLGC_DEFPUSHBUTTON: LRESULT = 0x0010;
5563 pub const DLGC_UNDEFPUSHBUTTON: LRESULT = 0x0020;
5564 pub const DLGC_RADIOBUTTON: LRESULT = 0x0040;
5565 pub const DLGC_WANTCHARS: LRESULT = 0x0080;
5566 pub const DLGC_STATIC: LRESULT = 0x0100;
5567 pub const DLGC_BUTTON: LRESULT = 0x2000;
5568 pub const LB_OKAY: LRESULT = 0;
5569 pub const LB_ERR: LRESULT = -1;
5570 pub const LB_ERRSPACE: LRESULT = -2;
5571 pub const LBN_ERRSPACE: WORD = -2i16 as u16;
5572 pub const LBN_SELCHANGE: WORD = 1;
5573 pub const LBN_DBLCLK: WORD = 2;
5574 pub const LBN_SELCANCEL: WORD = 3;
5575 pub const LBN_SETFOCUS: WORD = 4;
5576 pub const LBN_KILLFOCUS: WORD = 5;
5577 pub const LB_ADDSTRING: UINT = 0x0180;
5578 pub const LB_INSERTSTRING: UINT = 0x0181;
5579 pub const LB_DELETESTRING: UINT = 0x0182;
5580 pub const LB_SELITEMRANGEEX: UINT = 0x0183;
5581 pub const LB_RESETCONTENT: UINT = 0x0184;
5582 pub const LB_SETSEL: UINT = 0x0185;
5583 pub const LB_SETCURSEL: UINT = 0x0186;
5584 pub const LB_GETSEL: UINT = 0x0187;
5585 pub const LB_GETCURSEL: UINT = 0x0188;
5586 pub const LB_GETTEXT: UINT = 0x0189;
5587 pub const LB_GETTEXTLEN: UINT = 0x018A;
5588 pub const LB_GETCOUNT: UINT = 0x018B;
5589 pub const LB_SELECTSTRING: UINT = 0x018C;
5590 pub const LB_DIR: UINT = 0x018D;
5591 pub const LB_GETTOPINDEX: UINT = 0x018E;
5592 pub const LB_FINDSTRING: UINT = 0x018F;
5593 pub const LB_GETSELCOUNT: UINT = 0x0190;
5594 pub const LB_GETSELITEMS: UINT = 0x0191;
5595 pub const LB_SETTABSTOPS: UINT = 0x0192;
5596 pub const LB_GETHORIZONTALEXTENT: UINT = 0x0193;
5597 pub const LB_SETHORIZONTALEXTENT: UINT = 0x0194;
5598 pub const LB_SETCOLUMNWIDTH: UINT = 0x0195;
5599 pub const LB_ADDFILE: UINT = 0x0196;
5600 pub const LB_SETTOPINDEX: UINT = 0x0197;
5601 pub const LB_GETITEMRECT: UINT = 0x0198;
5602 pub const LB_GETITEMDATA: UINT = 0x0199;
5603 pub const LB_SETITEMDATA: UINT = 0x019A;
5604 pub const LB_SELITEMRANGE: UINT = 0x019B;
5605 pub const LB_SETANCHORINDEX: UINT = 0x019C;
5606 pub const LB_GETANCHORINDEX: UINT = 0x019D;
5607 pub const LB_SETCARETINDEX: UINT = 0x019E;
5608 pub const LB_GETCARETINDEX: UINT = 0x019F;
5609 pub const LB_SETITEMHEIGHT: UINT = 0x01A0;
5610 pub const LB_GETITEMHEIGHT: UINT = 0x01A1;
5611 pub const LB_FINDSTRINGEXACT: UINT = 0x01A2;
5612 pub const LB_SETLOCALE: UINT = 0x01A5;
5613 pub const LB_GETLOCALE: UINT = 0x01A6;
5614 pub const LB_SETCOUNT: UINT = 0x01A7;
5615 pub const LB_INITSTORAGE: UINT = 0x01A8;
5616 pub const LB_ITEMFROMPOINT: UINT = 0x01A9;
5617 pub const LB_MULTIPLEADDSTRING: UINT = 0x01B1;
5618 pub const LB_GETLISTBOXINFO: UINT = 0x01B2;
5619 pub const LB_MSGMAX: UINT = 0x01B3;
5620 pub const LBS_NOTIFY: DWORD = 0x0001;
5621 pub const LBS_SORT: DWORD = 0x0002;
5622 pub const LBS_NOREDRAW: DWORD = 0x0004;
5623 pub const LBS_MULTIPLESEL: DWORD = 0x0008;
5624 pub const LBS_OWNERDRAWFIXED: DWORD = 0x0010;
5625 pub const LBS_OWNERDRAWVARIABLE: DWORD = 0x0020;
5626 pub const LBS_HASSTRINGS: DWORD = 0x0040;
5627 pub const LBS_USETABSTOPS: DWORD = 0x0080;
5628 pub const LBS_NOINTEGRALHEIGHT: DWORD = 0x0100;
5629 pub const LBS_MULTICOLUMN: DWORD = 0x0200;
5630 pub const LBS_WANTKEYBOARDINPUT: DWORD = 0x0400;
5631 pub const LBS_EXTENDEDSEL: DWORD = 0x0800;
5632 pub const LBS_DISABLENOSCROLL: DWORD = 0x1000;
5633 pub const LBS_NODATA: DWORD = 0x2000;
5634 pub const LBS_NOSEL: DWORD = 0x4000;
5635 pub const LBS_COMBOBOX: DWORD = 0x8000;
5636 pub const LBS_STANDARD: DWORD = LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER;
5637 pub const CB_OKAY: LRESULT = 0;
5638 pub const CB_ERR: LRESULT = -1;
5639 pub const CB_ERRSPACE: LRESULT = -2;
5640 pub const CBN_ERRSPACE: WORD = -1i16 as u16;
5641 pub const CBN_SELCHANGE: WORD = 1;
5642 pub const CBN_DBLCLK: WORD = 2;
5643 pub const CBN_SETFOCUS: WORD = 3;
5644 pub const CBN_KILLFOCUS: WORD = 4;
5645 pub const CBN_EDITCHANGE: WORD = 5;
5646 pub const CBN_EDITUPDATE: WORD = 6;
5647 pub const CBN_DROPDOWN: WORD = 7;
5648 pub const CBN_CLOSEUP: WORD = 8;
5649 pub const CBN_SELENDOK: WORD = 9;
5650 pub const CBN_SELENDCANCEL: WORD = 10;
5651 pub const CBS_SIMPLE: DWORD = 0x0001;
5652 pub const CBS_DROPDOWN: DWORD = 0x0002;
5653 pub const CBS_DROPDOWNLIST: DWORD = 0x0003;
5654 pub const CBS_OWNERDRAWFIXED: DWORD = 0x0010;
5655 pub const CBS_OWNERDRAWVARIABLE: DWORD = 0x0020;
5656 pub const CBS_AUTOHSCROLL: DWORD = 0x0040;
5657 pub const CBS_OEMCONVERT: DWORD = 0x0080;
5658 pub const CBS_SORT: DWORD = 0x0100;
5659 pub const CBS_HASSTRINGS: DWORD = 0x0200;
5660 pub const CBS_NOINTEGRALHEIGHT: DWORD = 0x0400;
5661 pub const CBS_DISABLENOSCROLL: DWORD = 0x0800;
5662 pub const CBS_UPPERCASE: DWORD = 0x2000;
5663 pub const CBS_LOWERCASE: DWORD = 0x4000;
5664 pub const CB_MULTIPLEADDSTRING: UINT = 0x0163;
5665 pub const CB_GETCOMBOBOXINFO: UINT = 0x0164;
5666 pub const CB_MSGMAX: UINT = 0x0165;
5667 pub const SBS_HORZ: DWORD = 0x0000;
5668 pub const SBS_VERT: DWORD = 0x0001;
5669 pub const SBS_TOPALIGN: DWORD = 0x0002;
5670 pub const SBS_LEFTALIGN: DWORD = 0x0002;
5671 pub const SBS_BOTTOMALIGN: DWORD = 0x0004;
5672 pub const SBS_RIGHTALIGN: DWORD = 0x0004;
5673 pub const SBS_SIZEBOXTOPLEFTALIGN: DWORD = 0x0002;
5674 pub const SBS_SIZEBOXBOTTOMRIGHTALIGN: DWORD = 0x0004;
5675 pub const SBS_SIZEBOX: DWORD = 0x0008;
5676 pub const SBS_SIZEGRIP: DWORD = 0x0010;
5677 pub const SBM_SETPOS: UINT = 0x00E0;
5678 pub const SBM_GETPOS: UINT = 0x00E1;
5679 pub const SBM_SETRANGE: UINT = 0x00E2;
5680 pub const SBM_SETRANGEREDRAW: UINT = 0x00E6;
5681 pub const SBM_GETRANGE: UINT = 0x00E3;
5682 pub const SBM_ENABLE_ARROWS: UINT = 0x00E4;
5683 pub const SBM_SETSCROLLINFO: UINT = 0x00E9;
5684 pub const SBM_GETSCROLLINFO: UINT = 0x00EA;
5685 pub const SBM_GETSCROLLBARINFO: UINT = 0x00EB;
5686 pub const SIF_RANGE: UINT = 0x0001;
5687 pub const SIF_PAGE: UINT = 0x0002;
5688 pub const SIF_POS: UINT = 0x0004;
5689 pub const SIF_DISABLENOSCROLL: UINT = 0x0008;
5690 pub const SIF_TRACKPOS: UINT = 0x0010;
5691 pub const SIF_ALL: UINT = SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS;
5692 STRUCT!{struct SCROLLINFO {
5693     cbSize: UINT,
5694     fMask: UINT,
5695     nMin: c_int,
5696     nMax: c_int,
5697     nPage: UINT,
5698     nPos: c_int,
5699     nTrackPos: c_int,
5700 }}
5701 pub type LPSCROLLINFO = *mut SCROLLINFO;
5702 pub type LPCSCROLLINFO = *const SCROLLINFO;
5703 extern "system" {
SetScrollInfo( hwnd: HWND, nBar: c_int, lpsi: *const SCROLLINFO, redraw: BOOL, ) -> c_int5704     pub fn SetScrollInfo(
5705         hwnd: HWND,
5706         nBar: c_int,
5707         lpsi: *const SCROLLINFO,
5708         redraw: BOOL,
5709     ) -> c_int;
GetScrollInfo( hwnd: HWND, nBar: c_int, lpsi: *mut SCROLLINFO, ) -> BOOL5710     pub fn GetScrollInfo(
5711         hwnd: HWND,
5712         nBar: c_int,
5713         lpsi: *mut SCROLLINFO,
5714     ) -> BOOL;
5715 }
5716 pub const CCHILDREN_SCROLLBAR: usize = 5;
5717 pub const CDS_UPDATEREGISTRY: DWORD = 0x00000001;
5718 pub const CDS_TEST: DWORD = 0x00000002;
5719 pub const CDS_FULLSCREEN: DWORD = 0x00000004;
5720 pub const CDS_GLOBAL: DWORD = 0x00000008;
5721 pub const CDS_SET_PRIMARY: DWORD = 0x00000010;
5722 pub const CDS_VIDEOPARAMETERS: DWORD = 0x00000020;
5723 pub const CDS_ENABLE_UNSAFE_MODES: DWORD = 0x00000100;
5724 pub const CDS_DISABLE_UNSAFE_MODES: DWORD = 0x00000200;
5725 pub const CDS_RESET: DWORD = 0x40000000;
5726 pub const CDS_RESET_EX: DWORD = 0x20000000;
5727 pub const CDS_NORESET: DWORD = 0x10000000;
5728 pub const DISP_CHANGE_SUCCESSFUL: LONG = 0;
5729 pub const DISP_CHANGE_RESTART: LONG = 1;
5730 pub const DISP_CHANGE_FAILED: LONG = -1;
5731 pub const DISP_CHANGE_BADMODE: LONG = -2;
5732 pub const DISP_CHANGE_NOTUPDATED: LONG = -3;
5733 pub const DISP_CHANGE_BADFLAGS: LONG = -4;
5734 pub const DISP_CHANGE_BADPARAM: LONG = -5;
5735 pub const DISP_CHANGE_BADDUALVIEW: LONG = -6;
5736 extern "system" {
ChangeDisplaySettingsA( lpDevMode: *mut DEVMODEA, dwFlags: DWORD, ) -> LONG5737     pub fn ChangeDisplaySettingsA(
5738         lpDevMode: *mut DEVMODEA,
5739         dwFlags: DWORD,
5740     ) -> LONG;
ChangeDisplaySettingsW( lpDevMode: *mut DEVMODEW, dwFlags: DWORD, ) -> LONG5741     pub fn ChangeDisplaySettingsW(
5742         lpDevMode: *mut DEVMODEW,
5743         dwFlags: DWORD,
5744     ) -> LONG;
ChangeDisplaySettingsExA( lpszDeviceName: LPCSTR, lpDevMode: *mut DEVMODEA, hwnd: HWND, dwFlags: DWORD, lParam: LPVOID, ) -> LONG5745     pub fn ChangeDisplaySettingsExA(
5746         lpszDeviceName: LPCSTR,
5747         lpDevMode: *mut DEVMODEA,
5748         hwnd: HWND,
5749         dwFlags: DWORD,
5750         lParam: LPVOID,
5751     ) -> LONG;
ChangeDisplaySettingsExW( lpszDeviceName: LPCWSTR, lpDevMode: *mut DEVMODEW, hwnd: HWND, dwFlags: DWORD, lParam: LPVOID, ) -> LONG5752     pub fn ChangeDisplaySettingsExW(
5753         lpszDeviceName: LPCWSTR,
5754         lpDevMode: *mut DEVMODEW,
5755         hwnd: HWND,
5756         dwFlags: DWORD,
5757         lParam: LPVOID,
5758     ) -> LONG;
EnumDisplaySettingsA( lpszDeviceName: LPCSTR, iModeNum: DWORD, lpDevMode: *mut DEVMODEA, ) -> BOOL5759     pub fn EnumDisplaySettingsA(
5760         lpszDeviceName: LPCSTR,
5761         iModeNum: DWORD,
5762         lpDevMode: *mut DEVMODEA,
5763     ) -> BOOL;
EnumDisplaySettingsW( lpszDeviceName: LPCWSTR, iModeNum: DWORD, lpDevMode: *mut DEVMODEW, ) -> BOOL5764     pub fn EnumDisplaySettingsW(
5765         lpszDeviceName: LPCWSTR,
5766         iModeNum: DWORD,
5767         lpDevMode: *mut DEVMODEW,
5768     ) -> BOOL;
EnumDisplaySettingsExA( lpszDeviceName: LPCSTR, iModeNum: DWORD, lpDevMode: *mut DEVMODEA, dwFlags: DWORD, ) -> BOOL5769     pub fn EnumDisplaySettingsExA(
5770         lpszDeviceName: LPCSTR,
5771         iModeNum: DWORD,
5772         lpDevMode: *mut DEVMODEA,
5773         dwFlags: DWORD,
5774     ) -> BOOL;
EnumDisplaySettingsExW( lpszDeviceName: LPCWSTR, iModeNum: DWORD, lpDevMode: *mut DEVMODEW, dwFlags: DWORD, ) -> BOOL5775     pub fn EnumDisplaySettingsExW(
5776         lpszDeviceName: LPCWSTR,
5777         iModeNum: DWORD,
5778         lpDevMode: *mut DEVMODEW,
5779         dwFlags: DWORD,
5780     ) -> BOOL;
EnumDisplayDevicesA( lpDevice: LPCSTR, iDevNum: DWORD, lpDisplayDevice: PDISPLAY_DEVICEA, dwFlags: DWORD, ) -> BOOL5781     pub fn EnumDisplayDevicesA(
5782         lpDevice: LPCSTR,
5783         iDevNum: DWORD,
5784         lpDisplayDevice: PDISPLAY_DEVICEA,
5785         dwFlags: DWORD,
5786     ) -> BOOL;
EnumDisplayDevicesW( lpDevice: LPCWSTR, iDevNum: DWORD, lpDisplayDevice: PDISPLAY_DEVICEW, dwFlags: DWORD, ) -> BOOL5787     pub fn EnumDisplayDevicesW(
5788         lpDevice: LPCWSTR,
5789         iDevNum: DWORD,
5790         lpDisplayDevice: PDISPLAY_DEVICEW,
5791         dwFlags: DWORD,
5792     ) -> BOOL;
5793 }
5794 pub const EDD_GET_DEVICE_INTERFACE_NAME: DWORD = 0x00000001;
5795 extern "system" {
SystemParametersInfoA( uiAction: UINT, uiParam: UINT, pvParam: PVOID, fWinIni: UINT, ) -> BOOL5796     pub fn SystemParametersInfoA(
5797         uiAction: UINT,
5798         uiParam: UINT,
5799         pvParam: PVOID,
5800         fWinIni: UINT,
5801     ) -> BOOL;
SystemParametersInfoW( uiAction: UINT, uiParam: UINT, pvParam: PVOID, fWinIni: UINT, ) -> BOOL5802     pub fn SystemParametersInfoW(
5803         uiAction: UINT,
5804         uiParam: UINT,
5805         pvParam: PVOID,
5806         fWinIni: UINT,
5807     ) -> BOOL;
SystemParametersInfoForDpi( uiAction: UINT, uiParam: UINT, pvParam: PVOID, fWinIni: UINT, dpi: UINT, ) -> BOOL5808     pub fn SystemParametersInfoForDpi(
5809         uiAction: UINT,
5810         uiParam: UINT,
5811         pvParam: PVOID,
5812         fWinIni: UINT,
5813         dpi: UINT,
5814     ) -> BOOL;
5815 }
5816 pub const ENUM_CURRENT_SETTINGS: DWORD = 0xFFFFFFFF;
5817 pub const ENUM_REGISTRY_SETTINGS: DWORD = 0xFFFFFFFE;
5818 pub const MDITILE_VERTICAL: UINT = 0x0000;
5819 pub const MDITILE_HORIZONTAL: UINT = 0x0001;
5820 pub const MDITILE_SKIPDISABLED: UINT = 0x0002;
5821 pub const MDITILE_ZORDER: UINT = 0x0004;
5822 extern "system" {
DefFrameProcA( hwnd: HWND, hwndMDIClient: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT5823     pub fn DefFrameProcA(
5824         hwnd: HWND,
5825         hwndMDIClient: HWND,
5826         uMsg: UINT,
5827         wParam: WPARAM,
5828         lParam: LPARAM,
5829     ) -> LRESULT;
DefFrameProcW( hwnd: HWND, hwndMDIClient: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT5830     pub fn DefFrameProcW(
5831         hwnd: HWND,
5832         hwndMDIClient: HWND,
5833         uMsg: UINT,
5834         wParam: WPARAM,
5835         lParam: LPARAM,
5836     ) -> LRESULT;
DefMDIChildProcA( hwnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT5837     pub fn DefMDIChildProcA(
5838         hwnd: HWND,
5839         uMsg: UINT,
5840         wParam: WPARAM,
5841         lParam: LPARAM,
5842     ) -> LRESULT;
DefMDIChildProcW( hwnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT5843     pub fn DefMDIChildProcW(
5844         hwnd: HWND,
5845         uMsg: UINT,
5846         wParam: WPARAM,
5847         lParam: LPARAM,
5848     ) -> LRESULT;
ArrangeIconicWindows( hWnd: HWND, ) -> UINT5849     pub fn ArrangeIconicWindows(
5850         hWnd: HWND,
5851     ) -> UINT;
CreateMDIWindowA( lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD, X: c_int, Y: c_int, nWidth: c_int, nHeight: c_int, hWndParent: HWND, hInstance: HINSTANCE, lParam: LPARAM, ) -> HWND5852     pub fn CreateMDIWindowA(
5853         lpClassName: LPCSTR,
5854         lpWindowName: LPCSTR,
5855         dwStyle: DWORD,
5856         X: c_int,
5857         Y: c_int,
5858         nWidth: c_int,
5859         nHeight: c_int,
5860         hWndParent: HWND,
5861         hInstance: HINSTANCE,
5862         lParam: LPARAM,
5863     ) -> HWND;
CreateMDIWindowW( lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD, X: c_int, Y: c_int, nWidth: c_int, nHeight: c_int, hWndParent: HWND, hInstance: HINSTANCE, lParam: LPARAM, ) -> HWND5864     pub fn CreateMDIWindowW(
5865         lpClassName: LPCWSTR,
5866         lpWindowName: LPCWSTR,
5867         dwStyle: DWORD,
5868         X: c_int,
5869         Y: c_int,
5870         nWidth: c_int,
5871         nHeight: c_int,
5872         hWndParent: HWND,
5873         hInstance: HINSTANCE,
5874         lParam: LPARAM,
5875     ) -> HWND;
CascadeWindows( hwndParent: HWND, wHow: UINT, lpRect: *const RECT, cKids: UINT, lpKids: *const HWND, ) -> WORD5876     pub fn CascadeWindows(
5877         hwndParent: HWND,
5878         wHow: UINT,
5879         lpRect: *const RECT,
5880         cKids: UINT,
5881         lpKids: *const HWND,
5882     ) -> WORD;
5883 }
5884 FN!{stdcall MSGBOXCALLBACK(
5885     LPHELPINFO,
5886 ) -> ()}
5887 FN!{stdcall WINEVENTPROC(
5888     HWINEVENTHOOK,
5889     DWORD,
5890     HWND,
5891     LONG,
5892     LONG,
5893     DWORD,
5894     DWORD,
5895 ) -> ()}
5896 STRUCT!{struct SCROLLBARINFO {
5897     cbSize: DWORD,
5898     rcScrollBar: RECT,
5899     dxyLineButton: c_int,
5900     xyThumbTop: c_int,
5901     xyThumbBottom: c_int,
5902     reserved: c_int,
5903     rgstate: [DWORD; CCHILDREN_SCROLLBAR + 1],
5904 }}
5905 pub type PSCROLLBARINFO = *mut SCROLLBARINFO;
5906 pub type LPSCROLLBARINFO = *mut SCROLLBARINFO;
5907 STRUCT!{struct SIZE {
5908     cx: LONG,
5909     cy: LONG,
5910 }}
5911 pub type PSIZE = *mut SIZE;
5912 pub type LPSIZE = *mut SIZE;
5913 pub type SIZEL = SIZE;
5914 pub type PSIZEL = *mut SIZEL;
5915 pub type LPSIZEL = *mut SIZEL;
5916 //8855 (Win 7 SDK)
5917 STRUCT!{struct ICONINFO {
5918     fIcon: BOOL,
5919     xHotspot: DWORD,
5920     yHotspot: DWORD,
5921     hbmMask: HBITMAP,
5922     hbmColor: HBITMAP,
5923 }}
5924 pub type PICONINFO = *mut ICONINFO;
5925 //9066
5926 //10069
5927 pub const SC_SIZE: WPARAM = 0xF000;
5928 pub const SC_MOVE: WPARAM = 0xF010;
5929 pub const SC_MINIMIZE: WPARAM = 0xF020;
5930 pub const SC_MAXIMIZE: WPARAM = 0xF030;
5931 pub const SC_NEXTWINDOW: WPARAM = 0xF040;
5932 pub const SC_PREVWINDOW: WPARAM = 0xF050;
5933 pub const SC_CLOSE: WPARAM = 0xF060;
5934 pub const SC_VSCROLL: WPARAM = 0xF070;
5935 pub const SC_HSCROLL: WPARAM = 0xF080;
5936 pub const SC_MOUSEMENU: WPARAM = 0xF090;
5937 pub const SC_KEYMENU: WPARAM = 0xF100;
5938 pub const SC_ARRANGE: WPARAM = 0xF110;
5939 pub const SC_RESTORE: WPARAM = 0xF120;
5940 pub const SC_TASKLIST: WPARAM = 0xF130;
5941 pub const SC_SCREENSAVE: WPARAM = 0xF140;
5942 pub const SC_HOTKEY: WPARAM = 0xF150;
5943 pub const SC_DEFAULT: WPARAM = 0xF160;
5944 pub const SC_MONITORPOWER: WPARAM = 0xF170;
5945 pub const SC_CONTEXTHELP: WPARAM = 0xF180;
5946 pub const SC_SEPARATOR: WPARAM = 0xF00F;
5947 extern "system" {
LoadBitmapA( hInstance: HINSTANCE, lpBitmapName: LPCSTR, ) -> HBITMAP5948     pub fn LoadBitmapA(
5949         hInstance: HINSTANCE,
5950         lpBitmapName: LPCSTR,
5951     ) -> HBITMAP;
LoadBitmapW( hInstance: HINSTANCE, lpBitmapName: LPCWSTR, ) -> HBITMAP5952     pub fn LoadBitmapW(
5953         hInstance: HINSTANCE,
5954         lpBitmapName: LPCWSTR,
5955     ) -> HBITMAP;
LoadCursorA( hInstance: HINSTANCE, lpCursorName: LPCSTR, ) -> HCURSOR5956     pub fn LoadCursorA(
5957         hInstance: HINSTANCE,
5958         lpCursorName: LPCSTR,
5959     ) -> HCURSOR;
LoadCursorW( hInstance: HINSTANCE, lpCursorName: LPCWSTR, ) -> HCURSOR5960     pub fn LoadCursorW(
5961         hInstance: HINSTANCE,
5962         lpCursorName: LPCWSTR,
5963     ) -> HCURSOR;
LoadCursorFromFileA( lpFileName: LPCSTR, ) -> HCURSOR5964     pub fn LoadCursorFromFileA(
5965         lpFileName: LPCSTR,
5966     ) -> HCURSOR;
LoadCursorFromFileW( lpFileName: LPCWSTR, ) -> HCURSOR5967     pub fn LoadCursorFromFileW(
5968         lpFileName: LPCWSTR,
5969     ) -> HCURSOR;
CreateCursor( hInst: HINSTANCE, xHotSpot: c_int, yHotSpot: c_int, nWidth: c_int, nHeight: c_int, pvAndPlane: *const VOID, pvXORPlane: *const VOID, ) -> HCURSOR5970     pub fn CreateCursor(
5971         hInst: HINSTANCE,
5972         xHotSpot: c_int,
5973         yHotSpot: c_int,
5974         nWidth: c_int,
5975         nHeight: c_int,
5976         pvAndPlane: *const VOID,
5977         pvXORPlane: *const VOID,
5978     ) -> HCURSOR;
DestroyCursor( hCursor: HCURSOR, ) -> BOOL5979     pub fn DestroyCursor(
5980         hCursor: HCURSOR,
5981     ) -> BOOL;
5982 }
5983 pub const IDC_ARROW: LPCWSTR = 32512 as LPCWSTR;
5984 pub const IDC_IBEAM: LPCWSTR = 32513 as LPCWSTR;
5985 pub const IDC_WAIT: LPCWSTR = 32514 as LPCWSTR;
5986 pub const IDC_CROSS: LPCWSTR = 32515 as LPCWSTR;
5987 pub const IDC_UPARROW: LPCWSTR = 32516 as LPCWSTR;
5988 pub const IDC_SIZE: LPCWSTR = 32640 as LPCWSTR;
5989 pub const IDC_ICON: LPCWSTR = 32641 as LPCWSTR;
5990 pub const IDC_SIZENWSE: LPCWSTR = 32642 as LPCWSTR;
5991 pub const IDC_SIZENESW: LPCWSTR = 32643 as LPCWSTR;
5992 pub const IDC_SIZEWE: LPCWSTR = 32644 as LPCWSTR;
5993 pub const IDC_SIZENS: LPCWSTR = 32645 as LPCWSTR;
5994 pub const IDC_SIZEALL: LPCWSTR = 32646 as LPCWSTR;
5995 pub const IDC_NO: LPCWSTR = 32648 as LPCWSTR;
5996 pub const IDC_HAND: LPCWSTR = 32649 as LPCWSTR;
5997 pub const IDC_APPSTARTING: LPCWSTR = 32650 as LPCWSTR;
5998 pub const IDC_HELP: LPCWSTR = 32651 as LPCWSTR;
5999 extern "system" {
SetSystemCursor( hcur: HCURSOR, id: DWORD, ) -> BOOL6000     pub fn SetSystemCursor(
6001         hcur: HCURSOR,
6002         id: DWORD,
6003     ) -> BOOL;
CreateIcon( hInstance: HINSTANCE, nWidth: c_int, nHeight: c_int, cPlanes: BYTE, cBitsPixel: BYTE, lpbANDbits: *const BYTE, lpbXORbits: *const BYTE, ) -> HICON6004     pub fn CreateIcon(
6005         hInstance: HINSTANCE,
6006         nWidth: c_int,
6007         nHeight: c_int,
6008         cPlanes: BYTE,
6009         cBitsPixel: BYTE,
6010         lpbANDbits: *const BYTE,
6011         lpbXORbits: *const BYTE,
6012     ) -> HICON;
DestroyIcon( hIcon: HICON, ) -> BOOL6013     pub fn DestroyIcon(
6014         hIcon: HICON,
6015     ) -> BOOL;
LookupIconIdFromDirectory( presbits: PBYTE, fIcon: BOOL, ) -> c_int6016     pub fn LookupIconIdFromDirectory(
6017         presbits: PBYTE,
6018         fIcon: BOOL,
6019     ) -> c_int;
LookupIconIdFromDirectoryEx( presbits: PBYTE, fIcon: BOOL, cxDesired: c_int, cyDesired: c_int, Flags: UINT, ) -> c_int6020     pub fn LookupIconIdFromDirectoryEx(
6021         presbits: PBYTE,
6022         fIcon: BOOL,
6023         cxDesired: c_int,
6024         cyDesired: c_int,
6025         Flags: UINT,
6026     ) -> c_int;
CreateIconFromResource( presbits: PBYTE, dwResSize: DWORD, fIcon: BOOL, dwVer: DWORD, ) -> HICON6027     pub fn CreateIconFromResource(
6028         presbits: PBYTE,
6029         dwResSize: DWORD,
6030         fIcon: BOOL,
6031         dwVer: DWORD,
6032     ) -> HICON;
CreateIconFromResourceEx( presbits: PBYTE, dwResSize: DWORD, fIcon: BOOL, dwVer: DWORD, cxDesired: c_int, cyDesired: c_int, Flags: UINT, ) -> HICON6033     pub fn CreateIconFromResourceEx(
6034         presbits: PBYTE,
6035         dwResSize: DWORD,
6036         fIcon: BOOL,
6037         dwVer: DWORD,
6038         cxDesired: c_int,
6039         cyDesired: c_int,
6040         Flags: UINT,
6041     ) -> HICON;
6042 }
6043 pub const IMAGE_BITMAP: UINT = 0;
6044 pub const IMAGE_ICON: UINT = 1;
6045 pub const IMAGE_CURSOR: UINT = 2;
6046 pub const IMAGE_ENHMETAFILE: UINT = 3;
6047 pub const LR_DEFAULTCOLOR: UINT = 0x00000000;
6048 pub const LR_MONOCHROME: UINT = 0x00000001;
6049 pub const LR_COLOR: UINT = 0x00000002;
6050 pub const LR_COPYRETURNORG: UINT = 0x00000004;
6051 pub const LR_COPYDELETEORG: UINT = 0x00000008;
6052 pub const LR_LOADFROMFILE: UINT = 0x00000010;
6053 pub const LR_LOADTRANSPARENT: UINT = 0x00000020;
6054 pub const LR_DEFAULTSIZE: UINT = 0x00000040;
6055 pub const LR_VGACOLOR: UINT = 0x00000080;
6056 pub const LR_LOADMAP3DCOLORS: UINT = 0x00001000;
6057 pub const LR_CREATEDIBSECTION: UINT = 0x00002000;
6058 pub const LR_COPYFROMRESOURCE: UINT = 0x00004000;
6059 pub const LR_SHARED: UINT = 0x00008000;
6060 extern "system" {
LoadImageA( hInst: HINSTANCE, name: LPCSTR, type_: UINT, cx: c_int, cy: c_int, fuLoad: UINT, ) -> HANDLE6061     pub fn LoadImageA(
6062         hInst: HINSTANCE,
6063         name: LPCSTR,
6064         type_: UINT,
6065         cx: c_int,
6066         cy: c_int,
6067         fuLoad: UINT,
6068     ) -> HANDLE;
LoadImageW( hInst: HINSTANCE, name: LPCWSTR, type_: UINT, cx: c_int, cy: c_int, fuLoad: UINT, ) -> HANDLE6069     pub fn LoadImageW(
6070         hInst: HINSTANCE,
6071         name: LPCWSTR,
6072         type_: UINT,
6073         cx: c_int,
6074         cy: c_int,
6075         fuLoad: UINT,
6076     ) -> HANDLE;
CopyImage( h: HANDLE, type_: UINT, cx: c_int, cy: c_int, flags: UINT, ) -> HANDLE6077     pub fn CopyImage(
6078         h: HANDLE,
6079         type_: UINT,
6080         cx: c_int,
6081         cy: c_int,
6082         flags: UINT,
6083     ) -> HANDLE;
DrawIconEx( hdc: HDC, xLeft: c_int, yTop: c_int, hIcon: HICON, cxWidth: c_int, cyWidth: c_int, istepIfAniCur: UINT, hbrFlickerFreeDraw: HBRUSH, diFlags: UINT, ) -> BOOL6084     pub fn DrawIconEx(
6085         hdc: HDC,
6086         xLeft: c_int,
6087         yTop: c_int,
6088         hIcon: HICON,
6089         cxWidth: c_int,
6090         cyWidth: c_int,
6091         istepIfAniCur: UINT,
6092         hbrFlickerFreeDraw: HBRUSH,
6093         diFlags: UINT,
6094     ) -> BOOL;
CreateIconIndirect( piconinfo: PICONINFO, ) -> HICON6095     pub fn CreateIconIndirect(
6096         piconinfo: PICONINFO,
6097     ) -> HICON;
6098 }
6099 pub const IDI_APPLICATION: LPCWSTR = 32512 as LPCWSTR;
6100 pub const IDI_HAND: LPCWSTR = 32513 as LPCWSTR;
6101 pub const IDI_QUESTION: LPCWSTR = 32514 as LPCWSTR;
6102 pub const IDI_EXCLAMATION: LPCWSTR = 32515 as LPCWSTR;
6103 pub const IDI_ASTERISK: LPCWSTR = 32516 as LPCWSTR;
6104 pub const IDI_WINLOGO: LPCWSTR = 32517 as LPCWSTR;
6105 pub const IDI_SHIELD: LPCWSTR = 32518 as LPCWSTR;
6106 pub const IDI_WARNING: LPCWSTR = IDI_EXCLAMATION;
6107 pub const IDI_ERROR: LPCWSTR = IDI_HAND;
6108 pub const IDI_INFORMATION: LPCWSTR = IDI_ASTERISK;
6109 extern "system" {
WinHelpA( hWndMain: HWND, lpszHelp: LPCSTR, uCommand: UINT, dwData: ULONG_PTR, ) -> BOOL6110     pub fn WinHelpA(
6111         hWndMain: HWND,
6112         lpszHelp: LPCSTR,
6113         uCommand: UINT,
6114         dwData: ULONG_PTR,
6115     ) -> BOOL;
WinHelpW( hWndMain: HWND, lpszHelp: LPCWSTR, uCommand: UINT, dwData: ULONG_PTR, ) -> BOOL6116     pub fn WinHelpW(
6117         hWndMain: HWND,
6118         lpszHelp: LPCWSTR,
6119         uCommand: UINT,
6120         dwData: ULONG_PTR,
6121     ) -> BOOL;
CopyIcon( hIcon: HICON, ) -> HICON6122     pub fn CopyIcon(
6123         hIcon: HICON,
6124     ) -> HICON;
GetIconInfo( hIcon: HICON, piconinfo: PICONINFO, ) -> BOOL6125     pub fn GetIconInfo(
6126         hIcon: HICON,
6127         piconinfo: PICONINFO,
6128     ) -> BOOL;
6129 }
6130 pub const SPI_GETBEEP: UINT = 0x0001;
6131 pub const SPI_SETBEEP: UINT = 0x0002;
6132 pub const SPI_GETMOUSE: UINT = 0x0003;
6133 pub const SPI_SETMOUSE: UINT = 0x0004;
6134 pub const SPI_GETBORDER: UINT = 0x0005;
6135 pub const SPI_SETBORDER: UINT = 0x0006;
6136 pub const SPI_GETKEYBOARDSPEED: UINT = 0x000A;
6137 pub const SPI_SETKEYBOARDSPEED: UINT = 0x000B;
6138 pub const SPI_LANGDRIVER: UINT = 0x000C;
6139 pub const SPI_ICONHORIZONTALSPACING: UINT = 0x000D;
6140 pub const SPI_GETSCREENSAVETIMEOUT: UINT = 0x000E;
6141 pub const SPI_SETSCREENSAVETIMEOUT: UINT = 0x000F;
6142 pub const SPI_GETSCREENSAVEACTIVE: UINT = 0x0010;
6143 pub const SPI_SETSCREENSAVEACTIVE: UINT = 0x0011;
6144 pub const SPI_GETGRIDGRANULARITY: UINT = 0x0012;
6145 pub const SPI_SETGRIDGRANULARITY: UINT = 0x0013;
6146 pub const SPI_SETDESKWALLPAPER: UINT = 0x0014;
6147 pub const SPI_SETDESKPATTERN: UINT = 0x0015;
6148 pub const SPI_GETKEYBOARDDELAY: UINT = 0x0016;
6149 pub const SPI_SETKEYBOARDDELAY: UINT = 0x0017;
6150 pub const SPI_ICONVERTICALSPACING: UINT = 0x0018;
6151 pub const SPI_GETICONTITLEWRAP: UINT = 0x0019;
6152 pub const SPI_SETICONTITLEWRAP: UINT = 0x001A;
6153 pub const SPI_GETMENUDROPALIGNMENT: UINT = 0x001B;
6154 pub const SPI_SETMENUDROPALIGNMENT: UINT = 0x001C;
6155 pub const SPI_SETDOUBLECLKWIDTH: UINT = 0x001D;
6156 pub const SPI_SETDOUBLECLKHEIGHT: UINT = 0x001E;
6157 pub const SPI_GETICONTITLELOGFONT: UINT = 0x001F;
6158 pub const SPI_SETDOUBLECLICKTIME: UINT = 0x0020;
6159 pub const SPI_SETMOUSEBUTTONSWAP: UINT = 0x0021;
6160 pub const SPI_SETICONTITLELOGFONT: UINT = 0x0022;
6161 pub const SPI_GETFASTTASKSWITCH: UINT = 0x0023;
6162 pub const SPI_SETFASTTASKSWITCH: UINT = 0x0024;
6163 pub const SPI_SETDRAGFULLWINDOWS: UINT = 0x0025;
6164 pub const SPI_GETDRAGFULLWINDOWS: UINT = 0x0026;
6165 pub const SPI_GETNONCLIENTMETRICS: UINT = 0x0029;
6166 pub const SPI_SETNONCLIENTMETRICS: UINT = 0x002A;
6167 pub const SPI_GETMINIMIZEDMETRICS: UINT = 0x002B;
6168 pub const SPI_SETMINIMIZEDMETRICS: UINT = 0x002C;
6169 pub const SPI_GETICONMETRICS: UINT = 0x002D;
6170 pub const SPI_SETICONMETRICS: UINT = 0x002E;
6171 pub const SPI_SETWORKAREA: UINT = 0x002F;
6172 pub const SPI_GETWORKAREA: UINT = 0x0030;
6173 pub const SPI_SETPENWINDOWS: UINT = 0x0031;
6174 pub const SPI_GETHIGHCONTRAST: UINT = 0x0042;
6175 pub const SPI_SETHIGHCONTRAST: UINT = 0x0043;
6176 pub const SPI_GETKEYBOARDPREF: UINT = 0x0044;
6177 pub const SPI_SETKEYBOARDPREF: UINT = 0x0045;
6178 pub const SPI_GETSCREENREADER: UINT = 0x0046;
6179 pub const SPI_SETSCREENREADER: UINT = 0x0047;
6180 pub const SPI_GETANIMATION: UINT = 0x0048;
6181 pub const SPI_SETANIMATION: UINT = 0x0049;
6182 pub const SPI_GETFONTSMOOTHING: UINT = 0x004A;
6183 pub const SPI_SETFONTSMOOTHING: UINT = 0x004B;
6184 pub const SPI_SETDRAGWIDTH: UINT = 0x004C;
6185 pub const SPI_SETDRAGHEIGHT: UINT = 0x004D;
6186 pub const SPI_SETHANDHELD: UINT = 0x004E;
6187 pub const SPI_GETLOWPOWERTIMEOUT: UINT = 0x004F;
6188 pub const SPI_GETPOWEROFFTIMEOUT: UINT = 0x0050;
6189 pub const SPI_SETLOWPOWERTIMEOUT: UINT = 0x0051;
6190 pub const SPI_SETPOWEROFFTIMEOUT: UINT = 0x0052;
6191 pub const SPI_GETLOWPOWERACTIVE: UINT = 0x0053;
6192 pub const SPI_GETPOWEROFFACTIVE: UINT = 0x0054;
6193 pub const SPI_SETLOWPOWERACTIVE: UINT = 0x0055;
6194 pub const SPI_SETPOWEROFFACTIVE: UINT = 0x0056;
6195 pub const SPI_SETCURSORS: UINT = 0x0057;
6196 pub const SPI_SETICONS: UINT = 0x0058;
6197 pub const SPI_GETDEFAULTINPUTLANG: UINT = 0x0059;
6198 pub const SPI_SETDEFAULTINPUTLANG: UINT = 0x005A;
6199 pub const SPI_SETLANGTOGGLE: UINT = 0x005B;
6200 pub const SPI_GETWINDOWSEXTENSION: UINT = 0x005C;
6201 pub const SPI_SETMOUSETRAILS: UINT = 0x005D;
6202 pub const SPI_GETMOUSETRAILS: UINT = 0x005E;
6203 pub const SPI_SETSCREENSAVERRUNNING: UINT = 0x0061;
6204 pub const SPI_SCREENSAVERRUNNING: UINT = SPI_SETSCREENSAVERRUNNING;
6205 pub const SPI_GETFILTERKEYS: UINT = 0x0032;
6206 pub const SPI_SETFILTERKEYS: UINT = 0x0033;
6207 pub const SPI_GETTOGGLEKEYS: UINT = 0x0034;
6208 pub const SPI_SETTOGGLEKEYS: UINT = 0x0035;
6209 pub const SPI_GETMOUSEKEYS: UINT = 0x0036;
6210 pub const SPI_SETMOUSEKEYS: UINT = 0x0037;
6211 pub const SPI_GETSHOWSOUNDS: UINT = 0x0038;
6212 pub const SPI_SETSHOWSOUNDS: UINT = 0x0039;
6213 pub const SPI_GETSTICKYKEYS: UINT = 0x003A;
6214 pub const SPI_SETSTICKYKEYS: UINT = 0x003B;
6215 pub const SPI_GETACCESSTIMEOUT: UINT = 0x003C;
6216 pub const SPI_SETACCESSTIMEOUT: UINT = 0x003D;
6217 pub const SPI_GETSERIALKEYS: UINT = 0x003E;
6218 pub const SPI_SETSERIALKEYS: UINT = 0x003F;
6219 pub const SPI_GETSOUNDSENTRY: UINT = 0x0040;
6220 pub const SPI_SETSOUNDSENTRY: UINT = 0x0041;
6221 pub const SPI_GETSNAPTODEFBUTTON: UINT = 0x005F;
6222 pub const SPI_SETSNAPTODEFBUTTON: UINT = 0x0060;
6223 pub const SPI_GETMOUSEHOVERWIDTH: UINT = 0x0062;
6224 pub const SPI_SETMOUSEHOVERWIDTH: UINT = 0x0063;
6225 pub const SPI_GETMOUSEHOVERHEIGHT: UINT = 0x0064;
6226 pub const SPI_SETMOUSEHOVERHEIGHT: UINT = 0x0065;
6227 pub const SPI_GETMOUSEHOVERTIME: UINT = 0x0066;
6228 pub const SPI_SETMOUSEHOVERTIME: UINT = 0x0067;
6229 pub const SPI_GETWHEELSCROLLLINES: UINT = 0x0068;
6230 pub const SPI_SETWHEELSCROLLLINES: UINT = 0x0069;
6231 pub const SPI_GETMENUSHOWDELAY: UINT = 0x006A;
6232 pub const SPI_SETMENUSHOWDELAY: UINT = 0x006B;
6233 pub const SPI_GETWHEELSCROLLCHARS: UINT = 0x006C;
6234 pub const SPI_SETWHEELSCROLLCHARS: UINT = 0x006D;
6235 pub const SPI_GETSHOWIMEUI: UINT = 0x006E;
6236 pub const SPI_SETSHOWIMEUI: UINT = 0x006F;
6237 pub const SPI_GETMOUSESPEED: UINT = 0x0070;
6238 pub const SPI_SETMOUSESPEED: UINT = 0x0071;
6239 pub const SPI_GETSCREENSAVERRUNNING: UINT = 0x0072;
6240 pub const SPI_GETDESKWALLPAPER: UINT = 0x0073;
6241 pub const SPI_GETAUDIODESCRIPTION: UINT = 0x0074;
6242 pub const SPI_SETAUDIODESCRIPTION: UINT = 0x0075;
6243 pub const SPI_GETSCREENSAVESECURE: UINT = 0x0076;
6244 pub const SPI_SETSCREENSAVESECURE: UINT = 0x0077;
6245 pub const SPI_GETHUNGAPPTIMEOUT: UINT = 0x0078;
6246 pub const SPI_SETHUNGAPPTIMEOUT: UINT = 0x0079;
6247 pub const SPI_GETWAITTOKILLTIMEOUT: UINT = 0x007A;
6248 pub const SPI_SETWAITTOKILLTIMEOUT: UINT = 0x007B;
6249 pub const SPI_GETWAITTOKILLSERVICETIMEOUT: UINT = 0x007C;
6250 pub const SPI_SETWAITTOKILLSERVICETIMEOUT: UINT = 0x007D;
6251 pub const SPI_GETMOUSEDOCKTHRESHOLD: UINT = 0x007E;
6252 pub const SPI_SETMOUSEDOCKTHRESHOLD: UINT = 0x007F;
6253 pub const SPI_GETPENDOCKTHRESHOLD: UINT = 0x0080;
6254 pub const SPI_SETPENDOCKTHRESHOLD: UINT = 0x0081;
6255 pub const SPI_GETWINARRANGING: UINT = 0x0082;
6256 pub const SPI_SETWINARRANGING: UINT = 0x0083;
6257 pub const SPI_GETMOUSEDRAGOUTTHRESHOLD: UINT = 0x0084;
6258 pub const SPI_SETMOUSEDRAGOUTTHRESHOLD: UINT = 0x0085;
6259 pub const SPI_GETPENDRAGOUTTHRESHOLD: UINT = 0x0086;
6260 pub const SPI_SETPENDRAGOUTTHRESHOLD: UINT = 0x0087;
6261 pub const SPI_GETMOUSESIDEMOVETHRESHOLD: UINT = 0x0088;
6262 pub const SPI_SETMOUSESIDEMOVETHRESHOLD: UINT = 0x0089;
6263 pub const SPI_GETPENSIDEMOVETHRESHOLD: UINT = 0x008A;
6264 pub const SPI_SETPENSIDEMOVETHRESHOLD: UINT = 0x008B;
6265 pub const SPI_GETDRAGFROMMAXIMIZE: UINT = 0x008C;
6266 pub const SPI_SETDRAGFROMMAXIMIZE: UINT = 0x008D;
6267 pub const SPI_GETSNAPSIZING: UINT = 0x008E;
6268 pub const SPI_SETSNAPSIZING: UINT = 0x008F;
6269 pub const SPI_GETDOCKMOVING: UINT = 0x0090;
6270 pub const SPI_SETDOCKMOVING: UINT = 0x0091;
6271 pub const SPI_GETACTIVEWINDOWTRACKING: UINT = 0x1000;
6272 pub const SPI_SETACTIVEWINDOWTRACKING: UINT = 0x1001;
6273 pub const SPI_GETMENUANIMATION: UINT = 0x1002;
6274 pub const SPI_SETMENUANIMATION: UINT = 0x1003;
6275 pub const SPI_GETCOMBOBOXANIMATION: UINT = 0x1004;
6276 pub const SPI_SETCOMBOBOXANIMATION: UINT = 0x1005;
6277 pub const SPI_GETLISTBOXSMOOTHSCROLLING: UINT = 0x1006;
6278 pub const SPI_SETLISTBOXSMOOTHSCROLLING: UINT = 0x1007;
6279 pub const SPI_GETGRADIENTCAPTIONS: UINT = 0x1008;
6280 pub const SPI_SETGRADIENTCAPTIONS: UINT = 0x1009;
6281 pub const SPI_GETKEYBOARDCUES: UINT = 0x100A;
6282 pub const SPI_SETKEYBOARDCUES: UINT = 0x100B;
6283 pub const SPI_GETMENUUNDERLINES: UINT = SPI_GETKEYBOARDCUES;
6284 pub const SPI_SETMENUUNDERLINES: UINT = SPI_SETKEYBOARDCUES;
6285 pub const SPI_GETACTIVEWNDTRKZORDER: UINT = 0x100C;
6286 pub const SPI_SETACTIVEWNDTRKZORDER: UINT = 0x100D;
6287 pub const SPI_GETHOTTRACKING: UINT = 0x100E;
6288 pub const SPI_SETHOTTRACKING: UINT = 0x100F;
6289 pub const SPI_GETMENUFADE: UINT = 0x1012;
6290 pub const SPI_SETMENUFADE: UINT = 0x1013;
6291 pub const SPI_GETSELECTIONFADE: UINT = 0x1014;
6292 pub const SPI_SETSELECTIONFADE: UINT = 0x1015;
6293 pub const SPI_GETTOOLTIPANIMATION: UINT = 0x1016;
6294 pub const SPI_SETTOOLTIPANIMATION: UINT = 0x1017;
6295 pub const SPI_GETTOOLTIPFADE: UINT = 0x1018;
6296 pub const SPI_SETTOOLTIPFADE: UINT = 0x1019;
6297 pub const SPI_GETCURSORSHADOW: UINT = 0x101A;
6298 pub const SPI_SETCURSORSHADOW: UINT = 0x101B;
6299 pub const SPI_GETMOUSESONAR: UINT = 0x101C;
6300 pub const SPI_SETMOUSESONAR: UINT = 0x101D;
6301 pub const SPI_GETMOUSECLICKLOCK: UINT = 0x101E;
6302 pub const SPI_SETMOUSECLICKLOCK: UINT = 0x101F;
6303 pub const SPI_GETMOUSEVANISH: UINT = 0x1020;
6304 pub const SPI_SETMOUSEVANISH: UINT = 0x1021;
6305 pub const SPI_GETFLATMENU: UINT = 0x1022;
6306 pub const SPI_SETFLATMENU: UINT = 0x1023;
6307 pub const SPI_GETDROPSHADOW: UINT = 0x1024;
6308 pub const SPI_SETDROPSHADOW: UINT = 0x1025;
6309 pub const SPI_GETBLOCKSENDINPUTRESETS: UINT = 0x1026;
6310 pub const SPI_SETBLOCKSENDINPUTRESETS: UINT = 0x1027;
6311 pub const SPI_GETUIEFFECTS: UINT = 0x103E;
6312 pub const SPI_SETUIEFFECTS: UINT = 0x103F;
6313 pub const SPI_GETDISABLEOVERLAPPEDCONTENT: UINT = 0x1040;
6314 pub const SPI_SETDISABLEOVERLAPPEDCONTENT: UINT = 0x1041;
6315 pub const SPI_GETCLIENTAREAANIMATION: UINT = 0x1042;
6316 pub const SPI_SETCLIENTAREAANIMATION: UINT = 0x1043;
6317 pub const SPI_GETCLEARTYPE: UINT = 0x1048;
6318 pub const SPI_SETCLEARTYPE: UINT = 0x1049;
6319 pub const SPI_GETSPEECHRECOGNITION: UINT = 0x104A;
6320 pub const SPI_SETSPEECHRECOGNITION: UINT = 0x104B;
6321 pub const SPI_GETFOREGROUNDLOCKTIMEOUT: UINT = 0x2000;
6322 pub const SPI_SETFOREGROUNDLOCKTIMEOUT: UINT = 0x2001;
6323 pub const SPI_GETACTIVEWNDTRKTIMEOUT: UINT = 0x2002;
6324 pub const SPI_SETACTIVEWNDTRKTIMEOUT: UINT = 0x2003;
6325 pub const SPI_GETFOREGROUNDFLASHCOUNT: UINT = 0x2004;
6326 pub const SPI_SETFOREGROUNDFLASHCOUNT: UINT = 0x2005;
6327 pub const SPI_GETCARETWIDTH: UINT = 0x2006;
6328 pub const SPI_SETCARETWIDTH: UINT = 0x2007;
6329 pub const SPI_GETMOUSECLICKLOCKTIME: UINT = 0x2008;
6330 pub const SPI_SETMOUSECLICKLOCKTIME: UINT = 0x2009;
6331 pub const SPI_GETFONTSMOOTHINGTYPE: UINT = 0x200A;
6332 pub const SPI_SETFONTSMOOTHINGTYPE: UINT = 0x200B;
6333 pub const FE_FONTSMOOTHINGSTANDARD: UINT = 0x0001;
6334 pub const FE_FONTSMOOTHINGCLEARTYPE: UINT = 0x0002;
6335 pub const SPI_GETFONTSMOOTHINGCONTRAST: UINT = 0x200C;
6336 pub const SPI_SETFONTSMOOTHINGCONTRAST: UINT = 0x200D;
6337 pub const SPI_GETFOCUSBORDERWIDTH: UINT = 0x200E;
6338 pub const SPI_SETFOCUSBORDERWIDTH: UINT = 0x200F;
6339 pub const SPI_GETFOCUSBORDERHEIGHT: UINT = 0x2010;
6340 pub const SPI_SETFOCUSBORDERHEIGHT: UINT = 0x2011;
6341 pub const SPI_GETFONTSMOOTHINGORIENTATION: UINT = 0x2012;
6342 pub const SPI_SETFONTSMOOTHINGORIENTATION: UINT = 0x2013;
6343 pub const FE_FONTSMOOTHINGORIENTATIONBGR: UINT = 0x0000;
6344 pub const FE_FONTSMOOTHINGORIENTATIONRGB: UINT = 0x0001;
6345 pub const SPI_GETMINIMUMHITRADIUS: UINT = 0x2014;
6346 pub const SPI_SETMINIMUMHITRADIUS: UINT = 0x2015;
6347 pub const SPI_GETMESSAGEDURATION: UINT = 0x2016;
6348 pub const SPI_SETMESSAGEDURATION: UINT = 0x2017;
6349 //11264
6350 pub const CB_GETEDITSEL: UINT = 0x0140;
6351 pub const CB_LIMITTEXT: UINT = 0x0141;
6352 pub const CB_SETEDITSEL: UINT = 0x0142;
6353 pub const CB_ADDSTRING: UINT = 0x0143;
6354 pub const CB_DELETESTRING: UINT = 0x0144;
6355 pub const CB_DIR: UINT = 0x0145;
6356 pub const CB_GETCOUNT: UINT = 0x0146;
6357 pub const CB_GETCURSEL: UINT = 0x0147;
6358 pub const CB_GETLBTEXT: UINT = 0x0148;
6359 pub const CB_GETLBTEXTLEN: UINT = 0x0149;
6360 pub const CB_INSERTSTRING: UINT = 0x014A;
6361 pub const CB_RESETCONTENT: UINT = 0x014B;
6362 pub const CB_FINDSTRING: UINT = 0x014C;
6363 pub const CB_SELECTSTRING: UINT = 0x014D;
6364 pub const CB_SETCURSEL: UINT = 0x014E;
6365 pub const CB_SHOWDROPDOWN: UINT = 0x014F;
6366 pub const CB_GETITEMDATA: UINT = 0x0150;
6367 pub const CB_SETITEMDATA: UINT = 0x0151;
6368 pub const CB_GETDROPPEDCONTROLRECT: UINT = 0x0152;
6369 pub const CB_SETITEMHEIGHT: UINT = 0x0153;
6370 pub const CB_GETITEMHEIGHT: UINT = 0x0154;
6371 pub const CB_SETEXTENDEDUI: UINT = 0x0155;
6372 pub const CB_GETEXTENDEDUI: UINT = 0x0156;
6373 pub const CB_GETDROPPEDSTATE: UINT = 0x0157;
6374 pub const CB_FINDSTRINGEXACT: UINT = 0x0158;
6375 pub const CB_SETLOCALE: UINT = 0x0159;
6376 pub const CB_GETLOCALE: UINT = 0x015A;
6377 pub const CB_GETTOPINDEX: UINT = 0x015b;
6378 pub const CB_SETTOPINDEX: UINT = 0x015c;
6379 pub const CB_GETHORIZONTALEXTENT: UINT = 0x015d;
6380 pub const CB_SETHORIZONTALEXTENT: UINT = 0x015e;
6381 pub const CB_GETDROPPEDWIDTH: UINT = 0x015f;
6382 pub const CB_SETDROPPEDWIDTH: UINT = 0x0160;
6383 pub const CB_INITSTORAGE: UINT = 0x0161;
6384 //12141
6385 STRUCT!{struct NONCLIENTMETRICSA {
6386     cbSize: UINT,
6387     iBorderWidth: c_int,
6388     iScrollWidth: c_int,
6389     iScrollHeight: c_int,
6390     iCaptionWidth: c_int,
6391     iCaptionHeight: c_int,
6392     lfCaptionFont: LOGFONTA,
6393     iSmCaptionWidth: c_int,
6394     iSmCaptionHeight: c_int,
6395     lfSmCaptionFont: LOGFONTA,
6396     iMenuWidth: c_int,
6397     iMenuHeight: c_int,
6398     lfMenuFont: LOGFONTA,
6399     lfStatusFont: LOGFONTA,
6400     lfMessageFont: LOGFONTA,
6401     iPaddedBorderWidth: c_int,
6402 }}
6403 pub type LPNONCLIENTMETRICSA = *mut NONCLIENTMETRICSA;
6404 STRUCT!{struct NONCLIENTMETRICSW {
6405     cbSize: UINT,
6406     iBorderWidth: c_int,
6407     iScrollWidth: c_int,
6408     iScrollHeight: c_int,
6409     iCaptionWidth: c_int,
6410     iCaptionHeight: c_int,
6411     lfCaptionFont: LOGFONTW,
6412     iSmCaptionWidth: c_int,
6413     iSmCaptionHeight: c_int,
6414     lfSmCaptionFont: LOGFONTW,
6415     iMenuWidth: c_int,
6416     iMenuHeight: c_int,
6417     lfMenuFont: LOGFONTW,
6418     lfStatusFont: LOGFONTW,
6419     lfMessageFont: LOGFONTW,
6420     iPaddedBorderWidth: c_int,
6421 }}
6422 pub type LPNONCLIENTMETRICSW = *mut NONCLIENTMETRICSW;
6423 //12869
6424 extern "system" {
SetLastErrorEx( dwErrCode: DWORD, dwType: DWORD, )6425     pub fn SetLastErrorEx(
6426         dwErrCode: DWORD,
6427         dwType: DWORD,
6428     );
InternalGetWindowText( hWnd: HWND, pString: LPWSTR, cchMaxCount: c_int, ) -> c_int6429     pub fn InternalGetWindowText(
6430         hWnd: HWND,
6431         pString: LPWSTR,
6432         cchMaxCount: c_int,
6433     ) -> c_int;
EndTask( hWnd: HWND, fShutDown: BOOL, fForce: BOOL, ) -> BOOL6434     pub fn EndTask(
6435         hWnd: HWND,
6436         fShutDown: BOOL,
6437         fForce: BOOL,
6438     ) -> BOOL;
CancelShutdown() -> BOOL6439     pub fn CancelShutdown() -> BOOL;
6440 }
6441 pub const MONITOR_DEFAULTTONULL: DWORD = 0x00000000;
6442 pub const MONITOR_DEFAULTTOPRIMARY: DWORD = 0x00000001;
6443 pub const MONITOR_DEFAULTTONEAREST: DWORD = 0x00000002;
6444 //12900
6445 extern "system" {
MonitorFromPoint( pt: POINT, dwFlags: DWORD, ) -> HMONITOR6446     pub fn MonitorFromPoint(
6447         pt: POINT,
6448         dwFlags: DWORD,
6449     ) -> HMONITOR;
MonitorFromRect( lprc: LPCRECT, dwFlags: DWORD, ) -> HMONITOR6450     pub fn MonitorFromRect(
6451         lprc: LPCRECT,
6452         dwFlags: DWORD,
6453     ) -> HMONITOR;
MonitorFromWindow( hwnd: HWND, dwFlags: DWORD, ) -> HMONITOR6454     pub fn MonitorFromWindow(
6455         hwnd: HWND,
6456         dwFlags: DWORD,
6457     ) -> HMONITOR;
6458 }
6459 pub const MONITORINFOF_PRIMARY: DWORD = 1;
6460 pub const CCHDEVICENAME: usize = 32;
6461 STRUCT!{struct MONITORINFO {
6462     cbSize: DWORD,
6463     rcMonitor: RECT,
6464     rcWork: RECT,
6465     dwFlags: DWORD,
6466 }}
6467 pub type LPMONITORINFO = *mut MONITORINFO;
6468 STRUCT!{struct MONITORINFOEXA {
6469     cbSize: DWORD,
6470     rcMonitor: RECT,
6471     rcWork: RECT,
6472     dwFlags: DWORD,
6473     szDevice: [CHAR; CCHDEVICENAME],
6474 }}
6475 pub type LPMONITORINFOEXA = *mut MONITORINFOEXA;
6476 STRUCT!{struct MONITORINFOEXW {
6477     cbSize: DWORD,
6478     rcMonitor: RECT,
6479     rcWork: RECT,
6480     dwFlags: DWORD,
6481     szDevice: [WCHAR; CCHDEVICENAME],
6482 }}
6483 pub type LPMONITORINFOEXW = *mut MONITORINFOEXW;
6484 //12971
6485 extern "system" {
GetMonitorInfoA( hMonitor: HMONITOR, lpmi: LPMONITORINFO, ) -> BOOL6486     pub fn GetMonitorInfoA(
6487         hMonitor: HMONITOR,
6488         lpmi: LPMONITORINFO,
6489     ) -> BOOL;
GetMonitorInfoW( hMonitor: HMONITOR, lpmi: LPMONITORINFO, ) -> BOOL6490     pub fn GetMonitorInfoW(
6491         hMonitor: HMONITOR,
6492         lpmi: LPMONITORINFO,
6493     ) -> BOOL;
6494 }
6495 FN!{stdcall MONITORENUMPROC(
6496     HMONITOR,
6497     HDC,
6498     LPRECT,
6499     LPARAM,
6500 ) -> BOOL}
6501 extern "system" {
EnumDisplayMonitors( hdc: HDC, lprcClip: LPCRECT, lpfnEnum: MONITORENUMPROC, dwData: LPARAM, ) -> BOOL6502     pub fn EnumDisplayMonitors(
6503         hdc: HDC,
6504         lprcClip: LPCRECT,
6505         lpfnEnum: MONITORENUMPROC,
6506         dwData: LPARAM,
6507     ) -> BOOL;
NotifyWinEvent( event: DWORD, hwnd: HWND, idObject: LONG, idChild: LONG, )6508     pub fn NotifyWinEvent(
6509         event: DWORD,
6510         hwnd: HWND,
6511         idObject: LONG,
6512         idChild: LONG,
6513     );
SetWinEventHook( eventMin: DWORD, eventMax: DWORD, hmodWinEventProc: HMODULE, pfnWinEventProc: WINEVENTPROC, idProcess: DWORD, idThread: DWORD, dwFlags: DWORD, ) -> HWINEVENTHOOK6514     pub fn SetWinEventHook(
6515         eventMin: DWORD,
6516         eventMax: DWORD,
6517         hmodWinEventProc: HMODULE,
6518         pfnWinEventProc: WINEVENTPROC,
6519         idProcess: DWORD,
6520         idThread: DWORD,
6521         dwFlags: DWORD,
6522     ) -> HWINEVENTHOOK;
IsWinEventHookInstalled( event: DWORD, ) -> BOOL6523     pub fn IsWinEventHookInstalled(
6524         event: DWORD,
6525     ) -> BOOL;
6526 }
6527 pub const WINEVENT_OUTOFCONTEXT: UINT = 0x0000;
6528 pub const WINEVENT_SKIPOWNTHREAD: UINT = 0x0001;
6529 pub const WINEVENT_SKIPOWNPROCESS: UINT = 0x0002;
6530 pub const WINEVENT_INCONTEXT: UINT = 0x0004;
6531 extern "system" {
UnhookWinEvent( hWinEventHook: HWINEVENTHOOK, ) -> BOOL6532     pub fn UnhookWinEvent(
6533         hWinEventHook: HWINEVENTHOOK,
6534     ) -> BOOL;
6535 }
6536 pub const CHILDID_SELF: LONG = 0;
6537 pub const INDEXID_OBJECT: LONG = 0;
6538 pub const INDEXID_CONTAINER: LONG = 0;
6539 pub const OBJID_WINDOW: LONG = 0x0000;
6540 pub const OBJID_SYSMENU: LONG = 0xFFFFFFFF;
6541 pub const OBJID_TITLEBAR: LONG = 0xFFFFFFFE;
6542 pub const OBJID_MENU: LONG = 0xFFFFFFFD;
6543 pub const OBJID_CLIENT: LONG = 0xFFFFFFFC;
6544 pub const OBJID_VSCROLL: LONG = 0xFFFFFFFB;
6545 pub const OBJID_HSCROLL: LONG = 0xFFFFFFFA;
6546 pub const OBJID_SIZEGRIP: LONG = 0xFFFFFFF9;
6547 pub const OBJID_CARET: LONG = 0xFFFFFFF8;
6548 pub const OBJID_CURSOR: LONG = 0xFFFFFFF7;
6549 pub const OBJID_ALERT: LONG = 0xFFFFFFF6;
6550 pub const OBJID_SOUND: LONG = 0xFFFFFFF5;
6551 pub const OBJID_QUERYCLASSNAMEIDX: LONG = 0xFFFFFFF4;
6552 pub const OBJID_NATIVEOM: LONG = 0xFFFFFFF0;
6553 pub const EVENT_MIN: UINT = 0x0001;
6554 pub const EVENT_MAX: UINT = 0x7FFFFFFF;
6555 pub const EVENT_SYSTEM_SOUND: UINT = 0x0001;
6556 pub const EVENT_SYSTEM_ALERT: UINT = 0x0002;
6557 pub const EVENT_SYSTEM_FOREGROUND: UINT = 0x0003;
6558 pub const EVENT_SYSTEM_MENUSTART: UINT = 0x0004;
6559 pub const EVENT_SYSTEM_MENUEND: UINT = 0x0005;
6560 pub const EVENT_SYSTEM_MENUPOPUPSTART: UINT = 0x0006;
6561 pub const EVENT_SYSTEM_MENUPOPUPEND: UINT = 0x0007;
6562 pub const EVENT_SYSTEM_CAPTURESTART: UINT = 0x0008;
6563 pub const EVENT_SYSTEM_CAPTUREEND: UINT = 0x0009;
6564 pub const EVENT_SYSTEM_MOVESIZESTART: UINT = 0x000A;
6565 pub const EVENT_SYSTEM_MOVESIZEEND: UINT = 0x000B;
6566 pub const EVENT_SYSTEM_CONTEXTHELPSTART: UINT = 0x000C;
6567 pub const EVENT_SYSTEM_CONTEXTHELPEND: UINT = 0x000D;
6568 pub const EVENT_SYSTEM_DRAGDROPSTART: UINT = 0x000E;
6569 pub const EVENT_SYSTEM_DRAGDROPEND: UINT = 0x000F;
6570 pub const EVENT_SYSTEM_DIALOGSTART: UINT = 0x0010;
6571 pub const EVENT_SYSTEM_DIALOGEND: UINT = 0x0011;
6572 pub const EVENT_SYSTEM_SCROLLINGSTART: UINT = 0x0012;
6573 pub const EVENT_SYSTEM_SCROLLINGEND: UINT = 0x0013;
6574 pub const EVENT_SYSTEM_SWITCHSTART: UINT = 0x0014;
6575 pub const EVENT_SYSTEM_SWITCHEND: UINT = 0x0015;
6576 pub const EVENT_SYSTEM_MINIMIZESTART: UINT = 0x0016;
6577 pub const EVENT_SYSTEM_MINIMIZEEND: UINT = 0x0017;
6578 pub const EVENT_SYSTEM_DESKTOPSWITCH: UINT = 0x0020;
6579 pub const EVENT_SYSTEM_SWITCHER_APPGRABBED: UINT = 0x0024;
6580 pub const EVENT_SYSTEM_SWITCHER_APPOVERTARGET: UINT = 0x0025;
6581 pub const EVENT_SYSTEM_SWITCHER_APPDROPPED: UINT = 0x0026;
6582 pub const EVENT_SYSTEM_SWITCHER_CANCELLED: UINT = 0x0027;
6583 pub const EVENT_SYSTEM_IME_KEY_NOTIFICATION: UINT = 0x0029;
6584 pub const EVENT_SYSTEM_END: UINT = 0x00FF;
6585 pub const EVENT_OEM_DEFINED_START: UINT = 0x0101;
6586 pub const EVENT_OEM_DEFINED_END: UINT = 0x01FF;
6587 pub const EVENT_UIA_EVENTID_START: UINT = 0x4E00;
6588 pub const EVENT_UIA_EVENTID_END: UINT = 0x4EFF;
6589 pub const EVENT_UIA_PROPID_START: UINT = 0x7500;
6590 pub const EVENT_UIA_PROPID_END: UINT = 0x75FF;
6591 pub const EVENT_CONSOLE_CARET: UINT = 0x4001;
6592 pub const EVENT_CONSOLE_UPDATE_REGION: UINT = 0x4002;
6593 pub const EVENT_CONSOLE_UPDATE_SIMPLE: UINT = 0x4003;
6594 pub const EVENT_CONSOLE_UPDATE_SCROLL: UINT = 0x4004;
6595 pub const EVENT_CONSOLE_LAYOUT: UINT = 0x4005;
6596 pub const EVENT_CONSOLE_START_APPLICATION: UINT = 0x4006;
6597 pub const EVENT_CONSOLE_END_APPLICATION: UINT = 0x4007;
6598 #[cfg(target_arch = "x86_64")]
6599 pub const CONSOLE_APPLICATION_16BIT: LONG = 0x0000;
6600 #[cfg(target_arch = "x86")]
6601 pub const CONSOLE_APPLICATION_16BIT: LONG = 0x0001;
6602 pub const CONSOLE_CARET_SELECTION: LONG = 0x0001;
6603 pub const CONSOLE_CARET_VISIBLE: LONG = 0x0002;
6604 pub const EVENT_CONSOLE_END: UINT = 0x40FF;
6605 pub const EVENT_OBJECT_CREATE: UINT = 0x8000;
6606 pub const EVENT_OBJECT_DESTROY: UINT = 0x8001;
6607 pub const EVENT_OBJECT_SHOW: UINT = 0x8002;
6608 pub const EVENT_OBJECT_HIDE: UINT = 0x8003;
6609 pub const EVENT_OBJECT_REORDER: UINT = 0x8004;
6610 pub const EVENT_OBJECT_FOCUS: UINT = 0x8005;
6611 pub const EVENT_OBJECT_SELECTION: UINT = 0x8006;
6612 pub const EVENT_OBJECT_SELECTIONADD: UINT = 0x8007;
6613 pub const EVENT_OBJECT_SELECTIONREMOVE: UINT = 0x8008;
6614 pub const EVENT_OBJECT_SELECTIONWITHIN: UINT = 0x8009;
6615 pub const EVENT_OBJECT_STATECHANGE: UINT = 0x800A;
6616 pub const EVENT_OBJECT_LOCATIONCHANGE: UINT = 0x800B;
6617 pub const EVENT_OBJECT_NAMECHANGE: UINT = 0x800C;
6618 pub const EVENT_OBJECT_DESCRIPTIONCHANGE: UINT = 0x800D;
6619 pub const EVENT_OBJECT_VALUECHANGE: UINT = 0x800E;
6620 pub const EVENT_OBJECT_PARENTCHANGE: UINT = 0x800F;
6621 pub const EVENT_OBJECT_HELPCHANGE: UINT = 0x8010;
6622 pub const EVENT_OBJECT_DEFACTIONCHANGE: UINT = 0x8011;
6623 pub const EVENT_OBJECT_ACCELERATORCHANGE: UINT = 0x8012;
6624 pub const EVENT_OBJECT_INVOKED: UINT = 0x8013;
6625 pub const EVENT_OBJECT_TEXTSELECTIONCHANGED: UINT = 0x8014;
6626 pub const EVENT_OBJECT_CONTENTSCROLLED: UINT = 0x8015;
6627 pub const EVENT_SYSTEM_ARRANGMENTPREVIEW: UINT = 0x8016;
6628 pub const EVENT_OBJECT_CLOAKED: UINT = 0x8017;
6629 pub const EVENT_OBJECT_UNCLOAKED: UINT = 0x8018;
6630 pub const EVENT_OBJECT_LIVEREGIONCHANGED: UINT = 0x8019;
6631 pub const EVENT_OBJECT_HOSTEDOBJECTSINVALIDATED: UINT = 0x8020;
6632 pub const EVENT_OBJECT_DRAGSTART: UINT = 0x8021;
6633 pub const EVENT_OBJECT_DRAGCANCEL: UINT = 0x8022;
6634 pub const EVENT_OBJECT_DRAGCOMPLETE: UINT = 0x8023;
6635 pub const EVENT_OBJECT_DRAGENTER: UINT = 0x8024;
6636 pub const EVENT_OBJECT_DRAGLEAVE: UINT = 0x8025;
6637 pub const EVENT_OBJECT_DRAGDROPPED: UINT = 0x8026;
6638 pub const EVENT_OBJECT_IME_SHOW: UINT = 0x8027;
6639 pub const EVENT_OBJECT_IME_HIDE: UINT = 0x8028;
6640 pub const EVENT_OBJECT_IME_CHANGE: UINT = 0x8029;
6641 pub const EVENT_OBJECT_TEXTEDIT_CONVERSIONTARGETCHANGED: UINT = 0x8030;
6642 pub const EVENT_OBJECT_END: UINT = 0x80FF;
6643 pub const EVENT_AIA_START: UINT = 0xA000;
6644 pub const EVENT_AIA_END: UINT = 0xAFFF;
6645 pub const ALERT_SYSTEM_INFORMATIONAL: LONG = 1;
6646 pub const ALERT_SYSTEM_WARNING: LONG = 2;
6647 pub const ALERT_SYSTEM_ERROR: LONG = 3;
6648 pub const ALERT_SYSTEM_QUERY: LONG = 4;
6649 pub const ALERT_SYSTEM_CRITICAL: LONG = 5;
6650 pub const CALERT_SYSTEM: LONG = 6;
6651 extern "system" {
6652 //14098
BlockInput( fBlockIt: BOOL, ) -> BOOL6653     pub fn BlockInput(
6654         fBlockIt: BOOL,
6655     ) -> BOOL;
6656 }
6657 pub const USER_DEFAULT_SCREEN_DPI: LONG = 96;
6658 extern "system" {
SetProcessDPIAware() -> BOOL6659     pub fn SetProcessDPIAware() -> BOOL;
IsProcessDPIAware() -> BOOL6660     pub fn IsProcessDPIAware() -> BOOL;
SetThreadDpiAwarenessContext( dpiContext: DPI_AWARENESS_CONTEXT, ) -> DPI_AWARENESS_CONTEXT6661     pub fn SetThreadDpiAwarenessContext(
6662         dpiContext: DPI_AWARENESS_CONTEXT,
6663     ) -> DPI_AWARENESS_CONTEXT;
GetThreadDpiAwarenessContext() -> DPI_AWARENESS_CONTEXT6664     pub fn GetThreadDpiAwarenessContext() -> DPI_AWARENESS_CONTEXT;
GetWindowDpiAwarenessContext( hwnd: HWND, ) -> DPI_AWARENESS_CONTEXT6665     pub fn GetWindowDpiAwarenessContext(
6666         hwnd: HWND,
6667     ) -> DPI_AWARENESS_CONTEXT;
GetAwarenessFromDpiAwarenessContext( value: DPI_AWARENESS_CONTEXT, ) -> DPI_AWARENESS6668     pub fn GetAwarenessFromDpiAwarenessContext(
6669         value: DPI_AWARENESS_CONTEXT,
6670     ) -> DPI_AWARENESS;
GetDpiFromDpiAwarenessContext( value: DPI_AWARENESS_CONTEXT, ) -> UINT6671     pub fn GetDpiFromDpiAwarenessContext(
6672         value: DPI_AWARENESS_CONTEXT,
6673     ) -> UINT;
AreDpiAwarenessContextsEqual( dpiContextA: DPI_AWARENESS_CONTEXT, dpiContextB: DPI_AWARENESS_CONTEXT, ) -> BOOL6674     pub fn AreDpiAwarenessContextsEqual(
6675         dpiContextA: DPI_AWARENESS_CONTEXT,
6676         dpiContextB: DPI_AWARENESS_CONTEXT,
6677     ) -> BOOL;
IsValidDpiAwarenessContext( value: DPI_AWARENESS_CONTEXT, ) -> BOOL6678     pub fn IsValidDpiAwarenessContext(
6679         value: DPI_AWARENESS_CONTEXT,
6680     ) -> BOOL;
GetDpiForWindow( hwnd: HWND, ) -> UINT6681     pub fn GetDpiForWindow(
6682         hwnd: HWND,
6683     ) -> UINT;
GetDpiForSystem() -> UINT6684     pub fn GetDpiForSystem() -> UINT;
GetSystemDpiForProcess( hProcess: HANDLE, ) -> UINT6685     pub fn GetSystemDpiForProcess(
6686         hProcess: HANDLE,
6687     ) -> UINT;
EnableNonClientDpiScaling( hwnd: HWND, ) -> BOOL6688     pub fn EnableNonClientDpiScaling(
6689         hwnd: HWND,
6690     ) -> BOOL;
SetProcessDpiAwarenessContext( value: DPI_AWARENESS_CONTEXT, ) -> BOOL6691     pub fn SetProcessDpiAwarenessContext(
6692         value: DPI_AWARENESS_CONTEXT,
6693     ) -> BOOL;
SetThreadDpiHostingBehavior( value: DPI_HOSTING_BEHAVIOR, ) -> DPI_HOSTING_BEHAVIOR6694     pub fn SetThreadDpiHostingBehavior(
6695         value: DPI_HOSTING_BEHAVIOR,
6696     ) -> DPI_HOSTING_BEHAVIOR;
GetThreadDpiHostingBehavior() -> DPI_HOSTING_BEHAVIOR6697     pub fn GetThreadDpiHostingBehavior() -> DPI_HOSTING_BEHAVIOR;
GetWindowDpiHostingBehavior( hwnd: HWND, ) -> DPI_HOSTING_BEHAVIOR6698     pub fn GetWindowDpiHostingBehavior(
6699         hwnd: HWND,
6700     ) -> DPI_HOSTING_BEHAVIOR;
GetWindowModuleFileNameA( hWnd: HWND, lpszFileName: LPCSTR, cchFileNameMax: UINT, ) -> UINT6701     pub fn GetWindowModuleFileNameA(
6702         hWnd: HWND,
6703         lpszFileName: LPCSTR,
6704         cchFileNameMax: UINT,
6705     ) -> UINT;
GetWindowModuleFileNameW( hWnd: HWND, lpszFileName: LPWSTR, cchFileNameMax: UINT, ) -> UINT6706     pub fn GetWindowModuleFileNameW(
6707         hWnd: HWND,
6708         lpszFileName: LPWSTR,
6709         cchFileNameMax: UINT,
6710     ) -> UINT;
GetAncestor( hWnd: HWND, gaFlags: UINT, ) -> HWND6711     pub fn GetAncestor(
6712         hWnd: HWND,
6713         gaFlags: UINT,
6714     ) -> HWND;
RealChildWindowFromPoint( hwndParent: HWND, ptParentClientCoords: POINT, ) -> HWND6715     pub fn RealChildWindowFromPoint(
6716         hwndParent: HWND,
6717         ptParentClientCoords: POINT,
6718     ) -> HWND;
RealGetWindowClassA( hwnd: HWND, ptszClassName: LPSTR, cchClassNameMax: UINT, ) -> UINT6719     pub fn RealGetWindowClassA(
6720         hwnd: HWND,
6721         ptszClassName: LPSTR,
6722         cchClassNameMax: UINT,
6723     ) -> UINT;
RealGetWindowClassW( hwnd: HWND, ptszClassName: LPWSTR, cchClassNameMax: UINT, ) -> UINT6724     pub fn RealGetWindowClassW(
6725         hwnd: HWND,
6726         ptszClassName: LPWSTR,
6727         cchClassNameMax: UINT,
6728     ) -> UINT;
LockWorkStation() -> BOOL6729     pub fn LockWorkStation() -> BOOL;
UserHandleGrantAccess( hUserHandle: HANDLE, hJob: HANDLE, bGrant: BOOL, ) -> BOOL6730     pub fn UserHandleGrantAccess(
6731         hUserHandle: HANDLE,
6732         hJob: HANDLE,
6733         bGrant: BOOL,
6734     ) -> BOOL;
6735 }
6736 DECLARE_HANDLE!{HRAWINPUT, HRAWINPUT__}
6737 #[inline]
GET_RAWINPUT_CODE_WPARAM(wParam: WPARAM) -> WPARAM6738 pub fn GET_RAWINPUT_CODE_WPARAM(wParam: WPARAM) -> WPARAM { wParam & 0xff }
6739 pub const RIM_INPUT: WPARAM = 0;
6740 pub const RIM_INPUTSINK: WPARAM = 1;
6741 STRUCT!{struct RAWINPUTHEADER {
6742     dwType: DWORD,
6743     dwSize: DWORD,
6744     hDevice: HANDLE,
6745     wParam: WPARAM,
6746 }}
6747 pub type PRAWINPUTHEADER = *mut RAWINPUTHEADER;
6748 pub type LPRAWINPUTHEADER = *mut RAWINPUTHEADER;
6749 pub const RIM_TYPEMOUSE: DWORD = 0;
6750 pub const RIM_TYPEKEYBOARD: DWORD = 1;
6751 pub const RIM_TYPEHID: DWORD = 2;
6752 STRUCT!{struct RAWMOUSE {
6753     usFlags: USHORT,
6754     memory_padding: USHORT, // 16bit Padding for 32bit align in following union
6755     usButtonFlags: USHORT,
6756     usButtonData: USHORT,
6757     ulRawButtons: ULONG,
6758     lLastX: LONG,
6759     lLastY: LONG,
6760     ulExtraInformation: ULONG,
6761 }}
6762 pub type PRAWMOUSE = *mut RAWMOUSE;
6763 pub type LPRAWMOUSE = *mut RAWMOUSE;
6764 pub const RI_MOUSE_LEFT_BUTTON_DOWN: USHORT = 0x0001;
6765 pub const RI_MOUSE_LEFT_BUTTON_UP: USHORT = 0x0002;
6766 pub const RI_MOUSE_RIGHT_BUTTON_DOWN: USHORT = 0x0004;
6767 pub const RI_MOUSE_RIGHT_BUTTON_UP: USHORT = 0x0008;
6768 pub const RI_MOUSE_MIDDLE_BUTTON_DOWN: USHORT = 0x0010;
6769 pub const RI_MOUSE_MIDDLE_BUTTON_UP: USHORT = 0x0020;
6770 pub const RI_MOUSE_BUTTON_1_DOWN: USHORT = RI_MOUSE_LEFT_BUTTON_DOWN;
6771 pub const RI_MOUSE_BUTTON_1_UP: USHORT = RI_MOUSE_LEFT_BUTTON_UP;
6772 pub const RI_MOUSE_BUTTON_2_DOWN: USHORT = RI_MOUSE_RIGHT_BUTTON_DOWN;
6773 pub const RI_MOUSE_BUTTON_2_UP: USHORT = RI_MOUSE_RIGHT_BUTTON_UP;
6774 pub const RI_MOUSE_BUTTON_3_DOWN: USHORT = RI_MOUSE_MIDDLE_BUTTON_DOWN;
6775 pub const RI_MOUSE_BUTTON_3_UP: USHORT = RI_MOUSE_MIDDLE_BUTTON_UP;
6776 pub const RI_MOUSE_BUTTON_4_DOWN: USHORT = 0x0040;
6777 pub const RI_MOUSE_BUTTON_4_UP: USHORT = 0x0080;
6778 pub const RI_MOUSE_BUTTON_5_DOWN: USHORT = 0x0100;
6779 pub const RI_MOUSE_BUTTON_5_UP: USHORT = 0x0200;
6780 pub const RI_MOUSE_WHEEL: USHORT = 0x0400;
6781 pub const MOUSE_MOVE_RELATIVE: USHORT = 0;
6782 pub const MOUSE_MOVE_ABSOLUTE: USHORT = 1;
6783 pub const MOUSE_VIRTUAL_DESKTOP: USHORT = 0x02;
6784 pub const MOUSE_ATTRIBUTES_CHANGED: USHORT = 0x04;
6785 pub const MOUSE_MOVE_NOCOALESCE: USHORT = 0x08;
6786 STRUCT!{struct RAWKEYBOARD {
6787     MakeCode: USHORT,
6788     Flags: USHORT,
6789     Reserved: USHORT,
6790     VKey: USHORT,
6791     Message: UINT,
6792     ExtraInformation: ULONG,
6793 }}
6794 pub type PRAWKEYBOARD = *mut RAWKEYBOARD;
6795 pub type LPRAWKEYBOARD = *mut RAWKEYBOARD;
6796 pub const KEYBOARD_OVERRUN_MAKE_CODE: DWORD = 0xFF;
6797 pub const RI_KEY_MAKE: DWORD = 0;
6798 pub const RI_KEY_BREAK: DWORD = 1;
6799 pub const RI_KEY_E0: DWORD = 2;
6800 pub const RI_KEY_E1: DWORD = 4;
6801 pub const RI_KEY_TERMSRV_SET_LED: DWORD = 8;
6802 pub const RI_KEY_TERMSRV_SHADOW: DWORD = 0x10;
6803 STRUCT!{struct RAWHID {
6804     dwSizeHid: DWORD,
6805     dwCount: DWORD,
6806     bRawData: [BYTE; 1],
6807 }}
6808 pub type PRAWHID = *mut RAWHID;
6809 pub type LPRAWHID = *mut RAWHID;
6810 UNION!{union RAWINPUT_data {
6811     [u32; 6],
6812     mouse mouse_mut: RAWMOUSE,
6813     keyboard keyboard_mut: RAWKEYBOARD,
6814     hid hid_mut: RAWHID,
6815 }}
6816 STRUCT!{struct RAWINPUT {
6817     header: RAWINPUTHEADER,
6818     data: RAWINPUT_data,
6819 }}
6820 pub type PRAWINPUT = *mut RAWINPUT;
6821 pub type LPRAWINPUT = *mut RAWINPUT;
6822 pub const RID_INPUT: DWORD = 0x10000003;
6823 pub const RID_HEADER: DWORD = 0x10000005;
6824 extern "system" {
GetRawInputData( hRawInput: HRAWINPUT, uiCommand: UINT, pData: LPVOID, pcbSize: PUINT, cbSizeHeader: UINT, ) -> UINT6825     pub fn GetRawInputData(
6826         hRawInput: HRAWINPUT,
6827         uiCommand: UINT,
6828         pData: LPVOID,
6829         pcbSize: PUINT,
6830         cbSizeHeader: UINT,
6831     ) -> UINT;
6832 }
6833 pub const RIDI_PREPARSEDDATA: DWORD = 0x20000005;
6834 pub const RIDI_DEVICENAME: DWORD = 0x20000007;
6835 pub const RIDI_DEVICEINFO: DWORD = 0x2000000b;
6836 STRUCT!{struct RID_DEVICE_INFO_MOUSE {
6837     dwId: DWORD,
6838     dwNumberOfButtons: DWORD,
6839     dwSampleRate: DWORD,
6840     fHasHorizontalWheel: BOOL,
6841 }}
6842 pub type PRID_DEVICE_INFO_MOUSE = *mut RID_DEVICE_INFO_MOUSE;
6843 STRUCT!{struct RID_DEVICE_INFO_KEYBOARD {
6844     dwType: DWORD,
6845     dwSubType: DWORD,
6846     dwKeyboardMode: DWORD,
6847     dwNumberOfFunctionKeys: DWORD,
6848     dwNumberOfIndicators: DWORD,
6849     dwNumberOfKeysTotal: DWORD,
6850 }}
6851 pub type PRID_DEVICE_INFO_KEYBOARD = *mut RID_DEVICE_INFO_KEYBOARD;
6852 STRUCT!{struct RID_DEVICE_INFO_HID {
6853     dwVendorId: DWORD,
6854     dwProductId: DWORD,
6855     dwVersionNumber: DWORD,
6856     usUsagePage: USHORT,
6857     usUsage: USHORT,
6858 }}
6859 pub type PRID_DEVICE_INFO_HID = *mut RID_DEVICE_INFO_HID;
6860 UNION!{union RID_DEVICE_INFO_u {
6861     [u32; 6],
6862     mouse mouse_mut: RID_DEVICE_INFO_MOUSE,
6863     keyboard keyboard_mut: RID_DEVICE_INFO_KEYBOARD,
6864     hid hid_mut: RID_DEVICE_INFO_HID,
6865 }}
6866 STRUCT!{struct RID_DEVICE_INFO {
6867     cbSize: DWORD,
6868     dwType: DWORD,
6869     u: RID_DEVICE_INFO_u,
6870 }}
6871 pub type PRID_DEVICE_INFO = *mut RID_DEVICE_INFO;
6872 pub type LPRID_DEVICE_INFO = *mut RID_DEVICE_INFO;
6873 extern "system" {
GetRawInputDeviceInfoA( hDevice: HANDLE, uiCommand: UINT, pData: LPVOID, pcbSize: PUINT, ) -> UINT6874     pub fn GetRawInputDeviceInfoA(
6875         hDevice: HANDLE,
6876         uiCommand: UINT,
6877         pData: LPVOID,
6878         pcbSize: PUINT,
6879     ) -> UINT;
GetRawInputDeviceInfoW( hDevice: HANDLE, uiCommand: UINT, pData: LPVOID, pcbSize: PUINT, ) -> UINT6880     pub fn GetRawInputDeviceInfoW(
6881         hDevice: HANDLE,
6882         uiCommand: UINT,
6883         pData: LPVOID,
6884         pcbSize: PUINT,
6885     ) -> UINT;
GetRawInputBuffer( pData: PRAWINPUT, pcbSize: PUINT, cbSizeHeader: UINT, ) -> UINT6886     pub fn GetRawInputBuffer(
6887         pData: PRAWINPUT,
6888         pcbSize: PUINT,
6889         cbSizeHeader: UINT,
6890     ) -> UINT;
6891 }
6892 STRUCT!{struct RAWINPUTDEVICE {
6893     usUsagePage: USHORT,
6894     usUsage: USHORT,
6895     dwFlags: DWORD,
6896     hwndTarget: HWND,
6897 }}
6898 pub type PRAWINPUTDEVICE = *mut RAWINPUTDEVICE;
6899 pub type LPRAWINPUTDEVICE = *mut RAWINPUTDEVICE;
6900 pub type PCRAWINPUTDEVICE = *const RAWINPUTDEVICE;
6901 pub const RIDEV_REMOVE: DWORD = 0x00000001;
6902 pub const RIDEV_EXCLUDE: DWORD = 0x00000010;
6903 pub const RIDEV_PAGEONLY: DWORD = 0x00000020;
6904 pub const RIDEV_NOLEGACY: DWORD = 0x00000030;
6905 pub const RIDEV_INPUTSINK: DWORD = 0x00000100;
6906 pub const RIDEV_CAPTUREMOUSE: DWORD = 0x00000200;
6907 pub const RIDEV_NOHOTKEYS: DWORD = 0x00000200;
6908 pub const RIDEV_APPKEYS: DWORD = 0x00000400;
6909 pub const RIDEV_EXINPUTSINK: DWORD = 0x00001000;
6910 pub const RIDEV_DEVNOTIFY: DWORD = 0x00002000;
6911 pub const RIDEV_EXMODEMASK: DWORD = 0x000000F0;
6912 pub const GIDC_ARRIVAL: DWORD = 1;
6913 pub const GIDC_REMOVAL: DWORD = 2;
6914 extern "system" {
RegisterRawInputDevices( pRawInputDevices: PCRAWINPUTDEVICE, uiNumDevices: UINT, cbSize: UINT, ) -> BOOL6915     pub fn RegisterRawInputDevices(
6916         pRawInputDevices: PCRAWINPUTDEVICE,
6917         uiNumDevices: UINT,
6918         cbSize: UINT,
6919     ) -> BOOL;
GetRegisteredRawInputDevices( pRawInputDevices: PRAWINPUTDEVICE, puiNumDevices: PUINT, cbSize: UINT, ) -> UINT6920     pub fn GetRegisteredRawInputDevices(
6921         pRawInputDevices: PRAWINPUTDEVICE,
6922         puiNumDevices: PUINT,
6923         cbSize: UINT,
6924     ) -> UINT;
6925 }
6926 STRUCT!{struct RAWINPUTDEVICELIST {
6927     hDevice: HANDLE,
6928     dwType: DWORD,
6929 }}
6930 pub type PRAWINPUTDEVICELIST = *mut RAWINPUTDEVICELIST;
6931 extern "system" {
GetRawInputDeviceList( pRawInputDeviceList: PRAWINPUTDEVICELIST, puiNumDevices: PUINT, cbSize: UINT, ) -> UINT6932     pub fn GetRawInputDeviceList(
6933         pRawInputDeviceList: PRAWINPUTDEVICELIST,
6934         puiNumDevices: PUINT,
6935         cbSize: UINT,
6936     ) -> UINT;
DefRawInputProc( paRawInput: *mut PRAWINPUT, nInput: INT, cbSizeHeader: UINT, ) -> LRESULT6937     pub fn DefRawInputProc(
6938         paRawInput: *mut PRAWINPUT,
6939         nInput: INT,
6940         cbSizeHeader: UINT,
6941     ) -> LRESULT;
ChangeWindowMessageFilter( message: UINT, dwFlag: DWORD, ) -> BOOL6942     pub fn ChangeWindowMessageFilter(
6943         message: UINT,
6944         dwFlag: DWORD,
6945     ) -> BOOL;
6946 }
6947 STRUCT!{struct CHANGEFILTERSTRUCT {
6948     cbSize: DWORD,
6949     ExtStatus: DWORD,
6950 }}
6951 extern "system" {
ChangeWindowMessageFilterEx( hwnd: HWND, message: UINT, action: DWORD, pChangeFilterStruct: PCHANGEFILTERSTRUCT, ) -> BOOL6952     pub fn ChangeWindowMessageFilterEx(
6953         hwnd: HWND,
6954         message: UINT,
6955         action: DWORD,
6956         pChangeFilterStruct: PCHANGEFILTERSTRUCT,
6957     ) -> BOOL;
6958 }
6959 pub type PCHANGEFILTERSTRUCT = *mut CHANGEFILTERSTRUCT;
6960 // if WINVER >= 0x0601
6961 // GetSystemMetrics(SM_DIGITIZER) flag values
6962 pub const NID_INTEGRATED_TOUCH: UINT = 0x00000001;
6963 pub const NID_EXTERNAL_TOUCH: UINT = 0x00000002;
6964 pub const NID_INTEGRATED_PEN: UINT = 0x00000004;
6965 pub const NID_EXTERNAL_PEN: UINT = 0x00000008;
6966 pub const NID_MULTI_INPUT: UINT = 0x00000040;
6967 pub const NID_READY: UINT = 0x00000080;
6968 // end if WINVER >= 0x0601
6969 // System Menu Command Values
6970 //
6971 STRUCT!{struct ANIMATIONINFO {
6972     cbSize: UINT,
6973     iMinAnimate: c_int,
6974 }}
6975 pub type LPANIMATIONINFO = *mut ANIMATIONINFO;
6976 pub const SPIF_UPDATEINIFILE: UINT = 0x0001;
6977 pub const SPIF_SENDWININICHANGE: UINT = 0x0002;
6978 pub const SPIF_SENDCHANGE: UINT = SPIF_SENDWININICHANGE;
6979 extern "system" {
LoadIconA( hInstance: HINSTANCE, lpIconName: LPCSTR, ) -> HICON6980     pub fn LoadIconA(
6981         hInstance: HINSTANCE,
6982         lpIconName: LPCSTR,
6983     ) -> HICON;
LoadIconW( hInstance: HINSTANCE, lpIconName: LPCWSTR, ) -> HICON6984     pub fn LoadIconW(
6985         hInstance: HINSTANCE,
6986         lpIconName: LPCWSTR,
6987     ) -> HICON;
IsImmersiveProcess( hProcess: HANDLE, ) -> BOOL6988     pub fn IsImmersiveProcess(
6989         hProcess: HANDLE,
6990     ) -> BOOL;
6991 }
6992 pub const MAX_STR_BLOCKREASON: usize = 256;
6993 extern "system" {
ShutdownBlockReasonCreate( hWnd: HWND, pwszReason: LPCWSTR, ) -> BOOL6994     pub fn ShutdownBlockReasonCreate(
6995         hWnd: HWND,
6996         pwszReason: LPCWSTR,
6997     ) -> BOOL;
ShutdownBlockReasonQuery( hWnd: HWND, pwszBuff: LPWSTR, pcchBuff: *mut DWORD, ) -> BOOL6998     pub fn ShutdownBlockReasonQuery(
6999         hWnd: HWND,
7000         pwszBuff: LPWSTR,
7001         pcchBuff: *mut DWORD,
7002     ) -> BOOL;
ShutdownBlockReasonDestroy( hWnd: HWND, ) -> BOOL7003     pub fn ShutdownBlockReasonDestroy(
7004         hWnd: HWND,
7005     ) -> BOOL;
7006 }
7007