1 /** DGui project file.
2 
3 Copyright: Trogu Antonio Davide 2011-2013
4 
5 License: $(HTTP boost.org/LICENSE_1_0.txt, Boost License 1.0).
6 
7 Authors: Trogu Antonio Davide
8 */
9 
10 /*
11  * Notes:
12  * - ToolTip Messages are Commented.
13  * - RichEdit Text Styles are Commented.
14  */
15 
16 module dguihub.core.winapi;
17 
18 public import core.sys.windows.windows;
19 public import core.sys.windows.com;
20 
21 extern (Windows) {
22    enum : int {
23       I_CHILDRENCALLBACK = -1,
24       LPSTR_TEXTCALLBACKW = -1,
25    }
26 
27    enum {
28       SW_INVALIDATE = 2,
29    }
30 
31    /* Dialog codes */
32    enum : uint {
33       DLGC_WANTARROWS = 1,
34       DLGC_WANTTAB = 2,
35       DLGC_WANTALLKEYS = 4,
36       DLGC_WANTMESSAGE = 4,
37       DLGC_HASSETSEL = 8,
38       DLGC_DEFPUSHBUTTON = 16,
39       DLGC_UNDEFPUSHBUTTON = 32,
40       DLGC_RADIOBUTTON = 64,
41       DLGC_WANTCHARS = 128,
42       DLGC_STATIC = 256,
43       DLGC_BUTTON = 0x2000,
44    }
45 
46    /* Frame Control Constants */
47    enum : uint {
48       DFC_CAPTION = 1,
49       DFC_MENU = 2,
50       DFC_SCROLL = 3,
51       DFC_BUTTON = 4,
52       DFC_POPUPMENU = 5,
53    }
54 
55    enum : uint {
56       DFCS_CAPTIONCLOSE = 0,
57       DFCS_CAPTIONMIN = 1,
58       DFCS_CAPTIONMAX = 2,
59       DFCS_CAPTIONRESTORE = 3,
60       DFCS_CAPTIONHELP = 4,
61    }
62 
63    enum : uint {
64       DFCS_SCROLLUP = 0,
65       DFCS_SCROLLDOWN = 1,
66       DFCS_SCROLLLEFT = 2,
67       DFCS_SCROLLRIGHT = 3,
68       DFCS_SCROLLCOMBOBOX = 5,
69       DFCS_SCROLLSIZEGRIP = 8,
70       DFCS_SCROLLSIZEGRIPRIGHT = 16,
71    }
72 
73    enum : uint {
74       DFCS_MENUARROW = 0,
75       DFCS_MENUCHECK = 1,
76       DFCS_MENUBULLET = 2,
77       DFCS_MENUARROWRIGHT = 4,
78    }
79 
80    enum : uint {
81       DFCS_BUTTONCHECK = 0,
82       DFCS_BUTTONRADIOIMAGE = 1,
83       DFCS_BUTTONRADIOMASK = 2,
84       DFCS_BUTTONRADIO = 4,
85       DFCS_BUTTON3STATE = 8,
86       DFCS_BUTTONPUSH = 16,
87       DFCS_INACTIVE = 256,
88       DFCS_PUSHED = 512,
89       DFCS_CHECKED = 1024,
90    }
91 
92    enum : uint {
93       DFCS_TRANSPARENT = 0x800,
94       DFCS_HOT = 0x1000,
95       DFCS_ADJUSTRECT = 0x2000,
96       DFCS_FLAT = 0x4000,
97       DFCS_MONO = 0x8000,
98    }
99 
100    /* Windows Generic Messages */
101    enum : uint {
102       WM_USER = 0x0400,
103       WM_APP = 0x8000,
104       WM_SETFONT = 0x0030,
105       WM_GETFONT = 0x0031,
106       WM_WINDOWPOSCHANGING = 0x0046,
107       WM_WINDOWPOSCHANGED = 0x0047,
108       WM_DRAWITEM = 0x002B,
109       WM_CLEAR = 0x0303,
110       WM_CUT = 0x0300,
111       WM_COPY = 0x0301,
112       WM_PASTE = 0x0302,
113       WM_MOUSEWHEEL = 0x020A,
114       WM_MOUSEHOVER = 0x02A1,
115       WM_MOUSELEAVE = 0x02A3,
116       WM_MENUCOMMAND = 0x0126,
117       WM_PRINT = 0x0317,
118       WM_PRINTCLIENT = 0x0318,
119       WM_MEASUREITEM = 0x002C,//WM_COMPACTING 		= 0x0041,
120       //WM_NEXTDLGCTL 	 	= 0x0028,
121       //WM_CAPTURECHANGED     = 0x0215,
122       //WM_DROPFILES 		 	= 0x0233,
123       //WM_PALETTECHANGED  	= 0x0311,
124       //WM_MDIACTIVATE 		= 0x0222,
125       //WM_MDITILE 			= 0x0226,
126       //WM_MDICASCADE 		= 0x0227,
127       //WM_MDIICONARRANGE	 	= 0x0228,
128       //WM_MDIGETACTIVE 	 	= 0x0229,
129    }
130 
131    /* Windows Position and Size Flags */
132    enum : uint {
133       SWP_NOSIZE = 0x0001,
134       SWP_NOMOVE = 0x0002,
135       SWP_NOZORDER = 0x0004,
136       SWP_NOREDRAW = 0x0008,
137       SWP_NOACTIVATE = 0x0010,
138       SWP_SHOWWINDOW = 0x0040,
139       SWP_FRAMECHANGED = 0x0020,
140       SWP_HIDEWINDOW = 0x0080,
141       SWP_NOCOPYBITS = 0x0100,
142       SWP_NOOWNERZORDER = 0x0200,
143       SWP_NOSENDCHANGING = 0x0400,
144       SWP_DRAWFRAME = SWP_FRAMECHANGED,
145       SWP_NOREPOSITION = SWP_NOOWNERZORDER,
146       SWP_DEFERERASE = 0x2000,
147       SWP_ASYNCWINDOWPOS = 0x4000,
148    }
149 
150    /* DIBs Flags */
151    enum {
152       DIB_RGB_COLORS = 0,
153       DIB_PAL_COLORS = 1,
154    }
155 
156    /* GDI Object Types */
157    enum : uint {
158       OBJ_PEN = 1,
159       OBJ_BRUSH = 2,
160       OBJ_DC = 3,
161       OBJ_METADC = 4,
162       OBJ_PAL = 5,
163       OBJ_FONT = 6,
164       OBJ_BITMAP = 7,
165       OBJ_REGION = 8,
166       OBJ_METAFILE = 9,
167       OBJ_MEMDC = 10,
168       OBJ_EXTPEN = 11,
169       OBJ_ENHMETADC = 12,
170       OBJ_ENHMETAFILE = 13,
171    }
172 
173    /* Track Bar Messages */
174    enum : uint {
175       TBM_GETPOS = WM_USER,
176       TBM_GETRANGEMIN = WM_USER + 1,
177       TBM_GETRANGEMAX = WM_USER + 2,
178       TBM_GETTIC = WM_USER + 3,
179       TBM_SETTIC = WM_USER + 4,
180       TBM_SETPOS = WM_USER + 5,
181       TBM_SETRANGE = WM_USER + 6,
182       TBM_SETRANGEMIN = WM_USER + 7,
183       TBM_SETRANGEMAX = WM_USER + 8,
184       TBM_CLEARTICS = WM_USER + 9,
185       TBM_SETSEL = WM_USER + 10,
186       TBM_SETSELSTART = WM_USER + 11,
187       TBM_SETSELEND = WM_USER + 12,
188       TBM_GETPTICS = WM_USER + 14,
189       TBM_GETTICPOS = WM_USER + 15,
190       TBM_GETNUMTICS = WM_USER + 16,
191       TBM_GETSELSTART = WM_USER + 17,
192       TBM_GETSELEND = WM_USER + 18,
193       TBM_CLEARSEL = WM_USER + 19,
194       TBM_SETTICFREQ = WM_USER + 20,
195       TBM_SETPAGESIZE = WM_USER + 21,
196       TBM_GETPAGESIZE = WM_USER + 22,
197       TBM_SETLINESIZE = WM_USER + 23,
198       TBM_GETLINESIZE = WM_USER + 24,
199       TBM_GETTHUMBRECT = WM_USER + 25,
200       TBM_GETCHANNELRECT = WM_USER + 26,
201       TBM_SETTHUMBLENGTH = WM_USER + 27,
202       TBM_GETTHUMBLENGTH = WM_USER + 28,
203       TBM_SETTOOLTIPS = WM_USER + 29,
204       TBM_GETTOOLTIPS = WM_USER + 30,
205       TBM_SETTIPSIDE = WM_USER + 31,
206       TBM_SETBUDDY = WM_USER + 32,
207       TBM_GETBUDDY = WM_USER + 33,
208       TBM_SETPOSNOTIFY = WM_USER + 34,
209    }
210 
211    /* TrackBar Styles */
212    enum : uint {
213       TBS_AUTOTICKS = 0x0001,
214       TBS_VERT = 0x0002,
215       TBS_HORZ = 0x0000,
216       TBS_TOP = 0x0004,
217       TBS_BOTTOM = 0x0000,
218       TBS_LEFT = 0x0004,
219       TBS_RIGHT = 0x0000,
220       TBS_BOTH = 0x0008,
221       TBS_NOTICKS = 0x0010,
222       TBS_ENABLESELRANGE = 0x0020,
223       TBS_FIXEDLENGTH = 0x0040,
224       TBS_NOTHUMB = 0x0080,
225       TBS_TOOLTIPS = 0x0100,
226    }
227 
228    /* DrawIconEx() API flags */
229    enum : uint {
230       DI_MASK = 0x0001,
231       DI_IMAGE = 0x0002,
232       DI_COMPAT = 0x0004,
233       DI_DEFAULTSIZE = 0x0008,
234       DI_NORMAL = DI_IMAGE | DI_MASK,
235    }
236 
237    /* GetClassLong() API Flags */
238    enum : int {
239       GCL_MENUNAME = -8,
240       GCL_HBRBACKGROUND = -10,
241       GCL_HCURSOR = -12,
242       GCL_HICON = -14,
243       GCL_HMODULE = -16,
244       GCL_CBWNDEXTRA = -18,
245       GCL_CBCLSEXTRA = -20,
246       GCL_WNDPROC = -24,
247       GCL_STYLE = -26,
248       GCL_HICONSM = -34,
249    }
250 
251    /* Common Control Styles */
252    enum : uint {
253       CCS_TOP = 1,
254       CCS_NOMOVEY = 2,
255       CCS_BOTTOM = 3,
256       CCS_NORESIZE = 4,
257       CCS_NOPARENTALIGN = 8,
258       CCS_ADJUSTABLE = 32,
259       CCS_NODIVIDER = 64,
260       CCS_VERT = 128,
261       CCS_LEFT = 129,
262       CCS_NOMOVEX = 130,
263       CCS_RIGHT = 131,
264    }
265 
266    /* GetWindowLong Flags() */
267    enum : int {
268       GWL_WNDPROC = -4,
269       GWL_HINSTANCE = -6,
270       GWL_HWNDPARENT = -8,
271       GWL_STYLE = -16,
272       GWL_EXSTYLE = -20,
273       GWL_USERDATA = -21,
274       GWL_ID = -12,
275    }
276 
277    /* Notification Messages Base */
278    enum : uint {
279       NM_FIRST = 0,
280       NM_CLICK = NM_FIRST - 2,
281       NM_RCLICK = NM_FIRST - 5,
282       NM_CUSTOMDRAW = NM_FIRST - 12,
283    }
284 
285    /* DrawEdge() API Flags */
286    enum : uint {
287       BDR_RAISEDOUTER = 1,
288       BDR_SUNKENOUTER = 2,
289       BDR_RAISEDINNER = 4,
290       BDR_SUNKENINNER = 8,
291       BDR_OUTER = 3,
292       BDR_INNER = 0xc,
293       BDR_RAISED = 5,
294       BDR_SUNKEN = 10,
295       EDGE_RAISED = BDR_RAISEDOUTER | BDR_RAISEDINNER,
296       EDGE_SUNKEN = BDR_SUNKENOUTER | BDR_SUNKENINNER,
297       EDGE_ETCHED = BDR_SUNKENOUTER | BDR_RAISEDINNER,
298       EDGE_BUMP = BDR_RAISEDOUTER | BDR_SUNKENINNER,
299 
300       BF_LEFT = 1,
301       BF_TOP = 2,
302       BF_RIGHT = 4,
303       BF_BOTTOM = 8,
304       BF_TOPLEFT = BF_TOP | BF_LEFT,
305       BF_TOPRIGHT = BF_TOP | BF_RIGHT,
306       BF_BOTTOMLEFT = BF_BOTTOM | BF_LEFT,
307       BF_BOTTOMRIGHT = BF_BOTTOM | BF_RIGHT,
308       BF_RECT = BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM,
309 
310       BF_DIAGONAL = 16,
311       BF_DIAGONAL_ENDTOPRIGHT = BF_DIAGONAL | BF_TOP | BF_RIGHT,
312       BF_DIAGONAL_ENDTOPLEFT = BF_DIAGONAL | BF_TOP | BF_LEFT,
313       BF_DIAGONAL_ENDBOTTOMLEFT = BF_DIAGONAL | BF_BOTTOM | BF_LEFT,
314       BF_DIAGONAL_ENDBOTTOMRIGHT = BF_DIAGONAL | BF_BOTTOM | BF_RIGHT,
315       BF_MIDDLE = 0x800,
316       BF_SOFT = 0x1000,
317       BF_ADJUST = 0x2000,
318       BF_FLAT = 0x4000,
319       BF_MONO = 0x8000,
320    }
321 
322    /* Rich Edit Messages */
323    enum : uint {
324       ES_DISABLENOSCROLL = 0x00002000,
325 
326       ENM_NONE = 0x00000000,
327       ENM_CHANGE = 0x00000001,
328       ENM_UPDATE = 0x00000002,
329       ENM_LINK = 0x04000000,
330       ENM_PROTECTED = 0x00200000,
331 
332       EM_CANPASTE = WM_USER + 50,
333       EM_EXGETSEL = WM_USER + 52,
334       EM_EXLIMITTEXT = WM_USER + 53,
335       EM_EXLINEFROMCHAR = WM_USER + 54,
336       EM_EXSETSEL = WM_USER + 55,
337       EM_GETCHARFORMAT = WM_USER + 58,
338       EM_GETSELTEXT = WM_USER + 62,
339       EM_PASTESPECIAL = WM_USER + 64,
340       EM_SETBKGNDCOLOR = WM_USER + 67,
341       EM_SETCHARFORMAT = WM_USER + 68,
342       EM_SETEVENTMASK = WM_USER + 69,
343       EM_STREAMIN = WM_USER + 73,
344       EM_STREAMOUT = WM_USER + 74,
345       EM_GETTEXTRANGE = WM_USER + 75,
346 
347       /* Rich Edit 2.0 */
348       EM_SETUNDOLIMIT = WM_USER + 82,
349       EM_REDO = WM_USER + 84,
350       EM_CANREDO = WM_USER + 85,
351       EM_GETUNDONAME = WM_USER + 86,
352       EM_GETREDONAME = WM_USER + 87,
353       EM_STOPGROUPTYPING = WM_USER + 88,
354       EM_SETTEXTMODE = WM_USER + 89,
355       EM_GETTEXTMODE = WM_USER + 90,
356       EM_AUTOURLDETECT = WM_USER + 91,
357       EM_GETAUTOURLDETECT = WM_USER + 92,
358       EM_SETPALETTE = WM_USER + 93,
359       EM_GETTEXTEX = WM_USER + 94,
360       EM_GETTEXTLENGTHEX = WM_USER + 95,
361       EM_SHOWSCROLLBAR = WM_USER + 96,
362       EM_SETTEXTEX = WM_USER + 97,
363       EN_LINK = 0x070B,
364    }
365 
366    const HBMMENU_CALLBACK = cast(HBITMAP)-1;
367 
368    /+
369 	/* Rich Edit Text Styles */
370 	enum: uint
371 	{
372 		SF_TEXT 			= 0x0001,
373 		SF_RTF				= 0x0002,
374 		SF_RTFNOOBJS 		= 0x0003,
375 		SF_TEXTIZED 		= 0x0004,
376 
377 		SFF_SELECTION 		= 0x8000,
378 		SFF_PLAINRTF 		= 0x4000,
379 
380 		SCF_SELECTION 		= 0x0001,
381 		SCF_WORD 			= 0x0002,
382 		SCF_ALL 			= 0x0004,
383 
384 		CFM_BOLD 			= 0x00000001,
385 		CFM_ITALIC 			= 0x00000002,
386 		CFM_UNDERLINE 		= 0x00000004,
387 		CFM_STRIKEOUT 		= 0x00000008,
388 		CFM_PROTECTED 		= 0x00000010,
389 		CFM_LINK 			= 0x00000020,
390 		CFM_SIZE 			= 0x80000000,
391 		CFM_COLOR 			= 0x40000000,
392 		CFM_FACE			= 0x20000000,
393 		CFM_OFFSET 			= 0x10000000,
394 		CFM_CHARSET 		= 0x08000000,
395 		CFM_SMALLCAPS 		= 0x0040,
396 		CFM_ALLCAPS 		= 0x0080,
397 		CFM_HIDDEN 			= 0x0100,
398 		CFM_OUTLINE			= 0x0200,
399 		CFM_SHADOW			= 0x0400,
400 		CFM_EMBOSS 			= 0x0800,
401 		CFM_IMPRINT 		= 0x1000,
402 		CFM_DISABLED 		= 0x2000,
403 		CFM_REVISED 		= 0x4000,
404 		CFM_BACKCOLOR		= 0x04000000,
405 		CFM_LCID 			= 0x02000000,
406 		CFM_UNDERLINETYPE	= 0x00800000,
407 		CFM_WEIGHT 			= 0x00400000,
408 		CFM_SPACING 		= 0x00200000,
409 		CFM_KERNING 		= 0x00100000,
410 		CFM_STYLE 			= 0x00080000,
411 		CFM_ANIMATION 		= 0x00040000,
412 		CFM_REVAUTHOR 		= 0x00008000,
413 
414 		CFE_BOLD 			= 0x0001,
415 		CFE_ITALIC 			= 0x0002,
416 		CFE_UNDERLINE 		= 0x0004,
417 		CFE_STRIKEOUT 		= 0x0008,
418 		CFE_PROTECTED 		= 0x0010,
419 		CFE_LINK 			= 0x0020,
420 		CFE_AUTOCOLOR 		= 0x40000000,
421 		CFE_AUTOBACKCOLOR	= CFM_BACKCOLOR,
422 		CFE_SUBSCRIPT 		= 0x00010000,
423 		CFE_SUPERSCRIPT		= 0x00020000,
424 
425 		CFM_SUBSCRIPT 		= CFE_SUBSCRIPT | CFE_SUPERSCRIPT,
426 		CFM_SUPERSCRIPT 	= CFM_SUBSCRIPT,
427 
428 		CFU_UNDERLINE 		= 1,
429 	}
430 	+/
431 
432    enum : DWORD {
433       OFN_OVERWRITEPROMPT = 0x00000002,
434       OFN_PATHMUSTEXIST = 0x00000800,
435       OFN_FILEMUSTEXIST = 0x00001000,
436       OFN_CREATEPROMPT = 0x00002000,//OFN_READONLY 				= 0x00000001,
437       //OFN_HIDEREADONLY 			= 0x00000004,
438       //OFN_NOCHANGEDIR 			= 0x00000008,
439       //OFN_SHOWHELP 				= 0x00000010,
440       //OFN_ENABLEHOOK 			= 0x00000020,
441       //OFN_ENABLETEMPLATE		= 0x00000040,
442       //OFN_ENABLETEMPLATEHANDLE 	= 0x00000080,
443       //OFN_NOVALIDATE 			= 0x00000100,
444       //OFN_ALLOWMULTISELECT 		= 0x00000200,
445       //OFN_EXTENSIONDIFFERENT 	= 0x00000400,
446       //OFN_SHAREAWARE 			= 0x00004000,
447       //OFN_NOREADONLYRETURN 		= 0x00008000,
448       //OFN_NOTESTFILECREATE 		= 0x00010000,
449       //OFN_NONETWORKBUTTON 		= 0x00020000,
450       //OFN_NOLONGNAMES 			= 0x00040000,
451       //OFN_EXPLORER 				= 0x00080000,
452       //OFN_NODEREFERENCELINKS 	= 0x00100000,
453       //OFN_LONGNAMES 			= 0x00200000,
454       //OFN_ENABLEINCLUDENOTIFY 	= 0x00400000,
455       //OFN_ENABLESIZING 			= 0x00800000,
456       //OFN_DONTADDTORECENT 		= 0x02000000,
457       //OFN_FORCESHOWHIDDEN 		= 0x10000000,
458    }
459 
460    enum : DWORD {
461       CF_SCREENFONTS = 0x00000001,
462       CF_INITTOLOGFONTSTRUCT = 0x00000040,
463       CF_EFFECTS = 0x00000100,//CF_PRINTERFONTS			 = 0x00000002,
464       //CF_BOTH					 = CF_SCREENFONTS | CF_PRINTERFONTS,
465       //CF_SHOWHELP				 = 0x00000004,
466       //CF_ENABLEHOOK				 = 0x00000008,
467       //CF_ENABLETEMPLATE			 = 0x00000010,
468       //CF_ENABLETEMPLATEHANDLE	 = 0x00000020,
469       //CF_USESTYLE				 = 0x00000080,
470       //CF_APPLY					 = 0x00000200,
471       //CF_ANSIONLY				 = 0x00000400,
472       //CF_SCRIPTSONLY			 = CF_ANSIONLY,
473       //CF_NOVECTORFONTS			 = 0x00000800,
474       //CF_NOOEMFONTS				 = CF_NOVECTORFONTS,
475       //CF_NOSIMULATIONS			 = 0x00001000,
476       //CF_LIMITSIZE				 = 0x00002000,
477       //CF_FIXEDPITCHONLY			 = 0x00004000,
478       //CF_WYSIWYG				 = 0x00008000,
479       //CF_FORCEFONTEXIST		  	 = 0x00010000,
480       //CF_SCALABLEONLY			 = 0x00020000,
481       //CF_TTONLY					 = 0x00040000,
482       //CF_NOFACESEL				 = 0x00080000,
483       //CF_NOSTYLESEL				 = 0x00100000,
484       //CF_NOSIZESEL				 = 0x00200000,
485       //CF_SELECTSCRIPT			 = 0x00400000,
486       //CF_NOSCRIPTSEL 			 = 0x00800000,
487       //CF_NOVERTFONTS 			 = 0x01000000,
488    }
489 
490    enum : uint {
491       ODT_MENU = 1,
492       ODT_LISTBOX = 2,
493       ODT_COMBOBOX = 3,
494       ODT_BUTTON = 4,
495       ODT_STATIC = 5,
496    }
497 
498    /*
499 	enum: uint
500 	{
501 		MDITILE_VERTICAL = 0x0000,
502 		MDITILE_HORIZONTAL = 0x0001,
503 		MDITILE_SKIPDISABLED = 0x0002,
504 		MDITILE_ZORDER = 0x0004,
505 	}
506 	*/
507 
508    enum {
509       DS_ABSALIGN = 0x0001,
510       DS_3DLOOK = 0x0004,
511       DS_SYSMODAL = 0x0002,
512       DS_FIXEDSYS = 0x0008,
513       DS_NOFAILCREATE = 0x0010,
514       DS_LOCALEDIT = 0x0020,
515       DS_SETFONT = 0x0040,
516       DS_MODALFRAME = 0x0080,
517       DS_NOIDLEMSG = 0x0100,
518       DS_SETFOREGROUND = 0x0200,
519       DS_CONTROL = 0x0400,
520       DS_CENTER = 0x0800,
521       DS_CENTERMOUSE = 0x1000,
522       DS_CONTEXTHELP = 0x2000,
523       DS_SHELLFONT = DS_SETFONT | DS_FIXEDSYS,
524    }
525 
526    enum {
527       WS_EX_ACCEPTFILES = 16,
528       WS_EX_APPWINDOW = 0x40000,
529       WS_EX_CLIENTEDGE = 512,
530       WS_EX_COMPOSITED = 0x2000000, // Windows XP
531       WS_EX_CONTEXTHELP = 0x400,
532       WS_EX_CONTROLPARENT = 0x10000,
533       WS_EX_DLGMODALFRAME = 1,
534       WS_EX_LAYERED = 0x80000, // Windows 2000
535       WS_EX_LAYOUTRTL = 0x400000, // Windows 98, Windows 2000
536       WS_EX_LEFT = 0,
537       WS_EX_LEFTSCROLLBAR = 0x4000,
538       WS_EX_LTRREADING = 0,
539       WS_EX_MDICHILD = 64,
540       WS_EX_NOACTIVATE = 0x8000000, // Windows 2000
541       WS_EX_NOINHERITLAYOUT = 0x100000, // Windows 2000
542       WS_EX_NOPARENTNOTIFY = 4,
543       WS_EX_OVERLAPPEDWINDOW = 0x300,
544       WS_EX_PALETTEWINDOW = 0x188,
545       WS_EX_RIGHT = 0x1000,
546       WS_EX_RIGHTSCROLLBAR = 0,
547       WS_EX_RTLREADING = 0x2000,
548       WS_EX_STATICEDGE = 0x20000,
549       WS_EX_TOOLWINDOW = 128,
550       WS_EX_TOPMOST = 8,
551       WS_EX_WINDOWEDGE = 256,//WS_EX_TRANSPARENT		 = 32,
552    }
553 
554    /* ToolTip Messages */
555    enum : uint {
556       TTM_ACTIVATE = WM_USER + 1,
557       TTM_SETDELAYTIME = WM_USER + 3,
558       TTM_POP = WM_USER + 28,
559       TTM_SETTITLEW = WM_USER + 33,
560       TTM_POPUP = WM_USER + 34,
561       TTM_ADDTOOLW = WM_USER + 50,
562       TTM_DELTOOLW = WM_USER + 51,
563       TTM_GETTEXTW = WM_USER + 56,
564       TTM_UPDATETIPTEXTW = WM_USER + 57,
565 
566       TTN_FIRST = -520u,
567       TTN_GETDISPINFOW = TTN_FIRST - 10,//TTN_SHOW         = TTN_FIRST - 1,
568       //TTN_POP          = TTN_FIRST - 2,
569       //TTM_ADDTOOLA              = WM_USER + 4,
570       //TTM_DELTOOLA               = WM_USER + 5,
571       //TTM_GETTOOLINFOA      = WM_USER + 8,
572       //TTM_GETTEXTA 		 = WM_USER + 11,
573       //TTM_UPDATETIPTEXTA    = WM_USER + 12,
574       //TTM_ENUMTOOLSA 	 = WM_USER + 14,
575       //TTM_GETCURRENTTOOLA = WM_USER + 15,
576    }
577 
578    /* ToolTip Icons */
579    enum : uint {
580       TTI_NONE = 0,
581       TTI_INFO = 1,
582       TTI_WARNING = 2,
583       TTI_ERROR = 3,
584    }
585 
586    /* ToolTip Styles */
587    enum : uint {
588       TTS_ALWAYSTIP = 0x01,
589       TTS_NOPREFIX = 0x02,
590       TTS_NOANIMATE = 0x10, // IE5+
591       TTS_NOFADE = 0x20, // IE5+
592       TTS_BALLOON = 0x40, // IE5+
593       TTS_CLOSE = 0x80,
594    }
595 
596    /* ToolTip Flags */
597    enum : uint {
598       TTF_IDISHWND = 0x0001,
599       TTF_CENTERTIP = 0x0002,
600       TTF_RTLREADING = 0x0004,
601       TTF_SUBCLASS = 0x0010,
602       TTF_TRACK = 0x0020, // IE3+
603       TTF_ABSOLUTE = 0x0080, // IE3+
604       TTF_TRANSPARENT = 0x0100, // IE3+
605       TTF_PARSELINKS = 0x1000,
606       TTF_DI_SETITEM = 0x8000, // IE3+
607    }
608 
609    enum : uint {
610       AW_HOR_POSITIVE = 0x00000001,
611       AW_HOR_NEGATIVE = 0x00000002,
612       AW_VER_POSITIVE = 0x00000004,
613       AW_VER_NEGATIVE = 0x00000008,
614       AW_CENTER = 0x00000010,
615       AW_HIDE = 0x00010000,
616       AW_ACTIVATE = 0x00020000,
617       AW_SLIDE = 0x00040000,
618       AW_BLEND = 0x00080000,
619    }
620 
621    enum : uint {
622       MF_STRING = 0x00000000,
623       MF_UNCHECKED = 0x00000000,
624       MF_BYCOMMAND = 0x00000000,
625       MF_GRAYED = 0x00000001,
626       MF_CHECKED = 0x00000008,
627       MF_POPUP = 0x00000010,
628       MF_MENUBARBREAK = 0x00000020,
629       MF_MENUBREAK = 0x00000040,
630       MF_BYPOSITION = 0x00000400,
631       MF_SEPARATOR = 0x00000800,
632       MF_DEFAULT = 0x00001000,
633       MF_SYSMENU = 0x00002000,
634 
635       MFT_STRING = MF_STRING,
636       MFT_MENUBARBREAK = MF_MENUBARBREAK,
637       MFT_MENUBREAK = MF_MENUBREAK,
638       MFT_RADIOCHECK = 0x00000200,
639       MFT_SEPARATOR = MF_SEPARATOR,
640 
641       MFS_UNCHECKED = MF_UNCHECKED,
642       MFS_CHECKED = MF_CHECKED,
643       MFS_DEFAULT = MF_DEFAULT,
644       MFS_GRAYED = MF_GRAYED,
645       MFS_DISABLED = 3,
646       MFS_ENABLED = 0,
647 
648       MIIM_DATA = 32,
649       MIIM_STATE = 0x00000001,
650       MIIM_ID = 0x00000002,
651       MIIM_SUBMENU = 0x00000004,
652       MIIM_CHECKMARKS = 0x00000008,
653       MIIM_TYPE = 0x00000010,
654       MIIM_BITMAP = 0x00000080,
655    }
656 
657    /*
658 	enum: int
659 	{
660 		RGN_AND  = 1,
661 		RGN_OR   = 2,
662 		RGN_XOR  = 3,
663 		RGN_DIFF = 4,
664 		RGN_COPY = 5,
665 	}
666 	*/
667 
668    enum : int {
669       HWND_TOP = 0,
670       HWND_BOTTOM = 1,
671       HWND_TOPMOST = -1,
672       HWND_NOTOPMOST = -2,
673    }
674 
675    enum : uint {
676       CBS_SIMPLE = 0x0001,
677       CBS_DROPDOWN = 0x0002,
678       CBS_DROPDOWNLIST = 0x0003,
679       CBS_AUTOHSCROLL = 0x0040,
680       CBS_OWNERDRAWFIXED = 0x0010,
681       CBS_OWNERDRAWVARIABLE = 0x0020,
682    }
683 
684    enum : uint {
685       CBEIF_TEXT = 0x00000001,
686       CBEIF_IMAGE = 0x00000002,
687       CBEIF_SELECTEDIMAGE = 0x00000004,
688       CBEIF_OVERLAY = 0x00000008,
689       CBEIF_INDENT = 0x00000010,
690       CBEIF_LPARAM = 0x00000020,
691       CBEIF_DI_SETITEM = 0x10000000,
692    }
693 
694    enum : uint {
695       TME_HOVER = 1,
696       TME_LEAVE = 2,
697       TME_QUERY = 0x40000000,
698       TME_CANCEL = 0x80000000,
699 
700       HOVER_DEFAULT = 0xFFFFFFFF,
701    }
702 
703    enum : uint {
704       TPM_LEFTBUTTON = 0x0000,
705       TPM_RIGHTBUTTON = 0x0002,
706       TPM_LEFTALIGN = 0x0000,
707       TPM_CENTERALIGN = 0x0004,
708       TPM_RIGHTALIGN = 0x0008,
709       TPM_TOPALIGN = 0x0000,
710       TPM_VCENTERALIGN = 0x0010,
711       TPM_BOTTOMALIGN = 0x0020,
712       TPM_HORIZONTAL = 0x0000,
713       TPM_VERTICAL = 0x0040,
714       TPM_NONOTIFY = 0x0080,
715       TPM_RETURNCMD = 0x0100,
716       TPM_RECURSE = 0x0001,
717    }
718 
719    enum {
720       ICON_SMALL = 0,
721       ICON_BIG = 1,
722    }
723 
724    enum : uint {
725       SPI_GETNONCLIENTMETRICS = 41,
726       SPI_GETWORKAREA = 48,
727       SPI_GETANIMATION = 72,
728       SPI_GETWHEELSCROLLLINES = 104,
729       SPI_GETWHEELSCROLLCHARS = 108,
730    }
731 
732    enum : uint {
733       ODS_SELECTED = 1,
734       ODS_GRAYED = 2,
735       ODS_DISABLED = 4,
736       ODS_CHECKED = 8,
737       ODS_FOCUS = 16,
738       ODS_DEFAULT = 32,
739       ODS_COMBOBOXEDIT = 4096,
740    }
741 
742    const LPWSTR IDC_ARROW = cast(LPWSTR)32512;
743    const LPWSTR IDC_UPARROW = cast(LPWSTR)32516;
744    const LPWSTR IDC_ICON = cast(LPWSTR)32641;
745    const LPWSTR IDC_APPSTARTING = cast(LPWSTR)32650;
746    const LPWSTR IDC_HAND = cast(LPWSTR)32649; // Windows 98+
747    const LPWSTR IDC_HELP = cast(LPWSTR)32651;
748    const LPWSTR IDC_IBEAM = cast(LPWSTR)32513;
749    const LPWSTR IDC_NO = cast(LPWSTR)32648;
750    const LPWSTR IDC_SIZEALL = cast(LPWSTR)32646;
751    const LPWSTR IDC_SIZENESW = cast(LPWSTR)32643;
752    const LPWSTR IDC_SIZENS = cast(LPWSTR)32645;
753    const LPWSTR IDC_SIZENWSE = cast(LPWSTR)32642;
754    const LPWSTR IDC_SIZEWE = cast(LPWSTR)32644;
755    const LPWSTR IDC_WAIT = cast(LPWSTR)32514;
756 
757    enum : ushort {
758       MK_LBUTTON = 0x0001,
759       MK_RBUTTON = 0x0002,
760       MK_SHIFT = 0x0004,
761       MK_CONTROL = 0x0008,
762       MK_MBUTTON = 0x0010,
763    }
764 
765    enum {
766       LOGPIXELSX = 88,
767       LOGPIXELSY = 90,
768    }
769 
770    enum {
771       LB_OKAY = 0,
772       LB_ERR = -1,
773       LB_ERRSPACE = -2,
774    }
775 
776    enum : uint {
777       LB_GETCOUNT = 0x018B,
778       LB_GETITEMDATA = 0x0199,
779       LB_ADDSTRING = 0x0180,
780       LB_SETITEMDATA = 0x019A,
781       LB_RESETCONTENT = 0x0184,
782       LB_INSERTSTRING = 0x0181,
783       LB_DELETESTRING = 0x0182,
784       LB_GETHORIZONTALEXTENT = 0x0193,
785       LB_SETHORIZONTALEXTENT = 0x0194,
786       LB_SETITEMHEIGHT = 0x01A0,
787       LB_GETITEMHEIGHT = 0x01A1,
788       LB_GETSELCOUNT = 0x0190,
789       LB_GETSELITEMS = 0x0191,
790       LB_SETCURSEL = 0x0186,
791       LB_GETCURSEL = 0x0188,
792       LB_SETTOPINDEX = 0x0197,
793       LB_GETTOPINDEX = 0x018E,
794       LB_SELITEMRANGE = 0x0183,
795       LB_SETSEL = 0x0185,
796       LB_FINDSTRING = 0x018F,
797       LB_FINDSTRINGEXACT = 0x01A2,
798       LB_GETITEMRECT = 0x0198,
799       LB_GETSEL = 0x0187,
800       LB_ITEMFROMPOINT = 0x01A9,
801       LB_ADDFILE = 0x0196,
802       LB_DIR = 0x018D,
803    }
804 
805    enum : uint {
806       LBS_NOINTEGRALHEIGHT = 0x0100,
807       LBS_MULTICOLUMN = 0x0200,
808       LBS_DISABLENOSCROLL = 0x1000,
809       LBS_NOSEL = 0x4000,
810       LBS_EXTENDEDSEL = 0x0800,
811       LBS_MULTIPLESEL = 0x0008,
812       LBS_SORT = 0x0002,
813       LBS_USETABSTOPS = 0x0080,
814       LBS_OWNERDRAWVARIABLE = 0x0020,
815       LBS_OWNERDRAWFIXED = 0x0010,
816       LBS_NOTIFY = 0x0001,
817       LBS_HASSTRINGS = 0x0040,
818       LBS_WANTKEYBOARDINPUT = 0x0400,
819    }
820 
821    enum {
822       LBN_ERRSPACE = -2,
823       LBN_SELCHANGE = 1,
824       LBN_DBLCLK = 2,
825       LBN_SELCANCEL = 3,
826       LBN_SETFOCUS = 4,
827       LBN_KILLFOCUS = 5,
828    }
829 
830    enum {
831       CB_OKAY = 0,
832       CB_ERR = -1,
833       CB_ERRSPACE = -2,
834    }
835 
836    enum : uint {
837       CB_SETCURSEL = 0x014E,
838       CB_GETCURSEL = 0x0147,
839       CB_FINDSTRING = 0x014C,
840       CB_FINDSTRINGEXACT = 0x0158,
841       CB_SETITEMHEIGHT = 0x0153,
842       CB_GETITEMHEIGHT = 0x0154,
843       CB_ADDSTRING = 0x0143,
844       CB_DELETESTRING = 0x0144,
845       CB_DIR = 0x0145,
846       CB_INSERTSTRING = 0x014A,
847       CB_RESETCONTENT = 0x014B,
848       CB_SETITEMDATA = 0x0151,
849       CB_GETDROPPEDWIDTH = 0x015f,
850       CB_SETDROPPEDWIDTH = 0x0160,
851       CB_LIMITTEXT = 0x0141,
852       CB_GETEDITSEL = 0x0140,
853       CB_SETEDITSEL = 0x0142,
854       CB_SHOWDROPDOWN = 0x014F,
855       CB_GETDROPPEDSTATE = 0x0157,
856 
857       //CBEM_INSERTITEMA 		= WM_USER + 1,
858       //CBEM_GETITEMA			= WM_USER + 4,
859       //CBEM_SETITEMA			= WM_USER + 5,
860       CBEM_SETIMAGELIST = WM_USER + 2,
861       CBEM_GETIMAGELIST = WM_USER + 3,
862       CBEM_DELETEITEM = CB_DELETESTRING,
863       CBEM_GETCOMBOCONTROL = WM_USER + 6,
864       CBEM_GETEDITCONTROL = WM_USER + 7,
865       CBEM_SETEXSTYLE = WM_USER + 8,
866       CBEM_GETEXSTYLE = WM_USER + 9,
867       CBEM_SETEXTENDEDSTYLE = WM_USER + 14,
868       CBEM_GETEXTENDEDSTYLE = WM_USER + 9,
869       CBEM_HASEDITCHANGED = WM_USER + 10,
870       CBEM_INSERTITEMW = WM_USER + 11,
871       CBEM_SETITEMW = WM_USER + 12,
872       CBEM_GETITEMW = WM_USER + 13,
873    }
874 
875    enum : DWORD {
876       CBS_SORT = 0x0100,
877       CBS_HASSTRINGS = 0x0200,
878       CBS_NOINTEGRALHEIGHT = 0x0400,
879    }
880 
881    enum {
882       CBN_SELCHANGE = 1,
883       CBN_SETFOCUS = 3,
884       CBN_KILLFOCUS = 4,
885       CBN_EDITCHANGE = 5,
886    }
887 
888    enum : uint {
889       TVE_COLLAPSE = 0x0001,
890       TVE_EXPAND = 0x0002,
891       TVE_TOGGLE = 0x0003,
892    }
893 
894    enum : uint {
895       TVIS_SELECTED = 0x0002,
896       TVIS_EXPANDED = 0x0020,
897    }
898 
899    enum : uint {
900       TVIF_TEXT = 0x0001,
901       TVIF_IMAGE = 0x0002,
902       TVIF_PARAM = 0x0004,
903       TVIF_STATE = 0x0008,
904       TVIF_HANDLE = 0x0010,
905       TVIF_SELECTEDIMAGE = 0x0020,
906       TVIF_CHILDREN = 0x0040,
907       TVIF_INTEGRAL = 0x0080, // IE4+
908    }
909 
910    enum : uint {
911       TVGN_FIRSTVISIBLE = 0x0005,
912       TVGN_CARET = 0x0009,
913    }
914 
915    enum : uint {
916       TV_FIRST = 0x1100,
917       TVN_FIRST = cast(UINT)-400,
918 
919       TVM_INSERTITEMA = TV_FIRST + 0,
920       TVM_DELETEITEM = TV_FIRST + 1,
921       TVM_EXPAND = TV_FIRST + 2,
922       TVM_GETITEMRECT = TV_FIRST + 4,
923       TVM_GETINDENT = TV_FIRST + 6,
924       TVM_SETINDENT = TV_FIRST + 7,
925       TVM_SETIMAGELIST = TV_FIRST + 9,
926       TVM_GETNEXTITEM = TV_FIRST + 10,
927       TVM_SELECTITEM = TV_FIRST + 11,
928       TVM_GETITEMA = TV_FIRST + 12,
929       TVM_SETITEMA = TV_FIRST + 13,
930       TVM_EDITLABELA = TV_FIRST + 14,
931       TVM_GETVISIBLECOUNT = TV_FIRST + 16,
932       TVM_HITTEST = TV_FIRST + 17,
933       TVM_ENSUREVISIBLE = TV_FIRST + 20,
934       TVM_SETITEMHEIGHT = TV_FIRST + 27, // Internet Explorer 4+
935       TVM_GETITEMHEIGHT = TV_FIRST + 28, // Internet Explorer 4+
936       TVM_INSERTITEMW = TV_FIRST + 50,
937       TVM_SETITEMW = TV_FIRST + 63,
938       TVM_GETITEMW = TV_FIRST + 62,
939 
940       TVN_SELCHANGINGA = TVN_FIRST - 1,
941       TVN_SELCHANGEDA = TVN_FIRST - 2,
942       TVN_GETDISPINFOA = TVN_FIRST - 3,
943       TVN_ITEMEXPANDINGA = TVN_FIRST - 5,
944       TVN_ITEMEXPANDEDA = TVN_FIRST - 6,
945       TVN_BEGINLABELEDITA = TVN_FIRST - 10,
946       TVN_ENDLABELEDITA = TVN_FIRST - 11,
947       TVN_SELCHANGINGW = TVN_FIRST - 50,
948       TVN_SELCHANGEDW = TVN_FIRST - 51,
949       TVN_GETDISPINFOW = TVN_FIRST - 52,
950       TVN_ITEMEXPANDINGW = TVN_FIRST - 54,
951       TVN_ITEMEXPANDEDW = TVN_FIRST - 55,
952       TVN_BEGINLABELEDITW = TVN_FIRST - 59,
953       TVN_ENDLABELEDITW = TVN_FIRST - 60,
954    }
955 
956    enum : uint {
957       TVS_HASBUTTONS = 0x0001,
958       TVS_HASLINES = 0x0002,
959       TVS_LINESATROOT = 0x0004,
960       TVS_EDITLABELS = 0x0008,
961       TVS_SHOWSELALWAYS = 0x0020,
962       TVS_CHECKBOXES = 0x0100, // Internet Explorer 3+
963       TVS_TRACKSELECT = 0x0200, // Internet Explorer 3+
964       TVS_FULLROWSELECT = 0x1000, // Internet Explorer 4+
965       TVS_NOSCROLL = 0x2000, // Internet Explorer 4+
966       TVS_SINGLEEXPAND = 0x0400, // Internet Explorer 4+
967    }
968 
969    enum : HTREEITEM {
970       TVI_ROOT = cast(HTREEITEM)-0x10000,
971       TVI_FIRST = cast(HTREEITEM)-0x0FFFF,
972       TVI_LAST = cast(HTREEITEM)-0x0FFFE,
973       TVI_SORT = cast(HTREEITEM)-0x0FFFD,
974    }
975 
976    enum : uint {
977       TVC_UNKNOWN = 0x0000,
978       TVC_BYMOUSE = 0x0001,
979       TVC_BYKEYBOARD = 0x0002,
980    }
981 
982    enum : WPARAM {
983       TVSIL_NORMAL = 0,
984       TVSIL_STATE = 2,
985    }
986 
987    enum : uint {
988       SB_SETTEXTA = WM_USER + 1,
989       SB_SETPARTS = WM_USER + 4,
990       SB_SIMPLE = WM_USER + 9,
991       SB_SETTEXTW = WM_USER + 11,
992 
993       SBARS_SIZEGRIP = 0x0100,
994    }
995 
996    enum : WPARAM {
997       SBT_NOBORDERS = 0x0100,
998       SBT_POPOUT = 0x0200,
999       SBT_RTLREADING = 0x0400,
1000       SBT_OWNERDRAW = 0x1000,
1001    }
1002 
1003    enum : uint {
1004       LVM_FIRST = 0x1000,
1005 
1006       LVM_SETBKCOLOR = LVM_FIRST + 1,
1007       LVM_SETIMAGELIST = LVM_FIRST + 3,
1008       LVM_SETITEMW = LVM_FIRST + 76,
1009       LVM_DELETEITEM = LVM_FIRST + 8,
1010       LVM_DELETEALLITEMS = LVM_FIRST + 9,
1011       LVM_SETCALLBACKMASK = LVM_FIRST + 11,
1012       LVM_GETNEXTITEM = LVM_FIRST + 12,
1013       LVM_GETITEMRECT = LVM_FIRST + 14,
1014       LVM_ENSUREVISIBLE = LVM_FIRST + 19,
1015       LVM_REDRAWITEMS = LVM_FIRST + 21,
1016       LVM_ARRANGE = LVM_FIRST + 22,
1017       LVM_DELETECOLUMN = LVM_FIRST + 28,
1018       LVM_SETCOLUMNWIDTH = LVM_FIRST + 30,
1019       LVM_SETTEXTCOLOR = LVM_FIRST + 36,
1020       LVM_SETTEXTBKCOLOR = LVM_FIRST + 38,
1021       LVM_SETITEMSTATE = LVM_FIRST + 43,
1022       LVM_GETITEMSTATE = LVM_FIRST + 44,
1023       LVM_SETITEMTEXTA = LVM_FIRST + 46,
1024       LVM_SORTITEMS = LVM_FIRST + 48,
1025       LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54,
1026       LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55,
1027       LVM_INSERTITEMW = LVM_FIRST + 77,
1028       LVM_SETCOLUMNW = LVM_FIRST + 96,
1029       LVM_INSERTCOLUMNW = LVM_FIRST + 97,
1030       LVM_SETITEMTEXTW = LVM_FIRST + 116,
1031       LVM_EDITLABELW = LVM_FIRST + 118,//LVM_SETITEMA	  				= LVM_FIRST + 6,
1032       //LVM_INSERTITEMA 				= LVM_FIRST + 7,
1033       //LVM_EDITLABELA 				= LVM_FIRST + 23,
1034       //LVM_GETCOLUMNA 				= LVM_FIRST + 25,
1035       //LVM_SETCOLUMNA 				= LVM_FIRST + 26,
1036       //LVM_INSERTCOLUMNA				= LVM_FIRST + 27,
1037    }
1038 
1039    enum : uint {
1040       LVIS_OVERLAYMASK = 0x0F00,
1041       LVIS_STATEIMAGEMASK = 0xF000,
1042    }
1043 
1044    enum : uint {
1045       LVN_FIRST = cast(uint)-100,
1046 
1047       LVN_ITEMCHANGING = LVN_FIRST - 0,
1048       LVN_ITEMCHANGED = LVN_FIRST - 1,
1049       LVN_BEGINLABELEDITW = LVN_FIRST - 75,
1050       LVN_ENDLABELEDITW = LVN_FIRST - 76,
1051       LVN_COLUMNCLICK = LVN_FIRST - 8,
1052       LVN_GETDISPINFOW = LVN_FIRST - 77,//LVN_BEGINLABELEDITA 	= LVN_FIRST - 5,
1053       //LVN_GETDISPINFOA 		= LVN_FIRST - 50,
1054       //LVN_ENDLABELEDITA 	= LVN_FIRST - 6,
1055    }
1056 
1057    enum : uint {
1058       LVCF_FMT = 0x0001,
1059       LVCF_WIDTH = 0x0002,
1060       LVCF_TEXT = 0x0004,
1061       LVCF_SUBITEM = 0x0008,
1062    }
1063 
1064    enum : int {
1065       LVCFMT_LEFT = 0x0000,
1066       LVCFMT_RIGHT = 0x0001,
1067       LVCFMT_CENTER = 0x0002,
1068       LVCFMT_JUSTIFYMASK = 0x0003,
1069    }
1070 
1071    enum : uint {
1072       LVIF_TEXT = 0x0001,
1073       LVIF_IMAGE = 0x0002,
1074       LVIF_PARAM = 0x0004,
1075       LVIF_STATE = 0x0008,
1076    }
1077 
1078    enum : uint {
1079       LVIS_FOCUSED = 0x0001,
1080       LVIS_SELECTED = 0x0002,
1081       LVIS_CUT = 0x0004,
1082       LVIS_DROPHILITED = 0x0008,
1083    }
1084 
1085    enum : uint {
1086       LVS_ALIGNTOP = 0x0000,
1087       LVS_ALIGNLEFT = 0x0800,
1088       LVS_ICON = 0x0000,
1089       LVS_REPORT = 0x0001,
1090       LVS_SMALLICON = 0x0002,
1091       LVS_LIST = 0x0003,
1092       LVS_SINGLESEL = 0x0004,
1093       LVS_SHOWSELALWAYS = 0x0008,
1094       LVS_SORTASCENDING = 0x0010,
1095       LVS_SORTDESCENDING = 0x0020,
1096       LVS_SHAREIMAGELISTS = 0x0040,
1097       LVS_NOLABELWRAP = 0x0080,
1098       LVS_AUTOARRANGE = 0x0100,
1099       LVS_EDITLABELS = 0x0200,
1100       LVS_OWNERDRAWFIXED = 0x0400,
1101       LVS_OWNERDATA = 0x1000,
1102       LVS_NOSCROLL = 0x2000,
1103    }
1104 
1105    enum : uint {
1106       LVS_EX_GRIDLINES = 0x00000001,
1107       LVS_EX_SUBITEMIMAGES = 0x00000002,
1108       LVS_EX_CHECKBOXES = 0x00000004,
1109       LVS_EX_TRACKSELECT = 0x00000008,
1110       LVS_EX_HEADERDRAGDROP = 0x00000010,
1111       LVS_EX_FULLROWSELECT = 0x00000020,
1112       LVS_EX_ONECLICKACTIVATE = 0x00000040,
1113       LVS_EX_TWOCLICKACTIVATE = 0x00000080,
1114 
1115       // Internet Explorer 4+
1116       LVS_EX_FLATSB = 0x00000100,
1117       LVS_EX_REGIONAL = 0x00000200,
1118       LVS_EX_INFOTIP = 0x00000400,
1119       LVS_EX_UNDERLINEHOT = 0x00000800,
1120       LVS_EX_UNDERLINECOLD = 0x00001000,
1121       LVS_EX_MULTIWORKAREAS = 0x00002000,
1122    }
1123 
1124    enum {
1125       LVSIL_NORMAL = 0,
1126       LVSIL_SMALL = 1,
1127       LVSIL_STATE = 2,
1128    }
1129 
1130    enum : uint {
1131       TCM_FIRST = 0x1300,
1132 
1133       TCM_DELETEITEM = TCM_FIRST + 8,
1134       TCM_DELETEALLITEMS = TCM_FIRST + 9,
1135       TCM_GETITEMRECT = TCM_FIRST + 10,
1136       TCM_GETCURSEL = TCM_FIRST + 11,
1137       TCM_SETCURSEL = TCM_FIRST + 12,
1138       TCM_ADJUSTRECT = TCM_FIRST + 40,
1139       TCM_SETITEMSIZE = TCM_FIRST + 41,
1140       TCM_SETPADDING = TCM_FIRST + 43,
1141       TCM_GETROWCOUNT = TCM_FIRST + 44,
1142       TCM_SETTOOLTIPS = TCM_FIRST + 46,
1143       TCM_SETITEMW = TCM_FIRST + 61,
1144       TCM_SETIMAGELIST = TCM_FIRST + 3,
1145       TCM_INSERTITEMW = TCM_FIRST + 62,//TCM_SETITEMA 		 = TCM_FIRST + 6,
1146       //TCM_INSERTITEMA  	 = TCM_FIRST + 7,
1147       //TCM_SETITEMEXTRA 	 = TCM_FIRST + 14,
1148    }
1149 
1150    enum : uint {
1151       TCIF_TEXT = 0x0001,
1152       TCIF_IMAGE = 0x0002,
1153       TCIF_RTLREADING = 0x0004,
1154       TCIF_PARAM = 0x0008,
1155    }
1156 
1157    enum : uint {
1158       TCS_FORCEICONLEFT = 0x0010,
1159       TCS_FORCELABELLEFT = 0x0020,
1160       TCS_TABS = 0x0000,
1161       TCS_BUTTONS = 0x0100,
1162       TCS_SINGLELINE = 0x0000,
1163       TCS_MULTILINE = 0x0200,
1164       TCS_RIGHTJUSTIFY = 0x0000,
1165       TCS_FIXEDWIDTH = 0x0400,
1166       TCS_RAGGEDRIGHT = 0x0800,
1167       TCS_FOCUSONBUTTONDOWN = 0x1000,
1168       TCS_OWNERDRAWFIXED = 0x2000,
1169       TCS_TOOLTIPS = 0x4000,
1170       TCS_FOCUSNEVER = 0x8000,
1171 
1172       // Internet Explorer 3+
1173       TCS_SCROLLOPPOSITE = 0x0001,
1174       TCS_BOTTOM = 0x0002,
1175       TCS_RIGHT = 0x0002,
1176       TCS_MULTISELECT = 0x0004,
1177       TCS_HOTTRACK = 0x0040,
1178       TCS_VERTICAL = 0x0080,
1179 
1180       // Internet Explorer 4+
1181       TCS_FLATBUTTONS = 0x0008,
1182    }
1183 
1184    enum : uint {
1185       TCN_FIRST = cast(uint)-550,
1186 
1187       TCN_SELCHANGE = TCN_FIRST - 1,
1188       TCN_SELCHANGING = TCN_FIRST - 2,
1189    }
1190 
1191    enum : uint {
1192       NIF_MESSAGE = 0x00000001,
1193       NIF_ICON = 0x00000002,
1194       NIF_TIP = 0x00000004,
1195    }
1196 
1197    enum : uint {
1198       NIM_ADD = 0x00000000,
1199       NIM_MODIFY = 0x00000001,
1200       NIM_DELETE = 0x00000002,
1201    }
1202 
1203    enum : uint {
1204       SIF_RANGE = 0x0001,
1205       SIF_PAGE = 0x0002,
1206       SIF_POS = 0x0004,
1207       SIF_DISABLENOSCROLL = 0x0008,
1208       SIF_ALL = 23,
1209    }
1210 
1211    enum : int {
1212       SM_SWAPBUTTON = 23,
1213       SM_CXFRAME = 32,
1214       SM_CYFRAME = 33,
1215       SM_CXSMICON = 49,
1216       SM_CYSMICON = 50,
1217       SM_CYSMCAPTION = 51,
1218       SM_CXSIZEFRAME = SM_CXFRAME,
1219       SM_CYSIZEFRAME = SM_CYFRAME,
1220       SM_CYMENU = 15,
1221       SM_CXVSCROLL = 2,
1222       SM_CYHSCROLL = 3,
1223    }
1224 
1225    enum : uint {
1226       LR_DEFAULTCOLOR = 0,
1227       LR_MONOCHROME = 1,
1228       LR_COLOR = 2,
1229       LR_COPYRETURNORG = 4,
1230       LR_COPYDELETEORG = 8,
1231       LR_LOADTRANSPARENT = 32,
1232       LR_LOADREALSIZE = 128,
1233       LR_LOADMAP3DCOLORS = 4096,
1234       LR_CREATEDIBSECTION = 8192,
1235       LR_COPYFROMRESOURCE = 16384,
1236       LR_LOADFROMFILE = 0x0010,
1237       LR_DEFAULTSIZE = 0x0040,
1238       LR_SHARED = 0x8000,
1239    }
1240 
1241    enum : COLORREF {
1242       CLR_INVALID = 0xFFFFFFFF,
1243       CLR_NONE = CLR_INVALID,
1244    }
1245 
1246    enum : uint {
1247       DT_TOP = 0x00000000,
1248       DT_LEFT = 0x00000000,
1249       DT_CENTER = 0x00000001,
1250       DT_RIGHT = 0x00000002,
1251       DT_VCENTER = 0x00000004,
1252       DT_BOTTOM = 0x00000008,
1253       DT_WORDBREAK = 0x00000010,
1254       DT_SINGLELINE = 0x00000020,
1255       DT_EXPANDTABS = 0x00000040,
1256       DT_TABSTOP = 0x00000080,
1257       DT_NOCLIP = 0x00000100,
1258       DT_EXTERNALLEADING = 0x00000200,
1259       DT_CALCRECT = 0x00000400,
1260       DT_NOPREFIX = 0x00000800,
1261       DT_INTERNAL = 0x00001000,
1262       DT_EDITCONTROL = 0x00002000,
1263       DT_PATH_ELLIPSIS = 0x00004000,
1264       DT_END_ELLIPSIS = 0x00008000,
1265       DT_MODIFYSTRING = 0x00010000,
1266       DT_RTLREADING = 0x00020000,
1267       DT_WORD_ELLIPSIS = 0x00040000,
1268    }
1269 
1270    enum {
1271       TRANSPARENT = 1,
1272       OPAQUE = 2,
1273    }
1274 
1275    enum : uint {
1276       ETO_OPAQUE = 0x0002,
1277       ETO_CLIPPED = 0x0004,
1278    }
1279 
1280    enum : uint {
1281       PS_SOLID = 0,
1282       PS_DASH = 1,
1283       PS_DOT = 2,
1284       PS_DASHDOT = 3,
1285       PS_DASHDOTDOT = 4,
1286       PS_NULL = 5,
1287       PS_INSIDEFRAME = 6,
1288    }
1289 
1290    enum : uint {
1291       IMAGE_BITMAP = 0,
1292       IMAGE_ICON = 1,
1293       IMAGE_CURSOR = 2,
1294    }
1295 
1296    const LPWSTR IDI_ERROR = MAKEINTRESOURCEW(32513);
1297    const LPWSTR IDI_QUESTION = MAKEINTRESOURCEW(32514);
1298    const LPWSTR IDI_WARNING = MAKEINTRESOURCEW(32515);
1299    const LPWSTR IDI_ASTERISK = MAKEINTRESOURCEW(32516);
1300    const LPWSTR IDI_INFORMATION = IDI_ASTERISK;
1301 
1302    const LPCWSTR RT_BITMAP = MAKEINTRESOURCEW(2);
1303    const LPCWSTR RT_ICON = MAKEINTRESOURCEW(3);
1304    const LPCWSTR RT_MENU = MAKEINTRESOURCEW(4);
1305    const LPCWSTR RT_DIALOG = MAKEINTRESOURCEW(5);
1306    const LPCWSTR RT_STRING = MAKEINTRESOURCEW(6);
1307    const LPCWSTR RT_FONTDIR = MAKEINTRESOURCEW(7);
1308    const LPCWSTR RT_ACCELERATOR = MAKEINTRESOURCEW(9);
1309    const LPCWSTR RT_RCDATA = MAKEINTRESOURCEW(10);
1310    const LPCWSTR RT_MESSAGETABLE = MAKEINTRESOURCEW(11);
1311    const LPCWSTR RT_VERSION = MAKEINTRESOURCEW(16);
1312    const LPCWSTR RT_DLGINCLUDE = MAKEINTRESOURCEW(17);
1313    const LPCWSTR RT_PLUGPLAY = MAKEINTRESOURCEW(19);
1314    const LPCWSTR RT_VXD = MAKEINTRESOURCEW(20);
1315    const LPCWSTR RT_ANICURSOR = MAKEINTRESOURCEW(21);
1316    const LPCWSTR RT_ANIICON = MAKEINTRESOURCEW(22);
1317    const LPCWSTR RT_HTML = MAKEINTRESOURCEW(23);
1318    const LPCWSTR RT_MANIFEST = MAKEINTRESOURCEW(24);
1319 
1320    enum : LONG {
1321       HS_HORIZONTAL = 0,
1322       HS_VERTICAL = 1,
1323       HS_FDIAGONAL = 2,
1324       HS_BDIAGONAL = 3,
1325       HS_CROSS = 4,
1326       HS_DIAGCROSS = 5,
1327    }
1328 
1329    enum : uint {
1330       // Internet Explorer 3+
1331       ICC_LISTVIEW_CLASSES = 0x00000001,
1332       ICC_TREEVIEW_CLASSES = 0x00000002,
1333       ICC_BAR_CLASSES = 0x00000004, // ToolBar/StatusBar/TrackBar
1334       ICC_TAB_CLASSES = 0x00000008,
1335       ICC_UPDOWN_CLASS = 0x00000010,
1336       ICC_PROGRESS_CLASS = 0x00000020,
1337       ICC_HOTKEY_CLASS = 0x00000040,
1338       ICC_ANIMATE_CLASS = 0x00000080,
1339       ICC_WIN95_CLASSES = 0x000000FF,
1340       ICC_DATE_CLASSES = 0x00000100,
1341       ICC_USEREX_CLASSES = 0x00000200,
1342       ICC_COOL_CLASSES = 0x00000400,
1343 
1344       ICC_STANDARD_CLASSES = 0x00004000,
1345 
1346       // IE4+
1347       ICC_INTERNET_CLASSES = 0x00000800,
1348       ICC_PAGESCROLLER_CLASS = 0x00001000,
1349       ICC_NATIVEFNTCTL_CLASS = 0x00002000,
1350    }
1351 
1352    enum : uint {
1353       PBS_SMOOTH = 0x01,
1354       PBS_VERTICAL = 0x04,
1355       PBS_MARQUEE = 0x08,
1356       PBS_SMOOTHREVERSE = 0x10,
1357    }
1358 
1359    enum : uint {
1360       PBM_SETRANGE = WM_USER + 1,
1361       PBM_SETPOS = WM_USER + 2,
1362       PBM_DELTAPOS = WM_USER + 3,
1363       PBM_SETSTEP = WM_USER + 4,
1364       PBM_STEPIT = WM_USER + 5,
1365       PBM_SETMARQUEE = WM_USER + 10,
1366       PBM_SETRANGE32 = 1030,
1367       PBM_GETRANGE = 1031,
1368       PBM_GETPOS = 1032,
1369       PBM_SETBARCOLOR = 1033,
1370    }
1371 
1372    enum : uint {
1373       BIF_RETURNONLYFSDIRS = 0x0001,
1374       BIF_NEWDIALOGSTYLE = 0x0040,
1375       BIF_NONEWFOLDERBUTTON = 0x0200, // Shell32.dll 6.0+
1376    }
1377 
1378    enum {
1379       ILD_NORMAL = 0,
1380       LF_FACESIZE = 32,
1381    }
1382 
1383    enum : uint {
1384       ILC_COLOR4 = 0x0004,
1385       ILC_COLOR8 = 0x0008,
1386       ILC_COLOR16 = 0x0010,
1387       ILC_COLOR24 = 0x0018,
1388       ILC_COLOR32 = 0x0020,
1389       ILC_MASK = 0x0001,
1390    }
1391 
1392    enum : uint {
1393       TBSTYLE_BUTTON = 0x00,
1394       TBSTYLE_SEP = 0x01,
1395       TBSTYLE_CHECK = 0x02,
1396       TBSTYLE_GROUP = 0x04,
1397       TBSTYLE_DROPDOWN = 0x08,
1398       TBSTYLE_AUTOSIZE = 0x10,
1399       TBSTYLE_WRAPABLE = 0x200,
1400       TBSTYLE_FLAT = 0x800,
1401       TBSTYLE_LIST = 0x1000,
1402 
1403       TBSTYLE_EX_DRAWDDARROWS = 0x00000001,
1404 
1405       BTNS_BUTTON = TBSTYLE_BUTTON,
1406       BTNS_SEP = TBSTYLE_SEP,
1407       BTNS_CHECK = TBSTYLE_CHECK,
1408       BTNS_GROUP = TBSTYLE_GROUP,
1409       BTNS_DROPDOWN = TBSTYLE_DROPDOWN,
1410       BTNS_AUTOSIZE = TBSTYLE_AUTOSIZE,
1411       BTNS_WHOLEDROPDOWN = 0x0080,
1412       BTNS_SHOWTEXT = 0x0040,
1413    }
1414 
1415    enum : BYTE {
1416       TBSTATE_CHECKED = 0x01,
1417       TBSTATE_PRESSED = 0x02,
1418       TBSTATE_ENABLED = 0x04,
1419       TBSTATE_HIDDEN = 0x08,
1420       TBSTATE_INDETERMINATE = 0x10,
1421       TBSTATE_WRAP = 0x20,
1422       TBSTATE_ELLIPSES = 0x40,
1423       TBSTATE_MARKED = 0x80,
1424    }
1425 
1426    enum : LRESULT {
1427       TBDDRET_DEFAULT = 0,
1428       TBDDRET_NODEFAULT = 1,
1429       TBDDRET_TREATPRESSED = 2,
1430    }
1431 
1432    enum : uint {
1433       TBIF_IMAGE = 1,
1434       TBIF_TEXT = 2,
1435       TBIF_STATE = 4,
1436       TBIF_STYLE = 8,
1437       TBIF_LPARAM = 16,
1438       TBIF_COMMAND = 32,
1439       TBIF_SIZE = 64,
1440       TBIF_BYINDEX = 0x80000000,
1441    }
1442 
1443    enum : uint {
1444       TB_SETSTATE = WM_USER + 17,
1445       TB_DELETEBUTTON = WM_USER + 22,
1446       TB_GETITEMRECT = WM_USER + 29,
1447       TB_BUTTONSTRUCTSIZE = WM_USER + 30,
1448       TB_SETBUTTONSIZE = WM_USER + 31,
1449       TB_AUTOSIZE = WM_USER + 33,
1450       TB_SETIMAGELIST = WM_USER + 48,
1451       TB_INSERTBUTTONW = WM_USER + 67,
1452       TB_ADDBUTTONSW = WM_USER + 68,
1453       TB_SETPADDING = WM_USER + 87,
1454       TB_GETBUTTONINFOW = WM_USER + 63,
1455       TB_SETBUTTONINFOW = WM_USER + 64,
1456       TB_HITTEST = WM_USER + 69,
1457       TB_GETBUTTONSIZE = WM_USER + 58,
1458       TB_SETEXTENDEDSTYLE = WM_USER + 84,
1459       TB_GETEXTENDEDSTYLE = WM_USER + 85,//TB_ADDBUTTONSA 	= WM_USER + 20,
1460       //TB_INSERTBUTTONA 	= WM_USER + 21,
1461       //TB_GETBUTTONINFOA = WM_USER + 65,
1462       //TB_SETBUTTONINFOA = WM_USER + 66,
1463    }
1464 
1465    enum : uint {
1466       CC_RGBINIT = 0x00000001,
1467       CC_FULLOPEN = 0x00000002,
1468       CC_PREVENTFULLOPEN = 0x00000004,
1469       CC_SHOWHELP = 0x00000008,
1470       CC_ENABLEHOOK = 0x00000010,
1471       CC_ENABLETEMPLATE = 0x00000020,
1472       CC_ENABLETEMPLATEHANDLE = 0x00000040,
1473       CC_SOLIDCOLOR = 0x00000080,
1474       CC_ANYCOLOR = 0x00000100,
1475    }
1476 
1477    enum : uint {
1478       TBN_FIRST = cast(uint)-700,
1479       TBN_DROPDOWN = TBN_FIRST - 10,
1480    }
1481 
1482    struct WNDCLASSEXW {
1483       UINT cbSize;
1484       UINT style;
1485       WNDPROC lpfnWndProc;
1486       int cbClsExtra;
1487       int cbWndExtra;
1488       HINSTANCE hInstance;
1489       HICON hIcon;
1490       HCURSOR hCursor;
1491       HBRUSH hbrBackground;
1492       LPCWSTR lpszMenuName;
1493       LPCWSTR lpszClassName;
1494       HICON hIconSm;
1495    }
1496 
1497    align(1) struct TEXTMETRICW {
1498       LONG tmHeight;
1499       LONG tmAscent;
1500       LONG tmDescent;
1501       LONG tmInternalLeading;
1502       LONG tmExternalLeading;
1503       LONG tmAveCharWidth;
1504       LONG tmMaxCharWidth;
1505       LONG tmWeight;
1506       LONG tmOverhang;
1507       LONG tmDigitizedAspectX;
1508       LONG tmDigitizedAspectY;
1509       wchar tmFirstChar;
1510       wchar tmLastChar;
1511       wchar tmDefaultChar;
1512       wchar tmBreakChar;
1513       BYTE tmItalic;
1514       BYTE tmUnderlined;
1515       BYTE tmStruckOut;
1516       BYTE tmPitchAndFamily;
1517       BYTE tmCharSet;
1518    }
1519 
1520    struct SIZE {
1521       LONG cx;
1522       LONG cy;
1523    }
1524 
1525    struct NMMOUSE {
1526       NMHDR hdr;
1527       DWORD dwItemSpec;
1528       DWORD dwItemData;
1529       POINT pt;
1530       LPARAM dwHitInfo;
1531    }
1532 
1533    struct TCITEMHEADERW {
1534       UINT mask;
1535       UINT lpReserved1;
1536       UINT lpReserved2;
1537       LPCWSTR pszText;
1538       int cchTextMax;
1539       int iImage;
1540    }
1541 
1542    struct TRIVERTEX {
1543       LONG x;
1544       LONG y;
1545       ushort Red;
1546       ushort Green;
1547       ushort Blue;
1548       ushort Alpha;
1549    }
1550 
1551    struct GRADIENT_TRIANGLE {
1552       ULONG Vertex1;
1553       ULONG Vertex2;
1554       ULONG Vertex3;
1555    }
1556 
1557    struct GRADIENT_RECT {
1558       ULONG UpperLeft;
1559       ULONG LowerRight;
1560    }
1561 
1562    struct ACTCTXW {
1563       ULONG cbSize;
1564       DWORD dwFlags;
1565       LPCWSTR lpSource;
1566       USHORT wProcessorArchitecture;
1567       LANGID wLangId;
1568       LPCWSTR lpAssemblyDirectory;
1569       LPCWSTR lpResourceName;
1570       LPCWSTR lpApplicationName;
1571       HMODULE hModule;
1572    }
1573 
1574    struct OSVERSIONINFOW {
1575       DWORD dwOSVersionInfoSize;
1576       DWORD dwMajorVersion;
1577       DWORD dwMinorVersion;
1578       DWORD dwBuildNumber;
1579       DWORD dwPlatformId;
1580       wchar[128] szCSDVersion;
1581    }
1582 
1583    struct WINDOWPOS {
1584       HWND hwnd;
1585       HWND hwndInsertAfter;
1586       int x;
1587       int y;
1588       int cx;
1589       int cy;
1590       UINT flags;
1591    }
1592 
1593    struct WINDOWINFO {
1594       DWORD cbSize;
1595       RECT rcWindow;
1596       RECT rcClient;
1597       DWORD dwStyle;
1598       DWORD dwExStyle;
1599       DWORD dwWindowStatus;
1600       UINT cxWindowBorders;
1601       UINT cyWindowBorders;
1602       ATOM atomWindowType;
1603       WORD wCreatorVersion;
1604    }
1605 
1606    struct COMBOBOXEXITEMW {
1607       UINT mask;
1608       int iItem;
1609       LPCWSTR pszText;
1610       int cchTextMax;
1611       int iImage;
1612       int iSelectedImage;
1613       int iOverlay;
1614       int iIndent;
1615       LPARAM lParam;
1616    }
1617 
1618    struct BLENDFUNCTION {
1619       BYTE BlendOp;
1620       BYTE BlendFlags;
1621       BYTE SourceConstantAlpha;
1622       BYTE AlphaFormat;
1623    }
1624 
1625    struct NOTIFYICONDATA {
1626       DWORD cbSize;
1627       HWND hWnd;
1628       UINT uID;
1629       UINT uFlags;
1630       UINT uCallbackMessage;
1631       HICON hIcon;
1632       char[64] szTip;
1633    }
1634 
1635    struct SHITEMID {
1636    align(1):
1637       USHORT cb; // Size including cb.
1638       BYTE[1] abID;
1639    }
1640 
1641    struct ITEMIDLIST {
1642       SHITEMID mkid;
1643    }
1644 
1645    struct BROWSEINFOW {
1646       HWND hwndOwner;
1647       ITEMIDLIST* pidlRoot;
1648       LPWSTR pszDisplayName;
1649       LPCWSTR lpszTitle;
1650       UINT ulFlags;
1651       BFFCALLBACK lpfn;
1652       LPARAM lParam;
1653       int iImage;
1654    }
1655 
1656    struct LOGBRUSH {
1657       UINT lbStyle;
1658       COLORREF lbColor;
1659       LONG lbHatch;
1660    }
1661 
1662    struct DRAWTEXTPARAMS {
1663       UINT cbSize;
1664       int iTabLength;
1665       int iLeftMargin;
1666       int iRightMargin;
1667       UINT uiLengthDrawn;
1668    }
1669 
1670    struct NMHDR {
1671       HWND hwndFrom;
1672       UINT idFrom;
1673       UINT code;
1674    }
1675 
1676    struct NMCUSTOMDRAW {
1677       NMHDR hdr;
1678       DWORD dwDrawStage;
1679       HDC hdc;
1680       RECT rc;
1681       DWORD dwItemSpec;
1682       UINT uItemState;
1683       LPARAM lItemlParam;
1684    }
1685 
1686    struct NMTVCUSTOMDRAW {
1687       NMCUSTOMDRAW nmcd;
1688       COLORREF clrText;
1689       COLORREF clrTextBk;
1690       int iLevel; // IE4+
1691    }
1692 
1693    struct NMLISTVIEW {
1694       NMHDR hdr;
1695       int iItem;
1696       int iSubItem;
1697       UINT uNewState;
1698       UINT uOldState;
1699       UINT uChanged;
1700       POINT ptAction;
1701       LPARAM lParam;
1702    }
1703 
1704    struct LVITEMW {
1705       UINT mask;
1706       int iItem;
1707       int iSubItem;
1708       UINT state;
1709       UINT stateMask;
1710       LPCWSTR pszText;
1711       int cchTextMax;
1712       int iImage;
1713       LPARAM lParam;
1714    }
1715 
1716    align(1) struct NMTTDISPINFOW {
1717       NMHDR hdr;
1718       wchar* lpszText;
1719       wchar[80] szText;
1720       HINSTANCE hinst;
1721       UINT uFlags;
1722       LPARAM lParam;
1723    }
1724 
1725    struct LVDISPINFOW {
1726       NMHDR hdr;
1727       LVITEMW item;
1728    }
1729 
1730    struct LVCOLUMNW {
1731       UINT mask;
1732       int fmt;
1733       int cx;
1734       LPCWSTR pszText;
1735       int cchTextMax;
1736       int iSubItem;
1737    }
1738 
1739    struct TBBUTTON {
1740       int iBitmap;
1741       int idCommand;
1742       BYTE fsState;
1743       BYTE fsStyle;
1744       BYTE[2] bReserved;
1745       DWORD dwData;
1746       int iString;
1747    }
1748 
1749    struct NMTOOLBARW {
1750       NMHDR hdr;
1751       int iItem;
1752       TBBUTTON tbButton;
1753       int cchText;
1754       LPWSTR pszText;
1755       RECT rcButton;
1756    }
1757 
1758    struct TVITEMW {
1759       UINT mask;
1760       HTREEITEM hItem;
1761       UINT state;
1762       UINT stateMask;
1763       LPCWSTR pszText;
1764       int cchTextMax;
1765       int iImage;
1766       int iSelectedImage;
1767       int cChildren;
1768       LPARAM lParam;
1769    }
1770 
1771    struct TVHITTESTINFO {
1772       POINT pt;
1773       UINT flags;
1774       HTREEITEM hItem;
1775    }
1776 
1777    struct TVINSERTSTRUCTW {
1778       HTREEITEM hParent;
1779       HTREEITEM hInsertAfter;
1780       TVITEMW item;
1781    }
1782 
1783    struct NMTREEVIEWW {
1784       NMHDR hdr;
1785       UINT action;
1786       TVITEMW itemOld;
1787       TVITEMW itemNew;
1788       POINT ptDrag;
1789    }
1790 
1791    struct NMTVDISPINFOW {
1792       NMHDR hdr;
1793       TVITEMW item;
1794    }
1795 
1796    struct TCITEMW {
1797       UINT mask;
1798       UINT lpReserved1;
1799       UINT lpReserved2;
1800       LPCTSTR pszText;
1801       int cchTextMax;
1802       int iImage;
1803       LPARAM lParam;
1804    }
1805 
1806    // Rich edit.
1807    struct CHARRANGE {
1808       LONG cpMin;
1809       LONG cpMax;
1810    }
1811 
1812    // Rich edit.
1813    struct EDITSTREAM {
1814       /+ DWORD_PTR +/
1815       DWORD dwCookie;
1816       DWORD dwError;
1817       EDITSTREAMCALLBACK pfnCallback;
1818    }
1819 
1820    struct TEXTRANGEA {
1821       CHARRANGE chrg;
1822       LPSTR lpstrText;
1823    }
1824 
1825    struct MENUITEMINFOW {
1826       UINT cbSize;
1827       UINT fMask;
1828       UINT fType;
1829       UINT fState;
1830       UINT wID;
1831       HMENU hSubMenu;
1832       HBITMAP hbmpChecked;
1833       HBITMAP hbmpUnchecked;
1834       DWORD dwItemData;
1835       LPCWSTR dwTypeData;
1836       UINT cch;
1837       HBITMAP hbmpItem;
1838    }
1839 
1840    struct SCROLLINFO {
1841       UINT cbSize;
1842       UINT fMask;
1843       int nMin;
1844       int nMax;
1845       UINT nPage;
1846       int nPos;
1847       int nTrackPos;
1848    }
1849 
1850    struct TBBUTTONINFOW {
1851       UINT cbSize;
1852       DWORD dwMask;
1853       int idCommand;
1854       int iImage;
1855       BYTE fsState;
1856       BYTE fsStyle;
1857       WORD cx;
1858       DWORD lParam;
1859       LPWSTR pszText;
1860       int cchText;
1861    }
1862 
1863    align(1) struct CHOOSECOLORW {
1864       DWORD lStructSize;
1865       HWND hwndOwner;
1866       HWND hInstance;
1867       COLORREF rgbResult;
1868       COLORREF* lpCustColors;
1869       DWORD Flags;
1870       LPARAM lCustData;
1871       LPCCHOOKPROC lpfnHook;
1872       LPCWSTR lpTemplateName;
1873    }
1874 
1875    struct LOGFONTW {
1876       LONG lfHeight;
1877       LONG lfWidth;
1878       LONG lfEscapement;
1879       LONG lfOrientation;
1880       LONG lfWeight;
1881       BYTE lfItalic;
1882       BYTE lfUnderline;
1883       BYTE lfStrikeOut;
1884       BYTE lfCharSet;
1885       BYTE lfOutPrecision;
1886       BYTE lfClipPrecision;
1887       BYTE lfQuality;
1888       BYTE lfPitchAndFamily;
1889       WCHAR[LF_FACESIZE] lfFaceName;
1890    }
1891 
1892    struct NONCLIENTMETRICSW {
1893       UINT cbSize;
1894       int iBorderWidth;
1895       int iScrollWidth;
1896       int iScrollHeight;
1897       int iCaptionWidth;
1898       int iCaptionHeight;
1899       LOGFONTW lfCaptionFont;
1900       int iSmCaptionWidth;
1901       int iSmCaptionHeight;
1902       LOGFONTW lfSmCaptionFont;
1903       int iMenuWidth;
1904       int iMenuHeight;
1905       LOGFONTW lfMenuFont;
1906       LOGFONTW lfStatusFont;
1907       LOGFONTW lfMessageFont;
1908    }
1909 
1910    align(1) struct CHOOSEFONTW {
1911       DWORD lStructSize;
1912       HWND hwndOwner;
1913       HDC hDC;
1914       LOGFONTW* lpLogFont;
1915       INT iPointSize;
1916       DWORD Flags;
1917       DWORD rgbColors;
1918       LPARAM lCustData;
1919       LPCFHOOKPROC lpfnHook;
1920       LPCWSTR lpTemplateName;
1921       HINSTANCE hInstance;
1922       LPWSTR lpszStyle;
1923       WORD nFontType;
1924       WORD ___MISSING_ALIGNMENT__;
1925       INT nSizeMin;
1926       INT nSizeMax;
1927    }
1928 
1929    struct ICONINFO {
1930       BOOL fIcon;
1931       DWORD xHotspot;
1932       DWORD yHotspot;
1933       HBITMAP hbmMask;
1934       HBITMAP hbmColor;
1935    }
1936 
1937    struct CREATESTRUCTW {
1938       LPVOID lpCreateParams;
1939       HINSTANCE hInstance;
1940       HMENU hMenu;
1941       HWND hwndParent;
1942       int cy;
1943       int cx;
1944       int y;
1945       int x;
1946       LONG style;
1947       LPCWSTR lpszName;
1948       LPCWSTR lpszClass;
1949       DWORD dwExStyle;
1950    }
1951 
1952    struct TOOLINFOW {
1953       UINT cbSize;
1954       UINT uFlags;
1955       HWND hwnd;
1956       UINT uId;
1957       RECT rect;
1958       HINSTANCE hinst;
1959       LPWSTR lpszText;
1960       LPARAM lParam;
1961       //void* lpReserved; <-- From XP/Vista/7
1962    }
1963 
1964    struct TRACKMOUSEEVENT {
1965       DWORD cbSize;
1966       DWORD dwFlags;
1967       HWND hwndTrack;
1968       DWORD dwHoverTime;
1969    }
1970 
1971    struct DRAWITEMSTRUCT {
1972       UINT CtlType;
1973       UINT CtlID;
1974       UINT itemID;
1975       UINT itemAction;
1976       UINT itemState;
1977       HWND hwndItem;
1978       HDC hDC;
1979       RECT rcItem;
1980       DWORD itemData;
1981    }
1982 
1983    struct MEASUREITEMSTRUCT {
1984       UINT CtlType;
1985       UINT CtlID;
1986       UINT itemID;
1987       UINT itemWidth;
1988       UINT itemHeight;
1989       DWORD itemData;
1990    }
1991 
1992    struct INITCOMMONCONTROLSEX {
1993       DWORD dwSize;
1994       DWORD dwICC;
1995    }
1996 
1997    struct MENUINFO {
1998       DWORD cbSize;
1999       DWORD fMask;
2000       DWORD dwStyle;
2001       UINT cyMax;
2002       HBRUSH hbrBack;
2003       DWORD dwContextHelpID;
2004       ULONG_PTR dwMenuData;
2005    }
2006 
2007    /* *** Win32 Macros *** */
2008    COLORREF RGB(int r, int g, int b) {
2009       return cast(COLORREF)(cast(ubyte)r | (cast(ubyte)g << 8) | (cast(ubyte)b << 16));
2010    }
2011 
2012    DWORD MAKELONG(int wLow, int wHigh) {
2013       return cast(DWORD)cast(WORD)wLow | (cast(DWORD)cast(WORD)wHigh << 16);
2014    }
2015 
2016    LPWSTR MAKEINTRESOURCEW(ushort id) {
2017       return (cast(LPWSTR)(cast(ULONG_PTR)((cast(WORD)(id)))));
2018    }
2019 
2020    BYTE GetRValue(COLORREF c) {
2021       return cast(BYTE)c;
2022    }
2023 
2024    BYTE GetGValue(COLORREF c) {
2025       return cast(BYTE)(c >> 8);
2026    }
2027 
2028    BYTE GetBValue(COLORREF c) {
2029       return cast(BYTE)(c >> 16);
2030    }
2031 
2032    short GetWheelDelta(WPARAM wParam) {
2033       return cast(short)HIWORD(wParam);
2034    }
2035 
2036    alias GUID CLSID;
2037    alias DWORD function( /+ DWORD_PTR +/ DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG* pcb) EDITSTREAMCALLBACK; // Rich edit.
2038    alias int function(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData) BFFCALLBACK;
2039    alias UINT function(HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam) LPCCHOOKPROC;
2040    alias UINT function(HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam) LPCFHOOKPROC;
2041    alias BOOL function(HDC hdc, LPARAM lpData, int cchData) GRAYSTRINGPROC;
2042 
2043    alias MAKELONG MAKELRESULT;
2044    alias MAKELONG MAKELPARAM;
2045    alias MAKELONG MAKEWPARAM;
2046    alias TBBUTTON TB_BUTTON;
2047    alias HANDLE HIMAGELIST;
2048    alias size_t ULONG_PTR;
2049    alias HANDLE HTREEITEM;
2050    alias WORD CLIPFORMAT;
2051    alias ulong DWORDLONG;
2052    alias long LONGLONG;
2053    alias WORD LANGID;
2054    alias DWORD LCID;
2055    alias DWORD HDWP;
2056    alias DWORD ARGB;
2057 
2058    /* *** Shell32.lib *** */
2059    ITEMIDLIST* SHBrowseForFolderW(BROWSEINFOW* lpbi);
2060    BOOL SHGetPathFromIDListW(ITEMIDLIST* pidl, wchar* pszPath);
2061    HICON ExtractAssociatedIconW(HINSTANCE hInst, LPCWSTR lpIconPath, WORD* lpiIcon);
2062 
2063    /* *** Comdlg32 *** */
2064    BOOL ChooseColorW(CHOOSECOLORW* lpcc);
2065    BOOL ChooseFontW(CHOOSEFONTW* lpcf);
2066 
2067    /* *** Kernel32.dll *** */
2068    HMODULE LoadLibraryW(LPCWSTR lpFileName);
2069    HMODULE GetModuleHandleW(LPCWSTR lpModuleName);
2070    DWORD GetModuleFileNameW(HMODULE hModule, LPWSTR lpFilename, DWORD nSize);
2071    HRSRC FindResourceExW(HMODULE hModule, LPCWSTR lpType, LPCWSTR lpName, WORD wLanguage);
2072    BOOL GetVersionExW(OSVERSIONINFOW* lpVersionInfo);
2073    DWORD GetTempPathW(DWORD nBufferLength, LPWSTR lpBuffer);
2074    HGLOBAL LoadResource(HMODULE hModule, HRSRC hResInfo);
2075    DWORD SizeofResource(HMODULE hModule, HRSRC hResInfo);
2076    BOOL TerminateProcess(HANDLE, UINT);
2077    VOID ExitProcess(UINT uExitCode);
2078    int MulDiv(int nNumber, int nNumerator, int nDenominator);
2079 
2080    /* *** User32.dll *** */
2081    int MessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType);
2082    BOOL GetMessageW(MSG* lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax);
2083    LRESULT DispatchMessageW(MSG* lpmsg);
2084    HWND CreateWindowExW(DWORD dwExStyle, LPCWSTR lpClassName, LPCWSTR lpWindowName,
2085          DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent,
2086          HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam);
2087    HDWP DeferWindowPos(HDWP hWinPosInfo, HWND hWnd, HWND hWndInsertAfter, int x,
2088          int y, int cx, int cy, UINT uFlags);
2089    //LRESULT SendMessageW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
2090    HANDLE LoadImageW(HINSTANCE hinst, LPCWSTR lpszName, UINT uType, int cxDesired,
2091          int cyDesired, UINT fuLoad);
2092    LRESULT CallWindowProcA(WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
2093    LRESULT CallWindowProcW(WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
2094    BOOL SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags);
2095    BOOL GetTextExtentPoint32W(HDC hdc, LPCWSTR lpString, int c, SIZE* lpSize);
2096    BOOL DrawFrameControl(HDC hdc, RECT* lprc, uint uType, uint uState);
2097    BOOL SetMenuItemInfoW(HMENU hMenu, UINT uItem, BOOL fByPosition, MENUITEMINFOW* lpmii);
2098    BOOL InsertMenuItemW(HMENU hMenu, UINT uItem, BOOL fByPosition, MENUITEMINFOW* lpmii);
2099    BOOL SystemParametersInfoW(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni);
2100    UINT SetTimer(HWND hWnd, UINT nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc);
2101    BOOL GetClassInfoExW(HINSTANCE hinst, LPCWSTR lpszClass, WNDCLASSEXW* lpwcx);
2102    LRESULT DefWindowProcW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
2103    int SetScrollInfo(HWND hwnd, int fnBar, SCROLLINFO* lpsi, BOOL fRedraw);
2104    BOOL EnableMenuItem(HMENU hMenu, UINT uIDEnableItem, UINT uEnable);
2105    int GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount);
2106    BOOL GetScrollInfo(HWND hwnd, int fnBar, SCROLLINFO* lpsi);
2107    LONG SetWindowLongW(HWND hWnd, int nIndex, LONG dwNewLong);
2108    DWORD SetClassLongW(HWND hWnd, int nIndex, LONG lNewLong);
2109    BOOL GetMenuItemInfoW(HMENU, UINT, BOOL, MENUITEMINFOW*);
2110    BOOL TrackMouseEvent(TRACKMOUSEEVENT* lpEventTrack);
2111    HWND SetParent(HWND hWndChild, HWND hWndNewParent);
2112    BOOL SetWindowTextW(HWND hWnd, LPCWSTR lpString);
2113    BOOL GetWindowInfo(HWND hwnd, WINDOWINFO* pwi);
2114    BOOL IsDialogMessageW(HWND hDlg, LPMSG lpMsg);
2115    HMENU GetSystemMenu(HWND hWnd, BOOL bRevert);
2116    LONG GetWindowLongW(HWND hWnd, int nIndex);
2117    BOOL EnableWindow(HWND hWnd, BOOL bEnable);
2118    DWORD GetClassLongW(HWND hWnd, int nIndex);
2119    ATOM RegisterClassExW(WNDCLASSEXW* lpwcx);
2120    HDWP BeginDeferWindowPos(int nNumWindows);
2121    BOOL EndDeferWindowPos(HDWP hWinPosInfo);
2122    BOOL KillTimer(HWND hWnd, UINT uIDEvent);
2123    BOOL DrawFocusRect(HDC hDC, RECT* lprc);
2124    BOOL OpenClipboard(HWND hWndNewOwner);
2125    BOOL SetMenu(HWND hWnd, HMENU hMenu);
2126    int GetWindowTextLengthW(HWND hWnd);
2127    BOOL SetMenuInfo(HMENU, MENUINFO*);
2128    BOOL DeleteMenu(HMENU, UINT, UINT);
2129    SHORT GetAsyncKeyState(int vKey);
2130    //BOOL BringWindowToTop(HWND hWnd);
2131    BOOL IsWindowVisible(HWND hWnd);
2132    BOOL IsWindowEnabled(HWND hWnd);
2133    BOOL IsWindowUnicode(HWND hWnd);
2134    DWORD GetSysColor(int nIndex);
2135    HBRUSH GetSysColorBrush(int nIndex);
2136    BOOL DestroyWindow(HWND hwnd);
2137    BOOL CloseWindow(HWND hWnd);
2138    BOOL DestroyMenu(HMENU hMenu);
2139    BOOL DrawMenuBar(HWND hWnd);
2140    HWND SetCapture(HWND hWnd);
2141    HWND GetParent(HWND hWnd);
2142    BOOL IsWindow(HWND hWnd);
2143    BOOL IsMenu(HMENU hMenu);
2144    HMENU GetMenu(HWND hWnd);
2145    HWND GetDesktopWindow();
2146    HMENU CreatePopupMenu();
2147    HWND GetActiveWindow();
2148    BOOL EmptyClipboard();
2149    BOOL ReleaseCapture();
2150    //BOOL WaitMessage();
2151    HMENU CreateMenu();
2152    //HWND GetCapture();
2153 
2154    /* *** Comctl32.dll *** */
2155    //BOOL ImageList_DrawEx(HIMAGELIST himl, int i, HDC hdcDst, int x, int y, int dx, int dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle);
2156    //BOOL ImageList_Draw(HIMAGELIST himl, int i, HDC hdcDst, int x, int y, UINT fStyle);
2157    //HIMAGELIST ImageList_Create(int cx, int cy, UINT flags, int cInitial, int cGrow);
2158    //int ImageList_AddMasked(HIMAGELIST himl, HBITMAP hbmImage, COLORREF crMask);
2159    //int ImageList_Add(HIMAGELIST himl, HBITMAP hbmImage, HBITMAP hbmMask);
2160    BOOL InitCommonControlsEx(INITCOMMONCONTROLSEX* lpInitCtrls);
2161    COLORREF ImageList_SetBkColor(HIMAGELIST, COLORREF);
2162    int ImageList_AddIcon(HIMAGELIST himl, HICON hicon);
2163    int ImageList_ReplaceIcon(HIMAGELIST, int, HICON);
2164    BOOL ImageList_Remove(HIMAGELIST himl, int i);
2165    BOOL ImageList_Destroy(HIMAGELIST himl);
2166 
2167    /* *** Gdi32.dll *** */
2168    //BOOL GdiTransparentBlt(HDC hdcDest, int xoriginDest, int yoriginDest,int wDest, int hDest, HDC hdcSrc, int xoriginSrc, int yoriginSrc, int wSrc, int hSrc, UINT crTransparent);
2169    //BOOL GdiAlphaBlend(HDC hdcDest, int xoriginDest, int yoriginDest, int wDest, int hDest, HDC hdcSrc, int xoriginSrc, int yoriginSrc, int wSrc, int hSrc, BLENDFUNCTION ftn);
2170    BOOL DrawIconEx(HDC hdc, int xLeft, int yTop, HICON hIcon, int cxWidth,
2171          int cyWidth, UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags);
2172    BOOL PlgBlt(HDC hdcDest, POINT* lpPoint, HDC hdcSrc, int nXSrc, int nYSrc,
2173          int nWidth, int nHeight, HBITMAP hbmMask, int xMask, int yMask);
2174    BOOL BitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight,
2175          HDC hdcSrc, int nXSrc, int nYSrc, DWORD dwRop);
2176    int GetDIBits(HDC hdc, HBITMAP hbmp, UINT uStartScan, UINT cScanLines,
2177          void* lpvBits, BITMAPINFO* lpbi, UINT uUsage);
2178    HBITMAP CreateDIBSection(HDC hdc, BITMAPINFO* pbmi, UINT iUsage,
2179          void** ppvBits, HANDLE hSection, DWORD dwOffset);
2180    int DrawTextExW(HDC hdc, LPCWSTR lpchText, int cchText, RECT* lprc,
2181          UINT dwDTFormat, DRAWTEXTPARAMS* lpDTParams);
2182    //BOOL GdiGradientFill(HDC hdc, TRIVERTEX* pVertex, ULONG dwNumVertex, void* pMesh, ULONG dwNumMesh, ULONG dwMode);
2183    HBITMAP CreateBitmap(int nWidth, int nHeight, UINT cPlanes, UINT cBitsPerPel,
2184          const(void*) lpvBits);
2185    BOOL Rectangle(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);
2186    BOOL Ellipse(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);
2187    BOOL PatBlt(HDC hdc, int nXLeft, int nYLeft, int nWidth, int nHeight, DWORD dwRop);
2188    HBITMAP CreateCompatibleBitmap(HDC hdc, int nWidth, int nHeight);
2189    BOOL SetBrushOrgEx(HDC hdc, int nXOrg, int nYOrg, LPPOINT lppt);
2190    int GetObjectW(HGDIOBJ hgdiobj, int cbBuffer, void* lpvObject);
2191    BOOL GetIconInfo(HICON hIcon, ICONINFO* iconinfo);
2192    HBRUSH CreateHatchBrush(int ht, COLORREF crColor);
2193    BOOL GetTextMetricsW(HDC hdc, TEXTMETRICW* lptm);
2194    HBRUSH CreateSolidBrush(COLORREF crColor);
2195    HFONT CreateFontIndirectW(LOGFONTW* lplf);
2196    BOOL DrawEdge(HDC, LPRECT, UINT, UINT);
2197    BOOL DestroyCursor(HCURSOR hCursor);
2198    BOOL DestroyIcon(HICON hIcon);
2199    COLORREF GetTextColor(HDC hdc);
2200 
2201    /* *** Advapi32.dll *** */
2202    LONG RegCreateKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD Reserved, LPTSTR lpClass, DWORD dwOptions, REGSAM samDesired,
2203          LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition);
2204    LONG RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions,
2205          REGSAM samDesired, PHKEY phkResult);
2206    LONG RegQueryValueExW(HKEY hKey, LPCWSTR lpValueName, DWORD* lpReserved,
2207          DWORD* lpType, BYTE* lpData, DWORD* lpcbData);
2208    LONG RegSetValueExW(HKEY hKey, LPCWSTR lpValueName, DWORD Reserved,
2209          DWORD dwType, const BYTE* lpData, DWORD cbData);
2210    LONG RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass,
2211          LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen,
2212          LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen,
2213          LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime);
2214    LONG RegEnumKeyExW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, LPDWORD lpcName,
2215          LPDWORD lpReserved, LPWSTR lpClass, LPDWORD lpcClass, PFILETIME lpftLastWriteTime);
2216    LONG RegEnumValueW(HKEY hKey, DWORD dwIndex, LPWSTR lpValueName, LPDWORD lpcchValueName,
2217          LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData);
2218    LONG RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName);
2219    LONG RegDeleteKeyW(HKEY hKey, LPCWSTR lpSubKey);
2220 
2221    /* *** Ole32.dll *** */
2222    HRESULT CLSIDFromString(wchar* lpsz, CLSID* pclsid);
2223 }