xref: /netbsd-src/external/gpl3/gcc/dist/libphobos/libdruntime/core/sys/windows/winuser.d (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7  * Source: $(DRUNTIMESRC core/sys/windows/_winuser.d)
8  */
9 module core.sys.windows.winuser;
version(Windows)10 version (Windows):
11 @system:
12 
13 version (ANSI) {} else version = Unicode;
14 pragma(lib, "user32");
15 
16 // Conversion Notes:
17 // The following macros were for win16 only, and are not included in this file:
18 //#define EnumTaskWindows(h, f, p) EnumThreadWindows((DWORD)h, f, p)
19 //#define PostAppMessageA(t, m, w, l) PostThreadMessageA((DWORD)t, m, w, l)
20 //#define PostAppMessageW(t, m, w, l) PostThreadMessageW((DWORD)t, m, w, l)
21 //#define GetSysModalWindow() (NULL)
22 //#define SetSysModalWindow(h) (NULL)
23 //#define GetWindowTask(hWnd) ((HANDLE)GetWindowThreadProcessId(hWnd, NULL))
24 //#define DefHookProc(c, p, lp, h) CallNextHookEx((HHOOK)*h, c, p, lp)
25 
26 import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.wingdi;
27 import core.sys.windows.windef; // for HMONITOR
28 
29 // FIXME: clean up Windows version support
30 
MAKEINTATOM_T()31 LPTSTR MAKEINTATOM_T()(int i) {
32     return cast(LPTSTR) i;
33 }
34 
35 enum LPTSTR WC_DIALOG = MAKEINTATOM_T(0x8002);
36 
37 enum {
38     FAPPCOMMAND_MOUSE = 0x8000,
39     FAPPCOMMAND_KEY   = 0,
40     FAPPCOMMAND_OEM   = 0x1000,
41     FAPPCOMMAND_MASK  = 0xF000
42 }
43 
44 enum {
45     MNGO_NOINTERFACE = 0,
46     MNGO_NOERROR,
47     MNGOF_TOPGAP     = 1,
48     MNGOF_BOTTOMGAP
49 }
50 
51 enum {
52     FVIRTKEY  = 1,
53     FNOINVERT = 2,
54     FSHIFT    = 4,
55     FCONTROL  = 8,
56     FALT      = 16
57 }
58 
59 enum {
60     ATF_TIMEOUTON     = 1,
61     ATF_ONOFFFEEDBACK = 2,
62     ATF_AVAILABLE     = 4 // May be obsolete. Not in recent MS docs.
63 }
64 
65 enum {
66     WH_MIN             = -1,
67     WH_MSGFILTER       = -1,
68     WH_JOURNALRECORD,
69     WH_JOURNALPLAYBACK,
70     WH_KEYBOARD,
71     WH_GETMESSAGE,
72     WH_CALLWNDPROC,
73     WH_CBT,
74     WH_SYSMSGFILTER,
75     WH_MOUSE,
76     WH_HARDWARE,
77     WH_DEBUG,
78     WH_SHELL,
79     WH_FOREGROUNDIDLE,
80     WH_CALLWNDPROCRET,
81     WH_KEYBOARD_LL,
82     WH_MOUSE_LL,    // = 14
83     WH_MAX             = 14,
84     WH_MINHOOK         = WH_MIN,
85     WH_MAXHOOK         = WH_MAX
86 }
87 
88 enum {
89     HC_ACTION       = 0,
90     HC_GETNEXT,
91     HC_SKIP,
92     HC_NOREMOVE, // = 3
93     HC_NOREM        = HC_NOREMOVE,
94     HC_SYSMODALON,
95     HC_SYSMODALOFF
96 }
97 
98 enum {
99     HCBT_MOVESIZE    = 0,
100     HCBT_MINMAX,
101     HCBT_QS,
102     HCBT_CREATEWND,
103     HCBT_DESTROYWND,
104     HCBT_ACTIVATE,
105     HCBT_CLICKSKIPPED,
106     HCBT_KEYSKIPPED,
107     HCBT_SYSCOMMAND,
108     HCBT_SETFOCUS // = 9
109 }
110 
111 enum {
112     CF_TEXT                = 0x0001,
113     CF_BITMAP,
114     CF_METAFILEPICT,
115     CF_SYLK,
116     CF_DIF,
117     CF_TIFF,
118     CF_OEMTEXT,
119     CF_DIB,
120     CF_PALETTE,
121     CF_PENDATA,
122     CF_RIFF,
123     CF_WAVE,
124     CF_UNICODETEXT,
125     CF_ENHMETAFILE,
126     CF_HDROP,
127     CF_LOCALE,
128     CF_DIBV5,
129     CF_MAX,             // = 0x0012
130     CF_OWNERDISPLAY        = 0x0080,
131     CF_DSPTEXT,
132     CF_DSPBITMAP,
133     CF_DSPMETAFILEPICT, // = 0x0083
134     CF_DSPENHMETAFILE      = 0x008E,
135     CF_PRIVATEFIRST        = 0x0200,
136     CF_PRIVATELAST         = 0x02FF,
137     CF_GDIOBJFIRST         = 0x0300,
138     CF_GDIOBJLAST          = 0x03FF
139 }
140 
141 enum HKL_PREV = 0;
142 enum HKL_NEXT = 1;
143 
144 enum KLF_ACTIVATE       = 1;
145 enum KLF_SUBSTITUTE_OK  = 2;
146 enum KLF_UNLOADPREVIOUS = 4;
147 enum KLF_REORDER        = 8;
148 enum KLF_REPLACELANG    = 16;
149 enum KLF_NOTELLSHELL    = 128;
150 enum KLF_SETFORPROCESS  = 256;
151 enum KL_NAMELENGTH      = 9;
152 
153 enum MF_ENABLED = 0;
154 enum MF_GRAYED = 1;
155 enum MF_DISABLED = 2;
156 enum MF_BITMAP = 4;
157 enum MF_CHECKED = 8;
158 enum MF_MENUBARBREAK = 32;
159 enum MF_MENUBREAK = 64;
160 enum MF_OWNERDRAW = 256;
161 enum MF_POPUP = 16;
162 enum MF_SEPARATOR = 0x800;
163 enum MF_STRING = 0;
164 enum MF_UNCHECKED = 0;
165 enum MF_DEFAULT = 4096;
166 enum MF_SYSMENU = 0x2000;
167 enum MF_HELP = 0x4000;
168 enum MF_END = 128;
169 enum MF_RIGHTJUSTIFY = 0x4000;
170 enum MF_MOUSESELECT = 0x8000;
171 enum MF_INSERT = 0;
172 enum MF_CHANGE = 128;
173 enum MF_APPEND = 256;
174 enum MF_DELETE = 512;
175 enum MF_REMOVE = 4096;
176 enum MF_USECHECKBITMAPS = 512;
177 enum MF_UNHILITE = 0;
178 enum MF_HILITE = 128;
179 
180 // Also defined in dbt.h
181 enum BSM_ALLCOMPONENTS      = 0;
182 enum BSM_VXDS               = 1;
183 enum BSM_NETDRIVER          = 2;
184 enum BSM_INSTALLABLEDRIVERS = 4;
185 enum BSM_APPLICATIONS       = 8;
186 enum BSM_ALLDESKTOPS        = 16;
187 
188 enum {
189     BSF_QUERY              = 0x0001,
190     BSF_IGNORECURRENTTASK  = 0x0002,
191     BSF_FLUSHDISK          = 0x0004,
192     BSF_NOHANG             = 0x0008,
193     BSF_POSTMESSAGE        = 0x0010,
194     BSF_FORCEIFHUNG        = 0x0020,
195     BSF_NOTIMEOUTIFNOTHUNG = 0x0040,
196     BSF_ALLOWSFW           = 0x0080,
197     BSF_SENDNOTIFYMESSAGE  = 0x0100
198 }
199 static if (_WIN32_WINNT >= 0x501) {
200     enum {
201         BSF_RETURNHDESK    = 0x0200,
202         BSF_LUID           = 0x0400
203     }
204 }
205 
206 enum BROADCAST_QUERY_DENY = 1112363332;
207 enum DWORD ENUM_CURRENT_SETTINGS  = -1;
208 enum DWORD ENUM_REGISTRY_SETTINGS = -2;
209 
210 enum CDS_UPDATEREGISTRY = 1;
211 enum CDS_TEST           = 2;
212 enum CDS_FULLSCREEN     = 4;
213 enum CDS_GLOBAL         = 8;
214 enum CDS_SET_PRIMARY    = 16;
215 enum CDS_NORESET        = 0x10000000;
216 enum CDS_SETRECT        = 0x20000000;
217 enum CDS_RESET          = 0x40000000;
218 
219 enum {
220     DISP_CHANGE_BADPARAM   = -5,
221     DISP_CHANGE_BADFLAGS,
222     DISP_CHANGE_NOTUPDATED,
223     DISP_CHANGE_BADMODE,
224     DISP_CHANGE_FAILED,
225     DISP_CHANGE_SUCCESSFUL,
226     DISP_CHANGE_RESTART // =  1
227 }
228 
229 enum BST_UNCHECKED     = 0;
230 enum BST_CHECKED       = 1;
231 enum BST_INDETERMINATE = 2;
232 enum BST_PUSHED        = 4;
233 enum BST_FOCUS         = 8;
234 
235 enum MF_BYCOMMAND  = 0;
236 enum MF_BYPOSITION = 1024;
237 // [Redefined] MF_UNCHECKED = 0
238 // [Redefined] MF_HILITE = 128
239 // [Redefined] MF_UNHILITE = 0
240 
241 enum CWP_ALL             = 0;
242 enum CWP_SKIPINVISIBLE   = 1;
243 enum CWP_SKIPDISABLED    = 2;
244 enum CWP_SKIPTRANSPARENT = 4;
245 
246 enum IMAGE_BITMAP = 0;
247 enum IMAGE_ICON = 1;
248 enum IMAGE_CURSOR = 2;
249 enum IMAGE_ENHMETAFILE = 3;
250 
251 enum DF_ALLOWOTHERACCOUNTHOOK = 1;
252 
253 enum DESKTOP_READOBJECTS     = 1;
254 enum DESKTOP_CREATEWINDOW    = 2;
255 enum DESKTOP_CREATEMENU      = 4;
256 enum DESKTOP_HOOKCONTROL     = 8;
257 enum DESKTOP_JOURNALRECORD   = 16;
258 enum DESKTOP_JOURNALPLAYBACK = 32;
259 enum DESKTOP_ENUMERATE       = 64;
260 enum DESKTOP_WRITEOBJECTS    = 128;
261 enum DESKTOP_SWITCHDESKTOP   = 256;
262 
263 enum int CW_USEDEFAULT = 0x80000000;
264 
265 enum {
266     WS_OVERLAPPED       = 0,
267     WS_TILED            = WS_OVERLAPPED,
268     WS_MAXIMIZEBOX      = 0x00010000,
269     WS_MINIMIZEBOX      = 0x00020000,
270     WS_TABSTOP          = 0x00010000,
271     WS_GROUP            = 0x00020000,
272     WS_THICKFRAME       = 0x00040000,
273     WS_SIZEBOX          = WS_THICKFRAME,
274     WS_SYSMENU          = 0x00080000,
275     WS_HSCROLL          = 0x00100000,
276     WS_VSCROLL          = 0x00200000,
277     WS_DLGFRAME         = 0x00400000,
278     WS_BORDER           = 0x00800000,
279     WS_CAPTION          = 0x00c00000,
280     WS_OVERLAPPEDWINDOW = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX,
281     WS_TILEDWINDOW      = WS_OVERLAPPEDWINDOW,
282     WS_MAXIMIZE         = 0x01000000,
283     WS_CLIPCHILDREN     = 0x02000000,
284     WS_CLIPSIBLINGS     = 0x04000000,
285     WS_DISABLED         = 0x08000000,
286     WS_VISIBLE          = 0x10000000,
287     WS_MINIMIZE         = 0x20000000,
288     WS_ICONIC           = WS_MINIMIZE,
289     WS_CHILD            = 0x40000000,
290     WS_CHILDWINDOW      = 0x40000000,
291     WS_POPUP            = 0x80000000,
292     WS_POPUPWINDOW      = WS_POPUP|WS_BORDER|WS_SYSMENU,
293 }
294 
295 enum MDIS_ALLCHILDSTYLES = 1;
296 
297 enum BS_3STATE = 5;
298 enum BS_AUTO3STATE = 6;
299 enum BS_AUTOCHECKBOX = 3;
300 enum BS_AUTORADIOBUTTON = 9;
301 enum BS_BITMAP = 128;
302 enum BS_BOTTOM = 0x800;
303 enum BS_CENTER = 0x300;
304 enum BS_CHECKBOX = 2;
305 enum BS_DEFPUSHBUTTON = 1;
306 enum BS_GROUPBOX = 7;
307 enum BS_ICON = 64;
308 enum BS_LEFT = 256;
309 enum BS_LEFTTEXT = 32;
310 enum BS_MULTILINE = 0x2000;
311 enum BS_NOTIFY = 0x4000;
312 enum BS_OWNERDRAW = 0xb;
313 enum BS_PUSHBUTTON = 0;
314 enum BS_PUSHLIKE = 4096;
315 enum BS_RADIOBUTTON = 4;
316 enum BS_RIGHT = 512;
317 enum BS_RIGHTBUTTON = 32;
318 enum BS_TEXT = 0;
319 enum BS_TOP = 0x400;
320 enum BS_USERBUTTON = 8;
321 enum BS_VCENTER = 0xc00;
322 enum BS_FLAT = 0x8000;
323 
324 enum CBS_AUTOHSCROLL = 64;
325 enum CBS_DISABLENOSCROLL = 0x800;
326 enum CBS_DROPDOWN = 2;
327 enum CBS_DROPDOWNLIST = 3;
328 enum CBS_HASSTRINGS = 512;
329 enum CBS_LOWERCASE = 0x4000;
330 enum CBS_NOINTEGRALHEIGHT = 0x400;
331 enum CBS_OEMCONVERT = 128;
332 enum CBS_OWNERDRAWFIXED = 16;
333 enum CBS_OWNERDRAWVARIABLE = 32;
334 enum CBS_SIMPLE = 1;
335 enum CBS_SORT = 256;
336 enum CBS_UPPERCASE = 0x2000;
337 
338 enum ES_AUTOHSCROLL = 128;
339 enum ES_AUTOVSCROLL = 64;
340 enum ES_CENTER = 1;
341 enum ES_LEFT = 0;
342 enum ES_LOWERCASE = 16;
343 enum ES_MULTILINE = 4;
344 enum ES_NOHIDESEL = 256;
345 enum ES_NUMBER = 0x2000;
346 enum ES_OEMCONVERT = 0x400;
347 enum ES_PASSWORD = 32;
348 enum ES_READONLY = 0x800;
349 enum ES_RIGHT = 2;
350 enum ES_UPPERCASE = 8;
351 enum ES_WANTRETURN = 4096;
352 
353 enum LBS_DISABLENOSCROLL = 4096;
354 enum LBS_EXTENDEDSEL = 0x800;
355 enum LBS_HASSTRINGS = 64;
356 enum LBS_MULTICOLUMN = 512;
357 enum LBS_MULTIPLESEL = 8;
358 enum LBS_NODATA = 0x2000;
359 enum LBS_NOINTEGRALHEIGHT = 256;
360 enum LBS_NOREDRAW = 4;
361 enum LBS_NOSEL = 0x4000;
362 enum LBS_NOTIFY = 1;
363 enum LBS_OWNERDRAWFIXED = 16;
364 enum LBS_OWNERDRAWVARIABLE = 32;
365 enum LBS_SORT = 2;
366 enum LBS_STANDARD = 0xa00003;
367 enum LBS_USETABSTOPS = 128;
368 enum LBS_WANTKEYBOARDINPUT = 0x400;
369 
370 enum SBS_BOTTOMALIGN = 4;
371 enum SBS_HORZ = 0;
372 enum SBS_LEFTALIGN = 2;
373 enum SBS_RIGHTALIGN = 4;
374 enum SBS_SIZEBOX = 8;
375 enum SBS_SIZEBOXBOTTOMRIGHTALIGN = 4;
376 enum SBS_SIZEBOXTOPLEFTALIGN = 2;
377 enum SBS_SIZEGRIP = 16;
378 enum SBS_TOPALIGN = 2;
379 enum SBS_VERT = 1;
380 
381 enum SS_BITMAP = 14;
382 enum SS_BLACKFRAME = 7;
383 enum SS_BLACKRECT = 4;
384 enum SS_CENTER = 1;
385 enum SS_CENTERIMAGE = 512;
386 enum SS_ENHMETAFILE = 15;
387 enum SS_ETCHEDFRAME = 18;
388 enum SS_ETCHEDHORZ = 16;
389 enum SS_ETCHEDVERT = 17;
390 enum SS_GRAYFRAME = 8;
391 enum SS_GRAYRECT = 5;
392 enum SS_ICON = 3;
393 enum SS_LEFT = 0;
394 enum SS_LEFTNOWORDWRAP = 0xc;
395 enum SS_NOPREFIX = 128;
396 enum SS_NOTIFY = 256;
397 enum SS_OWNERDRAW = 0xd;
398 enum SS_REALSIZEIMAGE = 0x800;
399 enum SS_RIGHT = 2;
400 enum SS_RIGHTJUST = 0x400;
401 enum SS_SIMPLE = 11;
402 enum SS_SUNKEN = 4096;
403 enum SS_WHITEFRAME = 9;
404 enum SS_WHITERECT = 6;
405 enum SS_USERITEM = 10;
406 enum SS_TYPEMASK = 0x0000001FL;
407 enum SS_ENDELLIPSIS = 0x00004000L;
408 enum SS_PATHELLIPSIS = 0x00008000L;
409 enum SS_WORDELLIPSIS = 0x0000C000L;
410 enum SS_ELLIPSISMASK = 0x0000C000L;
411 
412 enum DS_ABSALIGN      = 0x0001;
413 enum DS_3DLOOK        = 0x0004;
414 enum DS_SYSMODAL      = 0x0002;
415 enum DS_FIXEDSYS      = 0x0008;
416 enum DS_NOFAILCREATE  = 0x0010;
417 enum DS_LOCALEDIT     = 0x0020;
418 enum DS_SETFONT       = 0x0040;
419 enum DS_MODALFRAME    = 0x0080;
420 enum DS_NOIDLEMSG     = 0x0100;
421 enum DS_SETFOREGROUND = 0x0200;
422 enum DS_CONTROL       = 0x0400;
423 enum DS_CENTER        = 0x0800;
424 enum DS_CENTERMOUSE   = 0x1000;
425 enum DS_CONTEXTHELP   = 0x2000;
426 enum DS_SHELLFONT     = DS_SETFONT | DS_FIXEDSYS;
427 
428 enum WS_EX_ACCEPTFILES = 16;
429 enum WS_EX_APPWINDOW = 0x40000;
430 enum WS_EX_CLIENTEDGE = 512;
431 enum WS_EX_COMPOSITED = 0x2000000;  // XP
432 enum WS_EX_CONTEXTHELP = 0x400;
433 enum WS_EX_CONTROLPARENT = 0x10000;
434 enum WS_EX_DLGMODALFRAME = 1;
435 enum WS_EX_LAYERED = 0x80000;  // w2k
436 enum WS_EX_LAYOUTRTL = 0x400000;  // w98, w2k
437 enum WS_EX_LEFT = 0;
438 enum WS_EX_LEFTSCROLLBAR = 0x4000;
439 enum WS_EX_LTRREADING = 0;
440 enum WS_EX_MDICHILD = 64;
441 enum WS_EX_NOACTIVATE = 0x8000000;  // w2k
442 enum WS_EX_NOINHERITLAYOUT = 0x100000;  // w2k
443 enum WS_EX_NOPARENTNOTIFY = 4;
444 enum WS_EX_NOREDIRECTIONBITMAP = 0x00200000; // w8, s2012
445 enum WS_EX_OVERLAPPEDWINDOW = 0x300;
446 enum WS_EX_PALETTEWINDOW = 0x188;
447 enum WS_EX_RIGHT = 0x1000;
448 enum WS_EX_RIGHTSCROLLBAR = 0;
449 enum WS_EX_RTLREADING = 0x2000;
450 enum WS_EX_STATICEDGE = 0x20000;
451 enum WS_EX_TOOLWINDOW = 128;
452 enum WS_EX_TOPMOST = 8;
453 enum WS_EX_TRANSPARENT = 32;
454 enum WS_EX_WINDOWEDGE = 256;
455 
456 enum WINSTA_ENUMDESKTOPS      = 1;
457 enum WINSTA_READATTRIBUTES    = 2;
458 enum WINSTA_ACCESSCLIPBOARD   = 4;
459 enum WINSTA_CREATEDESKTOP     = 8;
460 enum WINSTA_WRITEATTRIBUTES   = 16;
461 enum WINSTA_ACCESSGLOBALATOMS = 32;
462 enum WINSTA_EXITWINDOWS       = 64;
463 enum WINSTA_ENUMERATE         = 256;
464 enum WINSTA_READSCREEN        = 512;
465 
466 enum DDL_READWRITE = 0;
467 enum DDL_READONLY  = 1;
468 enum DDL_HIDDEN    = 2;
469 enum DDL_SYSTEM    = 4;
470 enum DDL_DIRECTORY = 16;
471 enum DDL_ARCHIVE   = 32;
472 enum DDL_POSTMSGS  = 8192;
473 enum DDL_DRIVES    = 16384;
474 enum DDL_EXCLUSIVE = 32768;
475 
476 enum {
477     DC_ACTIVE       = 0x0001,
478     DC_SMALLCAP     = 0x0002,
479     DC_ICON         = 0x0004,
480     DC_TEXT         = 0x0008,
481     DC_INBUTTON     = 0x0010,
482     DC_GRADIENT     = 0x0020
483 }
484 static if (_WIN32_WINNT >= 0x501) {
485     enum DC_BUTTONS = 0x1000;
486 }
487 
488 // Where are these documented?
489 //enum DC_CAPTION = DC_ICON|DC_TEXT|DC_BUTTONS;
490 //enum DC_NC      = DC_CAPTION|DC_FRAME;
491 
492 enum BDR_RAISEDOUTER = 1;
493 enum BDR_SUNKENOUTER = 2;
494 enum BDR_RAISEDINNER = 4;
495 enum BDR_SUNKENINNER = 8;
496 enum BDR_OUTER       = 3;
497 enum BDR_INNER       = 0xc;
498 enum BDR_RAISED      = 5;
499 enum BDR_SUNKEN      = 10;
500 
501 enum EDGE_RAISED = BDR_RAISEDOUTER|BDR_RAISEDINNER;
502 enum EDGE_SUNKEN = BDR_SUNKENOUTER|BDR_SUNKENINNER;
503 enum EDGE_ETCHED = BDR_SUNKENOUTER|BDR_RAISEDINNER;
504 enum EDGE_BUMP   = BDR_RAISEDOUTER|BDR_SUNKENINNER;
505 
506 enum BF_LEFT                    = 1;
507 enum BF_TOP                     = 2;
508 enum BF_RIGHT                   = 4;
509 enum BF_BOTTOM                  = 8;
510 enum BF_TOPLEFT                 = BF_TOP|BF_LEFT;
511 enum BF_TOPRIGHT                = BF_TOP|BF_RIGHT;
512 enum BF_BOTTOMLEFT              = BF_BOTTOM|BF_LEFT;
513 enum BF_BOTTOMRIGHT             = BF_BOTTOM|BF_RIGHT;
514 enum BF_RECT                    = BF_LEFT|BF_TOP|BF_RIGHT|BF_BOTTOM ;
515 enum BF_DIAGONAL                = 16;
516 enum BF_DIAGONAL_ENDTOPRIGHT    = BF_DIAGONAL|BF_TOP|BF_RIGHT;
517 enum BF_DIAGONAL_ENDTOPLEFT     = BF_DIAGONAL|BF_TOP|BF_LEFT;
518 enum BF_DIAGONAL_ENDBOTTOMLEFT  = BF_DIAGONAL|BF_BOTTOM|BF_LEFT;
519 enum BF_DIAGONAL_ENDBOTTOMRIGHT = BF_DIAGONAL|BF_BOTTOM|BF_RIGHT;
520 enum BF_MIDDLE                  = 0x800;
521 enum BF_SOFT                    = 0x1000;
522 enum BF_ADJUST                  = 0x2000;
523 enum BF_FLAT                    = 0x4000;
524 enum BF_MONO                    = 0x8000;
525 
526 enum {
527     DFC_CAPTION      = 1,
528     DFC_MENU,
529     DFC_SCROLL,
530     DFC_BUTTON,
531     DFC_POPUPMENU // = 5
532 }
533 
534 enum {
535     DFCS_CAPTIONCLOSE,
536     DFCS_CAPTIONMIN,
537     DFCS_CAPTIONMAX,
538     DFCS_CAPTIONRESTORE,
539     DFCS_CAPTIONHELP // = 4
540 }
541 
542 enum {
543     DFCS_MENUARROW      = 0,
544     DFCS_MENUCHECK      = 1,
545     DFCS_MENUBULLET     = 2,
546     DFCS_MENUARROWRIGHT = 4
547 }
548 
549 enum {
550     DFCS_SCROLLUP            =  0,
551     DFCS_SCROLLDOWN          =  1,
552     DFCS_SCROLLLEFT          =  2,
553     DFCS_SCROLLRIGHT         =  3,
554     DFCS_SCROLLCOMBOBOX      =  5,
555     DFCS_SCROLLSIZEGRIP      =  8,
556     DFCS_SCROLLSIZEGRIPRIGHT = 16
557 }
558 
559 enum {
560     DFCS_BUTTONCHECK         = 0,
561     DFCS_BUTTONRADIOIMAGE    = 0x0001,
562     DFCS_BUTTONRADIOMASK     = 0x0002,
563     DFCS_BUTTONRADIO         = 0x0004,
564     DFCS_BUTTON3STATE        = 0x0008,
565     DFCS_BUTTONPUSH          = 0x0010,
566     DFCS_INACTIVE            = 0x0100,
567     DFCS_PUSHED              = 0x0200,
568     DFCS_CHECKED             = 0x0400,
569     DFCS_TRANSPARENT         = 0x0800,
570     DFCS_HOT                 = 0x1000,
571     DFCS_ADJUSTRECT          = 0x2000,
572     DFCS_FLAT                = 0x4000,
573     DFCS_MONO                = 0x8000
574 }
575 
576 enum {
577     DST_COMPLEX = 0,
578     DST_TEXT,
579     DST_PREFIXTEXT,
580     DST_ICON,
581     DST_BITMAP // = 4
582 }
583 
584 enum DSS_NORMAL = 0;
585 enum DSS_UNION = 16;
586 enum DSS_DISABLED = 32;
587 enum DSS_MONO = 128;
588 enum DSS_RIGHT = 0x8000;
589 
590 enum DT_BOTTOM = 8;
591 enum DT_CALCRECT = 1024;
592 enum DT_CENTER = 1;
593 enum DT_EDITCONTROL = 8192;
594 enum DT_END_ELLIPSIS = 32768;
595 enum DT_PATH_ELLIPSIS = 16384;
596 enum DT_WORD_ELLIPSIS = 0x40000;
597 enum DT_EXPANDTABS = 64;
598 enum DT_EXTERNALLEADING = 512;
599 enum DT_LEFT = 0;
600 enum DT_MODIFYSTRING = 65536;
601 enum DT_NOCLIP = 256;
602 enum DT_NOPREFIX = 2048;
603 enum DT_RIGHT = 2;
604 enum DT_RTLREADING = 131072;
605 enum DT_SINGLELINE = 32;
606 enum DT_TABSTOP = 128;
607 enum DT_TOP = 0;
608 enum DT_VCENTER = 4;
609 enum DT_WORDBREAK = 16;
610 enum DT_INTERNAL = 4096;
611 
612 enum WB_ISDELIMITER = 2;
613 enum WB_LEFT = 0;
614 enum WB_RIGHT = 1;
615 
616 enum SB_HORZ = 0;
617 enum SB_VERT = 1;
618 enum SB_CTL = 2;
619 enum SB_BOTH = 3;
620 
621 enum ESB_DISABLE_BOTH = 3;
622 enum ESB_DISABLE_DOWN = 2;
623 enum ESB_DISABLE_LEFT = 1;
624 enum ESB_DISABLE_LTUP = 1;
625 enum ESB_DISABLE_RIGHT = 2;
626 enum ESB_DISABLE_RTDN = 2;
627 enum ESB_DISABLE_UP = 1;
628 enum ESB_ENABLE_BOTH = 0;
629 
630 enum SB_LINEUP = 0;
631 enum SB_LINEDOWN = 1;
632 enum SB_LINELEFT = 0;
633 enum SB_LINERIGHT = 1;
634 enum SB_PAGEUP = 2;
635 enum SB_PAGEDOWN = 3;
636 enum SB_PAGELEFT = 2;
637 enum SB_PAGERIGHT = 3;
638 enum SB_THUMBPOSITION = 4;
639 enum SB_THUMBTRACK = 5;
640 enum SB_ENDSCROLL = 8;
641 enum SB_LEFT = 6;
642 enum SB_RIGHT = 7;
643 enum SB_BOTTOM = 7;
644 enum SB_TOP = 6;
645 
646 //MACRO #define IS_INTRESOURCE(i) (((ULONG_PTR)(i) >> 16) == 0)
647 
648 template MAKEINTRESOURCE_T(WORD i) {
649     enum LPTSTR MAKEINTRESOURCE_T = cast(LPTSTR)(i);
650 }
651 
652 nothrow @nogc {
653     LPSTR MAKEINTRESOURCEA(/*WORD*/uint i) {
654         return cast(LPSTR) i;
655     }
656 
657     LPWSTR MAKEINTRESOURCEW(/*WORD*/uint i) {
658         return cast(LPWSTR) i;
659     }
660 }
661 
662 enum RT_CURSOR       = MAKEINTRESOURCE_T!(1);
663 enum RT_BITMAP       = MAKEINTRESOURCE_T!(2);
664 enum RT_ICON         = MAKEINTRESOURCE_T!(3);
665 enum RT_MENU         = MAKEINTRESOURCE_T!(4);
666 enum RT_DIALOG       = MAKEINTRESOURCE_T!(5);
667 enum RT_STRING       = MAKEINTRESOURCE_T!(6);
668 enum RT_FONTDIR      = MAKEINTRESOURCE_T!(7);
669 enum RT_FONT         = MAKEINTRESOURCE_T!(8);
670 enum RT_ACCELERATOR  = MAKEINTRESOURCE_T!(9);
671 enum RT_RCDATA       = MAKEINTRESOURCE_T!(10);
672 enum RT_MESSAGETABLE = MAKEINTRESOURCE_T!(11);
673 
674 enum RT_GROUP_CURSOR = MAKEINTRESOURCE_T!(12);
675 enum RT_GROUP_ICON   = MAKEINTRESOURCE_T!(14);
676 enum RT_VERSION      = MAKEINTRESOURCE_T!(16);
677 enum RT_DLGINCLUDE   = MAKEINTRESOURCE_T!(17);
678 enum RT_PLUGPLAY     = MAKEINTRESOURCE_T!(19);
679 enum RT_VXD          = MAKEINTRESOURCE_T!(20);
680 enum RT_ANICURSOR    = MAKEINTRESOURCE_T!(21);
681 enum RT_ANIICON      = MAKEINTRESOURCE_T!(22);
682 enum RT_HTML         = MAKEINTRESOURCE_T!(23);
683 enum RT_MANIFEST     = MAKEINTRESOURCE_T!(24);
684 
685 enum CREATEPROCESS_MANIFEST_RESOURCE_ID                 = MAKEINTRESOURCE_T!(1);
686 enum ISOLATIONAWARE_MANIFEST_RESOURCE_ID                = MAKEINTRESOURCE_T!(2);
687 enum ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(3);
688 
689 enum {
690     EWX_LOGOFF      =  0,
691     EWX_SHUTDOWN    =  1,
692     EWX_REBOOT      =  2,
693     EWX_FORCE       =  4,
694     EWX_POWEROFF    =  8,
695     EWX_FORCEIFHUNG = 16
696 }
697 
698 enum CS_BYTEALIGNCLIENT = 4096;
699 enum CS_BYTEALIGNWINDOW = 8192;
700 enum CS_KEYCVTWINDOW = 4;
701 enum CS_NOKEYCVT = 256;
702 enum CS_CLASSDC = 64;
703 enum CS_DBLCLKS = 8;
704 enum CS_GLOBALCLASS = 16384;
705 enum CS_HREDRAW = 2;
706 enum CS_NOCLOSE = 512;
707 enum CS_OWNDC = 32;
708 enum CS_PARENTDC = 128;
709 enum CS_SAVEBITS = 2048;
710 enum CS_VREDRAW = 1;
711 enum CS_IME = 0x10000;
712 
713 enum GCW_ATOM = -32;
714 enum GCL_CBCLSEXTRA = -20;
715 enum GCL_CBWNDEXTRA = -18;
716 enum GCL_HBRBACKGROUND = -10;
717 enum GCL_HCURSOR = -12;
718 enum GCL_HICON = -14;
719 enum GCL_HICONSM = -34;
720 enum GCL_HMODULE = -16;
721 enum GCL_MENUNAME = -8;
722 enum GCL_STYLE = -26;
723 enum GCL_WNDPROC = -24;
724 
725 alias GCL_HICONSM GCLP_HICONSM;
726 alias GCL_HICON GCLP_HICON;
727 alias GCL_HCURSOR GCLP_HCURSOR;
728 alias GCL_HBRBACKGROUND GCLP_HBRBACKGROUND;
729 alias GCL_HMODULE  GCLP_HMODULE;
730 alias GCL_MENUNAME GCLP_MENUNAME;
731 alias GCL_WNDPROC  GCLP_WNDPROC;
732 
733 enum {
734     IDC_ARROW       = MAKEINTRESOURCE_T!(32512),
735     IDC_IBEAM       = MAKEINTRESOURCE_T!(32513),
736     IDC_WAIT        = MAKEINTRESOURCE_T!(32514),
737     IDC_CROSS       = MAKEINTRESOURCE_T!(32515),
738     IDC_UPARROW     = MAKEINTRESOURCE_T!(32516),
739     IDC_SIZE        = MAKEINTRESOURCE_T!(32640),
740     IDC_ICON        = MAKEINTRESOURCE_T!(32641),
741     IDC_SIZENWSE    = MAKEINTRESOURCE_T!(32642),
742     IDC_SIZENESW    = MAKEINTRESOURCE_T!(32643),
743     IDC_SIZEWE      = MAKEINTRESOURCE_T!(32644),
744     IDC_SIZENS      = MAKEINTRESOURCE_T!(32645),
745     IDC_SIZEALL     = MAKEINTRESOURCE_T!(32646),
746     IDC_NO          = MAKEINTRESOURCE_T!(32648),
747     IDC_HAND        = MAKEINTRESOURCE_T!(32649),
748     IDC_APPSTARTING = MAKEINTRESOURCE_T!(32650),
749     IDC_HELP        = MAKEINTRESOURCE_T!(32651),
750     IDI_APPLICATION = MAKEINTRESOURCE_T!(32512),
751     IDI_HAND        = MAKEINTRESOURCE_T!(32513),
752     IDI_QUESTION    = MAKEINTRESOURCE_T!(32514),
753     IDI_EXCLAMATION = MAKEINTRESOURCE_T!(32515),
754     IDI_ASTERISK    = MAKEINTRESOURCE_T!(32516),
755     IDI_WINLOGO     = MAKEINTRESOURCE_T!(32517),
756     IDI_WARNING     = IDI_EXCLAMATION,
757     IDI_ERROR       = IDI_HAND,
758     IDI_INFORMATION = IDI_ASTERISK
759 }
760 static if (_WIN32_WINNT >= 0x600) {
761     enum IDI_SHIELD = MAKEINTRESOURCE_T!(32518);
762 }
763 
764 enum {
765     MIIM_STATE      = 0x0001,
766     MIIM_ID         = 0x0002,
767     MIIM_SUBMENU    = 0x0004,
768     MIIM_CHECKMARKS = 0x0008,
769     MIIM_TYPE       = 0x0010,
770     MIIM_DATA       = 0x0020,
771     MIIM_STRING     = 0x0040,
772     MIIM_BITMAP     = 0x0080,
773     MIIM_FTYPE      = 0x0100
774 }
775 
776 enum {
777     MFT_BITMAP       = 0x0004,
778     MFT_MENUBARBREAK = 0x0020,
779     MFT_MENUBREAK    = 0x0040,
780     MFT_OWNERDRAW    = 0x0100,
781     MFT_RADIOCHECK   = 0x0200,
782     MFT_RIGHTJUSTIFY = 0x4000,
783     MFT_SEPARATOR    = 0x0800,
784     MFT_RIGHTORDER   = 0x2000,
785     MFT_STRING       = 0
786 }
787 
788 enum {
789     MFS_CHECKED   = 8,
790     MFS_DEFAULT   = 4096,
791     MFS_DISABLED  = 3,
792     MFS_ENABLED   = 0,
793     MFS_GRAYED    = 3,
794     MFS_HILITE    = 128,
795     MFS_UNCHECKED = 0,
796     MFS_UNHILITE  = 0
797 }
798 
799 enum {
800     GW_HWNDFIRST = 0,
801     GW_HWNDLAST,
802     GW_HWNDNEXT,
803     GW_HWNDPREV,
804     GW_OWNER,
805     GW_CHILD  // = 5
806 }
807 
808 enum {
809     SW_HIDE            =  0,
810     SW_NORMAL          =  1,
811     SW_SHOWNORMAL      =  1,
812     SW_SHOWMINIMIZED   =  2,
813     SW_MAXIMIZE        =  3,
814     SW_SHOWMAXIMIZED   =  3,
815     SW_SHOWNOACTIVATE  =  4,
816     SW_SHOW            =  5,
817     SW_MINIMIZE        =  6,
818     SW_SHOWMINNOACTIVE =  7,
819     SW_SHOWNA          =  8,
820     SW_RESTORE         =  9,
821     SW_SHOWDEFAULT     = 10,
822     SW_FORCEMINIMIZE   = 11,
823     SW_MAX             = 11
824 }
825 
826 enum {
827     SW_PARENTCLOSING  = 1,
828     SW_OTHERZOOM,
829     SW_PARENTOPENING,
830     SW_OTHERUNZOOM // = 4
831 }
832 
833 enum { // is this a different SW from the previous?
834     SW_SCROLLCHILDREN = 0x01,
835     SW_INVALIDATE     = 0x02,
836     SW_ERASE          = 0x04,
837     SW_SMOOTHSCROLL   = 0x10
838 }
839 
840 enum {
841     MB_OK                        = 0,
842     MB_OKCANCEL,
843     MB_ABORTRETRYIGNORE,
844     MB_YESNOCANCEL,
845     MB_YESNO,
846     MB_RETRYCANCEL,
847     MB_CANCELTRYCONTINUE,     // = 6
848     MB_TYPEMASK                  = 0x0000000F,
849     MB_ICONHAND                  = 0x00000010,
850     MB_ICONSTOP                  = MB_ICONHAND,
851     MB_ICONERROR                 = MB_ICONHAND,
852     MB_ICONQUESTION              = 0x00000020,
853     MB_ICONEXCLAMATION           = 0x00000030,
854     MB_ICONWARNING               = MB_ICONEXCLAMATION,
855     MB_ICONASTERISK              = 0x00000040,
856     MB_ICONINFORMATION           = MB_ICONASTERISK,
857     MB_USERICON                  = 0x00000080,
858     MB_ICONMASK                  = 0x000000F0,
859 
860     MB_DEFBUTTON1                = 0,
861     MB_DEFBUTTON2                = 0x00000100,
862     MB_DEFBUTTON3                = 0x00000200,
863     MB_DEFBUTTON4                = 0x00000300,
864     MB_DEFMASK                   = 0x00000F00,
865 
866     MB_APPLMODAL                 = 0,
867     MB_SYSTEMMODAL               = 0x00001000,
868     MB_TASKMODAL                 = 0x00002000,
869     MB_MODEMASK                  = 0x00003000,
870 
871     MB_HELP                      = 0x00004000,
872     MB_NOFOCUS                   = 0x00008000,
873     MB_MISCMASK                  = 0x0000C000,
874 
875     MB_SETFOREGROUND             = 0x00010000,
876     MB_DEFAULT_DESKTOP_ONLY      = 0x00020000,
877     MB_TOPMOST                   = 0x00040000,
878     MB_SERVICE_NOTIFICATION_NT3X = 0x00040000,
879     MB_RIGHT                     = 0x00080000,
880     MB_RTLREADING                = 0x00100000,
881     MB_SERVICE_NOTIFICATION      = 0x00200000
882 }
883 
884 enum {
885     IDOK          = 1,
886     IDCANCEL,
887     IDABORT,
888     IDRETRY,
889     IDIGNORE,
890     IDYES,
891     IDNO,
892     IDCLOSE,
893     IDHELP,
894     IDTRYAGAIN,
895     IDCONTINUE // = 11
896 }
897 
898 enum GWL_EXSTYLE = -20;
899 enum GWL_STYLE = -16;
900 enum GWL_WNDPROC = -4;
901 enum GWLP_WNDPROC = -4;
902 enum GWL_HINSTANCE = -6;
903 enum GWLP_HINSTANCE = -6;
904 enum GWL_HWNDPARENT = -8;
905 enum GWLP_HWNDPARENT = -8;
906 enum GWL_ID = -12;
907 enum GWLP_ID = -12;
908 enum GWL_USERDATA = -21;
909 enum GWLP_USERDATA = -21;
910 
911 enum DWL_DLGPROC = 4;
912 enum DWLP_DLGPROC = 4;
913 enum DWL_MSGRESULT = 0;
914 enum DWLP_MSGRESULT = 0;
915 enum DWL_USER = 8;
916 enum DWLP_USER = 8;
917 
918 enum QS_KEY            = 1;
919 enum QS_MOUSEMOVE      = 2;
920 enum QS_MOUSEBUTTON    = 4;
921 enum QS_MOUSE          = 6;
922 enum QS_POSTMESSAGE    = 8;
923 enum QS_TIMER          = 16;
924 enum QS_PAINT          = 32;
925 enum QS_SENDMESSAGE    = 64;
926 enum QS_HOTKEY         = 128;
927 enum QS_ALLPOSTMESSAGE = 256;
928 static if (_WIN32_WINNT >= 0x501) {
929 enum QS_RAWINPUT       = 1024;
930 enum QS_INPUT          = 1031;
931 enum QS_ALLEVENTS      = 1215;
932 enum QS_ALLINPUT       = 1279;
933 } else {
934 enum QS_INPUT          = 7;
935 enum QS_ALLEVENTS      = 191;
936 enum QS_ALLINPUT       = 255;
937 }
938 
939 enum MWMO_WAITALL        = 1;
940 enum MWMO_ALERTABLE      = 2;
941 enum MWMO_INPUTAVAILABLE = 4;
942 
943 enum COLOR_3DDKSHADOW = 21;
944 enum COLOR_3DFACE = 15;
945 enum COLOR_3DHILIGHT = 20;
946 enum COLOR_3DHIGHLIGHT = 20;
947 enum COLOR_3DLIGHT = 22;
948 enum COLOR_BTNHILIGHT = 20;
949 enum COLOR_3DSHADOW = 16;
950 enum COLOR_ACTIVEBORDER = 10;
951 enum COLOR_ACTIVECAPTION = 2;
952 enum COLOR_APPWORKSPACE = 12;
953 enum COLOR_BACKGROUND = 1;
954 enum COLOR_DESKTOP = 1;
955 enum COLOR_BTNFACE = 15;
956 enum COLOR_BTNHIGHLIGHT = 20;
957 enum COLOR_BTNSHADOW = 16;
958 enum COLOR_BTNTEXT = 18;
959 enum COLOR_CAPTIONTEXT = 9;
960 enum COLOR_GRAYTEXT = 17;
961 enum COLOR_HIGHLIGHT = 13;
962 enum COLOR_HIGHLIGHTTEXT = 14;
963 enum COLOR_INACTIVEBORDER = 11;
964 enum COLOR_INACTIVECAPTION = 3;
965 enum COLOR_INACTIVECAPTIONTEXT = 19;
966 enum COLOR_INFOBK = 24;
967 enum COLOR_INFOTEXT = 23;
968 enum COLOR_MENU = 4;
969 enum COLOR_MENUTEXT = 7;
970 enum COLOR_SCROLLBAR = 0;
971 enum COLOR_WINDOW = 5;
972 enum COLOR_WINDOWFRAME = 6;
973 enum COLOR_WINDOWTEXT = 8;
974 enum COLOR_HOTLIGHT = 26;
975 enum COLOR_GRADIENTACTIVECAPTION = 27;
976 enum COLOR_GRADIENTINACTIVECAPTION = 28;
977 
978 enum CTLCOLOR_MSGBOX = 0;
979 enum CTLCOLOR_EDIT = 1;
980 enum CTLCOLOR_LISTBOX = 2;
981 enum CTLCOLOR_BTN = 3;
982 enum CTLCOLOR_DLG = 4;
983 enum CTLCOLOR_SCROLLBAR = 5;
984 enum CTLCOLOR_STATIC = 6;
985 enum CTLCOLOR_MAX = 7;
986 
987 // For GetSystemMetrics()
988 enum : int {
989     SM_CXSCREEN = 0,
990     SM_CYSCREEN,
991     SM_CXVSCROLL,
992     SM_CYHSCROLL,
993     SM_CYCAPTION,
994     SM_CXBORDER,
995     SM_CYBORDER,
996     SM_CXDLGFRAME,    // = 7
997     SM_CXFIXEDFRAME      = SM_CXDLGFRAME,
998     SM_CYDLGFRAME,    // = 8
999     SM_CYFIXEDFRAME      = SM_CYDLGFRAME,
1000     SM_CYVTHUMB,      // = 9
1001     SM_CXHTHUMB,
1002     SM_CXICON,
1003     SM_CYICON,
1004     SM_CXCURSOR,
1005     SM_CYCURSOR,
1006     SM_CYMENU,
1007     SM_CXFULLSCREEN,
1008     SM_CYFULLSCREEN,
1009     SM_CYKANJIWINDOW,
1010     SM_MOUSEPRESENT,
1011     SM_CYVSCROLL,
1012     SM_CXHSCROLL,
1013     SM_DEBUG,
1014     SM_SWAPBUTTON,
1015     SM_RESERVED1,
1016     SM_RESERVED2,
1017     SM_RESERVED3,
1018     SM_RESERVED4,
1019     SM_CXMIN,
1020     SM_CYMIN,
1021     SM_CXSIZE,
1022     SM_CYSIZE,
1023     SM_CXSIZEFRAME,   // = 32,
1024     SM_CXFRAME           = SM_CXSIZEFRAME,
1025     SM_CYSIZEFRAME,   // = 33
1026     SM_CYFRAME           = SM_CYSIZEFRAME,
1027     SM_CXMINTRACK,
1028     SM_CYMINTRACK,
1029     SM_CXDOUBLECLK,
1030     SM_CYDOUBLECLK,
1031     SM_CXICONSPACING,
1032     SM_CYICONSPACING,
1033     SM_MENUDROPALIGNMENT,
1034     SM_PENWINDOWS,
1035     SM_DBCSENABLED,
1036     SM_CMOUSEBUTTONS,
1037     SM_SECURE,
1038     SM_CXEDGE,
1039     SM_CYEDGE,
1040     SM_CXMINSPACING,
1041     SM_CYMINSPACING,
1042     SM_CXSMICON,
1043     SM_CYSMICON,
1044     SM_CYSMCAPTION,
1045     SM_CXSMSIZE,
1046     SM_CYSMSIZE,
1047     SM_CXMENUSIZE,
1048     SM_CYMENUSIZE,
1049     SM_ARRANGE,
1050     SM_CXMINIMIZED,
1051     SM_CYMINIMIZED,
1052     SM_CXMAXTRACK,
1053     SM_CYMAXTRACK,
1054     SM_CXMAXIMIZED,
1055     SM_CYMAXIMIZED,
1056     SM_NETWORK,       // = 63
1057     SM_CLEANBOOT         = 67,
1058     SM_CXDRAG,
1059     SM_CYDRAG,
1060     SM_SHOWSOUNDS,
1061     SM_CXMENUCHECK,
1062     SM_CYMENUCHECK,
1063     SM_SLOWMACHINE,
1064     SM_MIDEASTENABLED,
1065     SM_MOUSEWHEELPRESENT,
1066     SM_XVIRTUALSCREEN,
1067     SM_YVIRTUALSCREEN,
1068     SM_CXVIRTUALSCREEN,
1069     SM_CYVIRTUALSCREEN,
1070     SM_CMONITORS,
1071     SM_SAMEDISPLAYFORMAT,
1072     SM_IMMENABLED,
1073     SM_CXFOCUSBORDER,
1074     SM_CYFOCUSBORDER, // = 84
1075     SM_TABLETPC          = 86,
1076     SM_MEDIACENTER,
1077     SM_STARTER,       // = 88
1078     SM_CMETRICS          = 88,
1079     SM_SERVERR2,
1080     SM_REMOTESESSION     = 0x1000,
1081 }
1082 static if (_WIN32_WINNT >= 0x501) {
1083     enum {  // These are only for WinXP and later
1084         SM_SHUTTINGDOWN  = 0x2000,
1085         SM_REMOTECONTROL = 0x2001
1086     }
1087 }
1088 
1089 enum ARW_BOTTOMLEFT = 0;
1090 enum ARW_BOTTOMRIGHT = 1;
1091 enum ARW_HIDE = 8;
1092 enum ARW_TOPLEFT = 2;
1093 enum ARW_TOPRIGHT = 3;
1094 enum ARW_DOWN = 4;
1095 enum ARW_LEFT = 0;
1096 enum ARW_RIGHT = 0;
1097 enum ARW_UP = 4;
1098 
1099 enum UOI_FLAGS = 1;
1100 enum UOI_NAME = 2;
1101 enum UOI_TYPE = 3;
1102 enum UOI_USER_SID = 4;
1103 
1104 // For the fuLoad parameter of LoadImage()
1105 enum : UINT {
1106     LR_DEFAULTCOLOR     = 0,
1107     LR_MONOCHROME       = 0x0001,
1108     LR_COLOR            = 0x0002,
1109     LR_COPYRETURNORG    = 0x0004,
1110     LR_COPYDELETEORG    = 0x0008,
1111     LR_LOADFROMFILE     = 0x0010,
1112     LR_LOADTRANSPARENT  = 0x0020,
1113     LR_DEFAULTSIZE      = 0x0040,
1114     LR_VGACOLOR         = 0x0080,
1115     LR_LOADREALSIZE     = 0x0080,
1116     LR_LOADMAP3DCOLORS  = 0x1000,
1117     LR_CREATEDIBSECTION = 0x2000,
1118     LR_COPYFROMRESOURCE = 0x4000,
1119     LR_SHARED           = 0x8000
1120 }
1121 
1122 enum {
1123     KEYEVENTF_EXTENDEDKEY = 1,
1124     KEYEVENTF_KEYUP       = 2,
1125     KEYEVENTF_UNICODE     = 4,
1126     KEYEVENTF_SCANCODE    = 8
1127 }
1128 
1129 enum OBM_BTNCORNERS = 32758;
1130 enum OBM_BTSIZE = 32761;
1131 enum OBM_CHECK = 32760;
1132 enum OBM_CHECKBOXES = 32759;
1133 enum OBM_CLOSE = 32754;
1134 enum OBM_COMBO = 32738;
1135 enum OBM_DNARROW = 32752;
1136 enum OBM_DNARROWD = 32742;
1137 enum OBM_DNARROWI = 32736;
1138 enum OBM_LFARROW = 32750;
1139 enum OBM_LFARROWI = 32734;
1140 enum OBM_LFARROWD = 32740;
1141 enum OBM_MNARROW = 32739;
1142 enum OBM_OLD_CLOSE = 32767;
1143 enum OBM_OLD_DNARROW = 32764;
1144 enum OBM_OLD_LFARROW = 32762;
1145 enum OBM_OLD_REDUCE = 32757;
1146 enum OBM_OLD_RESTORE = 32755;
1147 enum OBM_OLD_RGARROW = 32763;
1148 enum OBM_OLD_UPARROW = 32765;
1149 enum OBM_OLD_ZOOM = 32756;
1150 enum OBM_REDUCE = 32749;
1151 enum OBM_REDUCED = 32746;
1152 enum OBM_RESTORE = 32747;
1153 enum OBM_RESTORED = 32744;
1154 enum OBM_RGARROW = 32751;
1155 enum OBM_RGARROWD = 32741;
1156 enum OBM_RGARROWI = 32735;
1157 enum OBM_SIZE = 32766;
1158 enum OBM_UPARROW = 32753;
1159 enum OBM_UPARROWD = 32743;
1160 enum OBM_UPARROWI = 32737;
1161 enum OBM_ZOOM = 32748;
1162 enum OBM_ZOOMD = 32745;
1163 
1164 enum OCR_NORMAL = 32512;
1165 enum OCR_IBEAM = 32513;
1166 enum OCR_WAIT = 32514;
1167 enum OCR_CROSS = 32515;
1168 enum OCR_UP = 32516;
1169 enum OCR_SIZE = 32640;
1170 enum OCR_ICON = 32641;
1171 enum OCR_SIZENWSE = 32642;
1172 enum OCR_SIZENESW = 32643;
1173 enum OCR_SIZEWE = 32644;
1174 enum OCR_SIZENS = 32645;
1175 enum OCR_SIZEALL = 32646;
1176 enum OCR_NO = 32648;
1177 enum OCR_APPSTARTING = 32650;
1178 
1179 enum OIC_SAMPLE = 32512;
1180 enum OIC_HAND = 32513;
1181 enum OIC_QUES = 32514;
1182 enum OIC_BANG = 32515;
1183 enum OIC_NOTE = 32516;
1184 enum OIC_WINLOGO = 32517;
1185 enum OIC_WARNING = OIC_BANG;
1186 enum OIC_ERROR = OIC_HAND;
1187 enum OIC_INFORMATION = OIC_NOTE;
1188 
1189 enum HELPINFO_MENUITEM = 2;
1190 enum HELPINFO_WINDOW = 1;
1191 
1192 static if (_WIN32_WINNT >= 0x501) {
1193     enum {
1194         WTS_CONSOLE_CONNECT = 1,
1195         WTS_CONSOLE_DISCONNECT,
1196         WTS_REMOTE_CONNECT,
1197         WTS_REMOTE_DISCONNECT,
1198         WTS_SESSION_LOGON,
1199         WTS_SESSION_LOGOFF,
1200         WTS_SESSION_LOCK,
1201         WTS_SESSION_UNLOCK,
1202         WTS_SESSION_REMOTE_CONTROL // = 9
1203     }
1204 }
1205 
1206 enum MSGF_DIALOGBOX = 0;
1207 enum MSGF_MESSAGEBOX = 1;
1208 enum MSGF_MENU = 2;
1209 enum MSGF_MOVE = 3;
1210 enum MSGF_SIZE = 4;
1211 enum MSGF_SCROLLBAR = 5;
1212 enum MSGF_NEXTWINDOW = 6;
1213 enum MSGF_MAINLOOP = 8;
1214 enum MSGF_USER = 4096;
1215 
1216 enum {
1217     MOUSEEVENTF_MOVE       = 0x0001,
1218     MOUSEEVENTF_LEFTDOWN   = 0x0002,
1219     MOUSEEVENTF_LEFTUP     = 0x0004,
1220     MOUSEEVENTF_RIGHTDOWN  = 0x0008,
1221     MOUSEEVENTF_RIGHTUP    = 0x0010,
1222     MOUSEEVENTF_MIDDLEDOWN = 0x0020,
1223     MOUSEEVENTF_MIDDLEUP   = 0x0040,
1224     MOUSEEVENTF_XDOWN      = 0x0080,
1225     MOUSEEVENTF_XUP        = 0x0100,
1226     MOUSEEVENTF_WHEEL      = 0x0800,
1227     MOUSEEVENTF_ABSOLUTE   = 0x8000
1228 }
1229 
1230 enum PM_NOREMOVE = 0;
1231 enum PM_REMOVE = 1;
1232 enum PM_NOYIELD = 2;
1233 
1234 enum : HWND {
1235     HWND_BROADCAST = cast(HWND) 0xFFFF,
1236     HWND_MESSAGE   = cast(HWND)     -3,
1237     HWND_NOTOPMOST = cast(HWND)     -2,
1238     HWND_TOPMOST   = cast(HWND)     -1,
1239     HWND_TOP       = cast(HWND)      0,
1240     HWND_DESKTOP   = cast(HWND)      0,
1241     HWND_BOTTOM    = cast(HWND)      1
1242 }
1243 
1244 enum RDW_INVALIDATE      = 1;
1245 enum RDW_INTERNALPAINT   = 2;
1246 enum RDW_ERASE           = 4;
1247 enum RDW_VALIDATE        = 8;
1248 enum RDW_NOINTERNALPAINT = 16;
1249 enum RDW_NOERASE         = 32;
1250 enum RDW_NOCHILDREN      = 64;
1251 enum RDW_ALLCHILDREN     = 128;
1252 enum RDW_UPDATENOW       = 256;
1253 enum RDW_ERASENOW        = 512;
1254 enum RDW_FRAME           = 1024;
1255 enum RDW_NOFRAME         = 2048;
1256 
1257 enum {
1258     SMTO_NORMAL             = 0,
1259     SMTO_BLOCK              = 1,
1260     SMTO_ABORTIFHUNG        = 2,
1261     SMTO_NOTIMEOUTIFNOTHUNG = 8
1262 }
1263 
1264 enum SIF_ALL = 23;
1265 enum SIF_PAGE = 2;
1266 enum SIF_POS = 4;
1267 enum SIF_RANGE = 1;
1268 enum SIF_DISABLENOSCROLL = 8;
1269 enum SIF_TRACKPOS = 16;
1270 
1271 enum SWP_DRAWFRAME = 32;
1272 enum SWP_FRAMECHANGED = 32;
1273 enum SWP_HIDEWINDOW = 128;
1274 enum SWP_NOACTIVATE = 16;
1275 enum SWP_NOCOPYBITS = 256;
1276 enum SWP_NOMOVE = 2;
1277 enum SWP_NOSIZE = 1;
1278 enum SWP_NOREDRAW = 8;
1279 enum SWP_NOZORDER = 4;
1280 enum SWP_SHOWWINDOW = 64;
1281 enum SWP_NOOWNERZORDER = 512;
1282 enum SWP_NOREPOSITION = 512;
1283 enum SWP_NOSENDCHANGING = 1024;
1284 enum SWP_DEFERERASE = 8192;
1285 enum SWP_ASYNCWINDOWPOS = 16384;
1286 
1287 enum { // passed variously as int or WPARAM
1288     HSHELL_WINDOWCREATED    =     1,
1289     HSHELL_WINDOWDESTROYED,
1290     HSHELL_ACTIVATESHELLWINDOW,
1291     HSHELL_WINDOWACTIVATED,
1292     HSHELL_GETMINRECT,
1293     HSHELL_REDRAW,
1294     HSHELL_TASKMAN,
1295     HSHELL_LANGUAGE,     // =     8
1296     HSHELL_ENDTASK          =    10,
1297     HSHELL_ACCESSIBILITYSTATE,
1298     HSHELL_APPCOMMAND,   // =    12
1299     HSHELL_RUDEAPPACTIVATED = 32772,
1300     HSHELL_FLASH            = 32774
1301 }
1302 
1303 static if (_WIN32_WINNT >= 0x501) {
1304     enum {
1305         HSHELL_WINDOWREPLACED = 13,
1306         HSHELL_WINDOWREPLACING
1307     }
1308 }
1309 
1310 enum {
1311     SPI_GETBEEP                   = 0x0001,
1312     SPI_SETBEEP                   = 0x0002,
1313     SPI_GETMOUSE                  = 0x0003,
1314     SPI_SETMOUSE                  = 0x0004,
1315     SPI_GETBORDER                 = 0x0005,
1316     SPI_SETBORDER                 = 0x0006,
1317     SPI_GETKEYBOARDSPEED          = 0x000A,
1318     SPI_SETKEYBOARDSPEED          = 0x000B,
1319     SPI_LANGDRIVER                = 0x000C,
1320     SPI_ICONHORIZONTALSPACING     = 0x000D,
1321     SPI_GETSCREENSAVETIMEOUT      = 0x000E,
1322     SPI_SETSCREENSAVETIMEOUT      = 0x000F,
1323     SPI_GETSCREENSAVEACTIVE       = 0x0010,
1324     SPI_SETSCREENSAVEACTIVE       = 0x0011,
1325     SPI_GETGRIDGRANULARITY        = 0x0012,
1326     SPI_SETGRIDGRANULARITY        = 0x0013,
1327     SPI_SETDESKWALLPAPER          = 0x0014,
1328     SPI_SETDESKPATTERN            = 0x0015,
1329     SPI_GETKEYBOARDDELAY          = 0x0016,
1330     SPI_SETKEYBOARDDELAY          = 0x0017,
1331     SPI_ICONVERTICALSPACING       = 0x0018,
1332     SPI_GETICONTITLEWRAP          = 0x0019,
1333     SPI_SETICONTITLEWRAP          = 0x001A,
1334     SPI_GETMENUDROPALIGNMENT      = 0x001B,
1335     SPI_SETMENUDROPALIGNMENT      = 0x001C,
1336     SPI_SETDOUBLECLKWIDTH         = 0x001D,
1337     SPI_SETDOUBLECLKHEIGHT        = 0x001E,
1338     SPI_GETICONTITLELOGFONT       = 0x001F,
1339     SPI_SETDOUBLECLICKTIME        = 0x0020,
1340     SPI_SETMOUSEBUTTONSWAP        = 0x0021,
1341     SPI_SETICONTITLELOGFONT       = 0x0022,
1342     SPI_GETFASTTASKSWITCH         = 0x0023,
1343     SPI_SETFASTTASKSWITCH         = 0x0024,
1344     SPI_SETDRAGFULLWINDOWS        = 0x0025,
1345     SPI_GETDRAGFULLWINDOWS        = 0x0026,
1346     SPI_GETNONCLIENTMETRICS       = 0x0029,
1347     SPI_SETNONCLIENTMETRICS       = 0x002A,
1348     SPI_GETMINIMIZEDMETRICS       = 0x002B,
1349     SPI_SETMINIMIZEDMETRICS       = 0x002C,
1350     SPI_GETICONMETRICS            = 0x002D,
1351     SPI_SETICONMETRICS            = 0x002E,
1352     SPI_SETWORKAREA               = 0x002F,
1353     SPI_GETWORKAREA               = 0x0030,
1354     SPI_SETPENWINDOWS             = 0x0031,
1355     SPI_GETFILTERKEYS             = 0x0032,
1356     SPI_SETFILTERKEYS             = 0x0033,
1357     SPI_GETTOGGLEKEYS             = 0x0034,
1358     SPI_SETTOGGLEKEYS             = 0x0035,
1359     SPI_GETMOUSEKEYS              = 0x0036,
1360     SPI_SETMOUSEKEYS              = 0x0037,
1361     SPI_GETSHOWSOUNDS             = 0x0038,
1362     SPI_SETSHOWSOUNDS             = 0x0039,
1363     SPI_GETSTICKYKEYS             = 0x003A,
1364     SPI_SETSTICKYKEYS             = 0x003B,
1365     SPI_GETACCESSTIMEOUT          = 0x003C,
1366     SPI_SETACCESSTIMEOUT          = 0x003D,
1367     SPI_GETSERIALKEYS             = 0x003E,
1368     SPI_SETSERIALKEYS             = 0x003F,
1369     SPI_GETSOUNDSENTRY            = 0x0040,
1370     SPI_SETSOUNDSENTRY            = 0x0041,
1371     SPI_GETHIGHCONTRAST           = 0x0042,
1372     SPI_SETHIGHCONTRAST           = 0x0043,
1373     SPI_GETKEYBOARDPREF           = 0x0044,
1374     SPI_SETKEYBOARDPREF           = 0x0045,
1375     SPI_GETSCREENREADER           = 0x0046,
1376     SPI_SETSCREENREADER           = 0x0047,
1377     SPI_GETANIMATION              = 0x0048,
1378     SPI_SETANIMATION              = 0x0049,
1379     SPI_GETFONTSMOOTHING          = 0x004A,
1380     SPI_SETFONTSMOOTHING          = 0x004B,
1381     SPI_SETDRAGWIDTH              = 0x004C,
1382     SPI_SETDRAGHEIGHT             = 0x004D,
1383     SPI_SETHANDHELD               = 0x004E,
1384     SPI_GETLOWPOWERTIMEOUT        = 0x004F,
1385     SPI_GETPOWEROFFTIMEOUT        = 0x0050,
1386     SPI_SETLOWPOWERTIMEOUT        = 0x0051,
1387     SPI_SETPOWEROFFTIMEOUT        = 0x0052,
1388     SPI_GETLOWPOWERACTIVE         = 0x0053,
1389     SPI_GETPOWEROFFACTIVE         = 0x0054,
1390     SPI_SETLOWPOWERACTIVE         = 0x0055,
1391     SPI_SETPOWEROFFACTIVE         = 0x0056,
1392     SPI_SETCURSORS                = 0x0057,
1393     SPI_SETICONS                  = 0x0058,
1394     SPI_GETDEFAULTINPUTLANG       = 0x0059,
1395     SPI_SETDEFAULTINPUTLANG       = 0x005A,
1396     SPI_SETLANGTOGGLE             = 0x005B,
1397     SPI_GETWINDOWSEXTENSION       = 0x005C,
1398     SPI_SETMOUSETRAILS            = 0x005D,
1399     SPI_GETMOUSETRAILS            = 0x005E,
1400     SPI_GETSNAPTODEFBUTTON        = 0x005F,
1401     SPI_SETSNAPTODEFBUTTON        = 0x0060,
1402     //SPI_SCREENSAVERRUNNING        = 0x0061, // mistake in older MinGW?
1403     SPI_SETSCREENSAVERRUNNING     = 0x0061,
1404     SPI_GETMOUSEHOVERWIDTH        = 0x0062,
1405     SPI_SETMOUSEHOVERWIDTH        = 0x0063,
1406     SPI_GETMOUSEHOVERHEIGHT       = 0x0064,
1407     SPI_SETMOUSEHOVERHEIGHT       = 0x0065,
1408     SPI_GETMOUSEHOVERTIME         = 0x0066,
1409     SPI_SETMOUSEHOVERTIME         = 0x0067,
1410     SPI_GETWHEELSCROLLLINES       = 0x0068,
1411     SPI_SETWHEELSCROLLLINES       = 0x0069,
1412     SPI_GETMENUSHOWDELAY          = 0x006A,
1413     SPI_SETMENUSHOWDELAY          = 0x006B,
1414     SPI_GETSHOWIMEUI              = 0x006E,
1415     SPI_SETSHOWIMEUI              = 0x006F,
1416     SPI_GETMOUSESPEED             = 0x0070,
1417     SPI_SETMOUSESPEED             = 0x0071,
1418     SPI_GETSCREENSAVERRUNNING     = 0x0072,
1419     SPI_GETDESKWALLPAPER          = 0x0073,
1420     SPI_GETACTIVEWINDOWTRACKING   = 0x1000,
1421     SPI_SETACTIVEWINDOWTRACKING   = 0x1001,
1422     SPI_GETMENUANIMATION          = 0x1002,
1423     SPI_SETMENUANIMATION          = 0x1003,
1424     SPI_GETCOMBOBOXANIMATION      = 0x1004,
1425     SPI_SETCOMBOBOXANIMATION      = 0x1005,
1426     SPI_GETLISTBOXSMOOTHSCROLLING = 0x1006,
1427     SPI_SETLISTBOXSMOOTHSCROLLING = 0x1007,
1428     SPI_GETGRADIENTCAPTIONS       = 0x1008,
1429     SPI_SETGRADIENTCAPTIONS       = 0x1009,
1430     SPI_GETKEYBOARDCUES           = 0x100A,
1431     SPI_GETMENUUNDERLINES         = SPI_GETKEYBOARDCUES,
1432     SPI_SETKEYBOARDCUES           = 0x100B,
1433     SPI_SETMENUUNDERLINES         = SPI_SETKEYBOARDCUES,
1434     SPI_GETACTIVEWNDTRKZORDER     = 0x100C,
1435     SPI_SETACTIVEWNDTRKZORDER     = 0x100D,
1436     SPI_GETHOTTRACKING            = 0x100E,
1437     SPI_SETHOTTRACKING            = 0x100F,
1438     SPI_GETMENUFADE               = 0x1012,
1439     SPI_SETMENUFADE               = 0x1013,
1440     SPI_GETSELECTIONFADE          = 0x1014,
1441     SPI_SETSELECTIONFADE          = 0x1015,
1442     SPI_GETTOOLTIPANIMATION       = 0x1016,
1443     SPI_SETTOOLTIPANIMATION       = 0x1017,
1444     SPI_GETTOOLTIPFADE            = 0x1018,
1445     SPI_SETTOOLTIPFADE            = 0x1019,
1446     SPI_GETCURSORSHADOW           = 0x101A,
1447     SPI_SETCURSORSHADOW           = 0x101B,
1448     SPI_GETBLOCKSENDINPUTRESETS   = 0x1026,
1449     SPI_SETBLOCKSENDINPUTRESETS   = 0x1027,
1450     SPI_GETUIEFFECTS              = 0x103E,
1451     SPI_SETUIEFFECTS              = 0x103F,
1452     SPI_GETFOREGROUNDLOCKTIMEOUT  = 0x2000,
1453     SPI_SETFOREGROUNDLOCKTIMEOUT  = 0x2001,
1454     SPI_GETACTIVEWNDTRKTIMEOUT    = 0x2002,
1455     SPI_SETACTIVEWNDTRKTIMEOUT    = 0x2003,
1456     SPI_GETFOREGROUNDFLASHCOUNT   = 0x2004,
1457     SPI_SETFOREGROUNDFLASHCOUNT   = 0x2005,
1458     SPI_GETCARETWIDTH             = 0x2006,
1459     SPI_SETCARETWIDTH             = 0x2007
1460 }
1461 
1462 enum {
1463     SPIF_UPDATEINIFILE    = 1,
1464     SPIF_SENDWININICHANGE = 2,
1465     SPIF_SENDCHANGE       = SPIF_SENDWININICHANGE
1466 }
1467 
1468 // [Redefined] ATF_ONOFFFEEDBACK = 2
1469 // [Redefined] ATF_TIMEOUTON = 1
1470 enum WM_APP = 32768;
1471 enum WM_ACTIVATE = 6;
1472 enum WM_ACTIVATEAPP = 28;
1473 enum WM_AFXFIRST = 864;
1474 enum WM_AFXLAST = 895;
1475 enum WM_ASKCBFORMATNAME = 780;
1476 enum WM_CANCELJOURNAL = 75;
1477 enum WM_CANCELMODE = 31;
1478 enum WM_CAPTURECHANGED = 533;
1479 enum WM_CHANGECBCHAIN = 781;
1480 enum WM_CHAR = 258;
1481 enum WM_CHARTOITEM = 47;
1482 enum WM_CHILDACTIVATE = 34;
1483 enum WM_CLEAR = 771;
1484 enum WM_CLOSE = 16;
1485 enum WM_COMMAND = 273;
1486 enum WM_COMMNOTIFY = 68; // obsolete
1487 enum WM_COMPACTING = 65;
1488 enum WM_COMPAREITEM = 57;
1489 enum WM_CONTEXTMENU = 123;
1490 enum WM_COPY = 769;
1491 enum WM_COPYDATA = 74;
1492 enum WM_CREATE = 1;
1493 enum WM_CTLCOLORBTN = 309;
1494 enum WM_CTLCOLORDLG = 310;
1495 enum WM_CTLCOLOREDIT = 307;
1496 enum WM_CTLCOLORLISTBOX = 308;
1497 enum WM_CTLCOLORMSGBOX = 306;
1498 enum WM_CTLCOLORSCROLLBAR = 311;
1499 enum WM_CTLCOLORSTATIC = 312;
1500 enum WM_CUT = 768;
1501 enum WM_DEADCHAR = 259;
1502 enum WM_DELETEITEM = 45;
1503 enum WM_DESTROY = 2;
1504 enum WM_DESTROYCLIPBOARD = 775;
1505 enum WM_DEVICECHANGE = 537;
1506 enum WM_DEVMODECHANGE = 27;
1507 enum WM_DISPLAYCHANGE = 126;
1508 enum WM_DRAWCLIPBOARD = 776;
1509 enum WM_DRAWITEM = 43;
1510 enum WM_DROPFILES = 563;
1511 enum WM_ENABLE = 10;
1512 enum WM_ENDSESSION = 22;
1513 enum WM_ENTERIDLE = 289;
1514 enum WM_ENTERMENULOOP = 529;
1515 enum WM_ENTERSIZEMOVE = 561;
1516 enum WM_ERASEBKGND = 20;
1517 enum WM_EXITMENULOOP = 530;
1518 enum WM_EXITSIZEMOVE = 562;
1519 enum WM_FONTCHANGE = 29;
1520 enum WM_GETDLGCODE = 135;
1521 enum WM_GETFONT = 49;
1522 enum WM_GETHOTKEY = 51;
1523 enum WM_GETICON = 127;
1524 enum WM_GETMINMAXINFO = 36;
1525 enum WM_GETTEXT = 13;
1526 enum WM_GETTEXTLENGTH = 14;
1527 enum WM_HANDHELDFIRST = 856;
1528 enum WM_HANDHELDLAST = 863;
1529 enum WM_HELP = 83;
1530 enum WM_HOTKEY = 786;
1531 enum WM_HSCROLL = 276;
1532 enum WM_HSCROLLCLIPBOARD = 782;
1533 enum WM_ICONERASEBKGND = 39;
1534 enum WM_INITDIALOG = 272;
1535 enum WM_INITMENU = 278;
1536 enum WM_INITMENUPOPUP = 279;
1537 enum WM_INPUTLANGCHANGE = 81;
1538 enum WM_INPUTLANGCHANGEREQUEST = 80;
1539 enum WM_KEYDOWN = 256;
1540 enum WM_KEYUP = 257;
1541 enum WM_KILLFOCUS = 8;
1542 enum WM_MDIACTIVATE = 546;
1543 enum WM_MDICASCADE = 551;
1544 enum WM_MDICREATE = 544;
1545 enum WM_MDIDESTROY = 545;
1546 enum WM_MDIGETACTIVE = 553;
1547 enum WM_MDIICONARRANGE = 552;
1548 enum WM_MDIMAXIMIZE = 549;
1549 enum WM_MDINEXT = 548;
1550 enum WM_MDIREFRESHMENU = 564;
1551 enum WM_MDIRESTORE = 547;
1552 enum WM_MDISETMENU = 560;
1553 enum WM_MDITILE = 550;
1554 enum WM_MEASUREITEM = 44;
1555 enum WM_UNINITMENUPOPUP = 0x0125;
1556 enum WM_MENURBUTTONUP = 290;
1557 enum WM_MENUCOMMAND = 0x0126;
1558 enum WM_MENUGETOBJECT = 0x0124;
1559 enum WM_MENUDRAG = 0x0123;
1560 
1561 enum WM_CHANGEUISTATE = 0x0127;
1562 enum WM_UPDATEUISTATE = 0x0128;
1563 enum WM_QUERYUISTATE  = 0x0129;
1564 
1565 // LOWORD(wParam) values in WM_*UISTATE*
1566 enum {
1567     UIS_SET          =  1,
1568     UIS_CLEAR        =  2,
1569     UIS_INITIALIZE   =  3
1570 }
1571 
1572 // HIWORD(wParam) values in WM_*UISTATE*
1573 enum {
1574     UISF_HIDEFOCUS   =  0x1,
1575     UISF_HIDEACCEL   =  0x2
1576 }
1577 
1578 
1579 static if (_WIN32_WINNT >= 0x501) {
1580 
1581     // HIWORD(wParam) values in WM_*UISTATE*
1582     enum {
1583         UISF_ACTIVE      =  0x4
1584     }
1585 
1586 }
1587 
1588 enum WM_MENUCHAR = 288;
1589 enum WM_MENUSELECT = 287;
1590 enum WM_MOVE = 3;
1591 enum WM_MOVING = 534;
1592 enum WM_NCACTIVATE = 134;
1593 enum WM_NCCALCSIZE = 131;
1594 enum WM_NCCREATE = 129;
1595 enum WM_NCDESTROY = 130;
1596 enum WM_NCHITTEST = 132;
1597 enum WM_NCLBUTTONDBLCLK = 163;
1598 enum WM_NCLBUTTONDOWN = 161;
1599 enum WM_NCLBUTTONUP = 162;
1600 enum WM_NCMBUTTONDBLCLK = 169;
1601 enum WM_NCMBUTTONDOWN = 167;
1602 enum WM_NCMBUTTONUP = 168;
1603 enum WM_NCXBUTTONDOWN = 171;
1604 enum WM_NCXBUTTONUP = 172;
1605 enum WM_NCXBUTTONDBLCLK = 173;
1606 enum WM_NCMOUSEHOVER = 0x02A0;
1607 enum WM_NCMOUSELEAVE = 0x02A2;
1608 enum WM_NCMOUSEMOVE = 160;
1609 enum WM_NCPAINT = 133;
1610 enum WM_NCRBUTTONDBLCLK = 166;
1611 enum WM_NCRBUTTONDOWN = 164;
1612 enum WM_NCRBUTTONUP = 165;
1613 enum WM_NEXTDLGCTL = 40;
1614 enum WM_NEXTMENU = 531;
1615 enum WM_NOTIFY = 78;
1616 enum WM_NOTIFYFORMAT = 85;
1617 enum WM_NULL = 0;
1618 enum WM_PAINT = 15;
1619 enum WM_PAINTCLIPBOARD = 777;
1620 enum WM_PAINTICON = 38;
1621 enum WM_PALETTECHANGED = 785;
1622 enum WM_PALETTEISCHANGING = 784;
1623 enum WM_PARENTNOTIFY = 528;
1624 enum WM_PASTE = 770;
1625 enum WM_PENWINFIRST = 896;
1626 enum WM_PENWINLAST = 911;
1627 enum WM_POWER = 72;
1628 enum WM_POWERBROADCAST = 536;
1629 enum WM_PRINT = 791;
1630 enum WM_PRINTCLIENT = 792;
1631 enum WM_APPCOMMAND = 0x0319;
1632 enum WM_QUERYDRAGICON = 55;
1633 enum WM_QUERYENDSESSION = 17;
1634 enum WM_QUERYNEWPALETTE = 783;
1635 enum WM_QUERYOPEN = 19;
1636 enum WM_QUEUESYNC = 35;
1637 enum WM_QUIT = 18;
1638 enum WM_RENDERALLFORMATS = 774;
1639 enum WM_RENDERFORMAT = 773;
1640 enum WM_SETCURSOR = 32;
1641 enum WM_SETFOCUS = 7;
1642 enum WM_SETFONT = 48;
1643 enum WM_SETHOTKEY = 50;
1644 enum WM_SETICON = 128;
1645 enum WM_SETREDRAW = 11;
1646 enum WM_SETTEXT = 12;
1647 enum WM_SETTINGCHANGE = 26;
1648 enum WM_SHOWWINDOW = 24;
1649 enum WM_SIZE = 5;
1650 enum WM_SIZECLIPBOARD = 779;
1651 enum WM_SIZING = 532;
1652 enum WM_SPOOLERSTATUS = 42;
1653 enum WM_STYLECHANGED = 125;
1654 enum WM_STYLECHANGING = 124;
1655 enum WM_SYSCHAR = 262;
1656 enum WM_SYSCOLORCHANGE = 21;
1657 enum WM_SYSCOMMAND = 274;
1658 enum WM_SYSDEADCHAR = 263;
1659 enum WM_SYSKEYDOWN = 260;
1660 enum WM_SYSKEYUP = 261;
1661 static if (_WIN32_WINNT >= 0x501) {
1662     enum WM_TABLET_FIRST = 704;
1663     enum WM_TABLET_LAST = 735;
1664 }
1665 enum WM_TCARD = 82;
1666 enum WM_THEMECHANGED = 794;
1667 enum WM_TIMECHANGE = 30;
1668 enum WM_TIMER = 275;
1669 enum WM_UNDO = 772;
1670 enum WM_USER = 1024;
1671 enum WM_USERCHANGED = 84;
1672 enum WM_VKEYTOITEM = 46;
1673 enum WM_VSCROLL = 277;
1674 enum WM_VSCROLLCLIPBOARD = 778;
1675 enum WM_WINDOWPOSCHANGED = 71;
1676 enum WM_WINDOWPOSCHANGING = 70;
1677 enum WM_WININICHANGE = 26;
1678 static if (_WIN32_WINNT >= 0x501) {
1679 enum WM_WTSSESSION_CHANGE = 689;
1680 }
1681 enum WM_INPUT = 255;
1682 enum WM_KEYFIRST = 256;
1683 static if (_WIN32_WINNT >= 0x501) {
1684 enum WM_UNICHAR = 265;
1685 enum WM_KEYLAST = 265;
1686 enum UNICODE_NOCHAR = 0xFFFF;
1687 } else {
1688 enum WM_KEYLAST = 264;
1689 }
1690 enum WM_SYNCPAINT = 136;
1691 enum WM_MOUSEACTIVATE = 33;
1692 enum WM_MOUSEMOVE = 512;
1693 enum WM_LBUTTONDOWN = 513;
1694 enum WM_LBUTTONUP = 514;
1695 enum WM_LBUTTONDBLCLK = 515;
1696 enum WM_RBUTTONDOWN = 516;
1697 enum WM_RBUTTONUP = 517;
1698 enum WM_RBUTTONDBLCLK = 518;
1699 enum WM_MBUTTONDOWN = 519;
1700 enum WM_MBUTTONUP = 520;
1701 enum WM_MBUTTONDBLCLK = 521;
1702 enum WM_MOUSEWHEEL = 522;
1703 enum WM_MOUSEFIRST = 512;
1704 static if (_WIN32_WINNT >= 0x501) {
1705     enum WM_XBUTTONDOWN = 523;
1706     enum WM_XBUTTONUP = 524;
1707     enum WM_XBUTTONDBLCLK = 525;
1708 }
1709 static if (_WIN32_WINNT >= 0x600) { // FIXME: where did this come from? what version is it?
1710     enum WM_MOUSEHWHEEL = 526;
1711 }
1712 
1713 static if (_WIN32_WINNT >= 0x600) {
1714     enum WM_MOUSELAST = WM_MOUSEHWHEEL;
1715 } else static if (_WIN32_WINNT >= 0x501) {
1716     enum WM_MOUSELAST = WM_XBUTTONDBLCLK;
1717 } else {
1718     enum WM_MOUSELAST = WM_MOUSEWHEEL;
1719 }
1720 
1721 enum WM_MOUSEHOVER = 0x2A1;
1722 enum WM_MOUSELEAVE = 0x2A3;
1723 
1724 enum WHEEL_DELTA = 120;
1725 
1726 SHORT GET_WHEEL_DELTA_WPARAM()(WPARAM wparam) {
1727     return cast(SHORT) HIWORD(wparam);
1728 }
1729 
1730 enum WHEEL_PAGESCROLL = uint.max;
1731 
1732 enum BM_CLICK = 245;
1733 enum BM_GETCHECK = 240;
1734 enum BM_GETIMAGE = 246;
1735 enum BM_GETSTATE = 242;
1736 enum BM_SETCHECK = 241;
1737 enum BM_SETIMAGE = 247;
1738 static if (_WIN32_WINNT >= 0x600) {
1739     enum BM_SETDONTCLICK = 248;
1740 }
1741 enum BM_SETSTATE = 243;
1742 enum BM_SETSTYLE = 244;
1743 enum BN_CLICKED = 0;
1744 enum BN_DBLCLK = 5;
1745 enum BN_DISABLE = 4;
1746 enum BN_DOUBLECLICKED = 5;
1747 enum BN_HILITE = 2;
1748 enum BN_KILLFOCUS = 7;
1749 enum BN_PAINT = 1;
1750 enum BN_PUSHED = 2;
1751 enum BN_SETFOCUS = 6;
1752 enum BN_UNHILITE = 3;
1753 enum BN_UNPUSHED = 3;
1754 enum CB_ADDSTRING = 323;
1755 enum CB_DELETESTRING = 324;
1756 enum CB_DIR = 325;
1757 enum CB_FINDSTRING = 332;
1758 enum CB_FINDSTRINGEXACT = 344;
1759 enum CB_GETCOUNT = 326;
1760 enum CB_GETCURSEL = 327;
1761 enum CB_GETDROPPEDCONTROLRECT = 338;
1762 enum CB_GETDROPPEDSTATE = 343;
1763 enum CB_GETDROPPEDWIDTH = 351;
1764 enum CB_GETEDITSEL = 320;
1765 enum CB_GETEXTENDEDUI = 342;
1766 enum CB_GETHORIZONTALEXTENT = 349;
1767 enum CB_GETITEMDATA = 336;
1768 enum CB_GETITEMHEIGHT = 340;
1769 enum CB_GETLBTEXT = 328;
1770 enum CB_GETLBTEXTLEN = 329;
1771 enum CB_GETLOCALE = 346;
1772 enum CB_GETTOPINDEX = 347;
1773 enum CB_INITSTORAGE = 353;
1774 enum CB_INSERTSTRING = 330;
1775 enum CB_LIMITTEXT = 321;
1776 enum CB_RESETCONTENT = 331;
1777 enum CB_SELECTSTRING = 333;
1778 enum CB_SETCURSEL = 334;
1779 enum CB_SETDROPPEDWIDTH = 352;
1780 enum CB_SETEDITSEL = 322;
1781 enum CB_SETEXTENDEDUI = 341;
1782 enum CB_SETHORIZONTALEXTENT = 350;
1783 enum CB_SETITEMDATA = 337;
1784 enum CB_SETITEMHEIGHT = 339;
1785 enum CB_SETLOCALE = 345;
1786 enum CB_SETTOPINDEX = 348;
1787 enum CB_SHOWDROPDOWN = 335;
1788 
1789 static if (_WIN32_WINNT >= 0x501) {
1790 enum CB_GETCOMBOBOXINFO = 356;
1791 }
1792 
1793 enum CBN_CLOSEUP = 8;
1794 enum CBN_DBLCLK = 2;
1795 enum CBN_DROPDOWN = 7;
1796 enum CBN_EDITCHANGE = 5;
1797 enum CBN_EDITUPDATE = 6;
1798 enum CBN_ERRSPACE = (-1);
1799 enum CBN_KILLFOCUS = 4;
1800 enum CBN_SELCHANGE = 1;
1801 enum CBN_SELENDCANCEL = 10;
1802 enum CBN_SELENDOK = 9;
1803 enum CBN_SETFOCUS = 3;
1804 
1805 enum EM_CANUNDO = 198;
1806 enum EM_CHARFROMPOS = 215;
1807 enum EM_EMPTYUNDOBUFFER = 205;
1808 enum EM_FMTLINES = 200;
1809 enum EM_GETFIRSTVISIBLELINE = 206;
1810 enum EM_GETHANDLE = 189;
1811 enum EM_GETLIMITTEXT = 213;
1812 enum EM_GETLINE = 196;
1813 enum EM_GETLINECOUNT = 186;
1814 enum EM_GETMARGINS = 212;
1815 enum EM_GETMODIFY = 184;
1816 enum EM_GETPASSWORDCHAR = 210;
1817 enum EM_GETRECT = 178;
1818 enum EM_GETSEL = 176;
1819 enum EM_GETTHUMB = 190;
1820 enum EM_GETWORDBREAKPROC = 209;
1821 enum EM_LIMITTEXT = 197;
1822 enum EM_LINEFROMCHAR = 201;
1823 enum EM_LINEINDEX = 187;
1824 enum EM_LINELENGTH = 193;
1825 enum EM_LINESCROLL = 182;
1826 enum EM_POSFROMCHAR = 214;
1827 enum EM_REPLACESEL = 194;
1828 enum EM_SCROLL = 181;
1829 enum EM_SCROLLCARET = 183;
1830 enum EM_SETHANDLE = 188;
1831 enum EM_SETLIMITTEXT = 197;
1832 enum EM_SETMARGINS = 211;
1833 enum EM_SETMODIFY = 185;
1834 enum EM_SETPASSWORDCHAR = 204;
1835 enum EM_SETREADONLY = 207;
1836 enum EM_SETRECT = 179;
1837 enum EM_SETRECTNP = 180;
1838 enum EM_SETSEL = 177;
1839 enum EM_SETTABSTOPS = 203;
1840 enum EM_SETWORDBREAKPROC = 208;
1841 enum EM_UNDO = 199;
1842 
1843 enum EM_SETIMESTATUS = 216;
1844 enum EM_GETIMESTATUS = 217;
1845 
1846 enum EN_CHANGE = 768;
1847 enum EN_ERRSPACE = 1280;
1848 enum EN_HSCROLL = 1537;
1849 enum EN_KILLFOCUS = 512;
1850 enum EN_MAXTEXT = 1281;
1851 enum EN_SETFOCUS = 256;
1852 enum EN_UPDATE = 1024;
1853 enum EN_VSCROLL = 1538;
1854 
1855 enum LB_ADDFILE = 406;
1856 enum LB_ADDSTRING = 384;
1857 enum LB_DELETESTRING = 386;
1858 enum LB_DIR = 397;
1859 enum LB_FINDSTRING = 399;
1860 enum LB_FINDSTRINGEXACT = 418;
1861 enum LB_GETANCHORINDEX = 413;
1862 enum LB_GETCARETINDEX = 415;
1863 enum LB_GETCOUNT = 395;
1864 enum LB_GETCURSEL = 392;
1865 enum LB_GETHORIZONTALEXTENT = 403;
1866 enum LB_GETITEMDATA = 409;
1867 enum LB_GETITEMHEIGHT = 417;
1868 enum LB_GETITEMRECT = 408;
1869 enum LB_GETLOCALE = 422;
1870 enum LB_GETSEL = 391;
1871 enum LB_GETSELCOUNT = 400;
1872 enum LB_GETSELITEMS = 401;
1873 enum LB_GETTEXT = 393;
1874 enum LB_GETTEXTLEN = 394;
1875 enum LB_GETTOPINDEX = 398;
1876 enum LB_INITSTORAGE = 424;
1877 enum LB_INSERTSTRING = 385;
1878 enum LB_ITEMFROMPOINT = 425;
1879 enum LB_RESETCONTENT = 388;
1880 enum LB_SELECTSTRING = 396;
1881 enum LB_SELITEMRANGE = 411;
1882 enum LB_SELITEMRANGEEX = 387;
1883 enum LB_SETANCHORINDEX = 412;
1884 enum LB_SETCARETINDEX = 414;
1885 enum LB_SETCOLUMNWIDTH = 405;
1886 enum LB_SETCOUNT = 423;
1887 enum LB_SETCURSEL = 390;
1888 enum LB_SETHORIZONTALEXTENT = 404;
1889 enum LB_SETITEMDATA = 410;
1890 enum LB_SETITEMHEIGHT = 416;
1891 enum LB_SETLOCALE = 421;
1892 enum LB_SETSEL = 389;
1893 enum LB_SETTABSTOPS = 402;
1894 enum LB_SETTOPINDEX = 407;
1895 static if (_WIN32_WINNT >= 0x501) {
1896 enum LB_GETLISTBOXINFO = 434;
1897 }
1898 
1899 enum LBN_DBLCLK = 2;
1900 enum LBN_ERRSPACE = -2;
1901 enum LBN_KILLFOCUS = 5;
1902 enum LBN_SELCANCEL = 3;
1903 enum LBN_SELCHANGE = 1;
1904 enum LBN_SETFOCUS = 4;
1905 
1906 enum SBM_ENABLE_ARROWS = 228;
1907 enum SBM_GETPOS = 225;
1908 enum SBM_GETRANGE = 227;
1909 enum SBM_GETSCROLLINFO = 234;
1910 enum SBM_SETPOS = 224;
1911 enum SBM_SETRANGE = 226;
1912 enum SBM_SETRANGEREDRAW = 230;
1913 enum SBM_SETSCROLLINFO = 233;
1914 static if (_WIN32_WINNT >= 0x501) {
1915 enum SBM_GETSCROLLBARINFO = 235;
1916 }
1917 
1918 enum STM_GETICON = 369;
1919 enum STM_GETIMAGE = 371;
1920 enum STM_SETICON = 368;
1921 enum STM_SETIMAGE = 370;
1922 enum STN_CLICKED = 0;
1923 enum STN_DBLCLK = 1;
1924 enum STN_DISABLE = 3;
1925 enum STN_ENABLE = 2;
1926 enum STM_MSGMAX = 372;
1927 
1928 enum DM_GETDEFID   = WM_USER;
1929 enum DM_SETDEFID   = WM_USER+1;
1930 enum DM_REPOSITION = WM_USER+2;
1931 
1932 enum PSM_PAGEINFO  = WM_USER+100;
1933 enum PSM_SHEETINFO = WM_USER+101;
1934 
1935 enum PSI_SETACTIVE = 1;
1936 enum PSI_KILLACTIVE = 2;
1937 enum PSI_APPLY = 3;
1938 enum PSI_RESET = 4;
1939 enum PSI_HASHELP = 5;
1940 enum PSI_HELP = 6;
1941 enum PSI_CHANGED = 1;
1942 enum PSI_GUISTART = 2;
1943 enum PSI_REBOOT = 3;
1944 enum PSI_GETSIBLINGS = 4;
1945 
1946 enum DCX_WINDOW = 1;
1947 enum DCX_CACHE = 2;
1948 enum DCX_PARENTCLIP = 32;
1949 enum DCX_CLIPSIBLINGS = 16;
1950 enum DCX_CLIPCHILDREN = 8;
1951 enum DCX_NORESETATTRS = 4;
1952 enum DCX_INTERSECTUPDATE = 0x200;
1953 enum DCX_LOCKWINDOWUPDATE = 0x400;
1954 enum DCX_EXCLUDERGN = 64;
1955 enum DCX_INTERSECTRGN = 128;
1956 enum DCX_EXCLUDEUPDATE = 256;
1957 enum DCX_VALIDATE = 0x200000;
1958 
1959 enum GMDI_GOINTOPOPUPS = 2;
1960 enum GMDI_USEDISABLED = 1;
1961 enum FKF_AVAILABLE = 2;
1962 enum FKF_CLICKON = 64;
1963 enum FKF_FILTERKEYSON = 1;
1964 enum FKF_HOTKEYACTIVE = 4;
1965 enum FKF_HOTKEYSOUND = 16;
1966 enum FKF_CONFIRMHOTKEY = 8;
1967 enum FKF_INDICATOR = 32;
1968 enum HCF_HIGHCONTRASTON = 1;
1969 enum HCF_AVAILABLE = 2;
1970 enum HCF_HOTKEYACTIVE = 4;
1971 enum HCF_CONFIRMHOTKEY = 8;
1972 enum HCF_HOTKEYSOUND = 16;
1973 enum HCF_INDICATOR = 32;
1974 enum HCF_HOTKEYAVAILABLE = 64;
1975 enum MKF_AVAILABLE = 2;
1976 enum MKF_CONFIRMHOTKEY = 8;
1977 enum MKF_HOTKEYACTIVE = 4;
1978 enum MKF_HOTKEYSOUND = 16;
1979 enum MKF_INDICATOR = 32;
1980 enum MKF_MOUSEKEYSON = 1;
1981 enum MKF_MODIFIERS = 64;
1982 enum MKF_REPLACENUMBERS = 128;
1983 enum SERKF_ACTIVE = 8;  // May be obsolete. Not in recent MS docs.
1984 enum SERKF_AVAILABLE = 2;
1985 enum SERKF_INDICATOR = 4;
1986 enum SERKF_SERIALKEYSON = 1;
1987 enum SSF_AVAILABLE = 2;
1988 enum SSF_SOUNDSENTRYON = 1;
1989 enum SSTF_BORDER = 2;
1990 enum SSTF_CHARS = 1;
1991 enum SSTF_DISPLAY = 3;
1992 enum SSTF_NONE = 0;
1993 enum SSGF_DISPLAY = 3;
1994 enum SSGF_NONE = 0;
1995 enum SSWF_CUSTOM = 4;
1996 enum SSWF_DISPLAY = 3;
1997 enum SSWF_NONE = 0;
1998 enum SSWF_TITLE = 1;
1999 enum SSWF_WINDOW = 2;
2000 enum SKF_AUDIBLEFEEDBACK = 64;
2001 enum SKF_AVAILABLE = 2;
2002 enum SKF_CONFIRMHOTKEY = 8;
2003 enum SKF_HOTKEYACTIVE = 4;
2004 enum SKF_HOTKEYSOUND = 16;
2005 enum SKF_INDICATOR = 32;
2006 enum SKF_STICKYKEYSON = 1;
2007 enum SKF_TRISTATE = 128;
2008 enum SKF_TWOKEYSOFF = 256;
2009 enum TKF_AVAILABLE = 2;
2010 enum TKF_CONFIRMHOTKEY = 8;
2011 enum TKF_HOTKEYACTIVE = 4;
2012 enum TKF_HOTKEYSOUND = 16;
2013 enum TKF_TOGGLEKEYSON = 1;
2014 enum MDITILE_SKIPDISABLED = 2;
2015 enum MDITILE_HORIZONTAL = 1;
2016 enum MDITILE_VERTICAL = 0;
2017 
2018 enum {
2019     VK_LBUTTON = 0x01,
2020     VK_RBUTTON = 0x02,
2021     VK_CANCEL = 0x03,
2022     VK_MBUTTON = 0x04,
2023     VK_XBUTTON1 = 0x05,
2024     VK_XBUTTON2 = 0x06,
2025     VK_BACK = 0x08,
2026     VK_TAB = 0x09,
2027     VK_CLEAR = 0x0C,
2028     VK_RETURN = 0x0D,
2029     VK_SHIFT = 0x10,
2030     VK_CONTROL = 0x11,
2031     VK_MENU = 0x12,
2032     VK_PAUSE = 0x13,
2033     VK_CAPITAL = 0x14,
2034     VK_KANA = 0x15,
2035     VK_HANGEUL = 0x15,
2036     VK_HANGUL = 0x15,
2037     VK_JUNJA = 0x17,
2038     VK_FINAL = 0x18,
2039     VK_HANJA = 0x19,
2040     VK_KANJI = 0x19,
2041     VK_ESCAPE = 0x1B,
2042     VK_CONVERT = 0x1C,
2043     VK_NONCONVERT = 0x1D,
2044     VK_ACCEPT = 0x1E,
2045     VK_MODECHANGE = 0x1F,
2046     VK_SPACE = 0x20,
2047     VK_PRIOR = 0x21,
2048     VK_NEXT = 0x22,
2049     VK_END = 0x23,
2050     VK_HOME = 0x24,
2051     VK_LEFT = 0x25,
2052     VK_UP = 0x26,
2053     VK_RIGHT = 0x27,
2054     VK_DOWN = 0x28,
2055     VK_SELECT = 0x29,
2056     VK_PRINT = 0x2A,
2057     VK_EXECUTE = 0x2B,
2058     VK_SNAPSHOT = 0x2C,
2059     VK_INSERT = 0x2D,
2060     VK_DELETE = 0x2E,
2061     VK_HELP = 0x2F,
2062     VK_LWIN = 0x5B,
2063     VK_RWIN = 0x5C,
2064     VK_APPS = 0x5D,
2065     VK_SLEEP = 0x5F,
2066     VK_NUMPAD0 = 0x60,
2067     VK_NUMPAD1 = 0x61,
2068     VK_NUMPAD2 = 0x62,
2069     VK_NUMPAD3 = 0x63,
2070     VK_NUMPAD4 = 0x64,
2071     VK_NUMPAD5 = 0x65,
2072     VK_NUMPAD6 = 0x66,
2073     VK_NUMPAD7 = 0x67,
2074     VK_NUMPAD8 = 0x68,
2075     VK_NUMPAD9 = 0x69,
2076     VK_MULTIPLY = 0x6A,
2077     VK_ADD = 0x6B,
2078     VK_SEPARATOR = 0x6C,
2079     VK_SUBTRACT = 0x6D,
2080     VK_DECIMAL = 0x6E,
2081     VK_DIVIDE = 0x6F,
2082     VK_F1 = 0x70,
2083     VK_F2 = 0x71,
2084     VK_F3 = 0x72,
2085     VK_F4 = 0x73,
2086     VK_F5 = 0x74,
2087     VK_F6 = 0x75,
2088     VK_F7 = 0x76,
2089     VK_F8 = 0x77,
2090     VK_F9 = 0x78,
2091     VK_F10 = 0x79,
2092     VK_F11 = 0x7A,
2093     VK_F12 = 0x7B,
2094     VK_F13 = 0x7C,
2095     VK_F14 = 0x7D,
2096     VK_F15 = 0x7E,
2097     VK_F16 = 0x7F,
2098     VK_F17 = 0x80,
2099     VK_F18 = 0x81,
2100     VK_F19 = 0x82,
2101     VK_F20 = 0x83,
2102     VK_F21 = 0x84,
2103     VK_F22 = 0x85,
2104     VK_F23 = 0x86,
2105     VK_F24 = 0x87,
2106     VK_NUMLOCK = 0x90,
2107     VK_SCROLL = 0x91,
2108     VK_LSHIFT = 0xA0,
2109     VK_RSHIFT = 0xA1,
2110     VK_LCONTROL = 0xA2,
2111     VK_RCONTROL = 0xA3,
2112     VK_LMENU = 0xA4,
2113     VK_RMENU = 0xA5,
2114     VK_BROWSER_BACK = 0xA6,
2115     VK_BROWSER_FORWARD = 0xA7,
2116     VK_BROWSER_REFRESH = 0xA8,
2117     VK_BROWSER_STOP = 0xA9,
2118     VK_BROWSER_SEARCH = 0xAA,
2119     VK_BROWSER_FAVORITES = 0xAB,
2120     VK_BROWSER_HOME = 0xAC,
2121     VK_VOLUME_MUTE = 0xAD,
2122     VK_VOLUME_DOWN = 0xAE,
2123     VK_VOLUME_UP = 0xAF,
2124     VK_MEDIA_NEXT_TRACK = 0xB0,
2125     VK_MEDIA_PREV_TRACK = 0xB1,
2126     VK_MEDIA_STOP = 0xB2,
2127     VK_MEDIA_PLAY_PAUSE = 0xB3,
2128     VK_LAUNCH_MAIL = 0xB4,
2129     VK_LAUNCH_MEDIA_SELECT = 0xB5,
2130     VK_LAUNCH_APP1 = 0xB6,
2131     VK_LAUNCH_APP2 = 0xB7,
2132     VK_OEM_1 = 0xBA,
2133     VK_OEM_PLUS = 0xBB,
2134     VK_OEM_COMMA = 0xBC,
2135     VK_OEM_MINUS = 0xBD,
2136     VK_OEM_PERIOD = 0xBE,
2137     VK_OEM_2 = 0xBF,
2138     VK_OEM_3 = 0xC0,
2139     VK_OEM_4 = 0xDB,
2140     VK_OEM_5 = 0xDC,
2141     VK_OEM_6 = 0xDD,
2142     VK_OEM_7 = 0xDE,
2143     VK_OEM_8 = 0xDF,
2144     VK_OEM_102 = 0xE2,
2145     VK_PROCESSKEY = 0xE5,
2146     VK_PACKET = 0xE7,
2147     VK_ATTN = 0xF6,
2148     VK_CRSEL = 0xF7,
2149     VK_EXSEL = 0xF8,
2150     VK_EREOF = 0xF9,
2151     VK_PLAY = 0xFA,
2152     VK_ZOOM = 0xFB,
2153     VK_NONAME = 0xFC,
2154     VK_PA1 = 0xFD,
2155     VK_OEM_CLEAR = 0xFE,
2156 }
2157 
2158 enum TME_HOVER = 1;
2159 enum TME_LEAVE = 2;
2160 enum TME_QUERY = 0x40000000;
2161 enum TME_CANCEL = 0x80000000;
2162 
2163 enum HOVER_DEFAULT = 0xFFFFFFFF;
2164 
2165 enum MK_LBUTTON = 1;
2166 enum MK_RBUTTON = 2;
2167 enum MK_SHIFT = 4;
2168 enum MK_CONTROL = 8;
2169 enum MK_MBUTTON = 16;
2170 enum MK_XBUTTON1 = 32;
2171 enum MK_XBUTTON2 = 64;
2172 
2173 enum {
2174     TPM_RECURSE      = 0x0001,
2175     TPM_LEFTBUTTON   = 0,
2176     TPM_RIGHTBUTTON  = 0x0002,
2177     TPM_LEFTALIGN    = 0,
2178     TPM_CENTERALIGN  = 0x0004,
2179     TPM_RIGHTALIGN   = 0x0008,
2180     TPM_TOPALIGN     = 0,
2181     TPM_VCENTERALIGN = 0x0010,
2182     TPM_BOTTOMALIGN  = 0x0020,
2183     TPM_HORIZONTAL   = 0,
2184     TPM_VERTICAL     = 0x0040,
2185     TPM_NONOTIFY     = 0x0080,
2186     TPM_RETURNCMD    = 0x0100
2187 }
2188 
2189 enum HELP_COMMAND = 0x102;
2190 enum HELP_CONTENTS = 3;
2191 enum HELP_CONTEXT = 1;
2192 enum HELP_CONTEXTPOPUP = 8;
2193 enum HELP_FORCEFILE = 9;
2194 enum HELP_HELPONHELP = 4;
2195 enum HELP_INDEX = 3;
2196 enum HELP_KEY = 0x101;
2197 enum HELP_MULTIKEY = 0x201;
2198 enum HELP_PARTIALKEY = 0x105;
2199 enum HELP_QUIT = 2;
2200 enum HELP_SETCONTENTS = 5;
2201 enum HELP_SETINDEX = 5;
2202 enum HELP_SETWINPOS = 0x203;
2203 enum HELP_CONTEXTMENU = 0xa;
2204 enum HELP_FINDER = 0xb;
2205 enum HELP_WM_HELP = 0xc;
2206 enum HELP_TCARD = 0x8000;
2207 enum HELP_TCARD_DATA = 16;
2208 enum HELP_TCARD_OTHER_CALLER = 0x11;
2209 
2210 enum IDH_NO_HELP = 28440;
2211 enum IDH_MISSING_CONTEXT = 28441;
2212 enum IDH_GENERIC_HELP_BUTTON = 28442;
2213 enum IDH_OK = 28443;
2214 enum IDH_CANCEL = 28444;
2215 enum IDH_HELP = 28445;
2216 
2217 enum LB_CTLCODE = 0;
2218 enum LB_OKAY = 0;
2219 enum LB_ERR = -1;
2220 enum LB_ERRSPACE = -2;
2221 
2222 enum CB_OKAY = 0;
2223 enum CB_ERR = -1;
2224 enum CB_ERRSPACE = -2;
2225 
2226 enum HIDE_WINDOW = 0;
2227 
2228 enum SHOW_OPENWINDOW = 1;
2229 enum SHOW_ICONWINDOW = 2;
2230 enum SHOW_FULLSCREEN = 3;
2231 enum SHOW_OPENNOACTIVATE = 4;
2232 
2233 enum KF_EXTENDED = 256;
2234 enum KF_DLGMODE = 2048;
2235 enum KF_MENUMODE = 4096;
2236 enum KF_ALTDOWN = 8192;
2237 enum KF_REPEAT = 16384;
2238 enum KF_UP = 32768;
2239 
2240 enum WSF_VISIBLE = 1;
2241 
2242 enum PWR_OK = 1;
2243 enum PWR_FAIL = -1;
2244 enum PWR_SUSPENDREQUEST = 1;
2245 enum PWR_SUSPENDRESUME = 2;
2246 enum PWR_CRITICALRESUME = 3;
2247 
2248 enum NFR_ANSI = 1;
2249 enum NFR_UNICODE = 2;
2250 enum NF_QUERY = 3;
2251 enum NF_REQUERY = 4;
2252 
2253 enum MENULOOP_WINDOW = 0;
2254 enum MENULOOP_POPUP = 1;
2255 
2256 enum WMSZ_LEFT = 1;
2257 enum WMSZ_RIGHT = 2;
2258 enum WMSZ_TOP = 3;
2259 enum WMSZ_TOPLEFT = 4;
2260 enum WMSZ_TOPRIGHT = 5;
2261 enum WMSZ_BOTTOM = 6;
2262 enum WMSZ_BOTTOMLEFT = 7;
2263 enum WMSZ_BOTTOMRIGHT = 8;
2264 
2265 enum HTERROR = -2;
2266 enum HTTRANSPARENT = -1;
2267 enum HTNOWHERE = 0;
2268 enum HTCLIENT = 1;
2269 enum HTCAPTION = 2;
2270 enum HTSYSMENU = 3;
2271 enum HTGROWBOX = 4;
2272 enum HTSIZE = 4;
2273 enum HTMENU = 5;
2274 enum HTHSCROLL = 6;
2275 enum HTVSCROLL = 7;
2276 enum HTMINBUTTON = 8;
2277 enum HTMAXBUTTON = 9;
2278 enum HTREDUCE = 8;
2279 enum HTZOOM = 9;
2280 enum HTLEFT = 10;
2281 enum HTSIZEFIRST = 10;
2282 enum HTRIGHT = 11;
2283 enum HTTOP = 12;
2284 enum HTTOPLEFT = 13;
2285 enum HTTOPRIGHT = 14;
2286 enum HTBOTTOM = 15;
2287 enum HTBOTTOMLEFT = 16;
2288 enum HTBOTTOMRIGHT = 17;
2289 enum HTSIZELAST = 17;
2290 enum HTBORDER = 18;
2291 enum HTOBJECT = 19;
2292 enum HTCLOSE = 20;
2293 enum HTHELP = 21;
2294 
2295 enum MA_ACTIVATE = 1;
2296 enum MA_ACTIVATEANDEAT = 2;
2297 enum MA_NOACTIVATE = 3;
2298 enum MA_NOACTIVATEANDEAT = 4;
2299 
2300 enum SIZE_RESTORED = 0;
2301 enum SIZE_MINIMIZED = 1;
2302 enum SIZE_MAXIMIZED = 2;
2303 enum SIZE_MAXSHOW = 3;
2304 enum SIZE_MAXHIDE = 4;
2305 
2306 enum SIZENORMAL = 0;
2307 enum SIZEICONIC = 1;
2308 enum SIZEFULLSCREEN = 2;
2309 enum SIZEZOOMSHOW = 3;
2310 enum SIZEZOOMHIDE = 4;
2311 
2312 enum WVR_ALIGNTOP = 16;
2313 enum WVR_ALIGNLEFT = 32;
2314 enum WVR_ALIGNBOTTOM = 64;
2315 enum WVR_ALIGNRIGHT = 128;
2316 enum WVR_HREDRAW = 256;
2317 enum WVR_VREDRAW = 512;
2318 enum WVR_REDRAW = (WVR_HREDRAW|WVR_VREDRAW);
2319 enum WVR_VALIDRECTS = 1024;
2320 
2321 enum PRF_CHECKVISIBLE = 1;
2322 enum PRF_NONCLIENT = 2;
2323 enum PRF_CLIENT = 4;
2324 enum PRF_ERASEBKGND = 8;
2325 enum PRF_CHILDREN = 16;
2326 enum PRF_OWNED = 32;
2327 
2328 enum IDANI_OPEN = 1;
2329 enum IDANI_CLOSE = 2;
2330 enum IDANI_CAPTION = 3;
2331 
2332 enum WPF_RESTORETOMAXIMIZED = 2;
2333 enum WPF_SETMINPOSITION = 1;
2334 
2335 enum ODT_MENU = 1;
2336 enum ODT_LISTBOX = 2;
2337 enum ODT_COMBOBOX = 3;
2338 enum ODT_BUTTON = 4;
2339 enum ODT_STATIC = 5;
2340 enum ODA_DRAWENTIRE = 1;
2341 enum ODA_SELECT = 2;
2342 enum ODA_FOCUS = 4;
2343 enum ODS_SELECTED = 1;
2344 enum ODS_GRAYED = 2;
2345 enum ODS_DISABLED = 4;
2346 enum ODS_CHECKED = 8;
2347 enum ODS_FOCUS = 16;
2348 enum ODS_DEFAULT = 32;
2349 enum ODS_COMBOBOXEDIT = 4096;
2350 
2351 enum IDHOT_SNAPWINDOW = -1;
2352 enum IDHOT_SNAPDESKTOP = -2;
2353 
2354 enum DBWF_LPARAMPOINTER = 0x8000;
2355 enum DLGWINDOWEXTRA = 30;
2356 enum MNC_IGNORE = 0;
2357 enum MNC_CLOSE = 1;
2358 enum MNC_EXECUTE = 2;
2359 enum MNC_SELECT = 3;
2360 enum DOF_EXECUTABLE = 0x8001;
2361 enum DOF_DOCUMENT = 0x8002;
2362 enum DOF_DIRECTORY = 0x8003;
2363 enum DOF_MULTIPLE = 0x8004;
2364 enum DOF_PROGMAN = 1;
2365 enum DOF_SHELLDATA = 2;
2366 enum DO_DROPFILE = 0x454C4946;
2367 enum DO_PRINTFILE = 0x544E5250;
2368 
2369 enum SC_SIZE = 0xF000;
2370 enum SC_MOVE = 0xF010;
2371 enum SC_MINIMIZE = 0xF020;
2372 enum SC_ICON = 0xf020;
2373 enum SC_MAXIMIZE = 0xF030;
2374 enum SC_ZOOM = 0xF030;
2375 enum SC_NEXTWINDOW = 0xF040;
2376 enum SC_PREVWINDOW = 0xF050;
2377 enum SC_CLOSE = 0xF060;
2378 enum SC_VSCROLL = 0xF070;
2379 enum SC_HSCROLL = 0xF080;
2380 enum SC_MOUSEMENU = 0xF090;
2381 enum SC_KEYMENU = 0xF100;
2382 enum SC_ARRANGE = 0xF110;
2383 enum SC_RESTORE = 0xF120;
2384 enum SC_TASKLIST = 0xF130;
2385 enum SC_SCREENSAVE = 0xF140;
2386 enum SC_HOTKEY = 0xF150;
2387 enum SC_DEFAULT = 0xF160;
2388 enum SC_MONITORPOWER = 0xF170;
2389 enum SC_CONTEXTHELP = 0xF180;
2390 enum SC_SEPARATOR = 0xF00F;
2391 
2392 enum EC_LEFTMARGIN = 1;
2393 enum EC_RIGHTMARGIN = 2;
2394 enum EC_USEFONTINFO = 0xffff;
2395 
2396 enum DC_HASDEFID = 0x534B;
2397 
2398 enum DLGC_WANTARROWS = 1;
2399 enum DLGC_WANTTAB = 2;
2400 enum DLGC_WANTALLKEYS = 4;
2401 enum DLGC_WANTMESSAGE = 4;
2402 enum DLGC_HASSETSEL = 8;
2403 enum DLGC_DEFPUSHBUTTON = 16;
2404 enum DLGC_UNDEFPUSHBUTTON = 32;
2405 enum DLGC_RADIOBUTTON = 64;
2406 enum DLGC_WANTCHARS = 128;
2407 enum DLGC_STATIC = 256;
2408 enum DLGC_BUTTON = 0x2000;
2409 
2410 enum WA_INACTIVE = 0;
2411 enum WA_ACTIVE = 1;
2412 enum WA_CLICKACTIVE = 2;
2413 
2414 enum ICON_SMALL = 0;
2415 enum ICON_BIG = 1;
2416 static if (_WIN32_WINNT >= 0x501) {
2417 enum ICON_SMALL2 = 2;
2418 }
2419 
2420 enum HBITMAP
2421     HBMMENU_CALLBACK = cast(HBITMAP)-1,
2422     HBMMENU_SYSTEM = cast(HBITMAP)1,
2423     HBMMENU_MBAR_RESTORE = cast(HBITMAP)2,
2424     HBMMENU_MBAR_MINIMIZE = cast(HBITMAP)3,
2425     HBMMENU_MBAR_CLOSE = cast(HBITMAP)5,
2426     HBMMENU_MBAR_CLOSE_D = cast(HBITMAP)6,
2427     HBMMENU_MBAR_MINIMIZE_D = cast(HBITMAP)7,
2428     HBMMENU_POPUP_CLOSE = cast(HBITMAP)8,
2429     HBMMENU_POPUP_RESTORE = cast(HBITMAP)9,
2430     HBMMENU_POPUP_MAXIMIZE = cast(HBITMAP)10,
2431     HBMMENU_POPUP_MINIMIZE = cast(HBITMAP)11;
2432 
2433 enum MOD_ALT = 1;
2434 enum MOD_CONTROL = 2;
2435 enum MOD_SHIFT = 4;
2436 enum MOD_WIN = 8;
2437 enum MOD_IGNORE_ALL_MODIFIER = 1024;
2438 enum MOD_ON_KEYUP = 2048;
2439 enum MOD_RIGHT = 16384;
2440 enum MOD_LEFT = 32768;
2441 
2442 enum LLKHF_EXTENDED = (KF_EXTENDED >> 8);
2443 enum LLKHF_INJECTED = 0x00000010;
2444 enum LLKHF_ALTDOWN = (KF_ALTDOWN >> 8);
2445 enum LLKHF_UP = (KF_UP >> 8);
2446 
2447 enum CURSOR_SHOWING = 0x00000001;
2448 enum WS_ACTIVECAPTION = 0x00000001;
2449 enum ENDSESSION_LOGOFF = 0x80000000;
2450 
2451 enum GA_PARENT    = 1;
2452 enum GA_ROOT      = 2;
2453 enum GA_ROOTOWNER = 3;
2454 
2455 enum {
2456     MAPVK_VK_TO_VSC,
2457     MAPVK_VSC_TO_VK,
2458     MAPVK_VK_TO_CHAR,
2459     MAPVK_VSC_TO_VK_EX,
2460     MAPVK_VK_TO_VSC_EX // = 4
2461 }
2462 
2463 enum {
2464     INPUT_MOUSE,
2465     INPUT_KEYBOARD,
2466     INPUT_HARDWARE // = 2
2467 }
2468 
2469 // Callbacks
2470 // ---------
2471 extern (Windows) nothrow {
2472     alias INT_PTR function(HWND, UINT, WPARAM, LPARAM)   DLGPROC;
2473     alias void function(HWND, UINT, UINT_PTR, DWORD)     TIMERPROC;
2474     alias BOOL function(HDC, LPARAM, int)                GRAYSTRINGPROC;
2475     alias LRESULT function(int, WPARAM, LPARAM)          HOOKPROC;
2476     alias BOOL function(HWND, LPCSTR, HANDLE)            PROPENUMPROCA;
2477     alias BOOL function(HWND, LPCWSTR, HANDLE)           PROPENUMPROCW;
2478     alias BOOL function(HWND, LPSTR, HANDLE, ULONG_PTR)  PROPENUMPROCEXA;
2479     alias BOOL function(HWND, LPWSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXW;
2480     alias int function(LPSTR, int, int, int)             EDITWORDBREAKPROCA;
2481     alias int function(LPWSTR, int, int, int)            EDITWORDBREAKPROCW;
2482     alias LRESULT function(HWND, UINT, WPARAM, LPARAM)   WNDPROC;
2483     alias BOOL function(HDC, LPARAM, WPARAM, int, int)   DRAWSTATEPROC;
2484     alias BOOL function(HWND, LPARAM)                    WNDENUMPROC;
2485     alias BOOL function(HWND, LPARAM)                    ENUMWINDOWSPROC;
2486     alias void function(LPHELPINFO)                      MSGBOXCALLBACK;
2487 
2488     alias BOOL function(HMONITOR, HDC, LPRECT, LPARAM)   MONITORENUMPROC;
2489     alias BOOL function(LPSTR, LPARAM)                   NAMEENUMPROCA;
2490     alias BOOL function(LPWSTR, LPARAM)                  NAMEENUMPROCW;
2491     alias void function(HWND, UINT, ULONG_PTR, LRESULT)  SENDASYNCPROC;
2492 
2493     alias NAMEENUMPROCA DESKTOPENUMPROCA;
2494     alias NAMEENUMPROCW DESKTOPENUMPROCW;
2495     alias NAMEENUMPROCA WINSTAENUMPROCA;
2496     alias NAMEENUMPROCW WINSTAENUMPROCW;
2497 }
2498 
2499 mixin DECLARE_HANDLE!("HDWP");
2500 mixin DECLARE_HANDLE!("HDEVNOTIFY");
2501 
2502 struct MENUGETOBJECTINFO {
2503     DWORD dwFlags;
2504     UINT  uPos;
2505     HMENU hmenu;
2506     PVOID riid;
2507     PVOID pvObj;
2508 }
2509 alias MENUGETOBJECTINFO* PMENUGETOBJECTINFO;
2510 
2511 struct ACCEL {
2512     BYTE fVirt;
2513     WORD key;
2514     WORD cmd;
2515 }
2516 alias ACCEL* LPACCEL;
2517 
2518 struct ACCESSTIMEOUT {
2519     UINT  cbSize = ACCESSTIMEOUT.sizeof;
2520     DWORD dwFlags;
2521     DWORD iTimeOutMSec;
2522 }
2523 alias ACCESSTIMEOUT* LPACCESSTIMEOUT;
2524 
2525 struct ANIMATIONINFO {
2526     UINT cbSize = ANIMATIONINFO.sizeof;
2527     int  iMinAnimate;
2528 }
2529 alias ANIMATIONINFO* LPANIMATIONINFO;
2530 
2531 struct CREATESTRUCTA {
2532     LPVOID    lpCreateParams;
2533     HINSTANCE hInstance;
2534     HMENU     hMenu;
2535     HWND      hwndParent;
2536     int       cy;
2537     int       cx;
2538     int       y;
2539     int       x;
2540     LONG      style;
2541     LPCSTR    lpszName;
2542     LPCSTR    lpszClass;
2543     DWORD     dwExStyle;
2544 }
2545 alias CREATESTRUCTA* LPCREATESTRUCTA;
2546 
2547 struct CREATESTRUCTW {
2548     LPVOID    lpCreateParams;
2549     HINSTANCE hInstance;
2550     HMENU     hMenu;
2551     HWND      hwndParent;
2552     int       cy;
2553     int       cx;
2554     int       y;
2555     int       x;
2556     LONG      style;
2557     LPCWSTR   lpszName;
2558     LPCWSTR   lpszClass;
2559     DWORD     dwExStyle;
2560 }
2561 alias CREATESTRUCTW* LPCREATESTRUCTW;
2562 
2563 struct CBT_CREATEWNDA {
2564     LPCREATESTRUCTA lpcs;
2565     HWND            hwndInsertAfter;
2566 }
2567 alias CBT_CREATEWNDA* LPCBT_CREATEWNDA;
2568 
2569 struct CBT_CREATEWNDW {
2570     LPCREATESTRUCTW lpcs;
2571     HWND            hwndInsertAfter;
2572 }
2573 alias CBT_CREATEWNDW* LPCBT_CREATEWNDW;
2574 
2575 struct CBTACTIVATESTRUCT {
2576     BOOL fMouse;
2577     HWND hWndActive;
2578 }
2579 alias CBTACTIVATESTRUCT* LPCBTACTIVATESTRUCT;
2580 
2581 static if (_WIN32_WINNT >= 0x501) {
2582 
2583 struct WTSSESSION_NOTIFICATION
2584 {
2585     DWORD cbSize;
2586     DWORD dwSessionId;
2587 }
2588 alias WTSSESSION_NOTIFICATION* PWTSSESSION_NOTIFICATION;
2589 
2590 }
2591 
2592 struct CLIENTCREATESTRUCT {
2593     HANDLE hWindowMenu;
2594     UINT   idFirstChild;
2595 }
2596 alias CLIENTCREATESTRUCT* LPCLIENTCREATESTRUCT;
2597 
2598 struct COMPAREITEMSTRUCT {
2599     UINT  CtlType;
2600     UINT  CtlID;
2601     HWND  hwndItem;
2602     UINT  itemID1;
2603     ULONG_PTR itemData1;
2604     UINT  itemID2;
2605     ULONG_PTR itemData2;
2606     DWORD dwLocaleId;
2607 }
2608 alias COMPAREITEMSTRUCT* LPCOMPAREITEMSTRUCT;
2609 
2610 struct COPYDATASTRUCT {
2611     ULONG_PTR dwData;
2612     DWORD cbData;
2613     PVOID lpData;
2614 }
2615 alias COPYDATASTRUCT* PCOPYDATASTRUCT;
2616 
2617 struct CURSORSHAPE {
2618     int xHotSpot;
2619     int yHotSpot;
2620     int cx;
2621     int cy;
2622     int cbWidth;
2623     BYTE Planes;
2624     BYTE BitsPixel;
2625 }
2626 alias CURSORSHAPE* LPCURSORSHAPE;
2627 
2628 struct CWPRETSTRUCT {
2629     LRESULT lResult;
2630     LPARAM lParam;
2631     WPARAM wParam;
2632     DWORD message;
2633     HWND hwnd;
2634 }
2635 
2636 struct CWPSTRUCT {
2637     LPARAM lParam;
2638     WPARAM wParam;
2639     UINT message;
2640     HWND hwnd;
2641 }
2642 alias CWPSTRUCT* PCWPSTRUCT;
2643 
2644 struct DEBUGHOOKINFO {
2645     DWORD idThread;
2646     DWORD idThreadInstaller;
2647     LPARAM lParam;
2648     WPARAM wParam;
2649     int code;
2650 }
2651 alias DEBUGHOOKINFO* PDEBUGHOOKINFO, LPDEBUGHOOKINFO;
2652 
2653 struct DELETEITEMSTRUCT {
2654     UINT CtlType;
2655     UINT CtlID;
2656     UINT itemID;
2657     HWND hwndItem;
2658     ULONG_PTR itemData;
2659 }
2660 alias DELETEITEMSTRUCT* PDELETEITEMSTRUCT, LPDELETEITEMSTRUCT;
2661 
2662 align(2):
2663 struct DLGITEMTEMPLATE {
2664     DWORD style;
2665     DWORD dwExtendedStyle;
2666     short x;
2667     short y;
2668     short cx;
2669     short cy;
2670     WORD id;
2671 }
2672 alias DLGITEMTEMPLATE* LPDLGITEMTEMPLATE;
2673 
2674 struct DLGTEMPLATE {
2675     DWORD style;
2676     DWORD dwExtendedStyle;
2677     WORD  cdit;
2678     short x;
2679     short y;
2680     short cx;
2681     short cy;
2682 }
2683 alias DLGTEMPLATE*        LPDLGTEMPLATE, LPDLGTEMPLATEA, LPDLGTEMPLATEW;
2684 alias const(DLGTEMPLATE)* LPCDLGTEMPLATE, LPCDLGTEMPLATEA, LPCDLGTEMPLATEW;
2685 
2686 align:
2687 
2688 struct DRAWITEMSTRUCT {
2689     UINT  CtlType;
2690     UINT  CtlID;
2691     UINT  itemID;
2692     UINT  itemAction;
2693     UINT  itemState;
2694     HWND  hwndItem;
2695     HDC   hDC;
2696     RECT  rcItem;
2697     ULONG_PTR itemData;
2698 }
2699 alias DRAWITEMSTRUCT* LPDRAWITEMSTRUCT, PDRAWITEMSTRUCT;
2700 
2701 struct DRAWTEXTPARAMS {
2702     UINT cbSize = DRAWTEXTPARAMS.sizeof;
2703     int  iTabLength;
2704     int  iLeftMargin;
2705     int  iRightMargin;
2706     UINT uiLengthDrawn;
2707 }
2708 alias DRAWTEXTPARAMS* LPDRAWTEXTPARAMS;
2709 
2710 struct PAINTSTRUCT {
2711     HDC      hdc;
2712     BOOL     fErase;
2713     RECT     rcPaint;
2714     BOOL     fRestore;
2715     BOOL     fIncUpdate;
2716     BYTE[32] rgbReserved;
2717 }
2718 alias PAINTSTRUCT* PPAINTSTRUCT, NPPAINTSTRUCT, LPPAINTSTRUCT;
2719 
2720 struct MSG {
2721     HWND   hwnd;
2722     UINT   message;
2723     WPARAM wParam;
2724     LPARAM lParam;
2725     DWORD  time;
2726     POINT  pt;
2727 }
2728 alias MSG* NPMSG, LPMSG, PMSG;
2729 
2730 struct ICONINFO {
2731     BOOL    fIcon;
2732     DWORD   xHotspot;
2733     DWORD   yHotspot;
2734     HBITMAP hbmMask;
2735     HBITMAP hbmColor;
2736 }
2737 alias ICONINFO* PICONINFO;
2738 
2739 struct NMHDR {
2740     HWND hwndFrom;
2741     UINT_PTR idFrom;
2742     UINT code;
2743 }
2744 alias NMHDR* LPNMHDR;
2745 
2746 struct WNDCLASSA {
2747     UINT      style;
2748     WNDPROC   lpfnWndProc;
2749     int       cbClsExtra;
2750     int       cbWndExtra;
2751     HINSTANCE hInstance;
2752     HICON     hIcon;
2753     HCURSOR   hCursor;
2754     HBRUSH    hbrBackground;
2755     LPCSTR    lpszMenuName;
2756     LPCSTR    lpszClassName;
2757 }
2758 alias WNDCLASSA* NPWNDCLASSA, LPWNDCLASSA, PWNDCLASSA;
2759 
2760 struct WNDCLASSW {
2761     UINT      style;
2762     WNDPROC   lpfnWndProc;
2763     int       cbClsExtra;
2764     int       cbWndExtra;
2765     HINSTANCE hInstance;
2766     HICON     hIcon;
2767     HCURSOR   hCursor;
2768     HBRUSH    hbrBackground;
2769     LPCWSTR   lpszMenuName;
2770     LPCWSTR   lpszClassName;
2771 }
2772 alias WNDCLASSW* NPWNDCLASSW, LPWNDCLASSW, PWNDCLASSW;
2773 
2774 struct WNDCLASSEXA {
2775     UINT      cbSize = WNDCLASSEXA.sizeof;
2776     UINT      style;
2777     WNDPROC   lpfnWndProc;
2778     int       cbClsExtra;
2779     int       cbWndExtra;
2780     HINSTANCE hInstance;
2781     HICON     hIcon;
2782     HCURSOR   hCursor;
2783     HBRUSH    hbrBackground;
2784     LPCSTR    lpszMenuName;
2785     LPCSTR    lpszClassName;
2786     HICON     hIconSm;
2787 }
2788 alias WNDCLASSEXA* NPWNDCLASSEXA, LPWNDCLASSEXA, PWNDCLASSEXA;
2789 
2790 struct WNDCLASSEXW {
2791     UINT      cbSize = WNDCLASSEXW.sizeof;
2792     UINT      style;
2793     WNDPROC   lpfnWndProc;
2794     int       cbClsExtra;
2795     int       cbWndExtra;
2796     HINSTANCE hInstance;
2797     HICON     hIcon;
2798     HCURSOR   hCursor;
2799     HBRUSH    hbrBackground;
2800     LPCWSTR   lpszMenuName;
2801     LPCWSTR   lpszClassName;
2802     HICON     hIconSm;
2803 }
2804 alias WNDCLASSEXW* LPWNDCLASSEXW, PWNDCLASSEXW;
2805 
2806 struct MENUITEMINFOA {
2807     UINT      cbSize = MENUITEMINFOA.sizeof;
2808     UINT      fMask;
2809     UINT      fType;
2810     UINT      fState;
2811     UINT      wID;
2812     HMENU     hSubMenu;
2813     HBITMAP   hbmpChecked;
2814     HBITMAP   hbmpUnchecked;
2815     ULONG_PTR dwItemData;
2816     LPSTR     dwTypeData;
2817     UINT      cch;
2818     HBITMAP   hbmpItem;
2819 }
2820 alias MENUITEMINFOA*        LPMENUITEMINFOA;
2821 alias const(MENUITEMINFOA)* LPCMENUITEMINFOA;
2822 
2823 struct MENUITEMINFOW {
2824     UINT      cbSize = MENUITEMINFOW.sizeof;
2825     UINT      fMask;
2826     UINT      fType;
2827     UINT      fState;
2828     UINT      wID;
2829     HMENU     hSubMenu;
2830     HBITMAP   hbmpChecked;
2831     HBITMAP   hbmpUnchecked;
2832     ULONG_PTR dwItemData;
2833     LPWSTR    dwTypeData;
2834     UINT      cch;
2835     HBITMAP   hbmpItem;
2836 }
2837 alias MENUITEMINFOW*        LPMENUITEMINFOW;
2838 alias const(MENUITEMINFOW)* LPCMENUITEMINFOW;
2839 
2840 struct SCROLLINFO {
2841     UINT cbSize = this.sizeof;
2842     UINT fMask;
2843     int nMin;
2844     int nMax;
2845     UINT nPage;
2846     int nPos;
2847     int nTrackPos;
2848 }
2849 alias SCROLLINFO*        LPSCROLLINFO;
2850 alias const(SCROLLINFO)* LPCSCROLLINFO;
2851 
2852 struct WINDOWPLACEMENT {
2853     UINT length;
2854     UINT flags;
2855     UINT showCmd;
2856     POINT ptMinPosition;
2857     POINT ptMaxPosition;
2858     RECT rcNormalPosition;
2859 }
2860 alias WINDOWPLACEMENT* LPWINDOWPLACEMENT, PWINDOWPLACEMENT;
2861 
2862 struct MENUITEMTEMPLATEHEADER {
2863     WORD versionNumber;
2864     WORD offset;
2865 }
2866 
2867 struct MENUITEMTEMPLATE {
2868     WORD mtOption;
2869     WORD mtID;
2870     WCHAR[1] mtString = 0;
2871 }
2872 
2873 alias void MENUTEMPLATE, MENUTEMPLATEA, MENUTEMPLATEW;
2874 
2875 alias MENUTEMPLATE* LPMENUTEMPLATEA, LPMENUTEMPLATEW, LPMENUTEMPLATE;
2876 
2877 struct HELPINFO {
2878     UINT cbSize = this.sizeof;
2879     int iContextType;
2880     int iCtrlId;
2881     HANDLE hItemHandle;
2882     DWORD_PTR dwContextId;
2883     POINT MousePos;
2884 }
2885 alias HELPINFO* LPHELPINFO;
2886 
2887 struct MSGBOXPARAMSA {
2888     UINT cbSize = this.sizeof;
2889     HWND hwndOwner;
2890     HINSTANCE hInstance;
2891     LPCSTR lpszText;
2892     LPCSTR lpszCaption;
2893     DWORD dwStyle;
2894     LPCSTR lpszIcon;
2895     DWORD_PTR dwContextHelpId;
2896     MSGBOXCALLBACK lpfnMsgBoxCallback;
2897     DWORD dwLanguageId;
2898 }
2899 alias MSGBOXPARAMSA* PMSGBOXPARAMSA, LPMSGBOXPARAMSA;
2900 
2901 struct MSGBOXPARAMSW {
2902     UINT cbSize = this.sizeof;
2903     HWND hwndOwner;
2904     HINSTANCE hInstance;
2905     LPCWSTR lpszText;
2906     LPCWSTR lpszCaption;
2907     DWORD dwStyle;
2908     LPCWSTR lpszIcon;
2909     DWORD_PTR dwContextHelpId;
2910     MSGBOXCALLBACK lpfnMsgBoxCallback;
2911     DWORD dwLanguageId;
2912 }
2913 alias MSGBOXPARAMSW* PMSGBOXPARAMSW, LPMSGBOXPARAMSW;
2914 
2915 struct USEROBJECTFLAGS {
2916     BOOL fInherit;
2917     BOOL fReserved;
2918     DWORD dwFlags;
2919 }
2920 
2921 struct FILTERKEYS {
2922     UINT cbSize = this.sizeof;
2923     DWORD dwFlags;
2924     DWORD iWaitMSec;
2925     DWORD iDelayMSec;
2926     DWORD iRepeatMSec;
2927     DWORD iBounceMSec;
2928 }
2929 
2930 struct HIGHCONTRASTA {
2931     UINT cbSize = this.sizeof;
2932     DWORD dwFlags;
2933     LPSTR lpszDefaultScheme;
2934 }
2935 alias HIGHCONTRASTA* LPHIGHCONTRASTA;
2936 
2937 struct HIGHCONTRASTW {
2938     UINT cbSize = this.sizeof;
2939     DWORD dwFlags;
2940     LPWSTR lpszDefaultScheme;
2941 }
2942 alias HIGHCONTRASTW* LPHIGHCONTRASTW;
2943 
2944 struct ICONMETRICSA {
2945     UINT cbSize = this.sizeof;
2946     int iHorzSpacing;
2947     int iVertSpacing;
2948     int iTitleWrap;
2949     LOGFONTA lfFont;
2950 }
2951 alias ICONMETRICSA* LPICONMETRICSA;
2952 
2953 struct ICONMETRICSW {
2954     UINT cbSize = this.sizeof;
2955     int iHorzSpacing;
2956     int iVertSpacing;
2957     int iTitleWrap;
2958     LOGFONTW lfFont;
2959 }
2960 alias ICONMETRICSW* LPICONMETRICSW;
2961 
2962 struct MINIMIZEDMETRICS {
2963     UINT cbSize = this.sizeof;
2964     int iWidth;
2965     int iHorzGap;
2966     int iVertGap;
2967     int iArrange;
2968 }
2969 alias MINIMIZEDMETRICS* LPMINIMIZEDMETRICS;
2970 
2971 struct MOUSEKEYS {
2972     UINT cbSize = this.sizeof;
2973     DWORD dwFlags;
2974     DWORD iMaxSpeed;
2975     DWORD iTimeToMaxSpeed;
2976     DWORD iCtrlSpeed;
2977     DWORD dwReserved1;
2978     DWORD dwReserved2;
2979 }
2980 alias MOUSEKEYS* LPMOUSEKEYS;
2981 
2982 struct NONCLIENTMETRICSA {
2983     UINT cbSize = this.sizeof;
2984     int iBorderWidth;
2985     int iScrollWidth;
2986     int iScrollHeight;
2987     int iCaptionWidth;
2988     int iCaptionHeight;
2989     LOGFONTA lfCaptionFont;
2990     int iSmCaptionWidth;
2991     int iSmCaptionHeight;
2992     LOGFONTA lfSmCaptionFont;
2993     int iMenuWidth;
2994     int iMenuHeight;
2995     LOGFONTA lfMenuFont;
2996     LOGFONTA lfStatusFont;
2997     LOGFONTA lfMessageFont;
2998 }
2999 alias NONCLIENTMETRICSA* LPNONCLIENTMETRICSA;
3000 
3001 struct NONCLIENTMETRICSW {
3002     UINT cbSize = this.sizeof;
3003     int iBorderWidth;
3004     int iScrollWidth;
3005     int iScrollHeight;
3006     int iCaptionWidth;
3007     int iCaptionHeight;
3008     LOGFONTW lfCaptionFont;
3009     int iSmCaptionWidth;
3010     int iSmCaptionHeight;
3011     LOGFONTW lfSmCaptionFont;
3012     int iMenuWidth;
3013     int iMenuHeight;
3014     LOGFONTW lfMenuFont;
3015     LOGFONTW lfStatusFont;
3016     LOGFONTW lfMessageFont;
3017 }
3018 alias NONCLIENTMETRICSW* LPNONCLIENTMETRICSW;
3019 
3020 struct SERIALKEYSA {
3021     UINT cbSize = this.sizeof;
3022     DWORD dwFlags;
3023     LPSTR lpszActivePort;
3024     LPSTR lpszPort;
3025     UINT iBaudRate;
3026     UINT iPortState;
3027     UINT iActive;
3028 }
3029 alias SERIALKEYSA* LPSERIALKEYSA;
3030 
3031 struct SERIALKEYSW {
3032     UINT cbSize = this.sizeof;
3033     DWORD dwFlags;
3034     LPWSTR lpszActivePort;
3035     LPWSTR lpszPort;
3036     UINT iBaudRate;
3037     UINT iPortState;
3038     UINT iActive;
3039 }
3040 alias SERIALKEYSW* LPSERIALKEYSW;
3041 
3042 struct SOUNDSENTRYA {
3043     UINT cbSize = this.sizeof;
3044     DWORD dwFlags;
3045     DWORD iFSTextEffect;
3046     DWORD iFSTextEffectMSec;
3047     DWORD iFSTextEffectColorBits;
3048     DWORD iFSGrafEffect;
3049     DWORD iFSGrafEffectMSec;
3050     DWORD iFSGrafEffectColor;
3051     DWORD iWindowsEffect;
3052     DWORD iWindowsEffectMSec;
3053     LPSTR lpszWindowsEffectDLL;
3054     DWORD iWindowsEffectOrdinal;
3055 }
3056 alias SOUNDSENTRYA* LPSOUNDSENTRYA;
3057 
3058 struct SOUNDSENTRYW {
3059     UINT cbSize = this.sizeof;
3060     DWORD dwFlags;
3061     DWORD iFSTextEffect;
3062     DWORD iFSTextEffectMSec;
3063     DWORD iFSTextEffectColorBits;
3064     DWORD iFSGrafEffect;
3065     DWORD iFSGrafEffectMSec;
3066     DWORD iFSGrafEffectColor;
3067     DWORD iWindowsEffect;
3068     DWORD iWindowsEffectMSec;
3069     LPWSTR lpszWindowsEffectDLL;
3070     DWORD iWindowsEffectOrdinal;
3071 }
3072 alias SOUNDSENTRYW* LPSOUNDSENTRYW;
3073 
3074 struct STICKYKEYS {
3075     DWORD cbSize = this.sizeof;
3076     DWORD dwFlags;
3077 }
3078 alias STICKYKEYS* LPSTICKYKEYS;
3079 
3080 struct TOGGLEKEYS {
3081     DWORD cbSize = this.sizeof;
3082     DWORD dwFlags;
3083 }
3084 
3085 struct MOUSEHOOKSTRUCT {
3086     POINT pt;
3087     HWND hwnd;
3088     UINT wHitTestCode;
3089     ULONG_PTR dwExtraInfo;
3090 }
3091 alias MOUSEHOOKSTRUCT* LPMOUSEHOOKSTRUCT, PMOUSEHOOKSTRUCT;
3092 
3093 struct TRACKMOUSEEVENT {
3094     DWORD cbSize = this.sizeof;
3095     DWORD dwFlags;
3096     HWND  hwndTrack;
3097     DWORD dwHoverTime;
3098 }
3099 alias TRACKMOUSEEVENT* LPTRACKMOUSEEVENT;
3100 
3101 struct TPMPARAMS {
3102     UINT cbSize = this.sizeof;
3103     RECT rcExclude;
3104 }
3105 alias TPMPARAMS* LPTPMPARAMS;
3106 
3107 struct EVENTMSG {
3108     UINT message;
3109     UINT paramL;
3110     UINT paramH;
3111     DWORD time;
3112     HWND hwnd;
3113 }
3114 alias EVENTMSG* PEVENTMSGMSG, LPEVENTMSGMSG, PEVENTMSG, LPEVENTMSG;
3115 
3116 struct WINDOWPOS {
3117     HWND hwnd;
3118     HWND hwndInsertAfter;
3119     int x;
3120     int y;
3121     int cx;
3122     int cy;
3123     UINT flags;
3124 }
3125 alias WINDOWPOS* PWINDOWPOS, LPWINDOWPOS;
3126 
3127 struct NCCALCSIZE_PARAMS {
3128     RECT[3] rgrc;
3129     PWINDOWPOS lppos;
3130 }
3131 alias NCCALCSIZE_PARAMS* LPNCCALCSIZE_PARAMS;
3132 
3133 struct MDICREATESTRUCTA {
3134     LPCSTR szClass;
3135     LPCSTR szTitle;
3136     HANDLE hOwner;
3137     int x;
3138     int y;
3139     int cx;
3140     int cy;
3141     DWORD style;
3142     LPARAM lParam;
3143 }
3144 alias MDICREATESTRUCTA* LPMDICREATESTRUCTA;
3145 
3146 struct MDICREATESTRUCTW {
3147     LPCWSTR szClass;
3148     LPCWSTR szTitle;
3149     HANDLE hOwner;
3150     int x;
3151     int y;
3152     int cx;
3153     int cy;
3154     DWORD style;
3155     LPARAM lParam;
3156 }
3157 alias MDICREATESTRUCTW* LPMDICREATESTRUCTW;
3158 
3159 struct MINMAXINFO {
3160     POINT ptReserved;
3161     POINT ptMaxSize;
3162     POINT ptMaxPosition;
3163     POINT ptMinTrackSize;
3164     POINT ptMaxTrackSize;
3165 }
3166 alias MINMAXINFO* PMINMAXINFO, LPMINMAXINFO;
3167 
3168 struct MDINEXTMENU {
3169     HMENU hmenuIn;
3170     HMENU hmenuNext;
3171     HWND hwndNext;
3172 }
3173 alias MDINEXTMENU* PMDINEXTMENU, LPMDINEXTMENU;
3174 
3175 struct MEASUREITEMSTRUCT {
3176     UINT CtlType;
3177     UINT CtlID;
3178     UINT itemID;
3179     UINT itemWidth;
3180     UINT itemHeight;
3181     ULONG_PTR itemData;
3182 }
3183 alias MEASUREITEMSTRUCT* PMEASUREITEMSTRUCT, LPMEASUREITEMSTRUCT;
3184 
3185 struct DROPSTRUCT {
3186     HWND hwndSource;
3187     HWND hwndSink;
3188     DWORD wFmt;
3189     ULONG_PTR dwData;
3190     POINT ptDrop;
3191     DWORD dwControlData;
3192 }
3193 alias DROPSTRUCT* PDROPSTRUCT, LPDROPSTRUCT;
3194 
3195 alias DWORD HELPPOLY;
3196 
3197 struct MULTIKEYHELPA {
3198     DWORD mkSize;
3199     CHAR mkKeylist = 0;
3200     CHAR[1] szKeyphrase = 0;
3201 }
3202 alias MULTIKEYHELPA* PMULTIKEYHELPA, LPMULTIKEYHELPA;
3203 
3204 struct MULTIKEYHELPW {
3205     DWORD mkSize;
3206     WCHAR mkKeylist = 0;
3207     WCHAR[1] szKeyphrase = 0;
3208 }
3209 alias MULTIKEYHELPW* PMULTIKEYHELPW, LPMULTIKEYHELPW;
3210 
3211 struct HELPWININFOA {
3212     int wStructSize;
3213     int x;
3214     int y;
3215     int dx;
3216     int dy;
3217     int wMax;
3218     CHAR[2] rgchMember = 0;
3219 }
3220 alias HELPWININFOA* PHELPWININFOA, LPHELPWININFOA;
3221 
3222 struct HELPWININFOW {
3223     int wStructSize;
3224     int x;
3225     int y;
3226     int dx;
3227     int dy;
3228     int wMax;
3229     WCHAR[2] rgchMember = 0;
3230 }
3231 alias HELPWININFOW* PHELPWININFOW, LPHELPWININFOW;
3232 
3233 struct STYLESTRUCT {
3234     DWORD styleOld;
3235     DWORD styleNew;
3236 }
3237 alias STYLESTRUCT* LPSTYLESTRUCT;
3238 
3239 struct ALTTABINFO {
3240     DWORD cbSize = this.sizeof;
3241     int   cItems;
3242     int   cColumns;
3243     int   cRows;
3244     int   iColFocus;
3245     int   iRowFocus;
3246     int   cxItem;
3247     int   cyItem;
3248     POINT ptStart;
3249 }
3250 alias ALTTABINFO* PALTTABINFO, LPALTTABINFO;
3251 
3252 struct COMBOBOXINFO {
3253     DWORD cbSize = this.sizeof;
3254     RECT rcItem;
3255     RECT rcButton;
3256     DWORD stateButton;
3257     HWND hwndCombo;
3258     HWND hwndItem;
3259     HWND hwndList;
3260 }
3261 alias COMBOBOXINFO* PCOMBOBOXINFO, LPCOMBOBOXINFO;
3262 
3263 struct CURSORINFO {
3264     DWORD cbSize = this.sizeof;
3265     DWORD flags;
3266     HCURSOR hCursor;
3267     POINT ptScreenPos;
3268 }
3269 alias CURSORINFO* PCURSORINFO, LPCURSORINFO;
3270 
3271 struct MENUBARINFO {
3272     DWORD cbSize = this.sizeof;
3273     RECT  rcBar;
3274     HMENU hMenu;
3275     HWND  hwndMenu;
3276     byte bf_; // Simulated bitfield
3277 //  BOOL  fBarFocused:1;
3278 //  BOOL  fFocused:1;
3279     bool fBarFocused()       { return (bf_ & 1) == 1; }
3280     bool fFocused()          { return (bf_ & 2) == 2; }
3281     bool fBarFocused(bool b) { bf_ = cast(byte) ((bf_ & 0xFE) | b);           return b; }
3282     bool fFocused(bool b)    { bf_ = cast(byte) (b ? (bf_ | 2) : bf_ & 0xFD); return b; }
3283 }
3284 alias MENUBARINFO* PMENUBARINFO;
3285 
3286 struct MENUINFO {
3287     DWORD cbSize = this.sizeof;
3288     DWORD fMask;
3289     DWORD dwStyle;
3290     UINT cyMax;
3291     HBRUSH  hbrBack;
3292     DWORD   dwContextHelpID;
3293     ULONG_PTR dwMenuData;
3294 }
3295 alias MENUINFO*        LPMENUINFO;
3296 alias const(MENUINFO)* LPCMENUINFO;
3297 
3298 
3299 enum CCHILDREN_SCROLLBAR = 5;
3300 
3301 struct SCROLLBARINFO {
3302     DWORD cbSize = this.sizeof;
3303     RECT  rcScrollBar;
3304     int   dxyLineButton;
3305     int   xyThumbTop;
3306     int   xyThumbBottom;
3307     int   reserved;
3308     DWORD[CCHILDREN_SCROLLBAR+1] rgstate;
3309 }
3310 alias SCROLLBARINFO* PSCROLLBARINFO, LPSCROLLBARINFO;
3311 
3312 enum CCHILDREN_TITLEBAR = 5;
3313 
3314 struct WINDOWINFO {
3315     DWORD cbSize = WINDOWINFO.sizeof;
3316     RECT  rcWindow;
3317     RECT  rcClient;
3318     DWORD dwStyle;
3319     DWORD dwExStyle;
3320     DWORD dwWindowStatus;
3321     UINT  cxWindowBorders;
3322     UINT  cyWindowBorders;
3323     ATOM  atomWindowType;
3324     WORD  wCreatorVersion;
3325 }
3326 alias WINDOWINFO* PWINDOWINFO, LPWINDOWINFO;
3327 
3328 struct LASTINPUTINFO {
3329     UINT cbSize = this.sizeof;
3330     DWORD dwTime;
3331 }
3332 alias LASTINPUTINFO* PLASTINPUTINFO;
3333 
3334 struct MONITORINFO {
3335     DWORD cbSize = this.sizeof;
3336     RECT rcMonitor;
3337     RECT rcWork;
3338     DWORD dwFlags;
3339 }
3340 alias MONITORINFO* LPMONITORINFO;
3341 
3342 enum CCHDEVICENAME = 32;
3343 
3344 struct MONITORINFOEXA {
3345     DWORD cbSize = MONITORINFOEXA.sizeof;
3346     RECT  rcMonitor;
3347     RECT  rcWork;
3348     DWORD dwFlags;
3349     CHAR[CCHDEVICENAME] szDevice = 0;
3350 }
3351 alias MONITORINFOEXA* LPMONITORINFOEXA;
3352 
3353 struct MONITORINFOEXW {
3354     DWORD cbSize = MONITORINFOEXW.sizeof;
3355     RECT  rcMonitor;
3356     RECT  rcWork;
3357     DWORD dwFlags;
3358     WCHAR[CCHDEVICENAME] szDevice = 0;
3359 }
3360 alias MONITORINFOEXW* LPMONITORINFOEXW;
3361 
3362 struct KBDLLHOOKSTRUCT {
3363     DWORD vkCode;
3364     DWORD scanCode;
3365     DWORD flags;
3366     DWORD time;
3367     ULONG_PTR dwExtraInfo;
3368 }
3369 alias KBDLLHOOKSTRUCT* LPKBDLLHOOKSTRUCT, PKBDLLHOOKSTRUCT;
3370 
3371 struct MSLLHOOKSTRUCT {
3372     POINT     pt;
3373     DWORD     mouseData;
3374     DWORD     flags;
3375     DWORD     time;
3376     ULONG_PTR dwExtraInfo;
3377 }
3378 alias MSLLHOOKSTRUCT* PMSLLHOOKSTRUCT;
3379 
3380 struct MOUSEINPUT {
3381     LONG dx;
3382     LONG dy;
3383     DWORD mouseData;
3384     DWORD dwFlags;
3385     DWORD time;
3386     ULONG_PTR dwExtraInfo;
3387 }
3388 alias MOUSEINPUT* PMOUSEINPUT;
3389 
3390 struct KEYBDINPUT {
3391     WORD wVk;
3392     WORD wScan;
3393     DWORD dwFlags;
3394     DWORD time;
3395     ULONG_PTR dwExtraInfo;
3396 }
3397 alias KEYBDINPUT* PKEYBDINPUT;
3398 
3399 struct HARDWAREINPUT {
3400     DWORD uMsg;
3401     WORD wParamL;
3402     WORD wParamH;
3403 }
3404 alias HARDWAREINPUT* PHARDWAREINPUT;
3405 
3406 struct INPUT {
3407     DWORD type;
3408     union {
3409         MOUSEINPUT mi;
3410         KEYBDINPUT ki;
3411         HARDWAREINPUT hi;
3412     }
3413 }
3414 alias INPUT* PINPUT, LPINPUT;
3415 
3416 static if (_WIN32_WINNT >= 0x501) {
3417     align(4) struct BSMINFO {
3418         UINT  cbSize = this.sizeof;
3419         HDESK hdesk;
3420         HWND  hwnd;
3421 align(4) LUID  luid;
3422     }
3423     alias BSMINFO* PBSMINFO;
3424 
3425     alias TypeDef!(HANDLE) HRAWINPUT;
3426 
3427     struct RAWINPUTHEADER {
3428         DWORD dwType;
3429         DWORD dwSize;
3430         HANDLE hDevice;
3431         WPARAM wParam;
3432     }
3433     alias RAWINPUTHEADER* PRAWINPUTHEADER;
3434 
3435     struct RAWMOUSE {
3436         USHORT usFlags;
3437         union {
3438             ULONG ulButtons;
3439             struct {
3440                 USHORT usButtonFlags;
3441                 USHORT usButtonData;
3442             }
3443         }
3444         ULONG ulRawButtons;
3445         LONG lLastX;
3446         LONG lLastY;
3447         ULONG ulExtraInformation;
3448     }
3449     alias RAWMOUSE* PRAWMOUSE, LPRAWMOUSE;
3450 
3451     struct RAWKEYBOARD {
3452         USHORT MakeCode;
3453         USHORT Flags;
3454         USHORT Reserved;
3455         USHORT VKey;
3456         UINT Message;
3457         ULONG ExtraInformation;
3458     }
3459     alias RAWKEYBOARD* PRAWKEYBOARD, LPRAWKEYBOARD;
3460 
3461     struct RAWHID {
3462         DWORD dwSizeHid;
3463         DWORD dwCount;
3464         BYTE bRawData;
3465     }
3466     alias RAWHID* PRAWHID, LPRAWHID;
3467 
3468     struct RAWINPUT {
3469         RAWINPUTHEADER header;
3470         union _data {
3471             RAWMOUSE    mouse;
3472             RAWKEYBOARD keyboard;
3473             RAWHID      hid;
3474         }
3475         _data data;
3476     }
3477     alias RAWINPUT* PRAWINPUT, LPRAWINPUT;
3478 
3479     struct RAWINPUTDEVICE {
3480         USHORT usUsagePage;
3481         USHORT usUsage;
3482         DWORD dwFlags;
3483         HWND hwndTarget;
3484     }
3485     alias RAWINPUTDEVICE*        PRAWINPUTDEVICE, LPRAWINPUTDEVICE;
3486     alias const(RAWINPUTDEVICE)* PCRAWINPUTDEVICE;
3487 
3488     struct RAWINPUTDEVICELIST {
3489         HANDLE hDevice;
3490         DWORD dwType;
3491     }
3492     alias RAWINPUTDEVICELIST* PRAWINPUTDEVICELIST;
3493 
3494     struct RID_DEVICE_INFO_MOUSE {
3495         DWORD dwId;
3496         DWORD dwNumberOfButtons;
3497         DWORD dwSampleRate;
3498         BOOL  fHasHorizontalWheel;
3499     }
3500 
3501     struct RID_DEVICE_INFO_KEYBOARD {
3502         DWORD dwType;
3503         DWORD dwSubType;
3504         DWORD dwKeyboardMode;
3505         DWORD dwNumberOfFunctionKeys;
3506         DWORD dwNumberOfIndicators;
3507         DWORD dwNumberOfKeysTotal;
3508     }
3509 
3510     struct RID_DEVICE_INFO_HID {
3511         DWORD dwVendorId;
3512         DWORD dwProductId;
3513         DWORD dwVersionNumber;
3514         USHORT usUsagePage;
3515         USHORT usUsage;
3516     }
3517 
3518     struct RID_DEVICE_INFO {
3519         DWORD cbSize = this.sizeof;
3520         DWORD dwType;
3521         union {
3522             RID_DEVICE_INFO_MOUSE mouse;
3523             RID_DEVICE_INFO_KEYBOARD keyboard;
3524             RID_DEVICE_INFO_HID hid;
3525         }
3526     }
3527 }// (_WIN32_WINNT >= 0x501)
3528 
3529 alias CharToOemA AnsiToOem;
3530 alias OemToCharA OemToAnsi;
3531 alias CharToOemBuffA AnsiToOemBuff;
3532 alias OemToCharBuffA OemToAnsiBuff;
3533 alias CharUpperA AnsiUpper;
3534 alias CharUpperBuffA AnsiUpperBuff;
3535 alias CharLowerA AnsiLower;
3536 alias CharLowerBuffA AnsiLowerBuff;
3537 alias CharNextA AnsiNext;
3538 alias CharPrevA AnsiPrev;
3539 
3540 alias MAKELONG MAKEWPARAM;
3541 alias MAKELONG MAKELPARAM;
3542 alias MAKELONG MAKELRESULT;
3543 
3544 void POINTSTOPOINT()(out POINT p, LONG ps) {
3545     p.x = LOWORD(ps);
3546     p.y = HIWORD(ps);
3547 }
3548 
3549 POINTS POINTTOPOINTS()(const POINT p) {
3550     return MAKELONG(p.x, p.y);
3551 }
3552 
3553 extern (Windows) nothrow @nogc {
3554     HKL ActivateKeyboardLayout(HKL, UINT);
3555     BOOL AdjustWindowRect(LPRECT, DWORD, BOOL);
3556     BOOL AdjustWindowRectEx(LPRECT, DWORD, BOOL, DWORD);
3557     BOOL AnyPopup();
3558     BOOL AppendMenuA(HMENU, UINT, UINT_PTR, LPCSTR);
3559     BOOL AppendMenuW(HMENU, UINT, UINT_PTR, LPCWSTR);
3560     UINT ArrangeIconicWindows(HWND);
3561     BOOL AttachThreadInput(DWORD, DWORD, BOOL);
3562     HDWP BeginDeferWindowPos(int);
3563     HDC BeginPaint(HWND, LPPAINTSTRUCT);
3564     BOOL BringWindowToTop(HWND);
3565     BOOL CallMsgFilterA(LPMSG, INT);
3566     BOOL CallMsgFilterW(LPMSG, INT);
3567     LRESULT CallNextHookEx(HHOOK, int, WPARAM, LPARAM);
3568     LRESULT CallWindowProcA(WNDPROC, HWND, UINT, WPARAM, LPARAM);
3569     LRESULT CallWindowProcW(WNDPROC, HWND, UINT, WPARAM, LPARAM);
3570     WORD CascadeWindows(HWND, UINT, LPCRECT, UINT, const(HWND)*);
3571     BOOL ChangeClipboardChain(HWND, HWND);
3572 
3573     LONG ChangeDisplaySettingsA(PDEVMODEA, DWORD);
3574     LONG ChangeDisplaySettingsW(PDEVMODEW, DWORD);
3575     LONG ChangeDisplaySettingsExA(LPCSTR, LPDEVMODEA, HWND, DWORD, LPVOID);
3576     LONG ChangeDisplaySettingsExW(LPCWSTR, LPDEVMODEW, HWND, DWORD, LPVOID);
3577 
3578     BOOL ChangeMenuA(HMENU, UINT, LPCSTR, UINT, UINT);
3579     BOOL ChangeMenuW(HMENU, UINT, LPCWSTR, UINT, UINT);
3580     LPSTR CharLowerA(LPSTR);
3581     LPWSTR CharLowerW(LPWSTR);
3582     DWORD CharLowerBuffA(LPSTR, DWORD);
3583     DWORD CharLowerBuffW(LPWSTR, DWORD);
3584     LPSTR CharNextA(LPCSTR);
3585     LPWSTR CharNextW(LPCWSTR);
3586     LPSTR CharNextExA(WORD, LPCSTR, DWORD);
3587     LPWSTR CharNextExW(WORD, LPCWSTR, DWORD);
3588     LPSTR CharPrevA(LPCSTR, LPCSTR);
3589     LPWSTR CharPrevW(LPCWSTR, LPCWSTR);
3590     LPSTR CharPrevExA(WORD, LPCSTR, LPCSTR, DWORD);
3591     LPWSTR CharPrevExW(WORD, LPCWSTR, LPCWSTR, DWORD);
3592     BOOL CharToOemA(LPCSTR, LPSTR);
3593     BOOL CharToOemW(LPCWSTR, LPSTR);
3594     BOOL CharToOemBuffA(LPCSTR, LPSTR, DWORD);
3595     BOOL CharToOemBuffW(LPCWSTR, LPSTR, DWORD);
3596     LPSTR CharUpperA(LPSTR);
3597     LPWSTR CharUpperW(LPWSTR);
3598     DWORD CharUpperBuffA(LPSTR, DWORD);
3599     DWORD CharUpperBuffW(LPWSTR, DWORD);
3600     BOOL CheckDlgButton(HWND, int, UINT);
3601     DWORD CheckMenuItem(HMENU, UINT, UINT);
3602     BOOL CheckMenuRadioItem(HMENU, UINT, UINT, UINT, UINT);
3603     BOOL CheckRadioButton(HWND, int, int, int);
3604     HWND ChildWindowFromPoint(HWND, POINT);
3605     HWND ChildWindowFromPointEx(HWND, POINT, UINT);
3606     BOOL ClientToScreen(HWND, LPPOINT);
3607     BOOL ClipCursor(LPCRECT);
3608     BOOL CloseClipboard();
3609     BOOL CloseDesktop(HDESK);
3610     BOOL CloseWindow(HWND);
3611     BOOL CloseWindowStation(HWINSTA);
3612     int CopyAcceleratorTableA(HACCEL, LPACCEL, int);
3613     int CopyAcceleratorTableW(HACCEL, LPACCEL, int);
3614 
3615     HICON CopyIcon(HICON);
3616     HANDLE CopyImage(HANDLE, UINT, int, int, UINT);
3617     BOOL CopyRect(LPRECT, LPCRECT);
3618     int CountClipboardFormats();
3619     HACCEL CreateAcceleratorTableA(LPACCEL, int);
3620     HACCEL CreateAcceleratorTableW(LPACCEL, int);
3621     BOOL CreateCaret(HWND, HBITMAP, int, int);
3622     HCURSOR CreateCursor(HINSTANCE, int, int, int, int, PCVOID, PCVOID);
3623 
3624     HDESK CreateDesktopA(LPCSTR, LPCSTR, LPDEVMODEA, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES);
3625     HDESK CreateDesktopW(LPCWSTR, LPCWSTR, LPDEVMODEW, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES);
3626 
3627     HWND CreateDialogParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM);
3628     HWND CreateDialogParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM);
3629     HWND CreateDialogIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM);
3630     HWND CreateDialogIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM);
3631 
3632     HICON CreateIcon(HINSTANCE, int, int, BYTE, BYTE, const(BYTE)*, BYTE*);
3633     HICON CreateIconFromResource(PBYTE, DWORD, BOOL, DWORD);
3634     HICON CreateIconFromResourceEx(PBYTE, DWORD, BOOL, DWORD, int, int, UINT);
3635     HICON CreateIconIndirect(PICONINFO);
3636     HWND CreateMDIWindowA(LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM);
3637     HWND CreateMDIWindowW(LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM);
3638     HMENU CreateMenu();
3639     HMENU CreatePopupMenu();
3640 
3641     HWND CreateWindowExA(DWORD, LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID);
3642     HWND CreateWindowExW(DWORD, LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID);
3643 
3644     HWINSTA CreateWindowStationA(LPSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES);
3645     HWINSTA CreateWindowStationW(LPWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES);
3646     LRESULT DefDlgProcA(HWND, UINT, WPARAM, LPARAM);
3647     LRESULT DefDlgProcW(HWND, UINT, WPARAM, LPARAM);
3648     HDWP DeferWindowPos(HDWP, HWND, HWND, int, int, int, int, UINT);
3649     LRESULT DefFrameProcA(HWND, HWND, UINT, WPARAM, LPARAM);
3650     LRESULT DefFrameProcW(HWND, HWND, UINT, WPARAM, LPARAM);
3651 
3652     LRESULT DefMDIChildProcA(HWND, UINT, WPARAM, LPARAM);
3653     LRESULT DefMDIChildProcW(HWND, UINT, WPARAM, LPARAM);
3654     LRESULT DefWindowProcA(HWND, UINT, WPARAM, LPARAM);
3655     LRESULT DefWindowProcW(HWND, UINT, WPARAM, LPARAM);
3656     BOOL DeleteMenu(HMENU, UINT, UINT);
3657     BOOL DeregisterShellHookWindow(HWND);
3658     BOOL DestroyAcceleratorTable(HACCEL);
3659     BOOL DestroyCaret();
3660     BOOL DestroyCursor(HCURSOR);
3661     BOOL DestroyIcon(HICON);
3662     BOOL DestroyMenu(HMENU);
3663     BOOL DestroyWindow(HWND);
3664 
3665     INT_PTR DialogBoxParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM);
3666     INT_PTR DialogBoxParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM);
3667     INT_PTR DialogBoxIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM);
3668     INT_PTR DialogBoxIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM);
3669 
3670 } // extern (Windows)
3671 
3672 nothrow @nogc {
3673     HCURSOR CopyCursor(HCURSOR c) {
3674         return cast(HCURSOR)CopyIcon(cast(HICON)c);
3675     }
3676 
3677     HWND CreateDialogA(HINSTANCE h, LPCSTR n, HWND w, DLGPROC f) {
3678         return CreateDialogParamA(h, n, w, f, 0);
3679     }
3680 
3681     HWND CreateDialogW(HINSTANCE h, LPCWSTR n, HWND w, DLGPROC f) {
3682         return CreateDialogParamW(h, n, w, f, 0);
3683     }
3684 
3685     HWND CreateDialogIndirectA(HINSTANCE h, LPCDLGTEMPLATE t, HWND w, DLGPROC f) {
3686         return CreateDialogIndirectParamA(h, t, w, f, 0);
3687     }
3688 
3689     HWND CreateDialogIndirectW(HINSTANCE h, LPCDLGTEMPLATE t, HWND w, DLGPROC f) {
3690         return CreateDialogIndirectParamW(h, t, w, f, 0);
3691     }
3692 
3693     HWND CreateWindowA(LPCSTR a, LPCSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) {
3694         return CreateWindowExA(0, a, b, c, d, e, f, g, h, i, j, k);
3695     }
3696 
3697     HWND CreateWindowW(LPCWSTR a, LPCWSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) {
3698         return CreateWindowExW(0, a, b, c, d, e, f, g, h, i, j, k);
3699     }
3700 
3701     INT_PTR DialogBoxA(HINSTANCE i, LPCSTR t, HWND p, DLGPROC f) {
3702         return DialogBoxParamA(i, t, p, f, 0);
3703     }
3704 
3705     INT_PTR DialogBoxW(HINSTANCE i, LPCWSTR t, HWND p, DLGPROC f) {
3706         return DialogBoxParamW(i, t, p, f, 0);
3707     }
3708 
3709     INT_PTR DialogBoxIndirectA(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) {
3710         return DialogBoxIndirectParamA(i, t, p, f, 0);
3711     }
3712 
3713     INT_PTR DialogBoxIndirectW(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) {
3714         return DialogBoxIndirectParamW(i, t, p, f, 0);
3715     }
3716 
3717     BOOL ExitWindows(UINT r, DWORD c) {
3718         return ExitWindowsEx(EWX_LOGOFF, 0);
3719     }
3720 }
3721 alias GetWindow GetNextWindow;
3722 
3723 extern (Windows) nothrow @nogc:
3724 LONG DispatchMessageA(const(MSG)*);
3725 LONG DispatchMessageW(const(MSG)*);
3726 int DlgDirListA(HWND, LPSTR, int, int, UINT);
3727 int DlgDirListW(HWND, LPWSTR, int, int, UINT);
3728 int DlgDirListComboBoxA(HWND, LPSTR, int, int, UINT);
3729 int DlgDirListComboBoxW(HWND, LPWSTR, int, int, UINT);
3730 BOOL DlgDirSelectComboBoxExA(HWND, LPSTR, int, int);
3731 BOOL DlgDirSelectComboBoxExW(HWND, LPWSTR, int, int);
3732 BOOL DlgDirSelectExA(HWND, LPSTR, int, int);
3733 BOOL DlgDirSelectExW(HWND, LPWSTR, int, int);
3734 BOOL DragDetect(HWND, POINT);
3735 DWORD DragObject(HWND, HWND, UINT, ULONG_PTR, HCURSOR);
3736 BOOL DrawAnimatedRects(HWND, int, LPCRECT, LPCRECT);
3737 BOOL DrawCaption(HWND, HDC, LPCRECT, UINT);
3738 BOOL DrawEdge(HDC, LPRECT, UINT, UINT);
3739 BOOL DrawFocusRect(HDC, LPCRECT);
3740 BOOL DrawFrameControl(HDC, LPRECT, UINT, UINT);
3741 BOOL DrawIcon(HDC, int, int, HICON);
3742 BOOL DrawIconEx(HDC, int, int, HICON, int, int, UINT, HBRUSH, UINT);
3743 BOOL DrawMenuBar(HWND);
3744 BOOL DrawStateA(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT);
3745 BOOL DrawStateW(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT);
3746 int DrawTextA(HDC, LPCSTR, int, LPRECT, UINT);
3747 int DrawTextW(HDC, LPCWSTR, int, LPRECT, UINT);
3748 int DrawTextExA(HDC, LPSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS);
3749 int DrawTextExW(HDC, LPWSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS);
3750 BOOL EmptyClipboard();
3751 BOOL EnableMenuItem(HMENU, UINT, UINT);
3752 BOOL EnableScrollBar(HWND, UINT, UINT);
3753 BOOL EnableWindow(HWND, BOOL);
3754 BOOL EndDeferWindowPos(HDWP);
3755 BOOL EndDialog(HWND, INT_PTR);
3756 BOOL EndMenu();
3757 BOOL EndPaint(HWND, const(PAINTSTRUCT)*);
3758 BOOL EnumChildWindows(HWND, ENUMWINDOWSPROC, LPARAM);
3759 UINT EnumClipboardFormats(UINT);
3760 BOOL EnumDesktopsA(HWINSTA, DESKTOPENUMPROCA, LPARAM);
3761 BOOL EnumDesktopsW(HWINSTA, DESKTOPENUMPROCW, LPARAM);
3762 BOOL EnumDesktopWindows(HDESK, ENUMWINDOWSPROC, LPARAM);
3763 BOOL EnumDisplaySettingsA(LPCSTR, DWORD, PDEVMODEA);
3764 BOOL EnumDisplaySettingsW(LPCWSTR, DWORD, PDEVMODEW);
3765 
3766 BOOL EnumDisplayDevicesA(LPCSTR, DWORD, PDISPLAY_DEVICEA, DWORD);
3767 BOOL EnumDisplayDevicesW(LPCWSTR, DWORD, PDISPLAY_DEVICEW, DWORD);
3768 
3769 int EnumPropsA(HWND, PROPENUMPROCA);
3770 int EnumPropsW(HWND, PROPENUMPROCW);
3771 int EnumPropsExA(HWND, PROPENUMPROCEXA, LPARAM);
3772 int EnumPropsExW(HWND, PROPENUMPROCEXW, LPARAM);
3773 
3774 BOOL EnumThreadWindows(DWORD, WNDENUMPROC, LPARAM);
3775 BOOL EnumWindows(WNDENUMPROC, LPARAM);
3776 BOOL EnumWindowStationsA(WINSTAENUMPROCA, LPARAM);
3777 BOOL EnumWindowStationsW(WINSTAENUMPROCW, LPARAM);
3778 BOOL EqualRect(LPCRECT, LPCRECT);
3779 
3780 BOOL ExitWindowsEx(UINT, DWORD);
3781 HWND FindWindowA(LPCSTR, LPCSTR);
3782 HWND FindWindowExA(HWND, HWND, LPCSTR, LPCSTR);
3783 HWND FindWindowExW(HWND, HWND, LPCWSTR, LPCWSTR);
3784 HWND FindWindowW(LPCWSTR, LPCWSTR);
3785 BOOL FlashWindow(HWND, BOOL);
3786 
3787 int FrameRect(HDC, LPCRECT, HBRUSH);
3788 BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int);
3789 HWND GetActiveWindow();
3790 HWND GetAncestor(HWND, UINT);
3791 SHORT GetAsyncKeyState(int);
3792 HWND GetCapture();
3793 UINT GetCaretBlinkTime();
3794 BOOL GetCaretPos(LPPOINT);
3795 BOOL GetClassInfoA(HINSTANCE, LPCSTR, LPWNDCLASSA);
3796 BOOL GetClassInfoExA(HINSTANCE, LPCSTR, LPWNDCLASSEXA);
3797 BOOL GetClassInfoW(HINSTANCE, LPCWSTR, LPWNDCLASSW);
3798 BOOL GetClassInfoExW(HINSTANCE, LPCWSTR, LPWNDCLASSEXW);
3799 DWORD GetClassLongA(HWND, int);
3800 DWORD GetClassLongW(HWND, int);
3801 int GetClassNameA(HWND, LPSTR, int);
3802 int GetClassNameW(HWND, LPWSTR, int);
3803 WORD GetClassWord(HWND, int);
3804 BOOL GetClientRect(HWND, LPRECT);
3805 HANDLE GetClipboardData(UINT);
3806 int GetClipboardFormatNameA(UINT, LPSTR, int);
3807 int GetClipboardFormatNameW(UINT, LPWSTR, int);
3808 HWND GetClipboardOwner();
3809 HWND GetClipboardViewer();
3810 BOOL GetClipCursor(LPRECT);
3811 BOOL GetCursorPos(LPPOINT);
3812 HDC GetDC(HWND);
3813 HDC GetDCEx(HWND, HRGN, DWORD);
3814 HWND GetDesktopWindow();
3815 int GetDialogBaseUnits();
3816 int GetDlgCtrlID(HWND);
3817 HWND GetDlgItem(HWND, int);
3818 UINT GetDlgItemInt(HWND, int, PBOOL, BOOL);
3819 UINT GetDlgItemTextA(HWND, int, LPSTR, int);
3820 UINT GetDlgItemTextW(HWND, int, LPWSTR, int);
3821 UINT GetDoubleClickTime();
3822 HWND GetFocus();
3823 HWND GetForegroundWindow();
3824 
3825 BOOL GetIconInfo(HICON, PICONINFO);
3826 BOOL GetInputState();
3827 UINT GetKBCodePage();
3828 HKL GetKeyboardLayout(DWORD);
3829 UINT GetKeyboardLayoutList(int, HKL*);
3830 BOOL GetKeyboardLayoutNameA(LPSTR);
3831 BOOL GetKeyboardLayoutNameW(LPWSTR);
3832 BOOL GetKeyboardState(PBYTE);
3833 int GetKeyboardType(int);
3834 int GetKeyNameTextA(LONG, LPSTR, int);
3835 int GetKeyNameTextW(LONG, LPWSTR, int);
3836 SHORT GetKeyState(int);
3837 HWND GetLastActivePopup(HWND);
3838 HMENU GetMenu(HWND);
3839 LONG GetMenuCheckMarkDimensions();
3840 DWORD GetMenuContextHelpId(HMENU);
3841 UINT GetMenuDefaultItem(HMENU, UINT, UINT);
3842 int GetMenuItemCount(HMENU);
3843 UINT GetMenuItemID(HMENU, int);
3844 BOOL GetMenuItemInfoA(HMENU, UINT, BOOL, LPMENUITEMINFOA);
3845 BOOL GetMenuItemInfoW(HMENU, UINT, BOOL, LPMENUITEMINFOW);
3846 BOOL GetMenuItemRect(HWND, HMENU, UINT, LPRECT);
3847 UINT GetMenuState(HMENU, UINT, UINT);
3848 int GetMenuStringA(HMENU, UINT, LPSTR, int, UINT);
3849 int GetMenuStringW(HMENU, UINT, LPWSTR, int, UINT);
3850 BOOL GetMessageA(LPMSG, HWND, UINT, UINT);
3851 BOOL GetMessageW(LPMSG, HWND, UINT, UINT);
3852 LONG GetMessageExtraInfo();
3853 DWORD GetMessagePos();
3854 LONG GetMessageTime();
3855 
3856 HWND GetNextDlgGroupItem(HWND, HWND, BOOL);
3857 HWND GetNextDlgTabItem(HWND, HWND, BOOL);
3858 
3859 HWND GetOpenClipboardWindow();
3860 HWND GetParent(HWND);
3861 int GetPriorityClipboardFormat(UINT*, int);
3862 HANDLE GetPropA(HWND, LPCSTR);
3863 HANDLE GetPropW(HWND, LPCWSTR);
3864 
3865 DWORD GetQueueStatus(UINT);
3866 BOOL GetScrollInfo(HWND, int, LPSCROLLINFO);
3867 int GetScrollPos(HWND, int);
3868 BOOL GetScrollRange(HWND, int, LPINT, LPINT);
3869 
3870 HMENU GetSubMenu(HMENU, int);
3871 DWORD GetSysColor(int);
3872 HBRUSH GetSysColorBrush(int);
3873 
3874 HMENU GetSystemMenu(HWND, BOOL);
3875 int GetSystemMetrics(int);
3876 DWORD GetTabbedTextExtentA(HDC, LPCSTR, int, int, LPINT);
3877 DWORD GetTabbedTextExtentW(HDC, LPCWSTR, int, int, LPINT);
3878 LONG GetWindowLongA(HWND, int);
3879 LONG GetWindowLongW(HWND, int);
3880 
3881 HDESK GetThreadDesktop(DWORD);
3882 HWND GetTopWindow(HWND);
3883 BOOL GetUpdateRect(HWND, LPRECT, BOOL);
3884 int GetUpdateRgn(HWND, HRGN, BOOL);
3885 BOOL GetUserObjectInformationA(HANDLE, int, PVOID, DWORD, PDWORD);
3886 BOOL GetUserObjectInformationW(HANDLE, int, PVOID, DWORD, PDWORD);
3887 BOOL GetUserObjectSecurity(HANDLE, PSECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD);
3888 HWND GetWindow(HWND, UINT);
3889 DWORD GetWindowContextHelpId(HWND);
3890 HDC GetWindowDC(HWND);
3891 BOOL GetWindowPlacement(HWND, WINDOWPLACEMENT*);
3892 BOOL GetWindowRect(HWND, LPRECT);
3893 int GetWindowRgn(HWND, HRGN);
3894 int GetWindowTextA(HWND, LPSTR, int);
3895 int GetWindowTextLengthA(HWND);
3896 int GetWindowTextLengthW(HWND);
3897 int GetWindowTextW(HWND, LPWSTR, int);
3898 WORD GetWindowWord(HWND, int);
3899 BOOL GetAltTabInfoA(HWND, int, PALTTABINFO, LPSTR, UINT);
3900 BOOL GetAltTabInfoW(HWND, int, PALTTABINFO, LPWSTR, UINT);
3901 BOOL GetComboBoxInfo(HWND, PCOMBOBOXINFO);
3902 BOOL GetCursorInfo(PCURSORINFO);
3903 BOOL GetLastInputInfo(PLASTINPUTINFO);
3904 DWORD GetListBoxInfo(HWND);
3905 BOOL GetMenuBarInfo(HWND, LONG, LONG, PMENUBARINFO);
3906 BOOL GetMenuInfo(HMENU, LPMENUINFO);
3907 BOOL GetScrollBarInfo(HWND, LONG, PSCROLLBARINFO);
3908 BOOL GetTitleBarInfo(HWND, PTITLEBARINFO);
3909 BOOL GetWindowInfo(HWND, PWINDOWINFO);
3910 UINT GetWindowModuleFileNameA(HWND, LPSTR, UINT);
3911 UINT GetWindowModuleFileNameW(HWND, LPWSTR, UINT);
3912 BOOL GrayStringA(HDC, HBRUSH, GRAYSTRINGPROC, LPARAM, int, int, int, int, int);
3913 BOOL GrayStringW(HDC, HBRUSH, GRAYSTRINGPROC, LPARAM, int, int, int, int, int);
3914 BOOL HideCaret(HWND);
3915 BOOL HiliteMenuItem(HWND, HMENU, UINT, UINT);
3916 BOOL InflateRect(LPRECT, int, int);
3917 BOOL InSendMessage();
3918 BOOL InsertMenuA(HMENU, UINT, UINT, UINT_PTR, LPCSTR);
3919 BOOL InsertMenuW(HMENU, UINT, UINT, UINT_PTR, LPCWSTR);
3920 BOOL InsertMenuItemA(HMENU, UINT, BOOL, LPCMENUITEMINFOA);
3921 BOOL InsertMenuItemW(HMENU, UINT, BOOL, LPCMENUITEMINFOW);
3922 INT InternalGetWindowText(HWND, LPWSTR, INT);
3923 BOOL IntersectRect(LPRECT, LPCRECT, LPCRECT);
3924 BOOL InvalidateRect(HWND, LPCRECT, BOOL);
3925 BOOL InvalidateRgn(HWND, HRGN, BOOL);
3926 BOOL InvertRect(HDC, LPCRECT);
3927 BOOL IsCharAlphaA(CHAR ch);
3928 BOOL IsCharAlphaNumericA(CHAR);
3929 BOOL IsCharAlphaNumericW(WCHAR);
3930 BOOL IsCharAlphaW(WCHAR);
3931 BOOL IsCharLowerA(CHAR);
3932 BOOL IsCharLowerW(WCHAR);
3933 BOOL IsCharUpperA(CHAR);
3934 BOOL IsCharUpperW(WCHAR);
3935 BOOL IsChild(HWND, HWND);
3936 BOOL IsClipboardFormatAvailable(UINT);
3937 BOOL IsDialogMessageA(HWND, LPMSG);
3938 BOOL IsDialogMessageW(HWND, LPMSG);
3939 UINT IsDlgButtonChecked(HWND, int);
3940 BOOL IsIconic(HWND);
3941 BOOL IsMenu(HMENU);
3942 BOOL IsRectEmpty(LPCRECT);
3943 BOOL IsWindow(HWND);
3944 BOOL IsWindowEnabled(HWND);
3945 BOOL IsWindowUnicode(HWND);
3946 BOOL IsWindowVisible(HWND);
3947 BOOL IsZoomed(HWND);
3948 void keybd_event(BYTE, BYTE, DWORD, ULONG_PTR);
3949 BOOL KillTimer(HWND, UINT_PTR);
3950 HACCEL LoadAcceleratorsA(HINSTANCE, LPCSTR);
3951 HACCEL LoadAcceleratorsW(HINSTANCE, LPCWSTR);
3952 HBITMAP LoadBitmapA(HINSTANCE, LPCSTR);
3953 HBITMAP LoadBitmapW(HINSTANCE, LPCWSTR);
3954 HCURSOR LoadCursorA(HINSTANCE, LPCSTR);
3955 HCURSOR LoadCursorFromFileA(LPCSTR);
3956 HCURSOR LoadCursorFromFileW(LPCWSTR);
3957 HCURSOR LoadCursorW(HINSTANCE, LPCWSTR);
3958 HICON LoadIconA(HINSTANCE, LPCSTR);
3959 HICON LoadIconW(HINSTANCE, LPCWSTR);
3960 HANDLE LoadImageA(HINSTANCE, LPCSTR, UINT, int, int, UINT);
3961 HANDLE LoadImageW(HINSTANCE, LPCWSTR, UINT, int, int, UINT);
3962 HKL LoadKeyboardLayoutA(LPCSTR, UINT);
3963 HKL LoadKeyboardLayoutW(LPCWSTR, UINT);
3964 HMENU LoadMenuA(HINSTANCE, LPCSTR);
3965 HMENU LoadMenuIndirectA(const(MENUTEMPLATE)*);
3966 HMENU LoadMenuIndirectW(const(MENUTEMPLATE)*);
3967 HMENU LoadMenuW(HINSTANCE, LPCWSTR);
3968 int LoadStringA(HINSTANCE, UINT, LPSTR, int);
3969 int LoadStringW(HINSTANCE, UINT, LPWSTR, int);
3970 BOOL LockWindowUpdate(HWND);
3971 int LookupIconIdFromDirectory(PBYTE, BOOL);
3972 int LookupIconIdFromDirectoryEx(PBYTE, BOOL, int, int, UINT);
3973 BOOL MapDialogRect(HWND, LPRECT);
3974 UINT MapVirtualKeyA(UINT, UINT);
3975 UINT MapVirtualKeyExA(UINT, UINT, HKL);
3976 UINT MapVirtualKeyExW(UINT, UINT, HKL);
3977 UINT MapVirtualKeyW(UINT, UINT);
3978 int MapWindowPoints(HWND, HWND, LPPOINT, UINT);
3979 int MenuItemFromPoint(HWND, HMENU, POINT);
3980 BOOL MessageBeep(UINT);
3981 int MessageBoxA(HWND, LPCSTR, LPCSTR, UINT);
3982 int MessageBoxW(HWND, LPCWSTR, LPCWSTR, UINT);
3983 int MessageBoxExA(HWND, LPCSTR, LPCSTR, UINT, WORD);
3984 int MessageBoxExW(HWND, LPCWSTR, LPCWSTR, UINT, WORD);
3985 int MessageBoxIndirectA(const(MSGBOXPARAMSA)*);
3986 int MessageBoxIndirectW(const(MSGBOXPARAMSW)*);
3987 BOOL ModifyMenuA(HMENU, UINT, UINT, UINT_PTR, LPCSTR);
3988 BOOL ModifyMenuW(HMENU, UINT, UINT, UINT_PTR, LPCWSTR);
3989 void mouse_event(DWORD, DWORD, DWORD, DWORD, ULONG_PTR);
3990 BOOL MoveWindow(HWND, int, int, int, int, BOOL);
3991 DWORD MsgWaitForMultipleObjects(DWORD, const(HANDLE)*, BOOL, DWORD, DWORD);
3992 DWORD MsgWaitForMultipleObjectsEx(DWORD, const(HANDLE)*, DWORD, DWORD, DWORD);
3993 DWORD OemKeyScan(WORD);
3994 BOOL OemToCharA(LPCSTR, LPSTR);
3995 BOOL OemToCharBuffA(LPCSTR, LPSTR, DWORD);
3996 BOOL OemToCharBuffW(LPCSTR, LPWSTR, DWORD);
3997 BOOL OemToCharW(LPCSTR, LPWSTR);
3998 BOOL OffsetRect(LPRECT, int, int);
3999 BOOL OpenClipboard(HWND);
4000 HDESK OpenDesktopA(LPSTR, DWORD, BOOL, DWORD);
4001 HDESK OpenDesktopW(LPWSTR, DWORD, BOOL, DWORD);
4002 BOOL OpenIcon(HWND);
4003 HDESK OpenInputDesktop(DWORD, BOOL, DWORD);
4004 HWINSTA OpenWindowStationA(LPSTR, BOOL, DWORD);
4005 HWINSTA OpenWindowStationW(LPWSTR, BOOL, DWORD);
4006 BOOL PaintDesktop(HDC);
4007 BOOL PeekMessageA(LPMSG, HWND, UINT, UINT, UINT);
4008 BOOL PeekMessageW(LPMSG, HWND, UINT, UINT, UINT);
4009 BOOL PostMessageA(HWND, UINT, WPARAM, LPARAM);
4010 BOOL PostMessageW(HWND, UINT, WPARAM, LPARAM);
4011 void PostQuitMessage(int);
4012 BOOL PostThreadMessageA(DWORD, UINT, WPARAM, LPARAM);
4013 BOOL PostThreadMessageW(DWORD, UINT, WPARAM, LPARAM);
4014 BOOL PtInRect(LPCRECT, POINT);
4015 HWND RealChildWindowFromPoint(HWND, POINT);
4016 UINT RealGetWindowClassA(HWND, LPSTR, UINT);
4017 UINT RealGetWindowClassW(HWND, LPWSTR, UINT);
4018 BOOL RedrawWindow(HWND, LPCRECT, HRGN, UINT);
4019 ATOM RegisterClassA(const(WNDCLASSA)*);
4020 ATOM RegisterClassW(const(WNDCLASSW)*);
4021 ATOM RegisterClassExA(const(WNDCLASSEXA)*);
4022 ATOM RegisterClassExW(const(WNDCLASSEXW)*);
4023 UINT RegisterClipboardFormatA(LPCSTR);
4024 UINT RegisterClipboardFormatW(LPCWSTR);
4025 BOOL RegisterHotKey(HWND, int, UINT, UINT);
4026 UINT RegisterWindowMessageA(LPCSTR);
4027 UINT RegisterWindowMessageW(LPCWSTR);
4028 BOOL ReleaseCapture();
4029 int ReleaseDC(HWND, HDC);
4030 BOOL RemoveMenu(HMENU, UINT, UINT);
4031 HANDLE RemovePropA(HWND, LPCSTR);
4032 HANDLE RemovePropW(HWND, LPCWSTR);
4033 BOOL ReplyMessage(LRESULT);
4034 BOOL ScreenToClient(HWND, LPPOINT);
4035 BOOL ScrollDC(HDC, int, int, LPCRECT, LPCRECT, HRGN, LPRECT);
4036 BOOL ScrollWindow(HWND, int, int, LPCRECT, LPCRECT);
4037 int ScrollWindowEx(HWND, int, int, LPCRECT, LPCRECT, HRGN, LPRECT, UINT);
4038 LONG SendDlgItemMessageA(HWND, int, UINT, WPARAM, LPARAM);
4039 LONG SendDlgItemMessageW(HWND, int, UINT, WPARAM, LPARAM);
4040 LRESULT SendMessageA(HWND, UINT, WPARAM, LPARAM);
4041 BOOL SendMessageCallbackA(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, ULONG_PTR);
4042 BOOL SendMessageCallbackW(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, ULONG_PTR);
4043 LRESULT SendMessageTimeoutA(HWND, UINT, WPARAM, LPARAM, UINT, UINT, PDWORD);
4044 LRESULT SendMessageTimeoutW(HWND, UINT, WPARAM, LPARAM, UINT, UINT, PDWORD);
4045 LRESULT SendMessageW(HWND, UINT, WPARAM, LPARAM);
4046 BOOL SendNotifyMessageA(HWND, UINT, WPARAM, LPARAM);
4047 BOOL SendNotifyMessageW(HWND, UINT, WPARAM, LPARAM);
4048 HWND SetActiveWindow(HWND);
4049 HWND SetCapture(HWND hWnd);
4050 BOOL SetCaretBlinkTime(UINT);
4051 BOOL SetCaretPos(int, int);
4052 DWORD SetClassLongA(HWND, int, LONG);
4053 DWORD SetClassLongW(HWND, int, LONG);
4054 WORD SetClassWord(HWND, int, WORD);
4055 HANDLE SetClipboardData(UINT, HANDLE);
4056 HWND SetClipboardViewer(HWND);
4057 HCURSOR SetCursor(HCURSOR);
4058 BOOL SetCursorPos(int, int);
4059 void SetDebugErrorLevel(DWORD);
4060 BOOL SetDlgItemInt(HWND, int, UINT, BOOL);
4061 BOOL SetDlgItemTextA(HWND, int, LPCSTR);
4062 BOOL SetDlgItemTextW(HWND, int, LPCWSTR);
4063 BOOL SetDoubleClickTime(UINT);
4064 HWND SetFocus(HWND);
4065 BOOL SetForegroundWindow(HWND);
4066 BOOL SetKeyboardState(PBYTE);
4067 BOOL SetMenu(HWND, HMENU);
4068 BOOL SetMenuContextHelpId(HMENU, DWORD);
4069 BOOL SetMenuDefaultItem(HMENU, UINT, UINT);
4070 BOOL SetMenuInfo(HMENU, LPCMENUINFO);
4071 BOOL SetMenuItemBitmaps(HMENU, UINT, UINT, HBITMAP, HBITMAP);
4072 BOOL SetMenuItemInfoA(HMENU, UINT, BOOL, LPCMENUITEMINFOA);
4073 BOOL SetMenuItemInfoW(HMENU, UINT, BOOL, LPCMENUITEMINFOW);
4074 LPARAM SetMessageExtraInfo(LPARAM);
4075 BOOL SetMessageQueue(int);
4076 HWND SetParent(HWND, HWND);
4077 BOOL SetProcessWindowStation(HWINSTA);
4078 BOOL SetPropA(HWND, LPCSTR, HANDLE);
4079 BOOL SetPropW(HWND, LPCWSTR, HANDLE);
4080 BOOL SetRect(LPRECT, int, int, int, int);
4081 BOOL SetRectEmpty(LPRECT);
4082 int SetScrollInfo(HWND, int, LPCSCROLLINFO, BOOL);
4083 int SetScrollPos(HWND, int, int, BOOL);
4084 BOOL SetScrollRange(HWND, int, int, int, BOOL);
4085 BOOL SetSysColors(int, const(INT)*, const(COLORREF)*);
4086 BOOL SetSystemCursor(HCURSOR, DWORD);
4087 BOOL SetThreadDesktop(HDESK);
4088 UINT_PTR SetTimer(HWND, UINT_PTR, UINT, TIMERPROC);
4089 BOOL SetUserObjectInformationA(HANDLE, int, PVOID, DWORD);
4090 BOOL SetUserObjectInformationW(HANDLE, int, PVOID, DWORD);
4091 BOOL SetUserObjectSecurity(HANDLE, PSECURITY_INFORMATION, PSECURITY_DESCRIPTOR);
4092 BOOL SetWindowContextHelpId(HWND, DWORD);
4093 LONG SetWindowLongA(HWND, int, LONG);
4094 LONG SetWindowLongW(HWND, int, LONG);
4095 BOOL SetWindowPlacement(HWND hWnd, const(WINDOWPLACEMENT)*);
4096 BOOL SetWindowPos(HWND, HWND, int, int, int, int, UINT);
4097 int SetWindowRgn(HWND, HRGN, BOOL);
4098 HHOOK SetWindowsHookA(int, HOOKPROC);
4099 HHOOK SetWindowsHookW(int, HOOKPROC);
4100 HHOOK SetWindowsHookExA(int, HOOKPROC, HINSTANCE, DWORD);
4101 HHOOK SetWindowsHookExW(int, HOOKPROC, HINSTANCE, DWORD);
4102 BOOL SetWindowTextA(HWND, LPCSTR);
4103 BOOL SetWindowTextW(HWND, LPCWSTR);
4104 WORD SetWindowWord(HWND, int, WORD);
4105 BOOL ShowCaret(HWND);
4106 int ShowCursor(BOOL);
4107 BOOL ShowOwnedPopups(HWND, BOOL);
4108 BOOL ShowScrollBar(HWND, int, BOOL);
4109 BOOL ShowWindow(HWND, int);
4110 BOOL ShowWindowAsync(HWND, int);
4111 BOOL SubtractRect(LPRECT, LPCRECT, LPCRECT);
4112 BOOL SwapMouseButton(BOOL);
4113 BOOL SwitchDesktop(HDESK);
4114 BOOL SystemParametersInfoA(UINT, UINT, PVOID, UINT);
4115 BOOL SystemParametersInfoW(UINT, UINT, PVOID, UINT);
4116 LONG TabbedTextOutA(HDC, int, int, LPCSTR, int, int, LPINT, int);
4117 LONG TabbedTextOutW(HDC, int, int, LPCWSTR, int, int, LPINT, int);
4118 WORD TileWindows(HWND, UINT, LPCRECT, UINT, const(HWND)*);
4119 int ToAscii(UINT, UINT, PBYTE, LPWORD, UINT);
4120 int ToAsciiEx(UINT, UINT, PBYTE, LPWORD, UINT, HKL);
4121 int ToUnicode(UINT, UINT, PBYTE, LPWSTR, int, UINT);
4122 int ToUnicodeEx(UINT, UINT, PBYTE, LPWSTR, int, UINT, HKL);
4123 BOOL TrackMouseEvent(LPTRACKMOUSEEVENT);
4124 BOOL TrackPopupMenu(HMENU, UINT, int, int, int, HWND, LPCRECT);
4125 BOOL TrackPopupMenuEx(HMENU, UINT, int, int, HWND, LPTPMPARAMS);
4126 int TranslateAcceleratorA(HWND, HACCEL, LPMSG);
4127 int TranslateAcceleratorW(HWND, HACCEL, LPMSG);
4128 BOOL TranslateMDISysAccel(HWND, LPMSG);
4129 BOOL TranslateMessage(const(MSG)*);
4130 BOOL UnhookWindowsHook(int, HOOKPROC);
4131 BOOL UnhookWindowsHookEx(HHOOK);
4132 BOOL UnionRect(LPRECT, LPCRECT, LPCRECT);
4133 BOOL UnloadKeyboardLayout(HKL);
4134 BOOL UnregisterClassA(LPCSTR, HINSTANCE);
4135 BOOL UnregisterClassW(LPCWSTR, HINSTANCE);
4136 BOOL UnregisterHotKey(HWND, int);
4137 BOOL UpdateWindow(HWND);
4138 BOOL ValidateRect(HWND, LPCRECT);
4139 BOOL ValidateRgn(HWND, HRGN);
4140 SHORT VkKeyScanA(CHAR);
4141 SHORT VkKeyScanExA(CHAR, HKL);
4142 SHORT VkKeyScanExW(WCHAR, HKL);
4143 SHORT VkKeyScanW(WCHAR);
4144 DWORD WaitForInputIdle(HANDLE, DWORD);
4145 BOOL WaitMessage();
4146 HWND WindowFromDC(HDC hDC);
4147 HWND WindowFromPoint(POINT);
4148 UINT WinExec(LPCSTR, UINT);
4149 BOOL WinHelpA(HWND, LPCSTR, UINT, ULONG_PTR);
4150 BOOL WinHelpW(HWND, LPCWSTR, UINT, ULONG_PTR);
4151 
4152 extern (C) {
4153     int wsprintfA(LPSTR, LPCSTR, ...);
4154     int wsprintfW(LPWSTR, LPCWSTR, ...);
4155 }
4156 
4157 
4158 // These shouldn't be necessary for D.
4159 alias TypeDef!(char*) va_list_;
4160 int wvsprintfA(LPSTR, LPCSTR, va_list_ arglist);
4161 int wvsprintfW(LPWSTR, LPCWSTR, va_list_ arglist);
4162 
4163 enum : DWORD {
4164     MONITOR_DEFAULTTONULL,
4165     MONITOR_DEFAULTTOPRIMARY,
4166     MONITOR_DEFAULTTONEAREST // = 2
4167 }
4168 enum MONITORINFOF_PRIMARY = 1;
4169 
4170 enum EDS_RAWMODE = 0x00000002;
4171 
4172 enum {
4173     ISMEX_NOSEND   = 0,
4174     ISMEX_SEND     = 1,
4175     ISMEX_NOTIFY   = 2,
4176     ISMEX_CALLBACK = 4,
4177     ISMEX_REPLIED  = 8
4178 }
4179 
4180 struct TITLEBARINFO {
4181     DWORD cbSize = TITLEBARINFO.sizeof;
4182     RECT  rcTitleBar;
4183     DWORD[CCHILDREN_TITLEBAR+1] rgstate;
4184 }
4185 alias TITLEBARINFO* PTITLEBARINFO, LPTITLEBARINFO;
4186 
4187 static if (_WIN32_WINNT >= 0x501) { // *** correct?
4188     struct FLASHWINFO {
4189         UINT  cbSize = this.sizeof;
4190         HWND  hwnd;
4191         DWORD dwFlags;
4192         UINT  uCount;
4193         DWORD dwTimeout;
4194     }
4195     alias FLASHWINFO* PFLASHWINFO;
4196 }
4197 
4198 enum DWORD ASFW_ANY = -1;
4199 enum : UINT {
4200     LSFW_LOCK = 1,
4201     LSFW_UNLOCK
4202 }
4203 enum {
4204     GMMP_USE_DISPLAY_POINTS = 1,
4205     GMMP_USE_HIGH_RESOLUTION_POINTS
4206 }
4207 
4208 struct MOUSEMOVEPOINT {
4209     int x;
4210     int y;
4211     DWORD time;
4212     ULONG_PTR dwExtraInfo;
4213 }
4214 alias MOUSEMOVEPOINT* PMOUSEMOVEPOINT, LPMOUSEMOVEPOINT;
4215 
4216 enum {
4217     MIM_MAXHEIGHT       =  1,
4218     MIM_BACKGROUND      =  2,
4219     MIM_HELPID          =  4,
4220     MIM_MENUDATA        =  8,
4221     MIM_STYLE           = 16,
4222     MIM_APPLYTOSUBMENUS = 0x80000000L
4223 }
4224 
4225 enum {
4226     MNS_NOCHECK     = 0x80000000,
4227     MNS_MODELESS    = 0x40000000,
4228     MNS_DRAGDROP    = 0x20000000,
4229     MNS_AUTODISMISS = 0x10000000,
4230     MNS_NOTIFYBYPOS = 0x08000000,
4231     MNS_CHECKORBMP  = 0x04000000
4232 }
4233 
4234 enum {
4235     PM_QS_INPUT       = (QS_INPUT << 16),
4236     PM_QS_POSTMESSAGE = ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16),
4237     PM_QS_PAINT       = (QS_PAINT << 16),
4238     PM_QS_SENDMESSAGE = (QS_SENDMESSAGE << 16)
4239 }
4240 /*
4241 #define WM_GETOBJECT 0x003D
4242 #define WM_CHANGEUISTATE 0x0127
4243 #define WM_UPDATEUISTATE 0x0128
4244 #define WM_QUERYUISTATE 0x0129
4245 #define WM_UNINITMENUPOPUP 0x0125
4246 #define WM_MENURBUTTONUP 290
4247 #define WM_MENUCOMMAND 0x0126
4248 #define WM_MENUGETOBJECT 0x0124
4249 #define WM_MENUDRAG 0x0123
4250 #define WM_APPCOMMAND 0x0319
4251 #define WM_NCXBUTTONDOWN 171
4252 #define WM_NCXBUTTONUP 172
4253 #define WM_NCXBUTTONDBLCLK 173
4254 #define WM_NCMOUSEHOVER 0x02A0
4255 #define WM_NCMOUSELEAVE 0x02A2*/
4256 
4257 enum {
4258     FLASHW_STOP      = 0,
4259     FLASHW_CAPTION   = 0x01,
4260     FLASHW_TRAY      = 0x02,
4261     FLASHW_ALL       = 0x03,
4262     FLASHW_TIMER     = 0x04,
4263     FLASHW_TIMERNOFG = 0x0C
4264 }
4265 
4266 enum CHILDID_SELF = 0;
4267 
4268 enum {
4269     OBJID_WINDOW   = 0x00000000,
4270     OBJID_SOUND    = 0xFFFFFFF5,
4271     OBJID_ALERT    = 0xFFFFFFF6,
4272     OBJID_CURSOR   = 0xFFFFFFF7,
4273     OBJID_CARET    = 0xFFFFFFF8,
4274     OBJID_SIZEGRIP = 0xFFFFFFF9,
4275     OBJID_HSCROLL  = 0xFFFFFFFA,
4276     OBJID_VSCROLL  = 0xFFFFFFFB,
4277     OBJID_CLIENT   = 0xFFFFFFFC,
4278     OBJID_MENU     = 0xFFFFFFFD,
4279     OBJID_TITLEBAR = 0xFFFFFFFE,
4280     OBJID_SYSMENU  = 0xFFFFFFFF
4281 }
4282 
4283 enum {
4284     GUI_CARETBLINKING  = 0x0001,
4285     GUI_INMOVESIZE     = 0x0002,
4286     GUI_INMENUMODE     = 0x0004,
4287     GUI_SYSTEMMENUMODE = 0x0008,
4288     GUI_POPUPMENUMODE  = 0x0010
4289 }
4290 static if (_WIN32_WINNT >= 0x501) {
4291     enum GUI_16BITTASK = 0x0020;
4292 }
4293 
4294 enum {
4295     WINEVENT_OUTOFCONTEXT   = 0x00,
4296     WINEVENT_SKIPOWNTHREAD  = 0x01,
4297     WINEVENT_SKIPOWNPROCESS = 0x02,
4298     WINEVENT_INCONTEXT      = 0x04
4299 }
4300 
4301 enum {
4302     AW_HOR_POSITIVE = 0x00000001,
4303     AW_HOR_NEGATIVE = 0x00000002,
4304     AW_VER_POSITIVE = 0x00000004,
4305     AW_VER_NEGATIVE = 0x00000008,
4306     AW_CENTER       = 0x00000010,
4307     AW_HIDE         = 0x00010000,
4308     AW_ACTIVATE     = 0x00020000,
4309     AW_SLIDE        = 0x00040000,
4310     AW_BLEND        = 0x00080000
4311 }
4312 
4313 enum {
4314     DEVICE_NOTIFY_WINDOW_HANDLE  = 0x00000000,
4315     DEVICE_NOTIFY_SERVICE_HANDLE = 0x00000001
4316 }
4317 
4318 static if (_WIN32_WINNT >= 0x501) {
4319     enum DEVICE_NOTIFY_ALL_INTERFACE_CLASSES = 0x00000004;
4320 }
4321 
4322 enum : DWORD {
4323     EVENT_MIN                          = 0x00000001,
4324     EVENT_SYSTEM_SOUND                 = 0x00000001,
4325     EVENT_SYSTEM_ALERT,
4326     EVENT_SYSTEM_FOREGROUND,
4327     EVENT_SYSTEM_MENUSTART,
4328     EVENT_SYSTEM_MENUEND,
4329     EVENT_SYSTEM_MENUPOPUPSTART,
4330     EVENT_SYSTEM_MENUPOPUPEND,
4331     EVENT_SYSTEM_CAPTURESTART,
4332     EVENT_SYSTEM_CAPTUREEND,
4333     EVENT_SYSTEM_MOVESIZESTART,
4334     EVENT_SYSTEM_MOVESIZEEND,
4335     EVENT_SYSTEM_CONTEXTHELPSTART,
4336     EVENT_SYSTEM_CONTEXTHELPEND,
4337     EVENT_SYSTEM_DRAGDROPSTART,
4338     EVENT_SYSTEM_DRAGDROPEND,
4339     EVENT_SYSTEM_DIALOGSTART,
4340     EVENT_SYSTEM_DIALOGEND,
4341     EVENT_SYSTEM_SCROLLINGSTART,
4342     EVENT_SYSTEM_SCROLLINGEND,
4343     EVENT_SYSTEM_SWITCHSTART,
4344     EVENT_SYSTEM_SWITCHEND,
4345     EVENT_SYSTEM_MINIMIZESTART,
4346     EVENT_SYSTEM_MINIMIZEEND,       // = 0x00000017
4347     EVENT_OBJECT_CREATE                = 0x00008000,
4348     EVENT_OBJECT_DESTROY,
4349     EVENT_OBJECT_SHOW,
4350     EVENT_OBJECT_HIDE,
4351     EVENT_OBJECT_REORDER,
4352     EVENT_OBJECT_FOCUS,
4353     EVENT_OBJECT_SELECTION,
4354     EVENT_OBJECT_SELECTIONADD,
4355     EVENT_OBJECT_SELECTIONREMOVE,
4356     EVENT_OBJECT_SELECTIONWITHIN,
4357     EVENT_OBJECT_STATECHANGE,
4358     EVENT_OBJECT_LOCATIONCHANGE,
4359     EVENT_OBJECT_NAMECHANGE,
4360     EVENT_OBJECT_DESCRIPTIONCHANGE,
4361     EVENT_OBJECT_VALUECHANGE,
4362     EVENT_OBJECT_PARENTCHANGE,
4363     EVENT_OBJECT_HELPCHANGE,
4364     EVENT_OBJECT_DEFACTIONCHANGE,
4365     EVENT_OBJECT_ACCELERATORCHANGE, // = 0x00008012
4366     EVENT_MAX                          = 0x7FFFFFFF
4367 }
4368 
4369 static if (_WIN32_WINNT >= 0x501) {
4370     enum : DWORD {
4371         EVENT_CONSOLE_CARET                = 0x00004000,
4372         EVENT_CONSOLE_UPDATE_REGION,
4373         EVENT_CONSOLE_UPDATE_SIMPLE,
4374         EVENT_CONSOLE_UPDATE_SCROLL,
4375         EVENT_CONSOLE_LAYOUT,
4376         EVENT_CONSOLE_START_APPLICATION,
4377         EVENT_CONSOLE_END_APPLICATION,  // = 0x00004007
4378     }
4379 
4380     enum : LONG {
4381         CONSOLE_CARET_SELECTION  = 1,
4382         CONSOLE_CARET_VISIBLE // = 2
4383     }
4384     enum LONG CONSOLE_APPLICATION_16BIT = 1;
4385 }
4386 
4387 enum {
4388     LWA_COLORKEY = 1,
4389     LWA_ALPHA
4390 }
4391 enum {
4392     ULW_COLORKEY = 1,
4393     ULW_ALPHA    = 2,
4394     ULW_OPAQUE   = 4
4395 }
4396 enum {
4397     GR_GDIOBJECTS,
4398     GR_USEROBJECTS
4399 }
4400 
4401 enum {
4402     XBUTTON1 = 1,
4403     XBUTTON2
4404 }
4405 
4406 struct GUITHREADINFO {
4407     DWORD cbSize = this.sizeof;
4408     DWORD flags;
4409     HWND  hwndActive;
4410     HWND  hwndFocus;
4411     HWND  hwndCapture;
4412     HWND  hwndMenuOwner;
4413     HWND  hwndMoveSize;
4414     HWND  hwndCaret;
4415     RECT  rcCaret;
4416 }
4417 alias GUITHREADINFO* PGUITHREADINFO, LPGUITHREADINFO;
4418 extern (Windows) {
4419     alias void function(HWINEVENTHOOK, DWORD, HWND, LONG, LONG, DWORD, DWORD) WINEVENTPROC;
4420 }
4421 // *** line 4680 of MinGW 4.0
4422 int BroadcastSystemMessageA(DWORD, LPDWORD, UINT, WPARAM, LPARAM);
4423 int BroadcastSystemMessageW(DWORD, LPDWORD, UINT, WPARAM, LPARAM);
4424 
4425 UINT SendInput(UINT, LPINPUT, int);
4426 BOOL EnumDisplayMonitors(HDC, LPCRECT, MONITORENUMPROC, LPARAM);
4427 BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFO);
4428 extern(D) BOOL GetMonitorInfoA(HMONITOR m, LPMONITORINFOEXA mi) { return GetMonitorInfoA(m, cast(LPMONITORINFO)mi); }
4429 BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFO);
4430 extern(D) BOOL GetMonitorInfoW(HMONITOR m, LPMONITORINFOEXW mi) { return GetMonitorInfoW(m, cast(LPMONITORINFO)mi); }
4431 HMONITOR MonitorFromPoint(POINT, DWORD);
4432 HMONITOR MonitorFromRect(LPCRECT, DWORD);
4433 HMONITOR MonitorFromWindow(HWND, DWORD);
4434 BOOL AllowSetForegroundWindow(DWORD);
4435 BOOL AnimateWindow(HWND, DWORD, DWORD);
4436 BOOL EndTask(HWND, BOOL, BOOL);
4437 BOOL EnumDisplaySettingsExA(LPCSTR, DWORD, LPDEVMODEA, DWORD);
4438 BOOL EnumDisplaySettingsExW(LPCWSTR, DWORD, LPDEVMODEW, DWORD);
4439 DWORD GetClipboardSequenceNumber();
4440 DWORD GetGuiResources(HANDLE, DWORD);
4441 BOOL GetGUIThreadInfo(DWORD, LPGUITHREADINFO);
4442 
4443 int GetMouseMovePointsEx(UINT, LPMOUSEMOVEPOINT, LPMOUSEMOVEPOINT, int, DWORD);
4444 BOOL GetProcessDefaultLayout(DWORD*);
4445 HWND GetShellWindow();
4446 BOOL IsHungAppWindow(HWND);
4447 DWORD InSendMessageEx(LPVOID);
4448 BOOL LockSetForegroundWindow(UINT);
4449 BOOL LockWorkStation();
4450 void NotifyWinEvent(DWORD, HWND, LONG, LONG);
4451 HDEVNOTIFY RegisterDeviceNotificationA(HANDLE, LPVOID, DWORD);
4452 HDEVNOTIFY RegisterDeviceNotificationW(HANDLE, LPVOID, DWORD);
4453 BOOL SetProcessDefaultLayout(DWORD);
4454 HWINEVENTHOOK SetWinEventHook(UINT, UINT, HMODULE, WINEVENTPROC, DWORD, DWORD, UINT);
4455 void SwitchToThisWindow(HWND, BOOL);
4456 BOOL SetLayeredWindowAttributes(HWND, COLORREF, BYTE, DWORD);
4457 BOOL UpdateLayeredWindow(HWND, HDC, POINT*, SIZE*, HDC, POINT*, COLORREF, BLENDFUNCTION*, DWORD);
4458 BOOL UserHandleGrantAccess(HANDLE, HANDLE, BOOL);
4459 BOOL UnhookWinEvent(HWINEVENTHOOK);
4460 BOOL UnregisterDeviceNotification(HANDLE);
4461 
4462 static if (_WIN32_WINNT >= 0x501) {
4463     int BroadcastSystemMessageExA(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO);
4464     int BroadcastSystemMessageExW(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO);
4465     LRESULT DefRawInputProc(PRAWINPUT*, INT, UINT);
4466     BOOL FlashWindowEx(PFLASHWINFO);
4467     BOOL GetLayeredWindowAttributes(HWND, COLORREF*, BYTE*, DWORD*);
4468     UINT GetRawInputBuffer(PRAWINPUT, PUINT, UINT);
4469     UINT GetRawInputData(HRAWINPUT, UINT, LPVOID, PUINT, UINT);
4470     UINT GetRawInputDeviceInfoA(HANDLE, UINT, LPVOID, PUINT);
4471     UINT GetRawInputDeviceInfoW(HANDLE, UINT, LPVOID, PUINT);
4472     UINT GetRawInputDeviceList(PRAWINPUTDEVICELIST, PUINT, UINT);
4473     UINT GetRegisteredRawInputDevices(PRAWINPUTDEVICE, PUINT, UINT);
4474     BOOL IsGUIThread(BOOL);
4475     BOOL IsWinEventHookInstalled(DWORD);
4476     BOOL PrintWindow(HWND, HDC, UINT);
4477     BOOL RegisterRawInputDevices(PCRAWINPUTDEVICE, UINT, UINT);
4478 }
4479 
4480 version (Win64) {
4481     ULONG_PTR GetClassLongPtrA(HWND, int);
4482     ULONG_PTR GetClassLongPtrW(HWND, int);
4483     ULONG_PTR SetClassLongPtrA(HWND, int, LONG_PTR);
4484     ULONG_PTR SetClassLongPtrW(HWND, int, LONG_PTR);
4485     LONG_PTR GetWindowLongPtrA(HWND, int);
4486     LONG_PTR GetWindowLongPtrW(HWND, int);
4487     LONG_PTR SetWindowLongPtrA(HWND, int, LONG_PTR);
4488     LONG_PTR SetWindowLongPtrW(HWND, int, LONG_PTR);
4489 } else {
4490     alias GetClassLongA GetClassLongPtrA;
4491     alias GetClassLongW GetClassLongPtrW;
4492     alias SetClassLongA SetClassLongPtrA;
4493     alias SetClassLongW SetClassLongPtrW;
4494     alias GetWindowLongA GetWindowLongPtrA;
4495     alias GetWindowLongW GetWindowLongPtrW;
4496     alias SetWindowLongA SetWindowLongPtrA;
4497     alias SetWindowLongW SetWindowLongPtrW;
4498 }
4499 
4500 
4501 // -----
4502 // Aliases for Unicode or Ansi
4503 version (Unicode) {
4504     alias EDITWORDBREAKPROCW EDITWORDBREAKPROC;
4505     alias PROPENUMPROCW PROPENUMPROC;
4506     alias PROPENUMPROCEXW PROPENUMPROCEX;
4507     alias DESKTOPENUMPROCW DESKTOPENUMPROC;
4508     alias WINSTAENUMPROCW WINSTAENUMPROC;
4509     alias MAKEINTRESOURCEW MAKEINTRESOURCE;
4510 
4511     alias WNDCLASSW WNDCLASS;
4512     alias WNDCLASSEXW WNDCLASSEX;
4513     alias MENUITEMINFOW MENUITEMINFO;
4514     alias LPCMENUITEMINFOW LPCMENUITEMINFO;
4515     alias MSGBOXPARAMSW MSGBOXPARAMS;
4516     alias HIGHCONTRASTW HIGHCONTRAST;
4517     alias SERIALKEYSW SERIALKEYS;
4518     alias SOUNDSENTRYW SOUNDSENTRY;
4519     alias CREATESTRUCTW CREATESTRUCT;
4520     alias CBT_CREATEWNDW CBT_CREATEWND;
4521     alias MDICREATESTRUCTW MDICREATESTRUCT;
4522     alias MULTIKEYHELPW MULTIKEYHELP;
4523     alias MONITORINFOEXW MONITORINFOEX;
4524     alias ICONMETRICSW ICONMETRICS;
4525     alias NONCLIENTMETRICSW NONCLIENTMETRICS;
4526 
4527     alias AppendMenuW AppendMenu;
4528     alias BroadcastSystemMessageW BroadcastSystemMessage;
4529     static if (_WIN32_WINNT >= 0x501) {
4530         alias BroadcastSystemMessageExW BroadcastSystemMessageEx;
4531     }
4532     alias CallMsgFilterW CallMsgFilter;
4533     alias CallWindowProcW CallWindowProc;
4534     alias ChangeMenuW ChangeMenu;
4535     alias CharLowerW CharLower;
4536     alias CharLowerBuffW CharLowerBuff;
4537     alias CharNextW CharNext;
4538     alias CharNextExW CharNextEx;
4539     alias CharPrevW CharPrev;
4540     alias CharPrevExW CharPrevEx;
4541     alias CharToOemW CharToOem;
4542     alias CharToOemBuffW CharToOemBuff;
4543     alias CharUpperW CharUpper;
4544     alias CharUpperBuffW CharUpperBuff;
4545     alias CopyAcceleratorTableW CopyAcceleratorTable;
4546     alias CreateAcceleratorTableW CreateAcceleratorTable;
4547     alias CreateDialogW CreateDialog;
4548     alias CreateDialogIndirectW CreateDialogIndirect;
4549     alias CreateDialogIndirectParamW CreateDialogIndirectParam;
4550     alias CreateDialogParamW CreateDialogParam;
4551     alias CreateMDIWindowW CreateMDIWindow;
4552     alias CreateWindowW CreateWindow;
4553     alias CreateWindowExW CreateWindowEx;
4554     alias CreateWindowStationW CreateWindowStation;
4555     alias DefDlgProcW DefDlgProc;
4556     alias DefFrameProcW DefFrameProc;
4557     alias DefMDIChildProcW DefMDIChildProc;
4558     alias DefWindowProcW DefWindowProc;
4559     alias DialogBoxW DialogBox;
4560     alias DialogBoxIndirectW DialogBoxIndirect;
4561     alias DialogBoxIndirectParamW DialogBoxIndirectParam;
4562     alias DialogBoxParamW DialogBoxParam;
4563     alias DispatchMessageW DispatchMessage;
4564     alias DlgDirListW DlgDirList;
4565     alias DlgDirListComboBoxW DlgDirListComboBox;
4566     alias DlgDirSelectComboBoxExW DlgDirSelectComboBoxEx;
4567     alias DlgDirSelectExW DlgDirSelectEx;
4568     alias DrawStateW DrawState;
4569     alias DrawTextW DrawText;
4570     alias DrawTextExW DrawTextEx;
4571     alias EnumDesktopsW EnumDesktops;
4572     alias EnumPropsW EnumProps;
4573     alias EnumPropsExW EnumPropsEx;
4574     alias EnumWindowStationsW EnumWindowStations;
4575     alias FindWindowW FindWindow;
4576     alias FindWindowExW FindWindowEx;
4577     alias GetClassInfoW GetClassInfo;
4578     alias GetClassInfoExW GetClassInfoEx;
4579     alias GetClassLongW GetClassLong;
4580     alias GetClassLongPtrW GetClassLongPtr;
4581     alias GetClassNameW GetClassName;
4582     alias GetClipboardFormatNameW GetClipboardFormatName;
4583     alias GetDlgItemTextW GetDlgItemText;
4584     alias GetKeyboardLayoutNameW GetKeyboardLayoutName;
4585     alias GetKeyNameTextW GetKeyNameText;
4586     alias GetMenuItemInfoW GetMenuItemInfo;
4587     alias GetMenuStringW GetMenuString;
4588     alias GetMessageW GetMessage;
4589     alias GetMonitorInfoW GetMonitorInfo;
4590     alias GetPropW GetProp;
4591     static if (_WIN32_WINNT >= 0x501) {
4592         alias GetRawInputDeviceInfoW GetRawInputDeviceInfo;
4593     }
4594     alias GetTabbedTextExtentW GetTabbedTextExtent;
4595     alias GetUserObjectInformationW GetUserObjectInformation;
4596     alias GetWindowLongW GetWindowLong;
4597     alias GetWindowLongPtrW GetWindowLongPtr;
4598     alias GetWindowTextW GetWindowText;
4599     alias GetWindowTextLengthW GetWindowTextLength;
4600     alias GetAltTabInfoW GetAltTabInfo;
4601     alias GetWindowModuleFileNameW GetWindowModuleFileName;
4602     alias GrayStringW GrayString;
4603     alias InsertMenuW InsertMenu;
4604     alias InsertMenuItemW InsertMenuItem;
4605     alias IsCharAlphaW IsCharAlpha;
4606     alias IsCharAlphaNumericW IsCharAlphaNumeric;
4607     alias IsCharLowerW IsCharLower;
4608     alias IsCharUpperW IsCharUpper;
4609     alias IsDialogMessageW IsDialogMessage;
4610     alias LoadAcceleratorsW LoadAccelerators;
4611     alias LoadBitmapW LoadBitmap;
4612     alias LoadCursorW LoadCursor;
4613     alias LoadCursorFromFileW LoadCursorFromFile;
4614     alias LoadIconW LoadIcon;
4615     alias LoadImageW LoadImage;
4616     alias LoadKeyboardLayoutW LoadKeyboardLayout;
4617     alias LoadMenuW LoadMenu;
4618     alias LoadMenuIndirectW LoadMenuIndirect;
4619     alias LoadStringW LoadString;
4620     alias MapVirtualKeyW MapVirtualKey;
4621     alias MapVirtualKeyExW MapVirtualKeyEx;
4622     alias MessageBoxW MessageBox;
4623     alias MessageBoxExW MessageBoxEx;
4624     alias MessageBoxIndirectW MessageBoxIndirect;
4625     alias ModifyMenuW ModifyMenu;
4626     alias OemToCharW OemToChar;
4627     alias OemToCharBuffW OemToCharBuff;
4628     alias OpenDesktopW OpenDesktop;
4629     alias OpenWindowStationW OpenWindowStation;
4630     alias PeekMessageW PeekMessage;
4631     alias PostMessageW PostMessage;
4632     alias PostThreadMessageW PostThreadMessage;
4633     alias RealGetWindowClassW RealGetWindowClass;
4634     alias RegisterClassW RegisterClass;
4635     alias RegisterClassExW RegisterClassEx;
4636     alias RegisterClipboardFormatW RegisterClipboardFormat;
4637     alias RegisterDeviceNotificationW RegisterDeviceNotification;
4638     alias RegisterWindowMessageW RegisterWindowMessage;
4639     alias RemovePropW RemoveProp;
4640     alias SendDlgItemMessageW SendDlgItemMessage;
4641     alias SendMessageW SendMessage;
4642     alias SendMessageCallbackW SendMessageCallback;
4643     alias SendMessageTimeoutW SendMessageTimeout;
4644     alias SendNotifyMessageW SendNotifyMessage;
4645     alias SetClassLongW SetClassLong;
4646     alias SetClassLongPtrW SetClassLongPtr;
4647     alias SetDlgItemTextW SetDlgItemText;
4648     alias SetMenuItemInfoW SetMenuItemInfo;
4649     alias SetPropW SetProp;
4650     alias SetUserObjectInformationW SetUserObjectInformation;
4651     alias SetWindowLongW SetWindowLong;
4652     alias SetWindowLongPtrW SetWindowLongPtr;
4653     alias SetWindowsHookW SetWindowsHook;
4654     alias SetWindowsHookExW SetWindowsHookEx;
4655     alias SetWindowTextW SetWindowText;
4656     alias SystemParametersInfoW SystemParametersInfo;
4657     alias TabbedTextOutW TabbedTextOut;
4658     alias TranslateAcceleratorW TranslateAccelerator;
4659     alias UnregisterClassW UnregisterClass;
4660     alias VkKeyScanW VkKeyScan;
4661     alias VkKeyScanExW VkKeyScanEx;
4662     alias WinHelpW WinHelp;
4663     alias wsprintfW wsprintf;
4664     alias wvsprintfW wvsprintf;
4665 
4666     alias ChangeDisplaySettingsW ChangeDisplaySettings;
4667     alias ChangeDisplaySettingsExW ChangeDisplaySettingsEx;
4668     alias CreateDesktopW CreateDesktop;
4669     alias EnumDisplaySettingsW EnumDisplaySettings;
4670     alias EnumDisplaySettingsExW EnumDisplaySettingsEx;
4671     alias EnumDisplayDevicesW EnumDisplayDevices;
4672 
4673 } else { // ANSI
4674 
4675     alias EDITWORDBREAKPROCA EDITWORDBREAKPROC;
4676     alias PROPENUMPROCA PROPENUMPROC;
4677     alias PROPENUMPROCEXA PROPENUMPROCEX;
4678     alias DESKTOPENUMPROCA DESKTOPENUMPROC;
4679     alias WINSTAENUMPROCA WINSTAENUMPROC;
4680     alias MAKEINTRESOURCEA MAKEINTRESOURCE;
4681 
4682     alias WNDCLASSA WNDCLASS;
4683     alias WNDCLASSEXA WNDCLASSEX;
4684     alias MENUITEMINFOA MENUITEMINFO;
4685     alias LPCMENUITEMINFOA LPCMENUITEMINFO;
4686     alias MSGBOXPARAMSA MSGBOXPARAMS;
4687     alias HIGHCONTRASTA HIGHCONTRAST;
4688     alias SERIALKEYSA SERIALKEYS;
4689     alias SOUNDSENTRYA SOUNDSENTRY;
4690     alias CREATESTRUCTA CREATESTRUCT;
4691     alias CBT_CREATEWNDA CBT_CREATEWND;
4692     alias MDICREATESTRUCTA MDICREATESTRUCT;
4693     alias MULTIKEYHELPA MULTIKEYHELP;
4694     alias MONITORINFOEXA MONITORINFOEX;
4695     alias ICONMETRICSA ICONMETRICS;
4696     alias NONCLIENTMETRICSA NONCLIENTMETRICS;
4697 
4698     alias AppendMenuA AppendMenu;
4699     alias BroadcastSystemMessageA BroadcastSystemMessage;
4700     static if (_WIN32_WINNT >= 0x501) {
4701         alias BroadcastSystemMessageExA BroadcastSystemMessageEx;
4702     }
4703     alias CallMsgFilterA CallMsgFilter;
4704     alias CallWindowProcA CallWindowProc;
4705     alias ChangeMenuA ChangeMenu;
4706     alias CharLowerA CharLower;
4707     alias CharLowerBuffA CharLowerBuff;
4708     alias CharNextA CharNext;
4709     alias CharNextExA CharNextEx;
4710     alias CharPrevA CharPrev;
4711     alias CharPrevExA CharPrevEx;
4712     alias CharToOemA CharToOem;
4713     alias CharToOemBuffA CharToOemBuff;
4714     alias CharUpperA CharUpper;
4715     alias CharUpperBuffA CharUpperBuff;
4716     alias CopyAcceleratorTableA CopyAcceleratorTable;
4717     alias CreateAcceleratorTableA CreateAcceleratorTable;
4718     alias CreateDialogA CreateDialog;
4719     alias CreateDialogIndirectA CreateDialogIndirect;
4720     alias CreateDialogIndirectParamA CreateDialogIndirectParam;
4721     alias CreateDialogParamA CreateDialogParam;
4722     alias CreateMDIWindowA CreateMDIWindow;
4723     alias CreateWindowA CreateWindow;
4724     alias CreateWindowExA CreateWindowEx;
4725     alias CreateWindowStationA CreateWindowStation;
4726     alias DefDlgProcA DefDlgProc;
4727     alias DefFrameProcA DefFrameProc;
4728     alias DefMDIChildProcA DefMDIChildProc;
4729     alias DefWindowProcA DefWindowProc;
4730     alias DialogBoxA DialogBox;
4731     alias DialogBoxIndirectA DialogBoxIndirect;
4732     alias DialogBoxIndirectParamA DialogBoxIndirectParam;
4733     alias DialogBoxParamA DialogBoxParam;
4734     alias DispatchMessageA DispatchMessage;
4735     alias DlgDirListA DlgDirList;
4736     alias DlgDirListComboBoxA DlgDirListComboBox;
4737     alias DlgDirSelectComboBoxExA DlgDirSelectComboBoxEx;
4738     alias DlgDirSelectExA DlgDirSelectEx;
4739     alias DrawStateA DrawState;
4740     alias DrawTextA DrawText;
4741     alias DrawTextExA DrawTextEx;
4742     alias EnumDesktopsA EnumDesktops;
4743     alias EnumPropsA EnumProps;
4744     alias EnumPropsExA EnumPropsEx;
4745     alias EnumWindowStationsA EnumWindowStations;
4746     alias FindWindowA FindWindow;
4747     alias FindWindowExA FindWindowEx;
4748     alias GetClassInfoA GetClassInfo;
4749     alias GetClassInfoExA GetClassInfoEx;
4750     alias GetClassLongA GetClassLong;
4751     alias GetClassLongPtrA GetClassLongPtr;
4752     alias GetClassNameA GetClassName;
4753     alias GetClipboardFormatNameA GetClipboardFormatName;
4754     alias GetDlgItemTextA GetDlgItemText;
4755     alias GetKeyboardLayoutNameA GetKeyboardLayoutName;
4756     alias GetKeyNameTextA GetKeyNameText;
4757     alias GetMenuItemInfoA GetMenuItemInfo;
4758     alias GetMenuStringA GetMenuString;
4759     alias GetMessageA GetMessage;
4760     alias GetMonitorInfoA GetMonitorInfo;
4761     alias GetPropA GetProp;
4762     static if (_WIN32_WINNT >= 0x501) {
4763         alias GetRawInputDeviceInfoA GetRawInputDeviceInfo;
4764     }
4765     alias GetTabbedTextExtentA GetTabbedTextExtent;
4766     alias GetUserObjectInformationA GetUserObjectInformation;
4767     alias GetWindowLongA GetWindowLong;
4768     alias GetWindowLongPtrA GetWindowLongPtr;
4769     alias GetWindowTextA GetWindowText;
4770     alias GetWindowTextLengthA GetWindowTextLength;
4771     alias GetAltTabInfoA GetAltTabInfo;
4772     alias GetWindowModuleFileNameA GetWindowModuleFileName;
4773     alias GrayStringA GrayString;
4774     alias InsertMenuA InsertMenu;
4775     alias InsertMenuItemA InsertMenuItem;
4776     alias IsCharAlphaA IsCharAlpha;
4777     alias IsCharAlphaNumericA IsCharAlphaNumeric;
4778     alias IsCharLowerA IsCharLower;
4779     alias IsCharUpperA IsCharUpper;
4780     alias IsDialogMessageA IsDialogMessage;
4781     alias LoadAcceleratorsA LoadAccelerators;
4782     alias LoadBitmapA LoadBitmap;
4783     alias LoadCursorA LoadCursor;
4784     alias LoadIconA LoadIcon;
4785     alias LoadCursorFromFileA LoadCursorFromFile;
4786     alias LoadImageA LoadImage;
4787     alias LoadKeyboardLayoutA LoadKeyboardLayout;
4788     alias LoadMenuA LoadMenu;
4789     alias LoadMenuIndirectA LoadMenuIndirect;
4790     alias LoadStringA LoadString;
4791     alias MapVirtualKeyA MapVirtualKey;
4792     alias MapVirtualKeyExA MapVirtualKeyEx;
4793     alias MessageBoxA MessageBox;
4794     alias MessageBoxExA MessageBoxEx;
4795     alias MessageBoxIndirectA MessageBoxIndirect;
4796     alias ModifyMenuA ModifyMenu;
4797     alias OemToCharA OemToChar;
4798     alias OemToCharBuffA OemToCharBuff;
4799     alias OpenDesktopA OpenDesktop;
4800     alias OpenWindowStationA OpenWindowStation;
4801     alias PeekMessageA PeekMessage;
4802     alias PostMessageA PostMessage;
4803     alias PostThreadMessageA PostThreadMessage;
4804     alias RealGetWindowClassA RealGetWindowClass;
4805     alias RegisterClassA RegisterClass;
4806     alias RegisterClassExA RegisterClassEx;
4807     alias RegisterClipboardFormatA RegisterClipboardFormat;
4808     alias RegisterDeviceNotificationA RegisterDeviceNotification;
4809     alias RegisterWindowMessageA RegisterWindowMessage;
4810     alias RemovePropA RemoveProp;
4811     alias SendDlgItemMessageA SendDlgItemMessage;
4812     alias SendMessageA SendMessage;
4813     alias SendMessageCallbackA SendMessageCallback;
4814     alias SendMessageTimeoutA SendMessageTimeout;
4815     alias SendNotifyMessageA SendNotifyMessage;
4816     alias SetClassLongA SetClassLong;
4817     alias SetClassLongPtrA SetClassLongPtr;
4818     alias SetDlgItemTextA SetDlgItemText;
4819     alias SetMenuItemInfoA SetMenuItemInfo;
4820     alias SetPropA SetProp;
4821     alias SetUserObjectInformationA SetUserObjectInformation;
4822     alias SetWindowLongA SetWindowLong;
4823     alias SetWindowLongPtrA SetWindowLongPtr;
4824     alias SetWindowsHookA SetWindowsHook;
4825     alias SetWindowsHookExA SetWindowsHookEx;
4826     alias SetWindowTextA SetWindowText;
4827     alias SystemParametersInfoA SystemParametersInfo;
4828     alias TabbedTextOutA TabbedTextOut;
4829     alias TranslateAcceleratorA TranslateAccelerator;
4830     alias UnregisterClassA UnregisterClass;
4831     alias VkKeyScanA VkKeyScan;
4832     alias VkKeyScanExA VkKeyScanEx;
4833     alias WinHelpA WinHelp;
4834     alias wsprintfA wsprintf;
4835     alias wvsprintfA wvsprintf;
4836 
4837     alias ChangeDisplaySettingsA ChangeDisplaySettings;
4838     alias ChangeDisplaySettingsExA ChangeDisplaySettingsEx;
4839     alias CreateDesktopA CreateDesktop;
4840     alias EnumDisplaySettingsA EnumDisplaySettings;
4841     alias EnumDisplaySettingsExA EnumDisplaySettingsEx;
4842     alias EnumDisplayDevicesA EnumDisplayDevices;
4843 }
4844 
4845 alias WNDCLASS* LPWNDCLASS, PWNDCLASS;
4846 alias WNDCLASSEX* LPWNDCLASSEX, PWNDCLASSEX;
4847 alias MENUITEMINFO* LPMENUITEMINFO;
4848 alias MSGBOXPARAMS* PMSGBOXPARAMS, LPMSGBOXPARAMS;
4849 alias HIGHCONTRAST* LPHIGHCONTRAST;
4850 alias SERIALKEYS* LPSERIALKEYS;
4851 alias SOUNDSENTRY* LPSOUNDSENTRY;
4852 alias CREATESTRUCT* LPCREATESTRUCT;
4853 alias CBT_CREATEWND* LPCBT_CREATEWND;
4854 alias MDICREATESTRUCT* LPMDICREATESTRUCT;
4855 alias MULTIKEYHELP* PMULTIKEYHELP, LPMULTIKEYHELP;
4856 alias MONITORINFOEX* LPMONITORINFOEX;
4857 alias ICONMETRICS* LPICONMETRICS;
4858 alias NONCLIENTMETRICS* LPNONCLIENTMETRICS;
4859 
4860 static if (_WIN32_WINNT >= 0x501) {
4861     enum PW_CLIENTONLY               = 0x00000001;
4862     enum RIM_INPUT                   = 0x00000000;
4863     enum RIM_INPUTSINK               = 0x00000001;
4864     enum RIM_TYPEMOUSE               = 0x00000000;
4865     enum RIM_TYPEKEYBOARD            = 0x00000001;
4866     enum RIM_TYPEHID                 = 0x00000002;
4867     enum MOUSE_MOVE_RELATIVE         = 0x00000000;
4868     enum MOUSE_MOVE_ABSOLUTE         = 0x00000001;
4869     enum MOUSE_VIRTUAL_DESKTOP       = 0x00000002;
4870     enum MOUSE_ATTRIBUTES_CHANGED    = 0x00000004;
4871     enum RI_MOUSE_LEFT_BUTTON_DOWN   = 0x0001;
4872     enum RI_MOUSE_LEFT_BUTTON_UP     = 0x0002;
4873     enum RI_MOUSE_RIGHT_BUTTON_DOWN  = 0x0004;
4874     enum RI_MOUSE_RIGHT_BUTTON_UP    = 0x0008;
4875     enum RI_MOUSE_MIDDLE_BUTTON_DOWN = 0x0010;
4876     enum RI_MOUSE_MIDDLE_BUTTON_UP   = 0x0020;
4877     enum RI_MOUSE_BUTTON_1_DOWN = RI_MOUSE_LEFT_BUTTON_DOWN;
4878     enum RI_MOUSE_BUTTON_1_UP   = RI_MOUSE_LEFT_BUTTON_UP;
4879     enum RI_MOUSE_BUTTON_2_DOWN = RI_MOUSE_RIGHT_BUTTON_DOWN;
4880     enum RI_MOUSE_BUTTON_2_UP   = RI_MOUSE_RIGHT_BUTTON_UP;
4881     enum RI_MOUSE_BUTTON_3_DOWN = RI_MOUSE_MIDDLE_BUTTON_DOWN;
4882     enum RI_MOUSE_BUTTON_3_UP   = RI_MOUSE_MIDDLE_BUTTON_UP;
4883     enum RI_MOUSE_BUTTON_4_DOWN = 0x0040;
4884     enum RI_MOUSE_BUTTON_4_UP   = 0x0080;
4885     enum RI_MOUSE_BUTTON_5_DOWN = 0x0100;
4886     enum RI_MOUSE_BUTTON_5_UP   = 0x0200;
4887     enum RI_MOUSE_WHEEL         = 0x0400;
4888     enum KEYBOARD_OVERRUN_MAKE_CODE = 0x00ff;
4889     enum RI_KEY_MAKE            = 0x0000;
4890     enum RI_KEY_BREAK           = 0x0001;
4891     enum RI_KEY_E0              = 0x0002;
4892     enum RI_KEY_E1              = 0x0004;
4893     enum RI_KEY_TERMSRV_SET_LED = 0x0008;
4894     enum RI_KEY_TERMSRV_SHADOW  = 0x0010;
4895 
4896     enum RID_INPUT          = 0x10000003;
4897     enum RID_HEADER         = 0x10000005;
4898 
4899     enum RIDI_PREPARSEDDATA = 0x20000005;
4900     enum RIDI_DEVICENAME    = 0x20000007;
4901     enum RIDI_DEVICEINFO    = 0x2000000b;
4902 
4903     enum RIDEV_REMOVE       = 0x00000001;
4904     enum RIDEV_EXCLUDE      = 0x00000010;
4905     enum RIDEV_PAGEONLY     = 0x00000020;
4906     enum RIDEV_NOLEGACY     = 0x00000030;
4907     enum RIDEV_INPUTSINK    = 0x00000100;
4908     enum RIDEV_CAPTUREMOUSE = 0x00000200;
4909     enum RIDEV_NOHOTKEYS    = 0x00000200;
4910     enum RIDEV_APPKEYS      = 0x00000400;
4911 }
4912