root/trunk/win32/winuser.d

Revision 380, 131.7 kB (checked in by Zone, 2 months ago)

Adding the missing bits and pieces (primarily vista/7 enums etc) required to compile the D port of the WTL that I am working on

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