1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW API for MS-Windows 3.12
5  *
6  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7  * Source: $(DRUNTIMESRC core/sys/windows/_commctrl.d)
8  */
9 /// Automatically imported and edited from the druntime module
10 /// core.sys.windows.commctrl for the auto-generated win32 package.
11 module win32.commctrl;
12 //version (Windows):
13 @system:
14 
15 version (ANSI) {} else version = Unicode;
16 version (Win32_UseLib) pragma(lib, "comctl32");
17 
18 import win32.w32api, win32.windef, win32.winuser;
19 import win32.winbase; // for SYSTEMTIME
20 import win32.objfwd;  // for LPSTREAM
21 
22 import win32.prsht;
23 
24 enum COMCTL32_VERSION = 6;
25 
26 const TCHAR[]
27     DRAGLISTMSGSTRING  = "commctrl_DragListMsg",
28     HOTKEY_CLASS       = "msctls_hotkey32",
29     PROGRESS_CLASS     = "msctls_progress32",
30     STATUSCLASSNAME    = "msctls_statusbar32",
31     TOOLBARCLASSNAME   = "ToolbarWindow32",
32     TOOLTIPS_CLASS     = "tooltips_class32",
33     TRACKBAR_CLASS     = "msctls_trackbar32",
34     UPDOWN_CLASS       = "msctls_updown32",
35     ANIMATE_CLASS      = "SysAnimate32",
36     DATETIMEPICK_CLASS = "SysDateTimePick32",
37     MONTHCAL_CLASS     = "SysMonthCal32",
38     REBARCLASSNAME     = "ReBarWindow32",
39     WC_COMBOBOXEX      = "ComboBoxEx32",
40     WC_IPADDRESS       = "SysIPAddress32",
41     WC_LISTVIEW        = "SysListView32",
42     WC_TABCONTROL      = "SysTabControl32",
43     WC_TREEVIEW        = "SysTreeView32",
44     WC_HEADER          = "SysHeader32",
45     WC_PAGESCROLLER    = "SysPager",
46     WC_NATIVEFONTCTL   = "NativeFontCtl",
47     WC_BUTTON          = "Button",
48     WC_STATIC          = "Static",
49     WC_EDIT            = "Edit",
50     WC_LISTBOX         = "ListBox",
51     WC_COMBOBOX        = "ComboBox",
52     WC_SCROLLBAR       = "ScrollBar",
53     WC_LINKA           = "SysLink";
54 
55 enum {
56     LVM_FIRST = 0x1000,
57     TV_FIRST  = 0x1100,
58     HDM_FIRST = 0x1200
59 }
60 
61 enum {
62     ACM_OPENA = WM_USER + 100,
63     ACM_PLAY  = WM_USER + 101,
64     ACM_STOP  = WM_USER + 102,
65     ACM_OPENW = WM_USER + 103,
66     ACM_ISPLAYING = WM_USER + 104
67 }
68 
69 enum {
70     ACN_START = 1,
71     ACN_STOP
72 }
73 
74 enum {
75     CBEIF_TEXT          = 0x00000001,
76     CBEIF_IMAGE         = 0x00000002,
77     CBEIF_SELECTEDIMAGE = 0x00000004,
78     CBEIF_OVERLAY       = 0x00000008,
79     CBEIF_INDENT        = 0x00000010,
80     CBEIF_LPARAM        = 0x00000020,
81     CBEIF_DI_SETITEM    = 0x10000000
82 }
83 
84 enum {
85     RBN_FIRST  = -831U,
86     RBN_LAST   = -859U,
87     MCN_FIRST  = -750U,
88     MCN_LAST   = -759U,
89     DTN_FIRST  = -760U,
90     DTN_LAST   = -799U,
91     CBEN_FIRST = -800U,
92     CBEN_LAST  = -830U
93 }
94 
95 enum {
96     CBEN_INSERTITEM = CBEN_FIRST - 1,
97     CBEN_DELETEITEM = CBEN_FIRST - 2,
98     CBEN_BEGINEDIT  = CBEN_FIRST - 4,
99     CBEN_ENDEDITA   = CBEN_FIRST - 5,
100     CBEN_ENDEDITW   = CBEN_FIRST - 6
101 }
102 
103 enum {
104     CBENF_KILLFOCUS = 1,
105     CBENF_RETURN,
106     CBENF_ESCAPE,
107     CBENF_DROPDOWN // = 4
108 }
109 
110 enum CBEMAXSTRLEN = 260;
111 
112 enum {
113     DL_BEGINDRAG  = 1157,
114     DL_CANCELDRAG = 1160,
115     DL_DRAGGING   = 1158,
116     DL_DROPPED    = 1159,
117     DL_CURSORSET  = 0,
118     DL_STOPCURSOR = 1,
119     DL_COPYCURSOR = 2,
120     DL_MOVECURSOR = 3
121 }
122 
123 enum {
124     CCS_TOP           = 1,
125     CCS_NOMOVEY       = 2,
126     CCS_BOTTOM        = 3,
127     CCS_NORESIZE      = 4,
128     CCS_NOPARENTALIGN = 8,
129     CCS_ADJUSTABLE    = 32,
130     CCS_NODIVIDER     = 64
131 }
132 static if (_WIN32_IE >= 0x300) {
133     enum {
134         CCS_VERT    = 128,
135         CCS_LEFT    = 129,
136         CCS_NOMOVEX = 130,
137         CCS_RIGHT   = 131
138     }
139 }
140 
141 enum {
142     ACS_CENTER      = 0x0001,
143     ACS_TRANSPARENT = 0x0002,
144     ACS_AUTOPLAY    = 0x0004,
145     ACS_TIMER       = 0x0008
146 }
147 
148 enum {
149     PGS_VERT       = 0x00000000,
150     PGS_HORZ       = 0x00000001,
151     PGS_AUTOSCROLL = 0x00000002,
152     PGS_DRAGNDROP  = 0x00000004
153 }
154 
155 enum CMB_MASKED = 2;
156 
157 enum MINSYSCOMMAND = SC_SIZE;
158 
159 enum {
160     SBT_OWNERDRAW  = 0x1000,
161     SBT_NOBORDERS  = 256,
162     SBT_POPOUT     = 512,
163     SBT_RTLREADING = 1024
164 }
165 
166 enum {
167     SB_SETTEXTA       = WM_USER + 1,
168     SB_SETTEXTW       = WM_USER + 11,
169     SB_GETTEXTA       = WM_USER + 2,
170     SB_GETTEXTW       = WM_USER + 13,
171     SB_GETTEXTLENGTHA = WM_USER + 3,
172     SB_GETTEXTLENGTHW = WM_USER + 12,
173     SB_SETPARTS       = WM_USER + 4,
174     SB_GETPARTS       = WM_USER + 6,
175     SB_GETBORDERS     = WM_USER + 7,
176     SB_SETMINHEIGHT   = WM_USER + 8,
177     SB_SIMPLE         = WM_USER + 9,
178     SB_GETRECT        = WM_USER + 10
179 }
180 
181 enum {
182     MSGF_COMMCTRL_BEGINDRAG   = 0x4200,
183     MSGF_COMMCTRL_SIZEHEADER  = 0x4201,
184     MSGF_COMMCTRL_DRAGSELECT  = 0x4202,
185     MSGF_COMMCTRL_TOOLBARCUST = 0x4203
186 }
187 
188 enum {
189     ILC_COLOR    = 0,
190     ILC_COLOR4   = 4,
191     ILC_COLOR8   = 8,
192     ILC_COLOR16  = 16,
193     ILC_COLOR24  = 24,
194     ILC_COLOR32  = 32,
195     ILC_COLORDDB = 254,
196     ILC_MASK     = 1,
197     ILC_PALETTE  = 2048
198 }
199 
200 enum {
201     ILCF_MOVE,
202     ILCF_SWAP
203 }
204 
205 enum {
206     ILS_NORMAL        = 0,
207     ILS_GLOW          = 1,
208     ILS_SHADOW        = 2,
209     ILS_SATURATE      = 4,
210     ILS_ALPHA         = 8,
211     ILD_BLEND25       = 2,
212     ILD_BLEND50       = 4,
213     ILD_SELECTED      = 4,
214     ILD_BLEND         = 4,
215     ILD_FOCUS         = 2,
216     ILD_MASK          = 16,
217     ILD_NORMAL        = 0,
218     ILD_TRANSPARENT   = 1,
219     ILD_IMAGE         = 0x0020,
220     ILD_ROP           = 0x0040,
221     ILD_OVERLAYMASK   = 0x0F00,
222     ILD_PRESERVEALPHA = 0x1000,
223     ILD_SCALE         = 0x2000,
224     ILD_DPISCALE      = 0x4000
225 }
226 
227 enum {
228     HDS_HORZ    = 0,
229     HDS_BUTTONS = 2,
230     HDS_HIDDEN  = 8
231 }
232 static if (_WIN32_IE >= 0x400) {
233     enum {
234         HDS_HOTTRACK = 4,
235         HDS_DRAGDROP = 0x0040,
236         HDS_FULLDRAG = 0x0080
237     }
238 }
239 static if (_WIN32_IE >= 0x500) {
240     enum {
241         HDS_FILTERBAR = 0x0100
242     }
243 }
244 
245 enum {
246     NM_FIRST  = 0,
247     NM_LAST   = -99U,
248     LVN_FIRST = -100U,
249     LVN_LAST  = -199U,
250     HDN_FIRST = -300U,
251     HDN_LAST  = -399U,
252     TVN_FIRST = -400U,
253     TVN_LAST  = -499U,
254     TTN_FIRST = -520U,
255     TTN_LAST  = -549U,
256     TCN_FIRST = -550U,
257     TCN_LAST  = -580U,
258     CDN_FIRST = -601U, /* also in commdlg.h */
259     CDN_LAST  = -699U,
260     TBN_FIRST = -700U,
261     TBN_LAST  = -720U,
262     UDN_FIRST = -721U,
263     UDN_LAST  = -740U
264 }
265 /*static if (_WIN32_IE >= 0x300) {
266     enum {
267         RBN_FIRST  = -831U,
268         RBN_LAST   = -859U,
269         MCN_FIRST  = -750U,
270         MCN_LAST   = -759U,
271         DTN_FIRST  = -760U,
272         DTN_LAST   = -799U,
273         CBEN_FIRST = -800U,
274         CBEN_LAST  = -830U
275     }
276 }*/
277 static if (_WIN32_IE >= 0x400) {
278     enum {
279         IPN_FIRST        = -860U,
280         IPN_LAST         = -879U,
281         IPN_FIELDCHANGED = IPN_FIRST,
282         SBN_FIRST        = -880U,
283         SBN_LAST         = -899U,
284         PGN_FIRST        = -900U,
285         PGN_LAST         = -950U,
286         PGN_SCROLL       = PGN_FIRST-1,
287         PGN_CALCSIZE     = PGN_FIRST-2
288     }
289 }
290 
291 static if (_WIN32_IE >= 0x500) {
292     enum {
293         WMN_FIRST = -1000U,
294         WMN_LAST = -1200U,
295     }
296 }
297 
298 static if (_WIN32_WINNT >= 0x501)
299 {
300     enum {
301         BCN_FIRST = -1250U,
302         BCN_LAST = -1350U,
303     }
304 }
305 
306 static if (_WIN32_WINNT >= 0x600)
307 {
308     enum {
309         TRBN_FIRST = -1501U,
310         TRBN_LAST = -1519U,
311     }
312 }
313 
314 enum {
315     HDI_WIDTH  = 1,
316     HDI_HEIGHT = 1,
317     HDI_TEXT   = 2,
318     HDI_FORMAT = 4,
319     HDI_LPARAM = 8,
320     HDI_BITMAP = 16
321 }
322 static if (_WIN32_IE >= 0x300) {
323     enum {
324         HDI_IMAGE      = 32,
325         HDI_DI_SETITEM = 64,
326         HDI_ORDER      = 128
327     }
328 }
329 static if (_WIN32_IE >= 0x500) {
330     enum {
331         HDI_FILTER = 256
332     }
333 }
334 
335 enum {
336     CBES_EX_NOEDITIMAGE       = 0x00000001,
337     CBES_EX_NOEDITIMAGEINDENT = 0x00000002,
338     CBES_EX_PATHWORDBREAKPROC = 0x00000004
339 }
340 static if (_WIN32_IE >= 0x400) {
341     enum {
342         CBES_EX_NOSIZELIMIT   = 0x00000008,
343         CBES_EX_CASESENSITIVE = 0x00000010,
344         CBEN_GETDISPINFOA     = CBEN_FIRST - 0,
345         CBEN_GETDISPINFOW     = CBEN_FIRST - 7,
346         CBEN_DRAGBEGINA       = CBEN_FIRST - 8,
347         CBEN_DRAGBEGINW       = CBEN_FIRST - 9
348     }
349 }
350 
351 enum {
352     HDF_LEFT,
353     HDF_RIGHT,
354     HDF_CENTER,
355     HDF_JUSTIFYMASK,
356     HDF_RTLREADING, // = 4
357     HDF_OWNERDRAW = 0x8000,
358     HDF_STRING    = 0x4000,
359     HDF_BITMAP    = 0x2000
360 }
361 static if (_WIN32_IE >= 0x300) {
362     enum {
363         HDF_BITMAP_ON_RIGHT = 0x1000,
364         HDF_IMAGE           = 0x0800
365     }
366 }
367 
368 enum {
369     CCM_FIRST            = 0x2000,
370     CCM_LAST             = CCM_FIRST + 0x200,
371     CCM_SETBKCOLOR       = 8193,
372     CCM_SETCOLORSCHEME   = 8194,
373     CCM_GETCOLORSCHEME   = 8195,
374     CCM_GETDROPTARGET    = 8196,
375     CCM_SETUNICODEFORMAT = 8197,
376     CCM_GETUNICODEFORMAT = 8198,
377     CCM_SETVERSION       = 0x2007,
378     CCM_GETVERSION       = 0x2008,
379     CCM_SETNOTIFYWINDOW  = 0x2009
380 }
381 
382 enum {
383     HDM_GETITEMCOUNT = HDM_FIRST,
384     HDM_INSERTITEMA  = HDM_FIRST + 1,
385     HDM_INSERTITEMW  = HDM_FIRST + 10,
386     HDM_DELETEITEM   = HDM_FIRST + 2,
387     HDM_GETITEMA     = HDM_FIRST + 3,
388     HDM_GETITEMW     = HDM_FIRST + 11,
389     HDM_SETITEMA     = HDM_FIRST + 4,
390     HDM_SETITEMW     = HDM_FIRST + 12,
391     HDM_LAYOUT       = HDM_FIRST + 5
392 }
393 static if (_WIN32_IE >= 0x300) {
394     enum {
395         HDM_GETITEMRECT     = HDM_FIRST + 7,
396         HDM_SETIMAGELIST    = HDM_FIRST + 8,
397         HDM_GETIMAGELIST    = HDM_FIRST + 9,
398         HDM_ORDERTOINDEX    = HDM_FIRST + 15,
399         HDM_CREATEDRAGIMAGE = HDM_FIRST + 16,
400         HDM_GETORDERARRAY   = HDM_FIRST + 17,
401         HDM_SETORDERARRAY   = HDM_FIRST + 18,
402         HDM_SETHOTDIVIDER   = HDM_FIRST + 19
403     }
404 }
405 static if (_WIN32_IE >= 0x400) {
406     enum {
407         HDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT,
408         HDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT
409     }
410 }
411 static if (_WIN32_IE >= 0x500) {
412     enum {
413         HDM_SETBITMAPMARGIN = HDM_FIRST + 20,
414         HDM_GETBITMAPMARGIN = HDM_FIRST + 21,
415         HDM_SETFILTERCHANGETIMEOUT = HDM_FIRST + 22,
416         HDM_EDITFILTER = HDM_FIRST + 23,
417         HDM_CLEARFILTER = HDM_FIRST + 24,
418     }
419 }
420 static if (_WIN32_IE >= 0x600) {
421     enum {
422         HDM_GETITEMDROPDOWNRECT = HDM_FIRST + 25,
423         HDM_GETOVERFLOWRECT = HDM_FIRST + 26,
424         HDM_GETFOCUSEDITEM = HDM_FIRST + 27,
425         HDM_SETFOCUSEDITEM = HDM_FIRST + 28,
426     }
427 }
428 
429 enum {
430     HHT_NOWHERE   = 1,
431     HHT_ONHEADER  = 2,
432     HHT_ONDIVIDER = 4,
433     HHT_ONDIVOPEN = 8,
434     HHT_ABOVE     = 256,
435     HHT_BELOW     = 512,
436     HHT_TORIGHT   = 1024,
437     HHT_TOLEFT    = 2048
438 }
439 
440 enum {
441     HDM_HITTEST = HDM_FIRST + 6
442 }
443 
444 enum {
445     HDN_ITEMCHANGINGA    = HDN_FIRST -0,
446     HDN_ITEMCHANGINGW    = HDN_FIRST -20,
447     HDN_ITEMCHANGEDA     = HDN_FIRST -1,
448     HDN_ITEMCHANGEDW     = HDN_FIRST -21,
449     HDN_ITEMCLICKA       = HDN_FIRST -2,
450     HDN_ITEMCLICKW       = HDN_FIRST -22,
451     HDN_ITEMDBLCLICKA    = HDN_FIRST -3,
452     HDN_ITEMDBLCLICKW    = HDN_FIRST -23,
453     HDN_DIVIDERDBLCLICKA = HDN_FIRST -5,
454     HDN_DIVIDERDBLCLICKW = HDN_FIRST -25,
455     HDN_BEGINTRACKA      = HDN_FIRST -6,
456     HDN_BEGINTRACKW      = HDN_FIRST -26,
457     HDN_ENDTRACKA        = HDN_FIRST -7,
458     HDN_ENDTRACKW        = HDN_FIRST -27,
459     HDN_TRACKA           = HDN_FIRST -8,
460     HDN_TRACKW           = HDN_FIRST -28
461 }
462 static if (_WIN32_IE >= 0x300) {
463     enum {
464         HDN_ENDDRAG      = (HDN_FIRST-11),
465         HDN_BEGINDRAG    = (HDN_FIRST-10),
466         HDN_GETDISPINFOA = (HDN_FIRST-9),
467         HDN_GETDISPINFOW = (HDN_FIRST-29)
468     }
469 }
470 
471 static if (_WIN32_IE >= 0x400) {
472     enum {
473         HICF_OTHER          = 0x00,
474         HICF_MOUSE          = 0x01,
475         HICF_ARROWKEYS      = 0x02,
476         HICF_ACCELERATOR    = 0x04,
477         HICF_DUPACCEL       = 0x08,
478         HICF_ENTERING       = 0x10,
479         HICF_LEAVING        = 0x20,
480         HICF_RESELECT       = 0x40,
481         HICF_LMOUSE         = 0x80,
482         HICF_TOGGLEDROPDOWN = 0x100
483     }
484 }
485 
486 enum {
487     IPM_CLEARADDRESS = WM_USER + 100,
488     IPM_SETADDRESS   = WM_USER + 101,
489     IPM_GETADDRESS   = WM_USER + 102,
490     IPM_SETRANGE     = WM_USER + 103,
491     IPM_SETFOCUS     = WM_USER + 104,
492     IPM_ISBLANK      = WM_USER + 105
493 }
494 
495 static if (_WIN32_IE >= 0x500) {
496     enum {
497         I_INDENTCALLBACK = -1,
498         I_IMAGENONE      = -2
499     }
500 }
501 
502 enum {
503     TBSTATE_CHECKED       = 1,
504     TBSTATE_PRESSED       = 2,
505     TBSTATE_ENABLED       = 4,
506     TBSTATE_HIDDEN        = 8,
507     TBSTATE_INDETERMINATE = 16,
508     TBSTATE_WRAP          = 32
509 }
510 static if (_WIN32_IE >= 0x300) {
511     enum {
512         TBSTATE_ELLIPSES = 0x40
513     }
514 }
515 static if (_WIN32_IE >= 0x400) {
516     enum {
517         TBSTATE_MARKED = 0x0080
518     }
519 }
520 
521 enum {
522     TBSTYLE_BUTTON     = 0,
523     TBSTYLE_SEP        = 1,
524     TBSTYLE_CHECK      = 2,
525     TBSTYLE_GROUP      = 4,
526     TBSTYLE_CHECKGROUP = TBSTYLE_GROUP | TBSTYLE_CHECK
527 }
528 static if (_WIN32_IE >= 0x300) {
529     enum {
530         TBSTYLE_DROPDOWN = 8
531     }
532 }
533 static if (_WIN32_IE >= 0x400) {
534     enum {
535         TBSTYLE_AUTOSIZE = 16,
536         TBSTYLE_NOPREFIX = 32
537     }
538 }
539 enum {
540     TBSTYLE_TOOLTIPS = 256,
541     TBSTYLE_WRAPABLE = 512,
542     TBSTYLE_ALTDRAG  = 1024
543 }
544 static if (_WIN32_IE >= 0x300) {
545     enum {
546         TBSTYLE_FLAT        = 2048,
547         TBSTYLE_LIST        = 4096,
548         TBSTYLE_CUSTOMERASE = 8192
549     }
550 }
551 static if (_WIN32_IE >= 0x400) {
552     enum {
553         TBSTYLE_REGISTERDROP    = 0x4000,
554         TBSTYLE_TRANSPARENT     = 0x8000,
555         TBSTYLE_EX_DRAWDDARROWS = 0x00000001
556     }
557 }
558 static if (_WIN32_IE >= 0x501) {
559     enum {
560         TBSTYLE_EX_MIXEDBUTTONS       = 8,
561         TBSTYLE_EX_HIDECLIPPEDBUTTONS = 16
562     }
563 }
564 static if (_WIN32_WINNT >= 0x501) {
565     enum {
566         TBSTYLE_EX_DOUBLEBUFFER = 0x80
567     }
568 }
569 
570 static if (_WIN32_IE >= 0x500) {
571     enum {
572         BTNS_BUTTON        = TBSTYLE_BUTTON,
573         BTNS_SEP           = TBSTYLE_SEP,
574         BTNS_CHECK         = TBSTYLE_CHECK,
575         BTNS_GROUP         = TBSTYLE_GROUP,
576         BTNS_CHECKGROUP    = TBSTYLE_CHECKGROUP,
577         BTNS_DROPDOWN      = TBSTYLE_DROPDOWN,
578         BTNS_AUTOSIZE      = TBSTYLE_AUTOSIZE,
579         BTNS_NOPREFIX      = TBSTYLE_NOPREFIX,
580         BTNS_WHOLEDROPDOWN = 0x0080
581     }
582 }
583 static if (_WIN32_IE >= 0x501) {
584     enum {
585         BTNS_SHOWTEXT = 0x0040
586     }
587 }
588 
589 static if (_WIN32_IE >= 0x400) {
590     enum {
591         TBCDRF_NOEDGES        = 0x10000,
592         TBCDRF_HILITEHOTTRACK = 0x20000,
593         TBCDRF_NOOFFSET       = 0x40000,
594         TBCDRF_NOMARK         = 0x80000,
595         TBCDRF_NOETCHEDEFFECT = 0x100000
596     }
597 }
598 
599 enum HINST_COMMCTRL = cast(HINSTANCE) (-1);
600 
601 enum {
602     IDB_STD_SMALL_COLOR,
603     IDB_STD_LARGE_COLOR,
604     IDB_VIEW_SMALL_COLOR = 4,
605     IDB_VIEW_LARGE_COLOR = 5
606 }
607 static if (_WIN32_IE >= 0x300) {
608     enum {
609         IDB_HIST_SMALL_COLOR = 8,
610         IDB_HIST_LARGE_COLOR = 9
611     }
612 }
613 
614 enum {
615     STD_CUT,
616     STD_COPY,
617     STD_PASTE,
618     STD_UNDO,
619     STD_REDOW,
620     STD_DELETE,
621     STD_FILENEW,
622     STD_FILEOPEN,
623     STD_FILESAVE,
624     STD_PRINTPRE,
625     STD_PROPERTIES,
626     STD_HELP,
627     STD_FIND,
628     STD_REPLACE,
629     STD_PRINT // = 14
630 }
631 
632 enum {
633     VIEW_LARGEICONS,
634     VIEW_SMALLICONS,
635     VIEW_LIST,
636     VIEW_DETAILS,
637     VIEW_SORTNAME,
638     VIEW_SORTSIZE,
639     VIEW_SORTDATE,
640     VIEW_SORTTYPE,
641     VIEW_PARENTFOLDER,
642     VIEW_NETCONNECT,
643     VIEW_NETDISCONNECT,
644     VIEW_NEWFOLDER // = 11
645 }
646 
647 enum {
648     TB_ENABLEBUTTON          = WM_USER + 1,
649     TB_CHECKBUTTON,
650     TB_PRESSBUTTON,
651     TB_HIDEBUTTON,
652     TB_INDETERMINATE, //     = WM_USER + 5,
653     TB_ISBUTTONENABLED       = WM_USER + 9,
654     TB_ISBUTTONCHECKED,
655     TB_ISBUTTONPRESSED,
656     TB_ISBUTTONHIDDEN,
657     TB_ISBUTTONINDETERMINATE, // = WM_USER + 13,
658     TB_SETSTATE              = WM_USER + 17,
659     TB_GETSTATE              = WM_USER + 18,
660     TB_ADDBITMAP             = WM_USER + 19,
661     TB_DELETEBUTTON          = WM_USER + 22,
662     TB_GETBUTTON,
663     TB_BUTTONCOUNT,
664     TB_COMMANDTOINDEX,
665     TB_SAVERESTOREA,
666     TB_CUSTOMIZE,
667     TB_ADDSTRINGA,
668     TB_GETITEMRECT,
669     TB_BUTTONSTRUCTSIZE,
670     TB_SETBUTTONSIZE,
671     TB_SETBITMAPSIZE,
672     TB_AUTOSIZE, //          = WM_USER + 33,
673     TB_GETTOOLTIPS           = WM_USER + 35,
674     TB_SETTOOLTIPS           = WM_USER + 36,
675     TB_SETPARENT             = WM_USER + 37,
676     TB_SETROWS               = WM_USER + 39,
677     TB_GETROWS,
678     TB_GETBITMAPFLAGS,
679     TB_SETCMDID,
680     TB_CHANGEBITMAP,
681     TB_GETBITMAP,
682     TB_GETBUTTONTEXTA,
683     TB_REPLACEBITMAP, //     = WM_USER + 46,
684     TB_GETBUTTONSIZE         = WM_USER + 58,
685     TB_SETBUTTONWIDTH        = WM_USER + 59,
686     TB_GETBUTTONTEXTW        = WM_USER + 75,
687     TB_SAVERESTOREW          = WM_USER + 76,
688     TB_ADDSTRINGW            = WM_USER + 77,
689 }
690 static if (_WIN32_IE >= 0x400) {
691     enum {
692         TB_MARKBUTTON = WM_USER + 6
693     }
694 }
695 static if (_WIN32_IE >= 0x400) {
696     enum {
697         TB_ISBUTTONHIGHLIGHTED = WM_USER + 14
698     }
699 }
700 static if (_WIN32_IE >= 0x400) {
701     enum {
702         TB_ADDBUTTONSA   = WM_USER + 20,
703         TB_INSERTBUTTONA = WM_USER + 21
704     }
705 } else {
706     enum {
707         TB_ADDBUTTONS   = WM_USER + 20,
708         TB_INSERTBUTTON = WM_USER + 21
709     }
710 }
711 static if (_WIN32_IE >= 0x300) {
712     enum {
713         TB_SETINDENT = WM_USER + 47,
714         TB_SETIMAGELIST,
715         TB_GETIMAGELIST,
716         TB_LOADIMAGES,
717         TB_GETRECT,
718         TB_SETHOTIMAGELIST,
719         TB_GETHOTIMAGELIST,
720         TB_SETDISABLEDIMAGELIST,
721         TB_GETDISABLEDIMAGELIST,
722         TB_SETSTYLE,
723         TB_GETSTYLE,
724         //TB_GETBUTTONSIZE,
725         //TB_SETBUTTONWIDTH,
726         TB_SETMAXTEXTROWS,
727         TB_GETTEXTROWS // = WM_USER + 61
728     }
729 }
730 static if (_WIN32_IE >= 0x400) {
731     enum {
732         TB_GETOBJECT            = WM_USER + 62,
733         TB_GETBUTTONINFOW,
734         TB_SETBUTTONINFOW,
735         TB_GETBUTTONINFOA,
736         TB_SETBUTTONINFOA,
737         TB_INSERTBUTTONW,
738         TB_ADDBUTTONSW,
739         TB_HITTEST, //          = WM_USER + 69
740         TB_SETEXTENDEDSTYLE     = WM_USER + 84,
741         TB_GETEXTENDEDSTYLE     = WM_USER + 85,
742         TB_SETDRAWTEXTFLAGS     = WM_USER + 70,
743         TB_GETHOTITEM,
744         TB_SETHOTITEM,
745         TB_SETANCHORHIGHLIGHT,
746         TB_GETANCHORHIGHLIGHT, // = WM_USER + 74
747         TB_MAPACCELERATORA      = WM_USER + 78,
748         TB_GETINSERTMARK,
749         TB_SETINSERTMARK,
750         TB_INSERTMARKHITTEST,
751         TB_MOVEBUTTON,
752         TB_GETMAXSIZE,
753         //TB_SETEXTENDEDSTYLE,
754         //TB_GETEXTENDEDSTYLE,
755         TB_GETPADDING,
756         TB_SETPADDING,
757         TB_SETINSERTMARKCOLOR,
758         TB_GETINSERTMARKCOLOR,
759         TB_MAPACCELERATORW,
760         TB_GETSTRINGW,
761         TB_GETSTRINGA, //       = WM_USER + 92
762         TB_SETHOTITEM2          = WM_USER + 94,
763         TB_SETLISTGAP           = WM_USER + 96,
764         TB_GETIMAGELISTCOUNT    = WM_USER + 98,
765         TB_GETIDEALSIZE         = WM_USER + 99,
766         //TB_TRANSLATEACCELERATOR = CCM_TRANSLATEACCELERATOR,
767         TB_SETCOLORSCHEME       = CCM_SETCOLORSCHEME,
768         TB_GETCOLORSCHEME       = CCM_GETCOLORSCHEME,
769         TB_SETUNICODEFORMAT     = CCM_SETUNICODEFORMAT,
770         TB_GETUNICODEFORMAT     = CCM_GETUNICODEFORMAT
771     }
772 }
773 
774 static if (_WIN32_WINNT >= 0x501) {
775     enum {
776         TB_GETMETRICS = WM_USER + 101,
777         TB_SETMETRICS = WM_USER + 102,
778     }
779 }
780 
781 static if (_WIN32_WINNT >= 0x600) {
782     enum {
783         TB_GETITEMDROPDOWNRECT = WM_USER + 103,
784         TB_SETPRESSEDIMAGELIST = WM_USER + 104,
785         TB_GETPRESSEDIMAGELIST = WM_USER + 105,
786     }
787 }
788 
789 enum TBBF_LARGE = 1;
790 
791 enum {
792     TBN_GETBUTTONINFOA = TBN_FIRST -0,
793     TBN_BEGINDRAG      = TBN_FIRST -1,
794     TBN_ENDDRAG        = TBN_FIRST -2,
795     TBN_BEGINADJUST    = TBN_FIRST -3,
796     TBN_ENDADJUST      = TBN_FIRST -4,
797     TBN_RESET          = TBN_FIRST -5,
798     TBN_QUERYINSERT    = TBN_FIRST -6,
799     TBN_QUERYDELETE    = TBN_FIRST -7,
800     TBN_TOOLBARCHANGE  = TBN_FIRST -8,
801     TBN_CUSTHELP       = TBN_FIRST -9
802 }
803 static if (_WIN32_IE >= 0x300) {
804     enum {
805         TBN_DROPDOWN = TBN_FIRST - 10
806     }
807 }
808 static if (_WIN32_IE >= 0x400) {
809     enum {
810         TBN_HOTITEMCHANGE  = TBN_FIRST - 13,
811         TBN_DRAGOUT        = TBN_FIRST - 14,
812         TBN_DELETINGBUTTON = TBN_FIRST - 15,
813         TBN_GETDISPINFOA   = TBN_FIRST - 16,
814         TBN_GETDISPINFOW   = TBN_FIRST - 17,
815         TBN_GETINFOTIPA    = TBN_FIRST - 18,
816         TBN_GETINFOTIPW    = TBN_FIRST - 19,
817         TBN_GETBUTTONINFOW = TBN_FIRST - 20
818     }
819 }
820 static if (_WIN32_IE >= 0x500) {
821     enum {
822         TBN_RESTORE       = TBN_FIRST - 21,
823         TBN_SAVE          = TBN_FIRST - 22,
824         TBN_INITCUSTOMIZE = TBN_FIRST - 23
825     }
826 
827     enum {
828         TBNRF_HIDEHELP = 1,
829         TBNRF_ENDCUSTOMIZE
830     }
831 
832     enum {
833         TBNF_IMAGE      = 1,
834         TBNF_TEXT       = 2,
835         TBNF_DI_SETITEM = 0x10000000
836     }
837 }
838 
839 enum {
840     TTS_ALWAYSTIP = 1,
841     TTS_NOPREFIX
842 }
843 static if (_WIN32_IE >= 0x500) {
844     enum {
845         TTS_NOANIMATE = 0x10,
846         TTS_NOFADE    = 0x20,
847         TTS_BALLOON   = 0x40,
848         TTS_CLOSE     = 0x80
849     }
850 }
851 
852 enum {
853     TTF_IDISHWND   = 1,
854     TTF_CENTERTIP  = 2,
855     TTF_RTLREADING = 4,
856     TTF_SUBCLASS   = 16
857 }
858 static if (_WIN32_IE >= 0x300) {
859     enum {
860         TTF_TRACK       = 0x0020,
861         TTF_ABSOLUTE    = 0x0080,
862         TTF_TRANSPARENT = 0x0100,
863         TTF_DI_SETITEM  = 0x8000
864     }
865 
866     static if (_WIN32_IE >= 0x501) {
867         enum {
868             TTF_PARSELINKS = 0x1000
869         }
870     }
871 
872     enum {
873         TBCD_TICS = 1,
874         TBCD_THUMB,
875         TBCD_CHANNEL // = 3
876     }
877 }
878 
879 static if (_WIN32_IE >= 0x400) {
880     enum {
881         TBDDRET_DEFAULT,
882         TBDDRET_NODEFAULT,
883         TBDDRET_TREATPRESSED
884     }
885 
886     enum {
887         TBIMHT_AFTER = 1,
888         TBIMHT_BACKGROUND
889     }
890 }
891 
892 enum {
893     TTDT_AUTOMATIC,
894     TTDT_RESHOW,
895     TTDT_AUTOPOP,
896     TTDT_INITIAL
897 }
898 
899 enum {
900     TTM_ACTIVATE        = WM_USER + 1,
901     TTM_SETDELAYTIME    = WM_USER + 3,
902     TTM_ADDTOOLA,
903     TTM_DELTOOLA,
904     TTM_NEWTOOLRECTA,
905     TTM_RELAYEVENT,
906     TTM_GETTOOLINFOA,
907     TTM_SETTOOLINFOA,
908     TTM_HITTESTA,
909     TTM_GETTEXTA,
910     TTM_UPDATETIPTEXTA,
911     TTM_GETTOOLCOUNT,
912     TTM_ENUMTOOLSA,
913     TTM_GETCURRENTTOOLA,
914     TTM_WINDOWFROMPOINT, // = WM_USER + 16
915     TTM_ADDTOOLW        = WM_USER + 50,
916     TTM_DELTOOLW,
917     TTM_NEWTOOLRECTW,
918     TTM_GETTOOLINFOW,
919     TTM_SETTOOLINFOW,
920     TTM_HITTESTW,
921     TTM_GETTEXTW,
922     TTM_UPDATETIPTEXTW,
923     TTM_ENUMTOOLSW,
924     TTM_GETCURRENTTOOLW // = WM_USER + 59
925 }
926 
927 static if (_WIN32_IE >= 0x300) {
928     enum {
929         TTM_TRACKACTIVATE = WM_USER + 17,
930         TTM_TRACKPOSITION,
931         TTM_SETTIPBKCOLOR,
932         TTM_SETTIPTEXTCOLOR,
933         TTM_GETDELAYTIME,
934         TTM_GETTIPBKCOLOR,
935         TTM_GETTIPTEXTCOLOR,
936         TTM_SETMAXTIPWIDTH,
937         TTM_GETMAXTIPWIDTH,
938         TTM_SETMARGIN,
939         TTM_GETMARGIN,
940         TTM_POP // = WM_USER + 28
941     }
942 }
943 
944 static if (_WIN32_IE >= 0x400) {  // IE4.0 ???
945     enum {
946         TTM_UPDATE = WM_USER + 29,
947         TTM_GETBUBBLESIZE,
948         TTM_ADJUSTRECT,
949         TTM_SETTITLEA,
950         TTM_SETTITLEW // = WM_USER + 33
951     }
952     static if (_WIN32_IE >= 0x500) {
953         alias TTM_SETTITLEW TTM_SETTITLE;
954     } else {
955         alias TTM_SETTITLEA TTM_SETTITLE;
956     }
957 }
958 
959 static if (_WIN32_WINNT >= 0x501) {
960     enum {
961         TTM_POPUP = (WM_USER + 34),
962         TTM_GETTITLE = (WM_USER + 35),
963     }
964 }
965 
966 enum {
967     TTN_GETDISPINFOA = TTN_FIRST - 0,
968     TTN_GETDISPINFOW = TTN_FIRST - 10,
969     TTN_NEEDTEXTA    = TTN_GETDISPINFOA,
970     TTN_NEEDTEXTW    = TTN_GETDISPINFOW,
971     TTN_SHOW         = TTN_FIRST-1,
972     TTN_POP          = TTN_FIRST-2
973 }
974 
975 enum UD_MAXVAL = 0x7fff;
976 enum UD_MINVAL = -UD_MAXVAL;
977 
978 enum {
979     UDN_DELTAPOS    = UDN_FIRST-1,
980     UDS_WRAP        = 1,
981     UDS_SETBUDDYINT = 2,
982     UDS_ALIGNRIGHT  = 4,
983     UDS_ALIGNLEFT   = 8,
984     UDS_AUTOBUDDY   = 16,
985     UDS_ARROWKEYS   = 32,
986     UDS_HORZ        = 64,
987     UDS_NOTHOUSANDS = 128
988 }
989 
990 static if (_WIN32_IE >= 0x300) {
991     enum {
992         UDS_HOTTRACK = 0x0100
993     }
994 }
995 
996 enum {
997     UDM_SETRANGE = WM_USER + 101,
998     UDM_GETRANGE,
999     UDM_SETPOS,
1000     UDM_GETPOS,
1001     UDM_SETBUDDY,
1002     UDM_GETBUDDY,
1003     UDM_SETACCEL,
1004     UDM_GETACCEL,
1005     UDM_SETBASE,
1006     UDM_GETBASE // = WM_USER + 110
1007 }
1008 
1009 static if (_WIN32_IE >= 0x400) {
1010     enum {
1011         UDM_SETRANGE32 = WM_USER + 111,
1012         UDM_GETRANGE32,
1013         UDM_SETPOS32,
1014         UDM_GETPOS32 // = WM_USER + 114
1015     }
1016 }
1017 
1018 static if (_WIN32_IE >= 0x500) {
1019     enum {
1020         UDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
1021         UDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
1022     }
1023 }
1024 
1025 /*enum {
1026     SB_SETTEXTA       = WM_USER + 1,
1027     SB_GETTEXTA,
1028     SB_GETTEXTLENGTHA,
1029     SB_SETPARTS,   // = WM_USER + 4
1030     SB_GETPARTS       = WM_USER + 6,
1031     SB_GETBORDERS,
1032     SB_SETMINHEIGHT,
1033     SB_SIMPLE,
1034     SB_GETRECT,
1035     SB_SETTEXTW,
1036     SB_GETTEXTLENGTHW,
1037     SB_GETTEXTW    // = WM_USER + 13
1038 }*/
1039 
1040 /*enum {
1041     SBT_OWNERDRAW  = 0x1000,
1042     SBT_NOBORDERS  = 256,
1043     SBT_POPOUT     = 512,
1044     SBT_RTLREADING = 1024
1045 }*/
1046 
1047 static if (_WIN32_IE >= 0x400) {
1048     enum {
1049         SBT_TOOLTIPS         = 0x0800,
1050         SBN_SIMPLEMODECHANGE = SBN_FIRST
1051     }
1052 }
1053 
1054 enum {
1055     TBS_AUTOTICKS      = 1,
1056     TBS_VERT           = 2,
1057     TBS_HORZ           = 0,
1058     TBS_TOP            = 4,
1059     TBS_BOTTOM         = 0,
1060     TBS_LEFT           = 4,
1061     TBS_RIGHT          = 0,
1062     TBS_BOTH           = 8,
1063     TBS_NOTICKS        = 16,
1064     TBS_ENABLESELRANGE = 32,
1065     TBS_FIXEDLENGTH    = 64,
1066     TBS_NOTHUMB        = 128
1067 }
1068 
1069 static if (_WIN32_IE >= 0x300) {
1070     enum {
1071         TBS_TOOLTIPS = 0x0100,
1072         TBTS_TOP     = 0,
1073         TBTS_LEFT,
1074         TBTS_BOTTOM,
1075         TBTS_RIGHT // = 3
1076     }
1077 }
1078 
1079 static if (_WIN32_IE >= 0x500) {
1080     enum {
1081         TBS_REVERSED = 0x0200
1082     }
1083 }
1084 
1085 static if (_WIN32_IE >= 0x501) {
1086     enum {
1087         TBS_DOWNISLEFT = 0x0400
1088     }
1089 }
1090 
1091 static if (_WIN32_IE >= 0x400) {
1092     enum {
1093         TBIF_BYINDEX = 0x80000000,
1094         TBIF_COMMAND = 32,
1095         TBIF_IMAGE   = 1,
1096         TBIF_LPARAM  = 16,
1097         TBIF_SIZE    = 64,
1098         TBIF_STATE   = 4,
1099         TBIF_STYLE   = 8,
1100         TBIF_TEXT    = 2
1101     }
1102 }
1103 
1104 enum {
1105     TBM_GETPOS           = WM_USER,
1106     TBM_GETRANGEMIN,
1107     TBM_GETRANGEMAX,
1108     TBM_GETTIC,
1109     TBM_SETTIC,
1110     TBM_SETPOS,
1111     TBM_SETRANGE,
1112     TBM_SETRANGEMIN,
1113     TBM_SETRANGEMAX,
1114     TBM_CLEARTICS,
1115     TBM_SETSEL,
1116     TBM_SETSELSTART,
1117     TBM_SETSELEND,    // = WM_USER+12,
1118     TBM_GETPTICS         = WM_USER+14,
1119     TBM_GETTICPOS,
1120     TBM_GETNUMTICS,
1121     TBM_GETSELSTART,
1122     TBM_GETSELEND,
1123     TBM_CLEARSEL,
1124     TBM_SETTICFREQ,
1125     TBM_SETPAGESIZE,
1126     TBM_GETPAGESIZE,
1127     TBM_SETLINESIZE,
1128     TBM_GETLINESIZE,
1129     TBM_GETTHUMBRECT,
1130     TBM_GETCHANNELRECT,
1131     TBM_SETTHUMBLENGTH,
1132     TBM_GETTHUMBLENGTH,
1133     TBM_SETTOOLTIPS,
1134     TBM_GETTOOLTIPS,
1135     TBM_SETTIPSIDE,
1136     TBM_SETBUDDY,
1137     TBM_GETBUDDY, //     = WM_USER+33,
1138     TBM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT,
1139     TBM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT
1140 }
1141 
1142 enum {
1143     TB_LINEUP,
1144     TB_LINEDOWN,
1145     TB_PAGEUP,
1146     TB_PAGEDOWN,
1147     TB_THUMBPOSITION,
1148     TB_THUMBTRACK,
1149     TB_TOP,
1150     TB_BOTTOM,
1151     TB_ENDTRACK // = 8
1152 }
1153 
1154 enum {
1155     HOTKEYF_SHIFT   = 1,
1156     HOTKEYF_CONTROL = 2,
1157     HOTKEYF_ALT     = 4,
1158     HOTKEYF_EXT     = 8
1159 }
1160 
1161 enum {
1162     HKCOMB_NONE = 1,
1163     HKCOMB_S    = 2,
1164     HKCOMB_C    = 4,
1165     HKCOMB_A    = 8,
1166     HKCOMB_SC   = 16,
1167     HKCOMB_SA   = 32,
1168     HKCOMB_CA   = 64,
1169     HKCOMB_SCA  = 128
1170 }
1171 
1172 enum {
1173     HKM_SETHOTKEY = WM_USER + 1,
1174     HKM_GETHOTKEY = WM_USER + 2,
1175     HKM_SETRULES  = WM_USER + 3
1176 }
1177 
1178 enum {
1179     PBM_SETRANGE     = WM_USER + 1,
1180     PBM_SETPOS,
1181     PBM_DELTAPOS,
1182     PBM_SETSTEP,
1183     PBM_STEPIT,   // = WM_USER + 5
1184     PBM_SETRANGE32   = 1030,
1185     PBM_GETRANGE,
1186     PBM_GETPOS,
1187     PBM_SETBARCOLOR, // = 1033
1188     PBM_SETBKCOLOR   = CCM_SETBKCOLOR
1189 }
1190 
1191 static if (_WIN32_WINNT >= 0x501) {
1192     enum {
1193         PBM_SETMARQUEE = WM_USER + 10,
1194     }
1195 }
1196 
1197 static if (_WIN32_WINNT >= 0x600) {
1198     enum {
1199         PBM_GETSTEP = WM_USER + 13,
1200         PBM_GETBKCOLOR,
1201         PBM_GETBARCOLOR,
1202         PBM_SETSTATE,
1203         PBM_GETSTATE,
1204     }
1205 }
1206 
1207 enum {
1208     PBS_SMOOTH   = 1,
1209     PBS_VERTICAL = 4
1210 }
1211 
1212 static if (_WIN32_WINNT >= 0x501) {
1213     enum {
1214         PBS_MARQUEE = 8,
1215     }
1216 }
1217 
1218 static if (_WIN32_WINNT >= 0x600) {
1219     enum {
1220         PBS_SMOOTHREVERSE = 16,
1221     }
1222 }
1223 
1224 enum {
1225     LVS_ICON,
1226     LVS_REPORT,
1227     LVS_SMALLICON,
1228     LVS_LIST,        // = 3
1229     LVS_TYPEMASK        = 3,
1230     LVS_SINGLESEL       = 4,
1231     LVS_SHOWSELALWAYS   = 8,
1232     LVS_SORTASCENDING   = 16,
1233     LVS_SORTDESCENDING  = 32,
1234     LVS_SHAREIMAGELISTS = 64,
1235     LVS_NOLABELWRAP     = 128,
1236     LVS_AUTOARRANGE     = 256,
1237     LVS_EDITLABELS      = 512,
1238     LVS_NOSCROLL        = 0x2000,
1239     LVS_TYPESTYLEMASK   = 0xFC00,
1240     LVS_ALIGNTOP        = 0,
1241     LVS_ALIGNLEFT       = 0x800,
1242     LVS_ALIGNMASK       = 0xC00,
1243     LVS_OWNERDRAWFIXED  = 0x400,
1244     LVS_NOCOLUMNHEADER  = 0x4000,
1245     LVS_NOSORTHEADER    = 0x8000
1246 }
1247 
1248 static if (_WIN32_IE >= 0x300) {
1249     enum {
1250         CDIS_CHECKED       = 8,
1251         CDIS_DEFAULT       = 32,
1252         CDIS_DISABLED      = 4,
1253         CDIS_FOCUS         = 16,
1254         CDIS_GRAYED        = 2,
1255         CDIS_HOT           = 64,
1256         CDIS_SELECTED      = 1,
1257         CDIS_MARKED        = 128,
1258         CDIS_INDETERMINATE = 256
1259     }
1260 
1261     static if (_WIN32_WINNT >= 0x501) {
1262         enum {
1263             CDIS_SHOWKEYBOARDCUES = 512
1264         }
1265     }
1266 
1267     enum {
1268         CDDS_POSTERASE     = 4,
1269         CDDS_POSTPAINT     = 2,
1270         CDDS_PREERASE      = 3,
1271         CDDS_PREPAINT      = 1,
1272         CDDS_ITEM          = 65536,
1273         CDDS_ITEMPOSTERASE = 65540,
1274         CDDS_ITEMPOSTPAINT = 65538,
1275         CDDS_ITEMPREERASE  = 65539,
1276         CDDS_ITEMPREPAINT  = 65537
1277     }
1278 
1279     static if (_WIN32_IE >= 0x400) {
1280         enum {
1281             CDDS_SUBITEM = 0x20000
1282         }
1283     }
1284 
1285     enum {
1286         CDRF_DODEFAULT         = 0x00,
1287         CDRF_NOTIFYITEMDRAW    = 0x20,
1288         CDRF_NOTIFYSUBITEMDRAW = 0x20,
1289         CDRF_NOTIFYITEMERASE   = 0x80,
1290         CDRF_NOTIFYPOSTERASE   = 0x40,
1291         CDRF_NOTIFYPOSTPAINT   = 0x10,
1292         CDRF_NEWFONT           = 0x02,
1293         CDRF_SKIPDEFAULT       = 0x04
1294     }
1295 
1296     static if (_WIN32_IE >= 0x400) {
1297         enum {
1298             LVBKIF_SOURCE_NONE    = 0x00000000,
1299             LVBKIF_SOURCE_HBITMAP = 0x00000001,
1300             LVBKIF_SOURCE_URL     = 0x00000002,
1301             LVBKIF_SOURCE_MASK    = 0x00000003,
1302             LVBKIF_STYLE_NORMAL   = 0x00000000,
1303             LVBKIF_STYLE_TILE     = 0x00000010,
1304             LVBKIF_STYLE_MASK     = 0x00000010
1305         }
1306     }
1307 
1308     static if (_WIN32_WINNT >= 0x501) {
1309         enum {
1310             LVBKIF_FLAG_TILEOFFSET = 0x00000100,
1311             LVBKIF_TYPE_WATERMARK  = 0x10000000
1312         }
1313     }
1314 
1315     enum {
1316         LVS_OWNERDATA = 4096
1317     }
1318 
1319     enum {
1320         LVS_EX_CHECKBOXES       = 4,
1321         LVS_EX_FULLROWSELECT    = 32,
1322         LVS_EX_GRIDLINES        = 1,
1323         LVS_EX_HEADERDRAGDROP   = 16,
1324         LVS_EX_ONECLICKACTIVATE = 64,
1325         LVS_EX_SUBITEMIMAGES    = 2,
1326         LVS_EX_TRACKSELECT      = 8,
1327         LVS_EX_TWOCLICKACTIVATE = 128
1328     }
1329 
1330     enum {
1331         LVSICF_NOINVALIDATEALL = 0x00000001,
1332         LVSICF_NOSCROLL        = 0x00000002
1333     }
1334 
1335     static if (_WIN32_IE >= 0x400) {
1336         enum {
1337             LVS_EX_FLATSB         = 0x00000100,
1338             LVS_EX_REGIONAL       = 0x00000200,
1339             LVS_EX_INFOTIP        = 0x00000400,
1340             LVS_EX_UNDERLINEHOT   = 0x00000800,
1341             LVS_EX_UNDERLINECOLD  = 0x00001000,
1342             LVS_EX_MULTIWORKAREAS = 0x00002000
1343         }
1344     }
1345 
1346     static if (_WIN32_IE >= 0x500) {
1347         enum {
1348             LVS_EX_LABELTIP     = 0x00004000,
1349             LVS_EX_BORDERSELECT = 0x00008000
1350         }
1351     }
1352 }
1353 
1354 enum {
1355     LVSIL_NORMAL,
1356     LVSIL_SMALL,
1357     LVSIL_STATE
1358 }
1359 
1360 enum {
1361     LVM_GETBKCOLOR             = LVM_FIRST,
1362     LVM_SETBKCOLOR,
1363     LVM_GETIMAGELIST,
1364     LVM_SETIMAGELIST,
1365     LVM_GETITEMCOUNT,       // = LVM_FIRST +   4
1366     LVM_SORTITEMSEX            = LVM_FIRST +  81,
1367     LVM_GETGROUPSTATE          = LVM_FIRST + 92,
1368     LVM_GETFOCUSEDGROUP,
1369     LVM_GETGROUPRECT           = LVM_FIRST + 98,
1370     LVM_SETVIEW                = LVM_FIRST + 142,
1371     LVM_GETVIEW,            // = LVM_FIRST + 143
1372     LVM_INSERTGROUP            = LVM_FIRST + 145,
1373     LVM_SETGROUPINFO           = LVM_FIRST + 147,
1374     LVM_GETGROUPINFO           = LVM_FIRST + 149,
1375     LVM_REMOVEGROUP,
1376     LVM_MOVEGROUP,          // = LVM_FIRST + 151
1377     LVM_GETGROUPCOUNT,
1378     LVM_GETGROUPINFOBYINDEX,
1379     LVM_MOVEITEMTOGROUP,
1380     LVM_SETGROUPMETRICS        = LVM_FIRST + 155,
1381     LVM_GETGROUPMETRICS,
1382     LVM_ENABLEGROUPVIEW,
1383     LVM_SORTGROUPS,
1384     LVM_INSERTGROUPSORTED,
1385     LVM_REMOVEALLGROUPS,
1386     LVM_HASGROUP,
1387     LVM_SETTILEVIEWINFO,
1388     LVM_GETTILEVIEWINFO,
1389     LVM_SETTILEINFO,
1390     LVM_GETTILEINFO,
1391     LVM_SETINSERTMARK,
1392     LVM_GETINSERTMARK,
1393     LVM_INSERTMARKHITTEST,
1394     LVM_GETINSERTMARKRECT,
1395     LVM_SETINSERTMARKCOLOR,
1396     LVM_GETINSERTMARKCOLOR, // = LVM_FIRST + 171
1397     LVM_SETINFOTIP             = LVM_FIRST + 173,
1398     LVM_GETSELECTEDCOLUMN,
1399     LVM_ISGROUPVIEWENABLED,
1400     LVM_GETOUTLINECOLOR,
1401     LVM_SETOUTLINECOLOR,    // = LVM_FIRST + 177
1402     LVM_CANCELEDITLABEL        = LVM_FIRST + 179,
1403     LVM_MAPINDEXTOID           = LVM_FIRST + 180,
1404     LVM_MAPIDTOINDEX           = LVM_FIRST + 181,
1405     LVM_ISITEMVISIBLE          = LVM_FIRST + 182,
1406 }
1407 
1408 static if (_WIN32_WINNT >= 0x501) {
1409     enum {
1410         LVM_SETSELECTEDCOLUMN  = LVM_FIRST + 140
1411     }
1412 }
1413 
1414 static if (_WIN32_WINNT >= 0x600) {
1415     enum {
1416         LVM_GETEMPTYTEXT = LVM_FIRST + 204,
1417         LVM_GETFOOTERRECT = LVM_FIRST + 205,
1418         LVM_GETFOOTERINFO = LVM_FIRST + 206,
1419         LVM_GETFOOTERITEMRECT = LVM_FIRST + 207,
1420         LVM_GETFOOTERITEM = (LVM_FIRST + 208),
1421         LVM_GETITEMINDEXRECT = (LVM_FIRST + 209),
1422         LVM_SETITEMINDEXSTATE = (LVM_FIRST + 210),
1423         LVM_GETNEXTITEMINDEX = (LVM_FIRST + 211),
1424     }
1425 }
1426 
1427 enum {
1428     LVIF_TEXT  = 1,
1429     LVIF_IMAGE = 2,
1430     LVIF_PARAM = 4,
1431     LVIF_STATE = 8
1432 }
1433 
1434 static if (_WIN32_IE >= 0x300) {
1435     enum {
1436         LVIF_INDENT      = 16,
1437         LVIF_NORECOMPUTE = 2048
1438     }
1439 }
1440 
1441 static if (_WIN32_WINNT >= 0x501) {
1442     enum {
1443         LVIF_GROUPID = 128,
1444         LVIF_COLUMNS = 256
1445     }
1446 }
1447 
1448 enum {
1449     LVIS_FOCUSED        = 1,
1450     LVIS_SELECTED       = 2,
1451     LVIS_CUT            = 4,
1452     LVIS_DROPHILITED    = 8,
1453     LVIS_OVERLAYMASK    = 0xF00,
1454     LVIS_STATEIMAGEMASK = 0xF000
1455 }
1456 
1457 enum LPWSTR LPSTR_TEXTCALLBACKW = cast(LPWSTR) -1;
1458 enum LPSTR  LPSTR_TEXTCALLBACKA = cast(LPSTR) -1;
1459 
1460 enum I_IMAGECALLBACK = -1;
1461 
1462 static if (_WIN32_IE >= 0x400) {
1463     enum {
1464         LVM_SETBKIMAGEA          = LVM_FIRST + 68,
1465         LVM_SETBKIMAGEW          = LVM_FIRST + 138,
1466         LVM_GETBKIMAGEA          = LVM_FIRST + 69,
1467         LVM_GETBKIMAGEW          = LVM_FIRST + 139,
1468         LV_MAX_WORKAREAS         = 16,
1469         LVM_SETWORKAREAS         = LVM_FIRST + 65,
1470         LVM_GETWORKAREAS         = LVM_FIRST + 70,
1471         LVM_GETNUMBEROFWORKAREAS = LVM_FIRST + 73,
1472         LVM_GETSELECTIONMARK     = LVM_FIRST + 66,
1473         LVM_SETSELECTIONMARK     = LVM_FIRST + 67,
1474         LVM_SETHOVERTIME         = LVM_FIRST + 71,
1475         LVM_GETHOVERTIME         = LVM_FIRST + 72,
1476         LVM_SETTOOLTIPS          = LVM_FIRST + 74,
1477         LVM_GETTOOLTIPS          = LVM_FIRST + 78,
1478         LVM_SETUNICODEFORMAT     = CCM_SETUNICODEFORMAT,
1479         LVM_GETUNICODEFORMAT     = CCM_GETUNICODEFORMAT
1480     }
1481 }
1482 
1483 enum {
1484     LVNI_ALL,
1485     LVNI_FOCUSED     = 1,
1486     LVNI_SELECTED    = 2,
1487     LVNI_CUT         = 4,
1488     LVNI_DROPHILITED = 8,
1489     LVNI_ABOVE       = 256,
1490     LVNI_BELOW       = 512,
1491     LVNI_TOLEFT      = 1024,
1492     LVNI_TORIGHT     = 2048
1493 }
1494 
1495 enum {
1496     LVM_GETITEMA          = LVM_FIRST + 5,
1497     LVM_SETITEMA,
1498     LVM_INSERTITEMA,
1499     LVM_DELETEITEM,
1500     LVM_DELETEALLITEMS,
1501     LVM_GETCALLBACKMASK,
1502     LVM_SETCALLBACKMASK,
1503     LVM_GETNEXTITEM,
1504     LVM_FINDITEMA,
1505     LVM_GETITEMRECT,
1506     LVM_SETITEMPOSITION,
1507     LVM_GETITEMPOSITION,
1508     LVM_GETSTRINGWIDTHA,
1509     LVM_HITTEST,
1510     LVM_ENSUREVISIBLE,
1511     LVM_SCROLL,
1512     LVM_REDRAWITEMS,
1513     LVM_ARRANGE,
1514     LVM_EDITLABELA,
1515     LVM_GETEDITCONTROL,
1516     LVM_GETCOLUMNA,
1517     LVM_SETCOLUMNA,
1518     LVM_INSERTCOLUMNA,
1519     LVM_DELETECOLUMN,
1520     LVM_GETCOLUMNWIDTH,
1521     LVM_SETCOLUMNWIDTH, // = LVM_FIRST + 30,
1522     LVM_CREATEDRAGIMAGE   = LVM_FIRST + 33,
1523     LVM_GETVIEWRECT,
1524     LVM_GETTEXTCOLOR,
1525     LVM_SETTEXTCOLOR,
1526     LVM_GETTEXTBKCOLOR,
1527     LVM_SETTEXTBKCOLOR,
1528     LVM_GETTOPINDEX,
1529     LVM_GETCOUNTPERPAGE,
1530     LVM_GETORIGIN,
1531     LVM_UPDATE,
1532     LVM_SETITEMSTATE,
1533     LVM_GETITEMSTATE,
1534     LVM_GETITEMTEXTA,
1535     LVM_SETITEMTEXTA,
1536     LVM_SETITEMCOUNT,
1537     LVM_SORTITEMS,
1538     LVM_SETITEMPOSITION32,
1539     LVM_GETSELECTEDCOUNT,
1540     LVM_GETITEMSPACING,
1541     LVM_GETISEARCHSTRINGA, // = LVM_FIRST + 52,
1542     LVM_GETITEMW          = LVM_FIRST + 75,
1543     LVM_SETITEMW          = LVM_FIRST + 76,
1544     LVM_INSERTITEMW       = LVM_FIRST + 77,
1545     LVM_FINDITEMW         = LVM_FIRST + 83,
1546     LVM_GETSTRINGWIDTHW   = LVM_FIRST + 87,
1547     LVM_GETCOLUMNW        = LVM_FIRST + 95,
1548     LVM_SETCOLUMNW        = LVM_FIRST + 96,
1549     LVM_INSERTCOLUMNW     = LVM_FIRST + 97,
1550     LVM_GETITEMTEXTW      = LVM_FIRST + 115,
1551     LVM_SETITEMTEXTW,
1552     LVM_GETISEARCHSTRINGW,
1553     LVM_EDITLABELW     // = LVM_FIRST + 118,
1554 }
1555 
1556 static if (_WIN32_IE >= 0x300) {
1557     enum {
1558         LVM_GETHEADER                = LVM_FIRST + 31,
1559         LVM_SETICONSPACING           = LVM_FIRST + 53,
1560         LVM_SETEXTENDEDLISTVIEWSTYLE,
1561         LVM_GETEXTENDEDLISTVIEWSTYLE,
1562         LVM_GETSUBITEMRECT,
1563         LVM_SUBITEMHITTEST,
1564         LVM_SETCOLUMNORDERARRAY,
1565         LVM_GETCOLUMNORDERARRAY,
1566         LVM_SETHOTITEM,
1567         LVM_GETHOTITEM,
1568         LVM_SETHOTCURSOR,
1569         LVM_GETHOTCURSOR,
1570         LVM_APPROXIMATEVIEWRECT   // = LVM_FIRST + 64,
1571     }
1572 }
1573 
1574 enum {
1575     LVFI_PARAM     = 1,
1576     LVFI_STRING    = 2,
1577     LVFI_PARTIAL   = 8,
1578     LVFI_WRAP      = 32,
1579     LVFI_NEARESTXY = 64
1580 }
1581 
1582 enum {
1583     LVIF_DI_SETITEM = 0x1000
1584 }
1585 
1586 enum {
1587     LVIR_BOUNDS,
1588     LVIR_ICON,
1589     LVIR_LABEL,
1590     LVIR_SELECTBOUNDS // = 3
1591 }
1592 
1593 enum {
1594     LVHT_NOWHERE         = 1,
1595     LVHT_ONITEMICON      = 2,
1596     LVHT_ONITEMLABEL     = 4,
1597     LVHT_ONITEMSTATEICON = 8,
1598     LVHT_ONITEM          = LVHT_ONITEMICON | LVHT_ONITEMLABEL
1599                            | LVHT_ONITEMSTATEICON,
1600     LVHT_ABOVE           = 8,
1601     LVHT_BELOW           = 16,
1602     LVHT_TORIGHT         = 32,
1603     LVHT_TOLEFT          = 64
1604 }
1605 
1606 enum {
1607     LVA_DEFAULT    = 0,
1608     LVA_ALIGNLEFT  = 1,
1609     LVA_ALIGNTOP   = 2,
1610     LVA_SNAPTOGRID = 5
1611 }
1612 
1613 enum {
1614     LVCF_FMT     = 1,
1615     LVCF_WIDTH   = 2,
1616     LVCF_TEXT    = 4,
1617     LVCF_SUBITEM = 8
1618 }
1619 
1620 static if (_WIN32_IE >= 0x300) {
1621     enum {
1622         LVCF_IMAGE = 16,
1623         LVCF_ORDER = 32
1624     }
1625 }
1626 
1627 enum {
1628     LVCFMT_LEFT,
1629     LVCFMT_RIGHT,
1630     LVCFMT_CENTER,
1631     LVCFMT_JUSTIFYMASK // = 3
1632 }
1633 
1634 static if (_WIN32_IE >= 0x300) {
1635     enum {
1636         LVCFMT_IMAGE           = 2048,
1637         LVCFMT_BITMAP_ON_RIGHT = 4096,
1638         LVCFMT_COL_HAS_IMAGES  = 32768
1639     }
1640 }
1641 
1642 enum {
1643     LVSCW_AUTOSIZE           = -1,
1644     LVSCW_AUTOSIZE_USEHEADER = -2
1645 }
1646 
1647 enum {
1648     LVN_ITEMCHANGING    = LVN_FIRST,
1649     LVN_ITEMCHANGED     = LVN_FIRST - 1,
1650     LVN_INSERTITEM      = LVN_FIRST - 2,
1651     LVN_DELETEITEM      = LVN_FIRST - 3,
1652     LVN_DELETEALLITEMS  = LVN_FIRST - 4,
1653     LVN_BEGINLABELEDITA = LVN_FIRST - 5,
1654     LVN_ENDLABELEDITA   = LVN_FIRST - 6,
1655     LVN_COLUMNCLICK     = LVN_FIRST - 8,
1656     LVN_BEGINDRAG       = LVN_FIRST - 9,
1657     LVN_BEGINRDRAG      = LVN_FIRST - 11,
1658     LVN_GETDISPINFOA    = LVN_FIRST - 50,
1659     LVN_SETDISPINFOA    = LVN_FIRST - 51,
1660     LVN_KEYDOWN         = LVN_FIRST - 55,
1661     LVN_BEGINLABELEDITW = LVN_FIRST - 75,
1662     LVN_ENDLABELEDITW   = LVN_FIRST - 76,
1663     LVN_GETDISPINFOW    = LVN_FIRST - 77,
1664     LVN_SETDISPINFOW    = LVN_FIRST - 78
1665 }
1666 
1667 static if (_WIN32_IE >= 0x400) {
1668     enum {
1669         LVN_MARQUEEBEGIN = LVN_FIRST - 56,
1670         LVN_GETINFOTIPA  = LVN_FIRST - 57,
1671         LVN_GETINFOTIPW  = LVN_FIRST - 58,
1672         LVKF_ALT         = 1,
1673         LVKF_CONTROL     = 2,
1674         LVKF_SHIFT       = 4,
1675         LVGIT_UNFOLDED   = 1
1676     }
1677 }
1678 
1679 enum {
1680     TVS_HASBUTTONS      = 1,
1681     TVS_HASLINES        = 2,
1682     TVS_LINESATROOT     = 4,
1683     TVS_EDITLABELS      = 8,
1684     TVS_DISABLEDRAGDROP = 16,
1685     TVS_SHOWSELALWAYS   = 32
1686 }
1687 
1688 static if (_WIN32_IE >= 0x300) {
1689     enum {
1690         TVS_RTLREADING  = 64,
1691         TVS_NOTOOLTIPS  = 128,
1692         TVS_CHECKBOXES  = 256,
1693         TVS_TRACKSELECT = 512
1694     }
1695 }
1696 
1697 static if (_WIN32_IE >= 0x400) {
1698     enum {
1699         TVS_SINGLEEXPAND  = 1024,
1700         TVS_INFOTIP       = 2048,
1701         TVS_FULLROWSELECT = 4096,
1702         TVS_NOSCROLL      = 8192,
1703         TVS_NONEVENHEIGHT = 16384
1704     }
1705 }
1706 
1707 static if (_WIN32_IE >= 0x500) {
1708     enum {
1709         TVS_NOHSCROLL = 0x8000
1710     }
1711 }
1712 
1713 enum {
1714     TVIF_TEXT          = 1,
1715     TVIF_IMAGE         = 2,
1716     TVIF_PARAM         = 4,
1717     TVIF_STATE         = 8,
1718     TVIF_HANDLE        = 16,
1719     TVIF_SELECTEDIMAGE = 32,
1720     TVIF_CHILDREN      = 64
1721 }
1722 
1723 static if (_WIN32_IE >= 0x400) {
1724     enum {
1725         TVIF_INTEGRAL = 0x0080
1726     }
1727 }
1728 
1729 enum {
1730     TVIS_FOCUSED        = 1,
1731     TVIS_SELECTED       = 2,
1732     TVIS_CUT            = 4,
1733     TVIS_DROPHILITED    = 8,
1734     TVIS_BOLD           = 16,
1735     TVIS_EXPANDED       = 32,
1736     TVIS_EXPANDEDONCE   = 64,
1737     TVIS_OVERLAYMASK    = 0xF00,
1738     TVIS_STATEIMAGEMASK = 0xF000,
1739     TVIS_USERMASK       = 0xF000
1740 }
1741 
1742 enum {
1743     I_CHILDRENCALLBACK = -1
1744 }
1745 
1746 mixin DECLARE_HANDLE!("HTREEITEM");
1747 mixin DECLARE_HANDLE!("HIMAGELIST");
1748 
1749 version (Win64)
1750 {
1751 enum HTREEITEM
1752     TVI_ROOT  = cast(HTREEITEM) cast(ULONG_PTR)-0x10000,
1753     TVI_FIRST = cast(HTREEITEM) cast(ULONG_PTR)-0xffff,
1754     TVI_LAST  = cast(HTREEITEM) cast(ULONG_PTR)-0xfffe,
1755     TVI_SORT  = cast(HTREEITEM) cast(ULONG_PTR)-0xfffd;
1756 } else {
1757 enum HTREEITEM
1758     TVI_ROOT  = cast(HTREEITEM) 0xFFFF0000,
1759     TVI_FIRST = cast(HTREEITEM) 0xFFFF0001,
1760     TVI_LAST  = cast(HTREEITEM) 0xFFFF0002,
1761     TVI_SORT  = cast(HTREEITEM) 0xFFFF0003;
1762 }
1763 
1764 enum {
1765     TVSIL_NORMAL = 0,
1766     TVSIL_STATE  = 2
1767 }
1768 
1769 enum {
1770     TVM_INSERTITEMA       = TV_FIRST,
1771     TVM_DELETEITEM        = TV_FIRST + 1,
1772     TVM_EXPAND            = TV_FIRST + 2,
1773     TVM_GETITEMRECT       = TV_FIRST + 4,
1774     TVM_GETCOUNT,
1775     TVM_GETINDENT,
1776     TVM_SETINDENT,
1777     TVM_GETIMAGELIST,
1778     TVM_SETIMAGELIST,
1779     TVM_GETNEXTITEM,
1780     TVM_SELECTITEM,
1781     TVM_GETITEMA,
1782     TVM_SETITEMA,
1783     TVM_EDITLABELA,
1784     TVM_GETEDITCONTROL,
1785     TVM_GETVISIBLECOUNT,
1786     TVM_HITTEST,
1787     TVM_CREATEDRAGIMAGE,
1788     TVM_SORTCHILDREN,
1789     TVM_ENSUREVISIBLE,
1790     TVM_SORTCHILDRENCB,
1791     TVM_ENDEDITLABELNOW,
1792     TVM_GETISEARCHSTRINGA, // = TV_FIRST + 23
1793     TVM_INSERTITEMW       = TV_FIRST + 50,
1794     TVM_GETITEMW          = TV_FIRST + 62,
1795     TVM_SETITEMW          = TV_FIRST + 63,
1796     TVM_GETISEARCHSTRINGW = TV_FIRST + 64,
1797     TVM_EDITLABELW        = TV_FIRST + 65
1798 }
1799 
1800 static if (_WIN32_IE >= 0x300) {
1801     enum {
1802         TVM_GETTOOLTIPS = TV_FIRST + 25,
1803         TVM_SETTOOLTIPS = TV_FIRST + 24
1804     }
1805 }
1806 
1807 static if (_WIN32_IE >= 0x400) {
1808     enum {
1809         TVM_SETINSERTMARK      = TV_FIRST + 26,
1810         TVM_SETITEMHEIGHT,
1811         TVM_GETITEMHEIGHT,
1812         TVM_SETBKCOLOR,
1813         TVM_SETTEXTCOLOR,
1814         TVM_GETBKCOLOR,
1815         TVM_GETTEXTCOLOR,
1816         TVM_SETSCROLLTIME,
1817         TVM_GETSCROLLTIME,  // = TV_FIRST + 34
1818         TVM_SETINSERTMARKCOLOR = TV_FIRST + 37,
1819         TVM_GETINSERTMARKCOLOR = TV_FIRST + 38,
1820         TVM_SETUNICODEFORMAT   = CCM_SETUNICODEFORMAT,
1821         TVM_GETUNICODEFORMAT   = CCM_GETUNICODEFORMAT
1822     }
1823 }
1824 
1825 static if (_WIN32_IE >= 0x500) {
1826     enum {
1827         TVM_GETITEMSTATE = TV_FIRST + 39,
1828         TVM_SETLINECOLOR = TV_FIRST + 40,
1829         TVM_GETLINECOLOR = TV_FIRST + 41
1830     }
1831 }
1832 
1833 static if (_WIN32_IE >= 0x501) {
1834     enum {
1835         TVM_MAPACCIDTOHTREEITEM = TV_FIRST + 42,
1836         TVM_MAPHTREEITEMTOACCID = TV_FIRST + 43,
1837         TVM_SETEXTENDEDSTYLE = TV_FIRST + 44,
1838         TVM_GETEXTENDEDSTYLE = TV_FIRST + 45,
1839         TVM_SETAUTOSCROLLINFO = TV_FIRST + 59
1840     }
1841 }
1842 
1843 static if (_WIN32_IE >= 0x600) {
1844     enum {
1845         TVM_GETSELECTEDCOUNT = TV_FIRST + 70,
1846         TVM_SHOWINFOTIP = TV_FIRST + 71,
1847         TVM_GETITEMPARTRECT = TV_FIRST + 72,
1848     }
1849 }
1850 
1851 enum {
1852     TVE_COLLAPSE      = 1,
1853     TVE_EXPAND        = 2,
1854     TVE_TOGGLE        = 3,
1855     TVE_COLLAPSERESET = 0x8000
1856 }
1857 
1858 static if (_WIN32_IE >= 0x300) {
1859     enum {
1860         TVE_EXPANDPARTIAL = 0x4000
1861     }
1862 }
1863 
1864 enum {
1865     TVC_UNKNOWN,
1866     TVC_BYMOUSE,
1867     TVC_BYKEYBOARD // = 2
1868 }
1869 
1870 enum {
1871     TVGN_ROOT,
1872     TVGN_NEXT,
1873     TVGN_PREVIOUS,
1874     TVGN_PARENT,
1875     TVGN_CHILD,
1876     TVGN_FIRSTVISIBLE,
1877     TVGN_NEXTVISIBLE,
1878     TVGN_PREVIOUSVISIBLE,
1879     TVGN_DROPHILITE,
1880     TVGN_CARET // = 9
1881 }
1882 
1883 static if (_WIN32_IE >= 0x400) {
1884     enum {
1885         TVGN_LASTVISIBLE = 10
1886     }
1887 }
1888 
1889 static if (_WIN32_IE >= 0x600) {
1890     enum {
1891         TVGN_NEXTSELECTED = 11
1892     }
1893 }
1894 
1895 enum {
1896     TVN_SELCHANGINGA    = TVN_FIRST - 1,
1897     TVN_SELCHANGEDA     = TVN_FIRST - 2,
1898     TVN_GETDISPINFOA    = TVN_FIRST - 3,
1899     TVN_SETDISPINFOA    = TVN_FIRST - 4,
1900     TVN_ITEMEXPANDINGA  = TVN_FIRST - 5,
1901     TVN_ITEMEXPANDEDA   = TVN_FIRST - 6,
1902     TVN_BEGINDRAGA      = TVN_FIRST - 7,
1903     TVN_BEGINRDRAGA     = TVN_FIRST - 8,
1904     TVN_DELETEITEMA     = TVN_FIRST - 9,
1905     TVN_BEGINLABELEDITA = TVN_FIRST - 10,
1906     TVN_ENDLABELEDITA   = TVN_FIRST - 11,
1907     TVN_KEYDOWN         = TVN_FIRST - 12,
1908     TVN_SELCHANGINGW    = TVN_FIRST - 50,
1909     TVN_SELCHANGEDW     = TVN_FIRST - 51,
1910     TVN_GETDISPINFOW    = TVN_FIRST - 52,
1911     TVN_SETDISPINFOW    = TVN_FIRST - 53,
1912     TVN_ITEMEXPANDINGW  = TVN_FIRST - 54,
1913     TVN_ITEMEXPANDEDW   = TVN_FIRST - 55,
1914     TVN_BEGINDRAGW      = TVN_FIRST - 56,
1915     TVN_BEGINRDRAGW     = TVN_FIRST - 57,
1916     TVN_DELETEITEMW     = TVN_FIRST - 58,
1917     TVN_BEGINLABELEDITW = TVN_FIRST - 59,
1918     TVN_ENDLABELEDITW   = TVN_FIRST - 60
1919 }
1920 
1921 static if (_WIN32_IE >= 0x400) {
1922     enum {
1923         TVNRET_DEFAULT   = 0,
1924         TVNRET_SKIPOLD   = 1,
1925         TVNRET_SKIPNEW   = 2,
1926         TVN_GETINFOTIPA  = TVN_FIRST - 13,
1927         TVN_GETINFOTIPW  = TVN_FIRST - 14,
1928         TVN_SINGLEEXPAND = TVN_FIRST - 15
1929     }
1930 }
1931 
1932 enum {
1933     TVIF_DI_SETITEM = 0x1000
1934 }
1935 
1936 enum {
1937     TVHT_NOWHERE         = 1,
1938     TVHT_ONITEMICON      = 2,
1939     TVHT_ONITEMLABEL     = 4,
1940     TVHT_ONITEMINDENT    = 8,
1941     TVHT_ONITEMBUTTON    = 16,
1942     TVHT_ONITEMRIGHT     = 32,
1943     TVHT_ONITEMSTATEICON = 64,
1944     TVHT_ABOVE           = 256,
1945     TVHT_BELOW           = 512,
1946     TVHT_TORIGHT         = 1024,
1947     TVHT_TOLEFT          = 2048,
1948     TCHT_NOWHERE         = 1,
1949     TCHT_ONITEMICON      = 2,
1950     TCHT_ONITEMLABEL     = 4,
1951     TVHT_ONITEM          = TVHT_ONITEMICON | TVHT_ONITEMLABEL
1952                            | TVHT_ONITEMSTATEICON,
1953     TCHT_ONITEM          = TCHT_ONITEMICON | TCHT_ONITEMLABEL
1954 }
1955 
1956 enum {
1957     TCS_TABS              = 0,
1958     TCS_RIGHTJUSTIFY      = 0,
1959     TCS_SINGLELINE        = 0,
1960     TCS_FORCEICONLEFT     = 16,
1961     TCS_FORCELABELLEFT    = 32,
1962     TCS_BUTTONS           = 256,
1963     TCS_MULTILINE         = 512,
1964     TCS_FIXEDWIDTH        = 1024,
1965     TCS_RAGGEDRIGHT       = 2048,
1966     TCS_FOCUSONBUTTONDOWN = 0x1000,
1967     TCS_OWNERDRAWFIXED    = 0x2000,
1968     TCS_TOOLTIPS          = 0x4000,
1969     TCS_FOCUSNEVER        = 0x8000
1970 }
1971 
1972 static if (_WIN32_IE >= 0x300) {
1973     enum {
1974         TCS_BOTTOM         = 2,
1975         TCS_RIGHT          = 2,
1976         TCS_VERTICAL       = 128,
1977         TCS_SCROLLOPPOSITE = 0x0001,
1978         TCS_HOTTRACK       = 0x0040,
1979         TCS_MULTISELECT    = 0x0004
1980     }
1981 }
1982 
1983 static if (_WIN32_IE >= 0x400) {
1984     enum {
1985         TCS_FLATBUTTONS       = 0x0008,
1986         TCS_EX_FLATSEPARATORS = 0x00000001,
1987         TCS_EX_REGISTERDROP   = 0x00000002
1988     }
1989 }
1990 
1991 enum {
1992     TCIF_TEXT       = 1,
1993     TCIF_IMAGE      = 2,
1994     TCIF_RTLREADING = 4,
1995     TCIF_PARAM      = 8
1996 }
1997 
1998 static if (_WIN32_IE >= 0x400) {
1999     enum {
2000         TCIF_STATE = 16
2001     }
2002 }
2003 
2004 enum {
2005     TCIS_BUTTONPRESSED = 1
2006 }
2007 
2008 static if (_WIN32_IE >= 0x400) {
2009     enum {
2010         TCIS_HIGHLIGHTED = 2
2011     }
2012 }
2013 
2014 enum {
2015     TCM_FIRST          = 0x1300,
2016     TCM_GETIMAGELIST   = TCM_FIRST + 2,
2017     TCM_SETIMAGELIST,
2018     TCM_GETITEMCOUNT,
2019     TCM_GETITEMA,
2020     TCM_SETITEMA,
2021     TCM_INSERTITEMA,
2022     TCM_DELETEITEM,
2023     TCM_DELETEALLITEMS,
2024     TCM_GETITEMRECT,
2025     TCM_GETCURSEL,
2026     TCM_SETCURSEL,
2027     TCM_HITTEST,
2028     TCM_SETITEMEXTRA, // = TCM_FIRST + 14
2029     TCM_ADJUSTRECT     = TCM_FIRST + 40,
2030     TCM_SETITEMSIZE,
2031     TCM_REMOVEIMAGE,
2032     TCM_SETPADDING,
2033     TCM_GETROWCOUNT,
2034     TCM_GETTOOLTIPS,
2035     TCM_SETTOOLTIPS,
2036     TCM_GETCURFOCUS,
2037     TCM_SETCURFOCUS,
2038     TCM_SETMINTABWIDTH,
2039     TCM_DESELECTALL, // = TCM_FIRST + 50
2040     TCM_GETITEMW       = TCM_FIRST + 60,
2041     TCM_SETITEMW       = TCM_FIRST + 61,
2042     TCM_INSERTITEMW    = TCM_FIRST + 62
2043 }
2044 
2045 static if (_WIN32_IE >=0x0400) {
2046     enum {
2047         TCM_HIGHLIGHTITEM    = TCM_FIRST + 51,
2048         TCM_SETEXTENDEDSTYLE = TCM_FIRST + 52,
2049         TCM_GETEXTENDEDSTYLE = TCM_FIRST + 53,
2050         TCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
2051         TCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
2052     }
2053 }
2054 
2055 enum {
2056     TCN_KEYDOWN     = TCN_FIRST,
2057     TCN_SELCHANGE   = TCN_FIRST - 1,
2058     TCN_SELCHANGING = TCN_FIRST - 2
2059 }
2060 
2061 enum {
2062     NM_OUTOFMEMORY     = NM_FIRST - 1,
2063     NM_CLICK           = NM_FIRST - 2,
2064     NM_DBLCLK          = NM_FIRST - 3,
2065     NM_RETURN          = NM_FIRST - 4,
2066     NM_RCLICK          = NM_FIRST - 5,
2067     NM_RDBLCLK         = NM_FIRST - 6,
2068     NM_SETFOCUS        = NM_FIRST - 7,
2069     NM_KILLFOCUS       = NM_FIRST - 8,
2070     NM_CUSTOMDRAW      = NM_FIRST - 12,
2071     NM_HOVER           = NM_FIRST - 13,
2072     NM_NCHITTEST       = NM_FIRST - 14,
2073     NM_KEYDOWN         = NM_FIRST - 15,
2074     NM_RELEASEDCAPTURE = NM_FIRST - 16,
2075     NM_SETCURSOR       = NM_FIRST - 17,
2076     NM_CHAR            = NM_FIRST - 18,
2077     NM_TOOLTIPSCREATED = NM_FIRST - 19
2078 }
2079 
2080 enum {
2081     SBARS_SIZEGRIP = 256
2082 }
2083 
2084 /*enum {
2085     CCM_FIRST            = 0x2000,
2086     CCM_LAST             = CCM_FIRST + 0x200,
2087     CCM_SETBKCOLOR       = 8193,
2088     CCM_SETCOLORSCHEME   = 8194,
2089     CCM_GETCOLORSCHEME   = 8195,
2090     CCM_GETDROPTARGET    = 8196,
2091     CCM_SETUNICODEFORMAT = 8197,
2092     CCM_GETUNICODEFORMAT = 8198,
2093     CCM_SETVERSION       = 0x2007,
2094     CCM_GETVERSION       = 0x2008,
2095     CCM_SETNOTIFYWINDOW  = 0x2009
2096 }*/
2097 
2098 static if (_WIN32_WINNT >= 0x501) {
2099     enum {
2100         CCM_SETWINDOWTHEME = 0x200b,
2101         CCM_DPISCALE       = 0x200c,
2102 
2103         RB_GETBANDMARGINS = WM_USER + 40,
2104         RB_SETWINDOWTHEME = CCM_SETWINDOWTHEME,
2105         TB_SETWINDOWTHEME  = CCM_SETWINDOWTHEME,
2106         TTM_SETWINDOWTHEME = CCM_SETWINDOWTHEME,
2107     }
2108 }
2109 
2110 enum {
2111     ICC_LISTVIEW_CLASSES = 1,
2112     ICC_TREEVIEW_CLASSES = 2,
2113     ICC_BAR_CLASSES      = 4,
2114     ICC_TAB_CLASSES      = 8,
2115     ICC_UPDOWN_CLASS     = 16,
2116     ICC_PROGRESS_CLASS   = 32,
2117     ICC_HOTKEY_CLASS     = 64,
2118     ICC_ANIMATE_CLASS    = 128,
2119     ICC_WIN95_CLASSES    = 255,
2120     ICC_DATE_CLASSES     = 256,
2121     ICC_USEREX_CLASSES   = 512,
2122     ICC_COOL_CLASSES     = 1024
2123 }
2124 
2125 static if (_WIN32_IE >= 0x400) {
2126     enum {
2127         INFOTIPSIZE            = 1024,
2128         ICC_INTERNET_CLASSES   = 2048,
2129         ICC_PAGESCROLLER_CLASS = 4096,
2130         ICC_NATIVEFNTCTL_CLASS = 8192
2131     }
2132 }
2133 
2134 static if (_WIN32_WINNT >= 0x501) {
2135     enum {
2136         ICC_STANDARD_CLASSES = 0x00004000,
2137         ICC_LINK_CLASS       = 0x00008000
2138     }
2139 }
2140 
2141 enum {
2142     GDTR_MIN = 1,
2143     GDTR_MAX = 2
2144 }
2145 
2146 enum {
2147     GMR_VISIBLE,
2148     GMR_DAYSTATE
2149 }
2150 
2151 enum {
2152     GDT_ERROR = -1,
2153     GDT_VALID = 0,
2154     GDT_NONE  = 1
2155 }
2156 
2157 enum {
2158     DTS_SHORTDATEFORMAT = 0,
2159     DTS_UPDOWN          = 1,
2160     DTS_SHOWNONE        = 2,
2161     DTS_LONGDATEFORMAT  = 4,
2162     DTS_TIMEFORMAT      = 9,
2163     DTS_APPCANPARSE     = 16,
2164     DTS_RIGHTALIGN      = 32
2165 }
2166 
2167 static if (_WIN32_IE >= 0x500) {
2168     enum {
2169         DTS_SHORTDATECENTURYFORMAT = 0x000C
2170     }
2171 }
2172 
2173 enum {
2174     MCS_DAYSTATE    = 1,
2175     MCS_MULTISELECT = 2,
2176     MCS_WEEKNUMBERS = 4
2177 }
2178 
2179 static if (_WIN32_IE >= 0x400) {
2180     enum {
2181         MCS_NOTODAYCIRCLE = 0x0008,
2182         MCS_NOTODAY       = 0x0010
2183     }
2184 } else {
2185     enum {
2186         MCS_NOTODAY = 0x0008
2187     }
2188 }
2189 
2190 enum {
2191     DTM_FIRST         = 0x1000,
2192     DTM_GETSYSTEMTIME = 0x1001,
2193     DTM_SETSYSTEMTIME = 0x1002,
2194     DTM_GETRANGE      = 0x1003,
2195     DTM_SETRANGE      = 0x1004,
2196     DTM_SETFORMATA    = 0x1005,
2197     DTM_SETMCCOLOR    = 0x1006,
2198     DTM_GETMCCOLOR    = 0x1007,
2199     DTM_GETMONTHCAL   = 0x1008,
2200     DTM_SETMCFONT     = 0x1009,
2201     DTM_GETMCFONT     = 0x100a,
2202     DTM_SETFORMATW    = 0x1050
2203 }
2204 
2205 static if (_WIN32_WINNT >= 0x600) {
2206     enum {
2207         DTM_SETMCSTYLE = DTM_FIRST + 11,
2208         DTM_GETMCSTYLE,
2209         DTM_CLOSEMONTHCAL,
2210         DTM_GETDATETIMEPICKERINFO,
2211         DTM_GETIDEALSIZE,
2212     }
2213 }
2214 
2215 enum {
2216     DTN_USERSTRINGA    = -758U,
2217     DTN_USERSTRINGW    = -745U,
2218     DTN_WMKEYDOWNA     = -757U,
2219     DTN_WMKEYDOWNW     = -744U,
2220     DTN_FORMATA        = -756U,
2221     DTN_FORMATW        = -743U,
2222     DTN_FORMATQUERYA   = -755U,
2223     DTN_FORMATQUERYW   = -742U,
2224     DTN_DROPDOWN       = -754U,
2225     DTN_CLOSEUP        = -753U,
2226     DTN_DATETIMECHANGE = -759U,
2227 }
2228 
2229 enum {
2230     MCM_FIRST             = 0x1000,
2231     MCM_GETCURSEL         = 0x1001,
2232     MCM_SETCURSEL         = 0x1002,
2233     MCM_GETMAXSELCOUNT    = 0x1003,
2234     MCM_SETMAXSELCOUNT    = 0x1004,
2235     MCM_GETSELRANGE       = 0x1005,
2236     MCM_SETSELRANGE       = 0x1006,
2237     MCM_GETMONTHRANGE     = 0x1007,
2238     MCM_SETDAYSTATE       = 0x1008,
2239     MCM_GETMINREQRECT     = 0x1009,
2240     MCM_SETCOLOR          = 0x100a,
2241     MCM_GETCOLOR          = 0x100b,
2242     MCM_SETTODAY          = 0x100c,
2243     MCM_GETTODAY          = 0x100d,
2244     MCM_HITTEST           = 0x100e,
2245     MCM_SETFIRSTDAYOFWEEK = 0x100f,
2246     MCM_GETFIRSTDAYOFWEEK = 0x1010,
2247     MCM_GETRANGE          = 0x1011,
2248     MCM_SETRANGE          = 0x1012,
2249     MCM_GETMONTHDELTA     = 0x1013,
2250     MCM_SETMONTHDELTA     = 0x1014,
2251     MCM_GETMAXTODAYWIDTH  = 0x1015,
2252     MCM_GETUNICODEFORMAT  = CCM_GETUNICODEFORMAT,
2253     MCM_SETUNICODEFORMAT  = CCM_SETUNICODEFORMAT
2254 }
2255 
2256 static if (_WIN32_WINNT >= 0x600) {
2257     enum {
2258         MCM_GETCURRENTVIEW = MCM_FIRST + 22,
2259         MCM_GETCALENDARCOUNT,
2260         MCM_GETCALENDARGRIDINFO,
2261         MCM_GETCALID = MCM_FIRST + 27,
2262         MCM_SETCALID,
2263         MCM_SIZERECTTOMIN,
2264         MCM_SETCALENDARBORDER,
2265         MCM_GETCALENDARBORDER,
2266         MCM_SETCURRENTVIEW,
2267     }
2268 }
2269 
2270 enum {
2271     MCN_SELCHANGE   = -749U,
2272     MCN_GETDAYSTATE = -747U,
2273     MCN_SELECT      = -746U
2274 }
2275 
2276 enum {
2277     ODT_HEADER = 100,
2278     ODT_TAB,
2279     ODT_LISTVIEW // = 102
2280 }
2281 
2282 enum {
2283     SB_SETBKCOLOR = 0x2001
2284 }
2285 
2286 static if (_WIN32_IE >= 0x300) {
2287     enum {
2288         SB_ISSIMPLE = 1038
2289     }
2290 
2291     enum {
2292         MCSC_BACKGROUND,
2293         MCSC_TEXT,
2294         MCSC_TITLEBK,
2295         MCSC_TITLETEXT,
2296         MCSC_MONTHBK,
2297         MCSC_TRAILINGTEXT // = 5
2298     }
2299 }
2300 
2301 static if (_WIN32_IE >= 0x400) {
2302     enum {
2303         MCHT_TITLE            = 0x10000,
2304         MCHT_CALENDAR         = 0x20000,
2305         MCHT_TODAYLINK        = 0x30000,
2306         MCHT_NEXT             = 0x1000000,
2307         MCHT_PREV             = 0x2000000,
2308         MCHT_NOWHERE          = 0x00,
2309         MCHT_TITLEBK          = MCHT_TITLE,
2310         MCHT_TITLEMONTH       = MCHT_TITLE | 0x0001,
2311         MCHT_TITLEYEAR        = MCHT_TITLE | 0x0002,
2312         MCHT_TITLEBTNNEXT     = MCHT_TITLE | MCHT_NEXT | 0x0003,
2313         MCHT_TITLEBTNPREV     = MCHT_TITLE | MCHT_PREV | 0x0003,
2314         MCHT_CALENDARBK       = MCHT_CALENDAR,
2315         MCHT_CALENDARDATE     = MCHT_CALENDAR | 0x0001,
2316         MCHT_CALENDARDATENEXT = MCHT_CALENDARDATE | MCHT_NEXT,
2317         MCHT_CALENDARDATEPREV = MCHT_CALENDARDATE | MCHT_PREV,
2318         MCHT_CALENDARDAY      = MCHT_CALENDAR | 0x0002,
2319         MCHT_CALENDARWEEKNUM  = MCHT_CALENDAR | 0x0003
2320     }
2321 }
2322 
2323 enum {
2324     RBS_TOOLTIPS    = 256,
2325     RBS_VARHEIGHT   = 512,
2326     RBS_BANDBORDERS = 1024,
2327     RBS_FIXEDORDER  = 2048
2328 }
2329 
2330 enum {
2331     RBIM_IMAGELIST = 1
2332 }
2333 
2334 enum {
2335     RB_SETCOLORSCHEME = CCM_SETCOLORSCHEME,
2336     RB_GETCOLORSCHEME = CCM_GETCOLORSCHEME
2337 }
2338 
2339 enum {
2340     RBBS_BREAK          = 0x0001,
2341     RBBS_FIXEDSIZE      = 0x0002,
2342     RBBS_CHILDEDGE      = 0x0004,
2343     RBBS_HIDDEN         = 0x0008,
2344     RBBS_NOVERT         = 0x0010,
2345     RBBS_FIXEDBMP       = 0x0020,
2346     RBBS_VARIABLEHEIGHT = 0x0040,
2347     RBBS_GRIPPERALWAYS  = 0x0080,
2348     RBBS_NOGRIPPER      = 0x0100
2349 }
2350 
2351 static if (_WIN32_IE >= 0x500) {
2352     enum {
2353         RBBS_USECHEVRON = 0x0200
2354     }
2355 }
2356 
2357 static if (_WIN32_IE >= 0x501) {
2358     enum {
2359         RBBS_HIDETITLE = 0x0400,
2360         RBBS_TOPALIGN  = 0x0800
2361     }
2362 }
2363 
2364 enum {
2365     RBBIM_STYLE      = 1,
2366     RBBIM_COLORS     = 2,
2367     RBBIM_TEXT       = 4,
2368     RBBIM_IMAGE      = 8,
2369     RBBIM_CHILD      = 16,
2370     RBBIM_CHILDSIZE  = 32,
2371     RBBIM_SIZE       = 64,
2372     RBBIM_BACKGROUND = 128,
2373     RBBIM_ID         = 256
2374 }
2375 
2376 enum {
2377     RB_INSERTBANDA  = WM_USER + 1,
2378     RB_DELETEBAND,
2379     RB_GETBARINFO,
2380     RB_SETBARINFO, // = WM_USER + 4
2381     RB_SETBANDINFOA = WM_USER + 6,
2382     RB_SETPARENT    = WM_USER + 7,
2383     RB_INSERTBANDW  = WM_USER + 10,
2384     RB_SETBANDINFOW,
2385     RB_GETBANDCOUNT,
2386     RB_GETROWCOUNT,
2387     RB_GETROWHEIGHT // = WM_USER + 14,
2388 }
2389 
2390 enum {
2391     RBN_HEIGHTCHANGE = RBN_FIRST
2392 }
2393 
2394 static if (_WIN32_IE >= 0x300) {
2395     enum {
2396         LVN_ODCACHEHINT    = LVN_FIRST - 13,
2397         LVN_ODFINDITEMA    = LVN_FIRST - 52,
2398         LVN_ODFINDITEMW    = LVN_FIRST - 79,
2399         LVN_ITEMACTIVATE   = LVN_FIRST - 14,
2400         LVN_ODSTATECHANGED = LVN_FIRST - 15
2401     }
2402 
2403     version (Unicode) {
2404         enum {
2405             LVN_ODFINDITEM = LVN_ODFINDITEMW
2406         }
2407     } else {
2408         enum {
2409             LVN_ODFINDITEM = LVN_ODFINDITEMA
2410         }
2411     }
2412 }
2413 
2414 static if (_WIN32_IE >= 0x400) {
2415     enum {
2416         SB_SETICON          = 1039,
2417         SB_SETTIPTEXTA,
2418         SB_SETTIPTEXTW,
2419         SB_GETTIPTEXTA,
2420         SB_GETTIPTEXTW,
2421         SB_GETICON,      // = 1044
2422         SB_SETUNICODEFORMAT = 0x2005,
2423         SB_GETUNICODEFORMAT = 0x2006
2424     }
2425 
2426     enum {
2427         PGF_INVISIBLE = 0,
2428         PGF_NORMAL    = 1,
2429         PGF_GRAYED    = 2,
2430         PGF_DEPRESSED = 4,
2431         PGF_HOT       = 8
2432     }
2433 
2434     enum {
2435         PGB_TOPORLEFT,
2436         PGB_BOTTOMORRIGHT
2437     }
2438 
2439     enum {
2440         PGF_SCROLLUP    = 1,
2441         PGF_SCROLLDOWN  = 2,
2442         PGF_SCROLLLEFT  = 4,
2443         PGF_SCROLLRIGHT = 8
2444     }
2445 
2446     enum {
2447         PGK_SHIFT   = 1,
2448         PGK_CONTROL = 2,
2449         PGK_MENU    = 4
2450     }
2451 
2452     enum {
2453         PGF_CALCWIDTH  = 1,
2454         PGF_CALCHEIGHT = 2
2455     }
2456 
2457     enum {
2458         PGM_FIRST    = 0x1400,
2459         PGM_SETCHILD = PGM_FIRST + 1,
2460         PGM_RECALCSIZE,
2461         PGM_FORWARDMOUSE,
2462         PGM_SETBKCOLOR,
2463         PGM_GETBKCOLOR,
2464         PGM_SETBORDER,
2465         PGM_GETBORDER,
2466         PGM_SETPOS,
2467         PGM_GETPOS,
2468         PGM_SETBUTTONSIZE,
2469         PGM_GETBUTTONSIZE,
2470         PGM_GETBUTTONSTATE, // = PGM_FIRST + 12
2471         PGM_GETDROPTARGET = CCM_GETDROPTARGET
2472     }
2473 
2474     enum {
2475         RBS_REGISTERDROP    = 4096,
2476         RBS_AUTOSIZE        = 8192,
2477         RBS_VERTICALGRIPPER = 16384,
2478         RBS_DBLCLKTOGGLE    = 32768
2479     }
2480 
2481     enum {
2482         RBBIM_IDEALSIZE  = 512,
2483         RBBIM_LPARAM     = 1024,
2484         RBBIM_HEADERSIZE = 2048
2485     }
2486 
2487     enum {
2488         RB_HITTEST          = WM_USER + 8,
2489         RB_GETRECT          = WM_USER + 9,
2490         RB_IDTOINDEX        = WM_USER + 16,
2491         RB_GETTOOLTIPS,
2492         RB_SETTOOLTIPS,
2493         RB_SETBKCOLOR,
2494         RB_GETBKCOLOR,
2495         RB_SETTEXTCOLOR,
2496         RB_GETTEXTCOLOR,
2497         RB_SIZETORECT,
2498         RB_BEGINDRAG,
2499         RB_ENDDRAG,
2500         RB_DRAGMOVE,
2501         RB_GETBARHEIGHT,
2502         RB_GETBANDINFOW,
2503         RB_GETBANDINFOA,
2504         RB_MINIMIZEBAND,
2505         RB_MAXIMIZEBAND, // = WM_USER + 31
2506         RB_GETDROPTARGET    = CCM_GETDROPTARGET,
2507         RB_GETBANDBORDERS   = WM_USER + 34,
2508         RB_SHOWBAND         = WM_USER + 35,
2509         RB_SETPALETTE       = WM_USER + 37,
2510         RB_GETPALETTE       = WM_USER + 38,
2511         RB_MOVEBAND         = WM_USER + 39,
2512         RB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
2513         RB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
2514     }
2515 
2516     enum {
2517         RBN_GETOBJECT     = RBN_FIRST - 1,
2518         RBN_LAYOUTCHANGED = RBN_FIRST - 2,
2519         RBN_AUTOSIZE      = RBN_FIRST - 3,
2520         RBN_BEGINDRAG     = RBN_FIRST - 4,
2521         RBN_ENDDRAG       = RBN_FIRST - 5,
2522         RBN_DELETINGBAND  = RBN_FIRST - 6,
2523         RBN_DELETEDBAND   = RBN_FIRST - 7,
2524         RBN_CHILDSIZE     = RBN_FIRST - 8
2525     }
2526 
2527     enum {
2528         RBNM_ID     = 1,
2529         RBNM_STYLE  = 2,
2530         RBNM_LPARAM = 4
2531     }
2532 
2533     enum {
2534         RBHT_NOWHERE = 1,
2535         RBHT_CAPTION,
2536         RBHT_CLIENT,
2537         RBHT_GRABBER
2538     }
2539 
2540     version (Unicode) {
2541         alias SB_SETTIPTEXTW SB_SETTIPTEXT;
2542         alias SB_GETTIPTEXTW SB_GETTIPTEXT;
2543         alias RB_GETBANDINFOW RB_GETBANDINFO;
2544     } else {
2545         alias SB_SETTIPTEXTA SB_SETTIPTEXT;
2546         alias SB_GETTIPTEXTA SB_GETTIPTEXT;
2547         alias RB_GETBANDINFOA RB_GETBANDINFO;
2548     }
2549 } else {
2550     enum {
2551         RB_GETBANDINFO = WM_USER + 5
2552     }
2553 }
2554 
2555 static if (_WIN32_IE >= 0x500) {
2556     enum {
2557         RB_PUSHCHEVRON = WM_USER + 43,
2558     }
2559 }
2560 
2561 static if (_WIN32_IE >= 0x600) {
2562     enum {
2563         RB_SETEXTENDEDSTYLE = WM_USER + 41,
2564         RB_GETEXTENDEDSTYLE = WM_USER + 42,
2565     }
2566 }
2567 
2568 static if (_WIN32_WINNT >= 0x500) {
2569     enum {
2570         RB_SETBANDWIDTH = WM_USER + 44,
2571     }
2572 }
2573 
2574 static if (_WIN32_WINNT >= 0x501) {
2575     enum {
2576         ECM_FIRST = 0x1500,
2577         BCM_FIRST = 0x1600,
2578 
2579         BCM_GETIDEALSIZE = BCM_FIRST + 0x0001,
2580         BCM_SETIMAGELIST = BCM_FIRST + 0x0002,
2581         BCM_GETIMAGELIST = BCM_FIRST + 0x0003,
2582         BCM_SETTEXTMARGIN = BCM_FIRST + 0x0004,
2583         BCM_GETTEXTMARGIN = BCM_FIRST + 0x0005,
2584 
2585         BCN_HOTITEMCHANGE = BCN_FIRST + 0x0001,
2586     }
2587 
2588     struct NMBCHOTITEM {
2589         NMHDR hdr;
2590         DWORD dwFlags;
2591     }
2592     alias NMBCHOTITEM* LPNMBCHOTITEM;
2593 }
2594 
2595 static if (_WIN32_WINNT >= 0x600) {
2596     enum {
2597         BST_DROPDOWNPUSHED      = 0x0400,
2598 
2599         BS_SPLITBUTTON          = 0x0000_000C,
2600         BS_DEFSPLITBUTTON       = 0x0000_000D,
2601         BS_COMMANDLINK          = 0x0000_000E,
2602         BS_DEFCOMMANDLINK       = 0x0000_000F,
2603 
2604         BCSIF_GLYPH             = 0x0001,
2605         BCSIF_IMAGE             = 0x0002,
2606         BCSIF_STYLE             = 0x0004,
2607         BCSIF_SIZE              = 0x0008,
2608 
2609         BCSS_NOSPLIT            = 0x0001,
2610         BCSS_STRETCH            = 0x0002,
2611         BCSS_ALIGNLEFT          = 0x0004,
2612         BCSS_IMAGE              = 0x0008,
2613 
2614         BCM_SETDROPDOWNSTATE = BCM_FIRST + 0x0006,
2615         BCM_SETSPLITINFO = BCM_FIRST + 0x0007,
2616         BCM_GETSPLITINFO = BCM_FIRST + 0x0008,
2617         BCM_SETNOTE = BCM_FIRST + 0x0009,
2618         BCM_GETNOTE = BCM_FIRST + 0x000A,
2619         BCM_GETNOTELENGTH = BCM_FIRST + 0x000B,
2620         BCM_SETSHIELD = BCM_FIRST + 0x000C,
2621 
2622         BCN_DROPDOWN = BCN_FIRST + 0x0002,
2623     }
2624 
2625 enum HIMAGELIST BCCL_NOGLYPH = cast(HIMAGELIST)-1;
2626 
2627     struct BUTTON_SPLITINFO
2628     {
2629         UINT mask;
2630         HIMAGELIST himlGlyph;
2631         UINT uSplitStyle;
2632         SIZE size;
2633     }
2634     alias BUTTON_SPLITINFO* PBUTTON_SPLITINFO;
2635 }
2636 
2637 enum {
2638     CBEM_INSERTITEMA = WM_USER + 1,
2639     CBEM_SETIMAGELIST,
2640     CBEM_GETIMAGELIST,
2641     CBEM_GETITEMA,
2642     CBEM_SETITEMA,
2643     CBEM_GETCOMBOCONTROL,
2644     CBEM_GETEDITCONTROL,
2645     CBEM_SETEXSTYLE,
2646     CBEM_GETEXSTYLE, // = WM_USER + 9)
2647     CBEM_DELETEITEM  = CB_DELETESTRING
2648 }
2649 
2650 static if (_WIN32_IE >= 0x400) {
2651     enum {
2652         CBEM_SETEXTENDEDSTYLE = WM_USER + 14,
2653         CBEM_GETEXTENDEDSTYLE = WM_USER + 9,
2654         CBEM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
2655         CBEM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
2656     }
2657 }
2658 
2659 enum {
2660     CBEM_HASEDITCHANGED = WM_USER + 10,
2661     CBEM_INSERTITEMW    = WM_USER + 11,
2662     CBEM_SETITEMW       = WM_USER + 12,
2663     CBEM_GETITEMW       = WM_USER + 13
2664 }
2665 
2666 static if (_WIN32_WINNT >= 0x501)
2667 {
2668     enum {
2669         CBEM_SETWINDOWTHEME = CCM_SETWINDOWTHEME
2670     }
2671 }
2672 
2673 enum {
2674     DA_LAST = 0x7fffffff
2675 }
2676 
2677 enum {
2678     DPA_APPEND = 0x7fffffff,
2679     DPA_ERR    = -1
2680 }
2681 
2682 enum {
2683     DSA_APPEND = 0x7fffffff,
2684     DSA_ERR    = -1
2685 }
2686 
2687 enum {
2688     DPAS_SORTED       = 1,
2689     DPAS_INSERTBEFORE = 2,
2690     DPAS_INSERTAFTER  = 4
2691 }
2692 
2693 static if (_WIN32_IE >= 0x400) {
2694     enum {
2695         WSB_PROP_CYVSCROLL = 1,
2696         WSB_PROP_CXHSCROLL = 2,
2697         WSB_PROP_CYHSCROLL = 4,
2698         WSB_PROP_CXVSCROLL = 8,
2699         WSB_PROP_CXHTHUMB  = 16,
2700         WSB_PROP_CYVTHUMB  = 32,
2701         WSB_PROP_VBKGCOLOR = 64,
2702         WSB_PROP_HBKGCOLOR = 128,
2703         WSB_PROP_VSTYLE    = 256,
2704         WSB_PROP_HSTYLE    = 512,
2705         WSB_PROP_WINSTYLE  = 1024,
2706         WSB_PROP_PALETTE   = 2048,
2707         WSB_PROP_MASK      = 0xfff,
2708         FSB_FLAT_MODE      = 2,
2709         FSB_ENCARTA_MODE   = 1,
2710         FSB_REGULAR_MODE   = 0
2711     }
2712 }
2713 
2714 static if (_WIN32_WINNT >= 0x501) {
2715     enum {
2716         LIF_ITEMINDEX = 1,
2717         LIF_STATE     = 2,
2718         LIF_ITEMID    = 4,
2719         LIF_URL       = 8
2720     }
2721 
2722     enum {
2723         LIS_FOCUSED = 1,
2724         LIS_ENABLED = 2,
2725         LIS_VISITED = 4
2726     }
2727 
2728     enum {
2729         LM_HITTEST        = WM_USER + 768,
2730         LM_GETIDEALHEIGHT,
2731         LM_SETITEM,
2732         LM_GETITEM,     // = WM_USER + 771
2733         LM_GETIDEALSIZE = LM_GETIDEALHEIGHT,
2734     }
2735 
2736 enum size_t MAX_LINKID_TEXT  =   48;
2737 enum size_t L_MAX_URL_LENGTH = 2084;
2738 }
2739 
2740 
2741 struct TBMETRICS {
2742     UINT  cbSize = TBMETRICS.sizeof;
2743     DWORD dwMask;
2744     int   cxPad;
2745     int   cyPad;
2746     int   cxBarPad;
2747     int   cyBarPad;
2748     int   cxButtonSpacing;
2749     int   cyButtonSpacing;
2750 }
2751 alias TBMETRICS* LPTBMETRICS;
2752 
2753 static if (_WIN32_WINNT >= 0x501) {
2754     struct TTGETTITLE {
2755         DWORD dwSize = TTGETTITLE.sizeof;
2756         UINT  uTitleBitmap;
2757         UINT  cch;
2758         WCHAR* pszTitle;
2759     }
2760     alias TTGETTITLE* PTTGETTITLE;
2761 }
2762 
2763 static if (_WIN32_WINNT >= 0x600) {
2764     struct MCGRIDINFO {
2765         UINT cbSize;
2766         DWORD dwPart;
2767         DWORD dwFlags;
2768         int iCalendar;
2769         int iRow;
2770         int iCol;
2771         BOOL bSelected;
2772         SYSTEMTIME stStart;
2773         SYSTEMTIME stEnd;
2774         RECT rc;
2775         PWSTR pszName;
2776         size_t cchName;
2777     }
2778     alias MCGRIDINFO* PMCGRIDINFO;
2779 
2780     struct DATETIMEPICKERINFO
2781     {
2782         DWORD cbSize;
2783         RECT rcCheck;
2784         DWORD stateCheck;
2785         RECT rcButton;
2786         DWORD stateButton;
2787         HWND hwndEdit;
2788         HWND hwndUD;
2789         HWND hwndDropDown;
2790     }
2791     alias DATETIMEPICKERINFO* LPDATETIMEPICKERINFO;
2792 }
2793 
2794 struct COMBOBOXEXITEMA {
2795     UINT   mask;
2796     INT_PTR iItem;
2797     LPSTR  pszText;
2798     int    cchTextMax;
2799     int    iImage;
2800     int    iSelectedImage;
2801     int    iOverlay;
2802     int    iIndent;
2803     LPARAM lParam;
2804 }
2805 alias COMBOBOXEXITEMA*        PCOMBOBOXEXITEMA;
2806 alias const(COMBOBOXEXITEMA)* PCCOMBOEXITEMA;
2807 
2808 struct COMBOBOXEXITEMW {
2809     UINT   mask;
2810     INT_PTR iItem;
2811     LPWSTR pszText;
2812     int    cchTextMax;
2813     int    iImage;
2814     int    iSelectedImage;
2815     int    iOverlay;
2816     int    iIndent;
2817     LPARAM lParam;
2818 }
2819 alias COMBOBOXEXITEMW*        PCOMBOBOXEXITEMW;
2820 alias const(COMBOBOXEXITEMW)* PCCOMBOEXITEMW;
2821 
2822 static if (_WIN32_IE >= 0x400) {
2823     struct NMCOMBOBOXEXA {
2824         NMHDR           hdr;
2825         COMBOBOXEXITEMA ceItem;
2826     }
2827     alias NMCOMBOBOXEXA* PNMCOMBOBOXEXA;
2828 
2829     struct NMCOMBOBOXEXW {
2830         NMHDR           hdr;
2831         COMBOBOXEXITEMW ceItem;
2832     }
2833     alias NMCOMBOBOXEXW* PNMCOMBOBOXEXW;
2834 
2835     struct NMCBEDRAGBEGINW {
2836         NMHDR hdr;
2837         int   iItemid;
2838         WCHAR[CBEMAXSTRLEN] szText = 0;
2839     }
2840     alias NMCBEDRAGBEGINW* LPNMCBEDRAGBEGINW, PNMCBEDRAGBEGINW;
2841 
2842     struct NMCBEDRAGBEGINA {
2843         NMHDR hdr;
2844         int   iItemid;
2845         char[CBEMAXSTRLEN] szText = 0;
2846     }
2847     alias NMCBEDRAGBEGINA* LPNMCBEDRAGBEGINA, PNMCBEDRAGBEGINA;
2848 
2849     struct NMIPADDRESS {
2850         NMHDR hdr;
2851         int   iField;
2852         int   iValue;
2853     }
2854     alias NMIPADDRESS* LPNMIPADDRESS;
2855 
2856     align (1)
2857     struct NMLVKEYDOWN {
2858     align (1):
2859         NMHDR hdr;
2860         WORD  wVKey;
2861         UINT  flags;
2862     }
2863     alias NMLVKEYDOWN* LPNMLVKEYDOWN;
2864 
2865     struct NMPGCALCSIZE {
2866         NMHDR hdr;
2867         DWORD dwFlag;
2868         int   iWidth;
2869         int   iHeight;
2870     }
2871     alias NMPGCALCSIZE* LPNMPGCALCSIZE;
2872 
2873     align (1)
2874     struct NMPGSCROLL {
2875     align (1):
2876         NMHDR hdr;
2877         WORD  fwKeys;   // Note: this should be WORD if MSDN document says wrong
2878         RECT  rcParent;
2879         int   iDir;
2880         int   iXpos;
2881         int   iYpos;
2882         int   iScroll;
2883     }
2884     alias NMPGSCROLL* LPNMPGSCROLL;
2885 
2886     struct NMSELCHANGE {
2887         NMHDR      nmhdr;
2888         SYSTEMTIME stSelStart;
2889         SYSTEMTIME stSelEnd;
2890     }
2891     alias NMSELCHANGE* LPNMSELCHANGE;
2892 
2893     struct NMTBHOTITEM {
2894         NMHDR hdr;
2895         int   idOld;
2896         int   idNew;
2897         DWORD dwFlags;
2898     }
2899     alias NMTBHOTITEM* LPNMTBHOTITEM;
2900 
2901     struct NMTBDISPINFOA {
2902         NMHDR     hdr;
2903         DWORD     dwMask;
2904         int       idCommand;
2905         DWORD_PTR lParam;
2906         int       iImage;
2907         LPSTR     pszText;
2908         int       cchText;
2909     }
2910     alias NMTBDISPINFOA* LPNMTBDISPINFOA;
2911 
2912     struct NMTBDISPINFOW {
2913         NMHDR     hdr;
2914         DWORD     dwMask;
2915         int       idCommand;
2916         DWORD_PTR lParam;
2917         int       iImage;
2918         LPWSTR    pszText;
2919         int       cchText;
2920     }
2921     alias NMTBDISPINFOW* LPNMTBDISPINFOW;
2922 
2923     struct NMTBGETINFOTIPA {
2924         NMHDR  hdr;
2925         LPSTR  pszText;
2926         int    cchTextMax;
2927         int    iItem;
2928         LPARAM lParam;
2929     }
2930     alias NMTBGETINFOTIPA* LPNMTBGETINFOTIPA;
2931 
2932     struct NMTBGETINFOTIPW {
2933         NMHDR  hdr;
2934         LPWSTR pszText;
2935         int    cchTextMax;
2936         int    iItem;
2937         LPARAM lParam;
2938     }
2939     alias NMTBGETINFOTIPW* LPNMTBGETINFOTIPW;
2940 
2941     struct NMMOUSE {
2942         NMHDR     hdr;
2943         DWORD_PTR dwItemSpec;
2944         DWORD_PTR dwItemData;
2945         POINT     pt;
2946         LPARAM    dwHitInfo;
2947     }
2948     alias NMMOUSE* LPNMMOUSE;
2949 }
2950 
2951 static if (_WIN32_IE >= 0x401) {
2952     struct NMTOOLTIPSCREATED {
2953         NMHDR hdr;
2954         HWND  hwndToolTips;
2955     }
2956     alias NMTOOLTIPSCREATED* LPNMTOOLTIPSCREATED;
2957 }
2958 
2959 struct NMDATETIMECHANGE {
2960     NMHDR      nmhdr;
2961     DWORD      dwFlags;
2962     SYSTEMTIME st;
2963 }
2964 alias NMDATETIMECHANGE* LPNMDATETIMECHANGE;
2965 
2966 struct NMCBEENDEDITW {
2967     NMHDR hdr;
2968     BOOL  fChanged;
2969     int   iNewSelection;
2970     WCHAR[CBEMAXSTRLEN] szText = 0;
2971     int   iWhy;
2972 }
2973 alias NMCBEENDEDITW* LPNMCBEENDEDITW, PNMCBEENDEDITW;
2974 
2975 struct NMCBEENDEDITA {
2976     NMHDR hdr;
2977     BOOL  fChanged;
2978     int   iNewSelection;
2979     char[CBEMAXSTRLEN] szText = 0;
2980     int   iWhy;
2981 }
2982 alias NMCBEENDEDITA* LPNMCBEENDEDITA, PNMCBEENDEDITA;
2983 
2984 struct COLORMAP {
2985     COLORREF from;
2986     COLORREF to;
2987 }
2988 alias COLORMAP* LPCOLORMAP;
2989 
2990 struct DRAGLISTINFO {
2991     UINT  uNotification;
2992     HWND  hWnd;
2993     POINT ptCursor;
2994 }
2995 alias DRAGLISTINFO* LPDRAGLISTINFO;
2996 
2997 struct TBBUTTON {
2998     int   iBitmap;
2999     int   idCommand;
3000     BYTE  fsState;
3001     BYTE  fsStyle;
3002     version (Win64){
3003         BYTE[6] bReserved;
3004     } else {
3005         BYTE[2] bReserved;
3006     }
3007     DWORD_PTR dwData;
3008     INT_PTR iString;
3009 }
3010 alias TBBUTTON*        PTBBUTTON, LPTBBUTTON;
3011 alias const(TBBUTTON)* LPCTBBUTTON;
3012 
3013 static if (_WIN32_IE >= 0x400) {
3014     struct TBBUTTONINFOA {
3015         UINT  cbSize = TBBUTTONINFOA.sizeof;
3016         DWORD dwMask;
3017         int   idCommand;
3018         int   iImage;
3019         BYTE  fsState;
3020         BYTE  fsStyle;
3021         WORD  cx;
3022         DWORD_PTR lParam;
3023         LPSTR pszText;
3024         int   cchText;
3025     }
3026     alias TBBUTTONINFOA* LPTBBUTTONINFOA;
3027 
3028     struct TBBUTTONINFOW {
3029         UINT   cbSize = TBBUTTONINFOW.sizeof;
3030         DWORD  dwMask;
3031         int    idCommand;
3032         int    iImage;
3033         BYTE   fsState;
3034         BYTE   fsStyle;
3035         WORD   cx;
3036         DWORD_PTR lParam;
3037         LPWSTR pszText;
3038         int    cchText;
3039     }
3040     alias TBBUTTONINFOW* LPTBBUTTONINFOW;
3041 
3042     struct TBINSERTMARK {
3043         int   iButton;
3044         DWORD dwFlags;
3045     }
3046     alias TBINSERTMARK* LPTBINSERTMARK;
3047 
3048     struct LVBKIMAGEA {
3049         ULONG   ulFlags;
3050         HBITMAP hbm;
3051         LPSTR   pszImage;
3052         UINT    cchImageMax;
3053         int     xOffsetPercent;
3054         int     yOffsetPercent;
3055     }
3056     alias LVBKIMAGEA* LPLVBKIMAGEA;
3057 
3058     struct LVBKIMAGEW {
3059         ULONG   ulFlags;
3060         HBITMAP hbm;
3061         LPWSTR  pszImage;
3062         UINT    cchImageMax;
3063         int     xOffsetPercent;
3064         int     yOffsetPercent;
3065     }
3066     alias LVBKIMAGEW* LPLVBKIMAGEW;
3067 }
3068 
3069 /*struct TBNOTIFY {
3070     NMHDR    hdr;
3071     int      iItem;
3072     TBBUTTON tbButton;
3073     int      cchText;
3074     LPTSTR   pszText;
3075 }
3076 alias TBNOTIFY* LPTBNOTIFY;
3077 */
3078 
3079 /*struct TBSAVEPARAMS {
3080     HKEY    hkr;
3081     LPCTSTR pszSubKey;
3082     LPCTSTR pszValueName;
3083 }*/
3084 
3085 struct IMAGEINFO {
3086     HBITMAP hbmImage;
3087     HBITMAP hbmMask;
3088     int     Unused1;
3089     int     Unused2;
3090     RECT    rcImage;
3091 }
3092 alias IMAGEINFO* LPIMAGEINFO;
3093 
3094 static if (_WIN32_IE >= 0x500) {
3095     struct HDITEMA {
3096         UINT    mask;
3097         int     cxy;
3098         LPSTR   pszText;
3099         HBITMAP hbm;
3100         int     cchTextMax;
3101         int     fmt;
3102         LPARAM  lParam;
3103         int     iImage;
3104         int     iOrder;
3105         UINT    type;
3106         LPVOID  pvFilter;
3107     }
3108 
3109     struct HDITEMW {
3110         UINT    mask;
3111         int     cxy;
3112         LPWSTR  pszText;
3113         HBITMAP hbm;
3114         int     cchTextMax;
3115         int     fmt;
3116         LPARAM  lParam;
3117         int     iImage;
3118         int     iOrder;
3119         UINT    type;
3120         LPVOID  pvFilter;
3121     }
3122 } else static if (_WIN32_IE >= 0x300) {
3123     struct HDITEMA {
3124         UINT    mask;
3125         int     cxy;
3126         LPSTR   pszText;
3127         HBITMAP hbm;
3128         int     cchTextMax;
3129         int     fmt;
3130         LPARAM  lParam;
3131         int     iImage;
3132         int     iOrder;
3133     }
3134 
3135     struct HDITEMW {
3136         UINT    mask;
3137         int     cxy;
3138         LPWSTR  pszText;
3139         HBITMAP hbm;
3140         int     cchTextMax;
3141         int     fmt;
3142         LPARAM  lParam;
3143         int     iImage;
3144         int     iOrder;
3145     }
3146 } else {
3147     struct HDITEMA {
3148         UINT    mask;
3149         int     cxy;
3150         LPSTR   pszText;
3151         HBITMAP hbm;
3152         int     cchTextMax;
3153         int     fmt;
3154         LPARAM  lParam;
3155     }
3156 
3157     struct HDITEMW {
3158         UINT    mask;
3159         int     cxy;
3160         LPWSTR  pszText;
3161         HBITMAP hbm;
3162         int     cchTextMax;
3163         int     fmt;
3164         LPARAM  lParam;
3165     }
3166 }
3167 alias HDITEMA* LPHDITEMA;
3168 alias HDITEMW* LPHDITEMW;
3169 
3170 deprecated {
3171     alias HDITEMA HD_ITEMA;
3172     alias HDITEMW HD_ITEMW;
3173     //alias HDITEM HD_ITEM; fixme
3174 }
3175 
3176 struct HD_LAYOUT {
3177     RECT*      prc;
3178     WINDOWPOS* pwpos;
3179 }
3180 alias HD_LAYOUT* LPHDLAYOUT;
3181 deprecated alias HD_LAYOUT HDLAYOUT;
3182 
3183 struct HD_HITTESTINFO {
3184     POINT pt;
3185     UINT  flags;
3186     int   iItem;
3187 }
3188 alias HD_HITTESTINFO* LPHDHITTESTINFO;
3189 
3190 struct HD_NOTIFYA {
3191     NMHDR    hdr;
3192     int      iItem;
3193     int      iButton;
3194     HDITEMA* pitem;
3195 }
3196 
3197 struct HD_NOTIFYW {
3198     NMHDR    hdr;
3199     int      iItem;
3200     int      iButton;
3201     HDITEMW* pitem;
3202 }
3203 
3204 /* FIXME: NMHEADER structure (base for all events of the comctl controls)
3205    is the same as HD_NOTIFY depending on the value of _WIN32_IE macro.
3206    I'm defining both for now. */
3207 struct NMHEADERA {
3208     NMHDR    hdr;
3209     int      iItem;
3210     int      iButton;
3211     HDITEMA* pitem;
3212 }
3213 alias NMHEADERA* LPNMHEADERA;
3214 
3215 struct NMHEADERW {
3216     NMHDR    hdr;
3217     int      iItem;
3218     int      iButton;
3219     HDITEMW* pitem;
3220 }
3221 alias NMHEADERW* LPNMHEADERW;
3222 
3223 version (Unicode) {
3224     alias NMHEADERW NMHEADER;
3225     alias LPNMHEADERW LPNMHEADER;
3226 } else {
3227     alias NMHEADERA NMHEADER;
3228     alias LPNMHEADERA LPNMHEADER;
3229 }
3230 // End FIXME
3231 
3232 struct NMHDDISPINFOA {
3233     NMHDR  hdr;
3234     int    iItem;
3235     UINT   mask;
3236     LPSTR  pszText;
3237     int    cchTextMax;
3238     int    iImage;
3239     LPARAM lParam;
3240 }
3241 alias NMHDDISPINFOA* LPNMHDDISPINFOA;
3242 
3243 struct NMHDDISPINFOW {
3244     NMHDR  hdr;
3245     int    iItem;
3246     UINT   mask;
3247     LPWSTR pszText;
3248     int    cchTextMax;
3249     int    iImage;
3250     LPARAM lParam;
3251 }
3252 alias NMHDDISPINFOW* LPNMHDDISPINFOW;
3253 
3254 struct NMCUSTOMDRAW {
3255     NMHDR  hdr;
3256     DWORD  dwDrawStage;
3257     HDC    hdc;
3258     RECT   rc;
3259     DWORD_PTR dwItemSpec;
3260     UINT   uItemState;
3261     LPARAM lItemlParam;
3262 }
3263 alias NMCUSTOMDRAW* LPNMCUSTOMDRAW;
3264 
3265 static if (_WIN32_IE >= 0x400) {
3266     struct NMLVCUSTOMDRAW {
3267         NMCUSTOMDRAW nmcd;
3268         COLORREF     clrText;
3269         COLORREF     clrTextBk;
3270         int          iSubItem;
3271     }
3272 } else {
3273     struct NMLVCUSTOMDRAW {
3274         NMCUSTOMDRAW nmcd;
3275         COLORREF     clrText;
3276         COLORREF     clrTextBk;
3277     }
3278 }
3279 alias NMLVCUSTOMDRAW* LPNMLVCUSTOMDRAW;
3280 
3281 static if (_WIN32_IE >= 0x400) {
3282     struct NMLVGETINFOTIPA {
3283         NMHDR  hdr;
3284         DWORD  dwFlags;
3285         LPSTR  pszText;
3286         int    cchTextMax;
3287         int    iItem;
3288         int    iSubItem;
3289         LPARAM lParam;
3290     }
3291     alias NMLVGETINFOTIPA* LPNMLVGETINFOTIPA;
3292 
3293     struct NMLVGETINFOTIPW {
3294         NMHDR  hdr;
3295         DWORD  dwFlags;
3296         LPWSTR pszText;
3297         int    cchTextMax;
3298         int    iItem;
3299         int    iSubItem;
3300         LPARAM lParam;
3301     }
3302     alias NMLVGETINFOTIPW* LPNMLVGETINFOTIPW;
3303 }
3304 
3305 static if (_WIN32_IE >= 0x400) {
3306     struct NMTVCUSTOMDRAW {
3307         NMCUSTOMDRAW nmcd;
3308         COLORREF     clrText;
3309         COLORREF     clrTextBk;
3310         int          iLevel;
3311     }
3312 } else {
3313     struct NMTVCUSTOMDRAW {
3314         NMCUSTOMDRAW nmcd;
3315         COLORREF     clrText;
3316         COLORREF     clrTextBk;
3317     }
3318 }
3319 alias NMTVCUSTOMDRAW* LPNMTVCUSTOMDRAW;
3320 
3321 static if (_WIN32_IE >= 0x400) {
3322     static if (_WIN32_WINNT >= 0x501) {
3323         struct NMTBCUSTOMDRAW {
3324             NMCUSTOMDRAW nmcd;
3325             HBRUSH       hbrMonoDither;
3326             HBRUSH       hbrLines;
3327             HPEN         hpenLines;
3328             COLORREF     clrText;
3329             COLORREF     clrMark;
3330             COLORREF     clrTextHighlight;
3331             COLORREF     clrBtnFace;
3332             COLORREF     clrBtnHighlight;
3333             COLORREF     clrHighlightHotTrack;
3334             RECT         rcText;
3335             int          nStringBkMode;
3336             int          nHLStringBkMode;
3337             int          iListGap;
3338         }
3339     } else {
3340         struct NMTBCUSTOMDRAW {
3341             NMCUSTOMDRAW nmcd;
3342             HBRUSH       hbrMonoDither;
3343             HBRUSH       hbrLines;
3344             HPEN         hpenLines;
3345             COLORREF     clrText;
3346             COLORREF     clrMark;
3347             COLORREF     clrTextHighlight;
3348             COLORREF     clrBtnFace;
3349             COLORREF     clrBtnHighlight;
3350             COLORREF     clrHighlightHotTrack;
3351             RECT         rcText;
3352             int          nStringBkMode;
3353             int          nHLStringBkMode;
3354         }
3355     }
3356     alias NMTBCUSTOMDRAW* LPNMTBCUSTOMDRAW;
3357 
3358     struct NMITEMACTIVATE {
3359         NMHDR  hdr;
3360         int    iItem;
3361         int    iSubItem;
3362         UINT   uNewState;
3363         UINT   uOldState;
3364         UINT   uChanged;
3365         POINT  ptAction;
3366         LPARAM lParam;
3367         UINT   uKeyFlags;
3368     }
3369     alias NMITEMACTIVATE* LPNMITEMACTIVATE;
3370 }
3371 
3372 struct TBADDBITMAP {
3373     HINSTANCE hInst;
3374     UINT_PTR  nID;
3375 }
3376 alias TBADDBITMAP* LPTBADDBITMAP;
3377 
3378 struct TBSAVEPARAMSA {
3379     HKEY   hkr;
3380     LPCSTR pszSubKey;
3381     LPCSTR pszValueName;
3382 }
3383 
3384 struct TBSAVEPARAMSW {
3385     HKEY    hkr;
3386     LPCWSTR pszSubKey;
3387     LPCWSTR pszValueName;
3388 }
3389 
3390 struct TBREPLACEBITMAP {
3391     HINSTANCE hInstOld;
3392     UINT_PTR  nIDOld;
3393     HINSTANCE hInstNew;
3394     UINT_PTR  nIDNew;
3395     int       nButtons;
3396 }
3397 alias TBREPLACEBITMAP* LPTBREPLACEBITMAP;
3398 
3399 static if (_WIN32_IE >= 0x500) {
3400     struct NMTOOLBARA {
3401         NMHDR    hdr;
3402         int      iItem;
3403         TBBUTTON tbButton;
3404         int      cchText;
3405         LPSTR    pszText;
3406         RECT     rcButton;
3407     }
3408 
3409     struct NMTOOLBARW {
3410         NMHDR    hdr;
3411         int      iItem;
3412         TBBUTTON tbButton;
3413         int      cchText;
3414         LPWSTR   pszText;
3415         RECT     rcButton;
3416     }
3417 } else {
3418     struct NMTOOLBARA {
3419         NMHDR    hdr;
3420         int      iItem;
3421         TBBUTTON tbButton;
3422         int      cchText;
3423         LPSTR    pszText;
3424     }
3425 
3426     struct NMTOOLBARW {
3427         NMHDR    hdr;
3428         int      iItem;
3429         TBBUTTON tbButton;
3430         int      cchText;
3431         LPWSTR   pszText;
3432     }
3433 }
3434 alias NMTOOLBARA* LPNMTOOLBARA;
3435 alias NMTOOLBARW* LPNMTOOLBARW;
3436 
3437 alias NMTOOLBARA TBNOTIFYA;
3438 alias LPNMTOOLBARA LPTBNOTIFYA;
3439 
3440 alias NMTOOLBARW TBNOTIFYW;
3441 alias LPNMTOOLBARW LPTBNOTIFYW;
3442 
3443 static if (_WIN32_WINNT >= 0x501) {
3444     struct TOOLINFOA {
3445         UINT      cbSize = TOOLINFOA.sizeof;
3446         UINT      uFlags;
3447         HWND      hwnd;
3448         UINT_PTR  uId;
3449         RECT      rect;
3450         HINSTANCE hinst;
3451         LPSTR     lpszText;
3452         LPARAM    lParam;
3453         void*     lpReserved;
3454     }
3455 
3456     struct TOOLINFOW {
3457         UINT      cbSize = TOOLINFOW.sizeof;
3458         UINT      uFlags;
3459         HWND      hwnd;
3460         UINT_PTR  uId;
3461         RECT      rect;
3462         HINSTANCE hinst;
3463         LPWSTR    lpszText;
3464         LPARAM    lParam;
3465         void*     lpReserved;
3466     }
3467 
3468 enum size_t
3469         TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof,
3470         TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof,
3471         TTTOOLINFOA_V2_SIZE = TOOLINFOA.lpReserved.offsetof,
3472         TTTOOLINFOW_V2_SIZE = TOOLINFOW.lpReserved.offsetof,
3473         TTTOOLINFOA_V3_SIZE = TOOLINFOA.sizeof,
3474         TTTOOLINFOW_V3_SIZE = TOOLINFOW.sizeof;
3475 } else static if (_WIN32_IE >= 0x300) {
3476     struct TOOLINFOA {
3477         UINT      cbSize = TOOLINFOA.sizeof;
3478         UINT      uFlags;
3479         HWND      hwnd;
3480         UINT      uId;
3481         RECT      rect;
3482         HINSTANCE hinst;
3483         LPSTR     lpszText;
3484         LPARAM    lParam;
3485     }
3486 
3487     struct TOOLINFOW {
3488         UINT      cbSize = TOOLINFOW.sizeof;
3489         UINT      uFlags;
3490         HWND      hwnd;
3491         UINT      uId;
3492         RECT      rect;
3493         HINSTANCE hinst;
3494         LPWSTR    lpszText;
3495         LPARAM    lParam;
3496     }
3497 
3498 enum size_t
3499         TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof,
3500         TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof,
3501         TTTOOLINFOA_V2_SIZE = TOOLINFOA.sizeof,
3502         TTTOOLINFOW_V2_SIZE = TOOLINFOW.sizeof;
3503 } else {
3504     struct TOOLINFOA {
3505         UINT      cbSize = TOOLINFOA.sizeof;
3506         UINT      uFlags;
3507         HWND      hwnd;
3508         UINT      uId;
3509         RECT      rect;
3510         HINSTANCE hinst;
3511         LPSTR     lpszText;
3512     }
3513 
3514     struct TOOLINFOW {
3515         UINT      cbSize = TOOLINFOW.sizeof;
3516         UINT      uFlags;
3517         HWND      hwnd;
3518         UINT      uId;
3519         RECT      rect;
3520         HINSTANCE hinst;
3521         LPWSTR    lpszText;
3522     }
3523 
3524 enum size_t
3525         TTTOOLINFOA_V1_SIZE = TOOLINFOA.sizeof,
3526         TTTOOLINFOW_V1_SIZE = TOOLINFOW.sizeof;
3527 }
3528 alias TOOLINFOA TTTOOLINFOA;
3529 alias TOOLINFOW TTTOOLINFOW;
3530 alias TTTOOLINFOA* LPTTTOOLINFOA, PTOOLINFOA, LPTOOLINFOA;
3531 alias TTTOOLINFOW* LPTTTOOLINFOW, PTOOLINFOW, LPTOOLINFOW;
3532 
3533 struct TTHITTESTINFOA {
3534     HWND      hwnd;
3535     POINT     pt;
3536     TOOLINFOA ti;
3537 }
3538 alias TTHITTESTINFOA* LPTTHITTESTINFOA, LPHITTESTINFOA;
3539 
3540 struct TTHITTESTINFOW {
3541     HWND      hwnd;
3542     POINT     pt;
3543     TOOLINFOW ti;
3544 }
3545 alias TTHITTESTINFOW* LPTTHITTESTINFOW, LPHITTESTINFOW;
3546 
3547 static if (_WIN32_IE >= 0x300) {
3548     struct NMTTDISPINFOA {
3549         NMHDR     hdr;
3550         LPSTR     lpszText;
3551         char[80]  szText = 0;
3552         HINSTANCE hinst;
3553         UINT      uFlags;
3554         LPARAM    lParam;
3555     }
3556 
3557     struct NMTTDISPINFOW {
3558         NMHDR     hdr;
3559         LPWSTR    lpszText;
3560         WCHAR[80] szText = 0;
3561         HINSTANCE hinst;
3562         UINT      uFlags;
3563         LPARAM    lParam;
3564     }
3565 } else {
3566     struct NMTTDISPINFOA {
3567         NMHDR     hdr;
3568         LPSTR     lpszText;
3569         char[80]  szText = 0;
3570         HINSTANCE hinst;
3571         UINT      uFlags;
3572     }
3573 
3574     struct NMTTDISPINFOW {
3575         NMHDR     hdr;
3576         LPWSTR    lpszText;
3577         WCHAR[80] szText = 0;
3578         HINSTANCE hinst;
3579         UINT      uFlags;
3580     }
3581 }
3582 alias NMTTDISPINFOA* LPNMTTDISPINFOA;
3583 alias NMTTDISPINFOW* LPNMTTDISPINFOW;
3584 alias NMTTDISPINFOA TOOLTIPTEXTA;
3585 alias LPNMTTDISPINFOA LPTOOLTIPTEXTA;
3586 alias NMTTDISPINFOW TOOLTIPTEXTW;
3587 alias LPNMTTDISPINFOW LPTOOLTIPTEXTW;
3588 
3589 struct UDACCEL {
3590     UINT nSec;
3591     UINT nInc;
3592 }
3593 alias UDACCEL* LPUDACCEL;
3594 
3595 struct NMUPDOWN {
3596     NMHDR hdr;
3597     int   iPos;
3598     int   iDelta;
3599 }
3600 alias NMUPDOWN* LPNMUPDOWN;
3601 
3602 deprecated {
3603     alias NMUPDOWN NM_UPDOWN;
3604     alias LPNMUPDOWN LPNM_UPDOWN;
3605 }
3606 
3607 static if (_WIN32_WINNT >= 0x501) {
3608     struct LVITEMA {
3609         UINT   mask;
3610         int    iItem;
3611         int    iSubItem;
3612         UINT   state;
3613         UINT   stateMask;
3614         LPSTR  pszText;
3615         int    cchTextMax;
3616         int    iImage;
3617         LPARAM lParam;
3618         int    iIndent;
3619         int    iGroupId;
3620         UINT   cColumns;
3621         PUINT  puColumns;
3622     }
3623 
3624     struct LVITEMW {
3625         UINT   mask;
3626         int    iItem;
3627         int    iSubItem;
3628         UINT   state;
3629         UINT   stateMask;
3630         LPWSTR pszText;
3631         int    cchTextMax;
3632         int    iImage;
3633         LPARAM lParam;
3634         int    iIndent;
3635         int    iGroupId;
3636         UINT   cColumns;
3637         PUINT  puColumns;
3638     }
3639 } else static if (_WIN32_IE >= 0x300) {
3640     struct LVITEMA {
3641         UINT   mask;
3642         int    iItem;
3643         int    iSubItem;
3644         UINT   state;
3645         UINT   stateMask;
3646         LPSTR  pszText;
3647         int    cchTextMax;
3648         int    iImage;
3649         LPARAM lParam;
3650         int    iIndent;
3651     }
3652 
3653     struct LVITEMW {
3654         UINT   mask;
3655         int    iItem;
3656         int    iSubItem;
3657         UINT   state;
3658         UINT   stateMask;
3659         LPWSTR pszText;
3660         int    cchTextMax;
3661         int    iImage;
3662         LPARAM lParam;
3663         int    iIndent;
3664     }
3665 } else {
3666     struct LVITEMA {
3667         UINT   mask;
3668         int    iItem;
3669         int    iSubItem;
3670         UINT   state;
3671         UINT   stateMask;
3672         LPSTR  pszText;
3673         int    cchTextMax;
3674         int    iImage;
3675         LPARAM lParam;
3676     }
3677 
3678     struct LVITEMW {
3679         UINT   mask;
3680         int    iItem;
3681         int    iSubItem;
3682         UINT   state;
3683         UINT   stateMask;
3684         LPWSTR pszText;
3685         int    cchTextMax;
3686         int    iImage;
3687         LPARAM lParam;
3688     }
3689 }
3690 alias LVITEMA* LPLVITEMA;
3691 alias LVITEMW* LPLVITEMW;
3692 alias LVITEMA LV_ITEMA;
3693 alias LVITEMW LV_ITEMW;
3694 
3695 struct LVFINDINFOA {
3696     UINT   flags;
3697     LPCSTR psz;
3698     LPARAM lParam;
3699     POINT  pt;
3700     UINT   vkDirection;
3701 }
3702 
3703 struct LVFINDINFOW {
3704     UINT    flags;
3705     LPCWSTR psz;
3706     LPARAM  lParam;
3707     POINT   pt;
3708     UINT    vkDirection;
3709 }
3710 
3711 alias LVFINDINFOA* LPFINDINFOA;
3712 alias LVFINDINFOA LV_FINDINFOA;
3713 alias LVFINDINFOW* LPFINDINFOW;
3714 alias LVFINDINFOW LV_FINDINFOW;
3715 
3716 struct NMLVFINDITEMA {
3717     NMHDR       hdr;
3718     int         iStart;
3719     LVFINDINFOA lvfi;
3720 }
3721 
3722 struct NMLVFINDITEMW {
3723     NMHDR       hdr;
3724     int         iStart;
3725     LVFINDINFOW lvfi;
3726 }
3727 
3728 alias NMLVFINDITEMA* PNMLVFINDITEMA, LPNMLVFINDITEMA;
3729 alias NMLVFINDITEMW* PNMLVFINDITEMW, LPNMLVFINDITEMW;
3730 
3731 static if (_WIN32_IE >= 0x300) {
3732     struct LVHITTESTINFO {
3733         POINT pt;
3734         UINT  flags;
3735         int   iItem;
3736         int   iSubItem;
3737     }
3738 } else {
3739     struct LVHITTESTINFO {
3740         POINT pt;
3741         UINT  flags;
3742         int   iItem;
3743     }
3744 }
3745 alias LVHITTESTINFO* LPLVHITTESTINFO;
3746 alias LVHITTESTINFO LV_HITTESTINFO;
3747 
3748 static if (_WIN32_IE >= 0x300) {
3749     struct LVCOLUMNA {
3750         UINT  mask;
3751         int   fmt;
3752         int   cx;
3753         LPSTR pszText;
3754         int   cchTextMax;
3755         int   iSubItem;
3756         int   iImage;
3757         int   iOrder;
3758     }
3759     struct LVCOLUMNW {
3760         UINT   mask;
3761         int    fmt;
3762         int    cx;
3763         LPWSTR pszText;
3764         int    cchTextMax;
3765         int    iSubItem;
3766         int    iImage;
3767         int    iOrder;
3768     }
3769 } else {
3770     struct LVCOLUMNA {
3771         UINT  mask;
3772         int   fmt;
3773         int   cx;
3774         LPSTR pszText;
3775         int   cchTextMax;
3776         int   iSubItem;
3777     }
3778     struct LVCOLUMNW {
3779         UINT   mask;
3780         int    fmt;
3781         int    cx;
3782         LPWSTR pszText;
3783         int    cchTextMax;
3784         int    iSubItem;
3785     }
3786 }
3787 alias LVCOLUMNA* LPLVCOLUMNA;
3788 alias LVCOLUMNW* LPLVCOLUMNW;
3789 alias LVCOLUMNA LV_COLUMNA;
3790 alias LVCOLUMNW LV_COLUMNW;
3791 
3792 static if (_WIN32_WINNT >= 0x501) {
3793     /*  SG: The definitions in this static if block are from the MSDN docs.
3794      *  They are not in MinGW, but nonetheless required for macros that are.
3795      */
3796     struct LVGROUP {
3797         UINT    cbSize = LVGROUP.sizeof;
3798         UINT    mask;
3799         LPWSTR  pszHeader;
3800         int     cchHeader;
3801         LPWSTR  pszFooter;
3802         int     cchFooter;
3803         int     iGroupId;
3804         UINT    stateMask;
3805         UINT    state;
3806         UINT    uAlign;
3807         static if (_WIN32_WINNT >= 0x600) {
3808             LPWSTR  pszSubtitle;
3809             UINT    cchSubtitle;
3810             LPWSTR  pszTask;
3811             UINT    cchTask;
3812             LPWSTR  pszDescriptionTop;
3813             UINT    cchDescriptionTop;
3814             LPWSTR  pszDescriptionBottom;
3815             UINT    cchDescriptionBottom;
3816             int     iTitleImage;
3817             int     iExtendedImage;
3818             int     iFirstItem;         // Read only
3819             UINT    cItems;             // Read only
3820             LPWSTR  pszSubsetTitle;     // NULL if group is not subset
3821             UINT    cchSubsetTitle;
3822         }
3823     }
3824     alias LVGROUP* PLVGROUP;
3825 
3826     struct LVGROUPMETRICS {
3827         UINT     cbSize = LVGROUPMETRICS.sizeof;
3828         UINT     mask;
3829         UINT     Left;
3830         UINT     Top;
3831         UINT     Right;
3832         UINT     Bottom;
3833         COLORREF crLeft;
3834         COLORREF crTop;
3835         COLORREF crRight;
3836         COLORREF crBottom;
3837         COLORREF crHeader;
3838         COLORREF crFooter;
3839     }
3840     alias LVGROUPMETRICS* PLVGROUPMETRICS;
3841 
3842     struct LVINSERTMARK {
3843         UINT  cbSize = LVINSERTMARK.sizeof;
3844         DWORD dwFlags;
3845         int   iItem;
3846         DWORD dwReserved;
3847     }
3848     alias LVINSERTMARK* PLVINSERTMARK;
3849     alias LVINSERTMARK* LPLVINSERTMARK;
3850 
3851     struct LVTILEINFO {
3852         UINT     cbSize = LVTILEINFO.sizeof;
3853         int      iItem;
3854         UINT     cColumns;
3855         PUINT    puColumns;
3856         static if (_WIN32_WINNT >= 0x600) {
3857             int* piColFmt;
3858         }
3859     }
3860     alias LVTILEINFO* PLVTILEINFO;
3861 
3862     struct LVTILEVIEWINFO {
3863         UINT  cbSize = LVTILEVIEWINFO.sizeof;
3864         DWORD dwMask;
3865         DWORD dwFlags;
3866         SIZE  sizeTile;
3867         int   cLines;
3868         RECT  rcLabelMargin;
3869     }
3870     alias LVTILEVIEWINFO* PLVTILEVIEWINFO;
3871 
3872     struct LVINSERTGROUPSORTED {
3873         PFNLVGROUPCOMPARE pfnGroupCompare;
3874         LPVOID* pvData;
3875         LVGROUP lvGroup;
3876     }
3877     alias LVINSERTGROUPSORTED* PLVINSERTGROUPSORTED;
3878 
3879     extern (Windows) alias int function(INT, INT, VOID*) PFNLVGROUPCOMPARE;
3880 
3881     struct LVSETINFOTIP {
3882         UINT    cbSize = LVSETINFOTIP.sizeof;
3883         DWORD   dwFlags;
3884         LPWSTR  pszText;
3885         int     iItem;
3886         int     iSubItem;
3887         HBITMAP hbmp;
3888     }
3889     alias LVSETINFOTIP* PLVSETINFOTIP;
3890 
3891     struct BUTTON_IMAGELIST {
3892         HIMAGELIST himl;
3893         RECT margin;
3894         UINT uAlign;
3895     }
3896     alias BUTTON_IMAGELIST* PBUTTON_IMAGELIST;
3897 }
3898 
3899 static if (_WIN32_WINNT >= 0x600) {
3900     struct LVITEMINDEX
3901     {
3902         int iItem;
3903         int iGroup;
3904     }
3905     alias LVITEMINDEX* PLVITEMINDEX;
3906 
3907     struct LVFOOTERINFO
3908     {
3909         UINT mask;
3910         LPWSTR pszText;
3911         int cchTextMax;
3912         UINT cItems;
3913     }
3914     alias LVFOOTERINFO* LPLVFOOTERINFO;
3915 
3916     struct LVFOOTERITEM
3917     {
3918         UINT mask;
3919         int iItem;
3920         LPWSTR pszText;
3921         int cchTextMax;
3922         UINT state;
3923         UINT stateMask;
3924     }
3925     alias LVFOOTERITEM *LPLVFOOTERITEM;
3926 
3927     alias UINT TVITEMPART;
3928     enum {
3929         TVGIPR_BUTTON  = 0x0001,
3930     }
3931 }
3932 
3933 extern (Windows) alias int function(LPARAM, LPARAM, LPARAM) PFNLVCOMPARE;
3934 
3935 struct NMLISTVIEW {
3936     NMHDR  hdr;
3937     int    iItem;
3938     int    iSubItem;
3939     UINT   uNewState;
3940     UINT   uOldState;
3941     UINT   uChanged;
3942     POINT  ptAction;
3943     LPARAM lParam;
3944 }
3945 alias NMLISTVIEW* LPNMLISTVIEW;
3946 
3947 deprecated {
3948     alias NMLISTVIEW NM_LISTVIEW;
3949     alias LPNMLISTVIEW LPNM_LISTVIEW;
3950 }
3951 
3952 struct NMLVDISPINFOA {
3953     NMHDR    hdr;
3954     LV_ITEMA item;
3955 }
3956 alias NMLVDISPINFOA* LPNMLVDISPINFOA;
3957 alias NMLVDISPINFOA LV_DISPINFOA;
3958 
3959 struct NMLVDISPINFOW {
3960     NMHDR    hdr;
3961     LV_ITEMW item;
3962 }
3963 alias NMLVDISPINFOW* LPNMLVDISPINFOW;
3964 alias NMLVDISPINFOW LV_DISPINFOW;
3965 
3966 align (1)
3967 struct LV_KEYDOWN {
3968 align (1):
3969     NMHDR hdr;
3970     WORD  wVKey;
3971     UINT  flags;
3972 }
3973 
3974 struct NMLVCACHEHINT {
3975     NMHDR hdr;
3976     int   iFrom;
3977     int   iTo;
3978 }
3979 alias NMLVCACHEHINT* LPNMLVCACHEHINT, PNM_CACHEHINT, LPNM_CACHEHINT;
3980 alias NMLVCACHEHINT NM_CACHEHINT;
3981 
3982 struct TVITEMA {
3983     UINT      mask;
3984     HTREEITEM hItem;
3985     UINT      state;
3986     UINT      stateMask;
3987     LPSTR     pszText;
3988     int       cchTextMax;
3989     int       iImage;
3990     int       iSelectedImage;
3991     int       cChildren;
3992     LPARAM    lParam;
3993 }
3994 alias TVITEMA* LPTVITEMA, LPTV_ITEMA;
3995 alias TVITEMA TV_ITEMA;
3996 
3997 struct TVITEMW {
3998     UINT      mask;
3999     HTREEITEM hItem;
4000     UINT      state;
4001     UINT      stateMask;
4002     LPWSTR    pszText;
4003     int       cchTextMax;
4004     int       iImage;
4005     int       iSelectedImage;
4006     int       cChildren;
4007     LPARAM    lParam;
4008 }
4009 alias TVITEMW* LPTVITEMW, LPTV_ITEMW;
4010 alias TVITEMW TV_ITEMW;
4011 
4012 static if (_WIN32_IE >= 0x400) {
4013     struct TVITEMEXA {
4014         UINT      mask;
4015         HTREEITEM hItem;
4016         UINT      state;
4017         UINT      stateMask;
4018         LPSTR     pszText;
4019         int       cchTextMax;
4020         int       iImage;
4021         int       iSelectedImage;
4022         int       cChildren;
4023         LPARAM    lParam;
4024         int       iIntegral;
4025     }
4026     alias TVITEMEXA* LPTVITEMEXA;
4027 
4028     struct TVITEMEXW {
4029         UINT      mask;
4030         HTREEITEM hItem;
4031         UINT      state;
4032         UINT      stateMask;
4033         LPWSTR    pszText;
4034         int       cchTextMax;
4035         int       iImage;
4036         int       iSelectedImage;
4037         int       cChildren;
4038         LPARAM    lParam;
4039         int       iIntegral;
4040     }
4041     alias TVITEMEXW* LPTVITEMEXW;
4042 }
4043 
4044 static if (_WIN32_IE >= 0x400) {
4045     struct TVINSERTSTRUCTA {
4046         HTREEITEM hParent;
4047         HTREEITEM hInsertAfter;
4048         union {
4049             TVITEMEXA itemex;
4050             TV_ITEMA  item;
4051         }
4052     }
4053 
4054     struct TVINSERTSTRUCTW {
4055         HTREEITEM hParent;
4056         HTREEITEM hInsertAfter;
4057         union {
4058             TVITEMEXW itemex;
4059             TV_ITEMW  item;
4060         }
4061     }
4062 } else {
4063     struct TVINSERTSTRUCTA {
4064         HTREEITEM hParent;
4065         HTREEITEM hInsertAfter;
4066         TV_ITEMA  item;
4067     }
4068 
4069     struct TVINSERTSTRUCTW {
4070         HTREEITEM hParent;
4071         HTREEITEM hInsertAfter;
4072         TV_ITEMW  item;
4073     }
4074 }
4075 alias TVINSERTSTRUCTA* LPTVINSERTSTRUCTA, LPTV_INSERTSTRUCTA;
4076 alias TVINSERTSTRUCTA TV_INSERTSTRUCTA;
4077 alias TVINSERTSTRUCTW* LPTVINSERTSTRUCTW, LPTV_INSERTSTRUCTW;
4078 alias TVINSERTSTRUCTW TV_INSERTSTRUCTW;
4079 
4080 struct TVHITTESTINFO {
4081     POINT     pt;
4082     UINT      flags;
4083     HTREEITEM hItem;
4084 }
4085 alias TVHITTESTINFO* LPTVHITTESTINFO, LPTV_HITTESTINFO;
4086 alias TVHITTESTINFO TV_HITTESTINFO;
4087 
4088 static if (_WIN32_WINNT >= 0x600) {
4089     struct TVGETITEMPARTRECTINFO {
4090         HTREEITEM hti;
4091         RECT*     prc;
4092         TVITEMPART partID;
4093     }
4094 }
4095 
4096 extern (Windows) alias int function(LPARAM, LPARAM, LPARAM) PFNTVCOMPARE;
4097 struct TVSORTCB {
4098     HTREEITEM    hParent;
4099     PFNTVCOMPARE lpfnCompare;
4100     LPARAM       lParam;
4101 }
4102 alias TVSORTCB* LPTVSORTCB, LPTV_SORTCB;
4103 alias TVSORTCB TV_SORTCB;
4104 
4105 struct NMTREEVIEWA {
4106     NMHDR    hdr;
4107     UINT     action;
4108     TV_ITEMA itemOld;
4109     TV_ITEMA itemNew;
4110     POINT    ptDrag;
4111 }
4112 alias NMTREEVIEWA* LPNMTREEVIEWA, LPNM_TREEVIEWA;
4113 alias NMTREEVIEWA NM_TREEVIEWA;
4114 
4115 struct NMTREEVIEWW {
4116     NMHDR    hdr;
4117     UINT     action;
4118     TV_ITEMW itemOld;
4119     TV_ITEMW itemNew;
4120     POINT    ptDrag;
4121 }
4122 alias NMTREEVIEWW* LPNMTREEVIEWW, LPNM_TREEVIEWW;
4123 alias NMTREEVIEWW NM_TREEVIEWW;
4124 
4125 struct NMTVDISPINFOA {
4126     NMHDR   hdr;
4127     TVITEMA item;
4128 }
4129 alias NMTVDISPINFOA* LPNMTVDISPINFOA;
4130 alias NMTVDISPINFOA TV_DISPINFOA;
4131 
4132 struct NMTVDISPINFOW {
4133     NMHDR   hdr;
4134     TVITEMW item;
4135 }
4136 alias NMTVDISPINFOW* LPNMTVDISPINFOW;
4137 alias NMTVDISPINFOW TV_DISPINFOW;
4138 
4139 static if (_WIN32_IE >= 0x400) {
4140     struct NMTVGETINFOTIPA {
4141         NMHDR     hdr;
4142         LPSTR     pszText;
4143         int       cchTextMax;
4144         HTREEITEM hItem;
4145         LPARAM    lParam;
4146     }
4147     alias NMTVGETINFOTIPA* LPNMTVGETINFOTIPA;
4148 
4149     struct NMTVGETINFOTIPW {
4150         NMHDR     hdr;
4151         LPWSTR    pszText;
4152         int       cchTextMax;
4153         HTREEITEM hItem;
4154         LPARAM    lParam;
4155     }
4156     alias NMTVGETINFOTIPW* LPNMTVGETINFOTIPW;
4157 }
4158 
4159 align (1)
4160 struct TV_KEYDOWN {
4161 align (1):
4162     NMHDR hdr;
4163     WORD  wVKey;
4164     UINT  flags;
4165 }
4166 
4167 struct TC_ITEMHEADERA {
4168     UINT  mask;
4169     UINT  lpReserved1;
4170     UINT  lpReserved2;
4171     LPSTR pszText;
4172     int   cchTextMax;
4173     int   iImage;
4174 }
4175 
4176 struct TC_ITEMHEADERW {
4177     UINT   mask;
4178     UINT   lpReserved1;
4179     UINT   lpReserved2;
4180     LPWSTR pszText;
4181     int    cchTextMax;
4182     int    iImage;
4183 }
4184 
4185 static if (_WIN32_IE >= 0x300) {
4186     struct TCITEMA {
4187         UINT   mask;
4188         DWORD  dwState;
4189         DWORD  dwStateMask;
4190         LPSTR  pszText;
4191         int    cchTextMax;
4192         int    iImage;
4193         LPARAM lParam;
4194     }
4195 
4196     struct TCITEMW {
4197         UINT   mask;
4198         DWORD  dwState;
4199         DWORD  dwStateMask;
4200         LPWSTR pszText;
4201         int    cchTextMax;
4202         int    iImage;
4203         LPARAM lParam;
4204     }
4205 } else {
4206     struct TCITEMA {
4207         UINT   mask;
4208         UINT   lpReserved1;
4209         UINT   lpReserved2;
4210         LPSTR  pszText;
4211         int    cchTextMax;
4212         int    iImage;
4213         LPARAM lParam;
4214     }
4215 
4216     struct TCITEMW {
4217         UINT   mask;
4218         UINT   lpReserved1;
4219         UINT   lpReserved2;
4220         LPWSTR pszText;
4221         int    cchTextMax;
4222         int    iImage;
4223         LPARAM lParam;
4224     }
4225 }
4226 alias TCITEMA* LPTCITEMA;
4227 alias TCITEMA TC_ITEMA;
4228 alias TCITEMW* LPTCITEMW;
4229 alias TCITEMW TC_ITEMW;
4230 
4231 struct TCHITTESTINFO {
4232     POINT pt;
4233     UINT  flags;
4234 }
4235 alias TCHITTESTINFO* LPTCHITTESTINFO, LPTC_HITTESTINFO;
4236 alias TCHITTESTINFO TC_HITTESTINFO;
4237 
4238 align (1)
4239 struct TC_KEYDOWN {
4240 align (1):
4241     NMHDR hdr;
4242     WORD wVKey;
4243     UINT flags;
4244 }
4245 
4246 static if (_WIN32_IE >= 0x300) {
4247     struct INITCOMMONCONTROLSEX {
4248         DWORD dwSize = INITCOMMONCONTROLSEX.sizeof;
4249         DWORD dwICC;
4250     }
4251     alias INITCOMMONCONTROLSEX* LPINITCOMMONCONTROLSEX;
4252 }
4253 
4254 struct PBRANGE {
4255     int iLow;
4256     int iHigh;
4257 }
4258 alias PBRANGE* PPBRANGE;
4259 
4260 struct COLORSCHEME {
4261     DWORD    dwSize = COLORSCHEME.sizeof;
4262     COLORREF clrBtnHighlight;
4263     COLORREF clrBtnShadow;
4264 }
4265 alias COLORSCHEME* LPCOLORSCHEME;
4266 
4267 struct MCHITTESTINFO {
4268     UINT       cbSize = MCHITTESTINFO.sizeof;
4269     POINT      pt;
4270     UINT       uHit;
4271     SYSTEMTIME st;
4272 }
4273 alias MCHITTESTINFO* PMCHITTESTINFO;
4274 
4275 alias DWORD MONTHDAYSTATE;
4276 alias MONTHDAYSTATE* LPMONTHDAYSTATE;
4277 
4278 struct NMDAYSTATE {
4279     NMHDR           nmhdr;
4280     SYSTEMTIME      stStart;
4281     int             cDayState;
4282     LPMONTHDAYSTATE prgDayState;
4283 }
4284 alias NMDAYSTATE* LPNMDAYSTATE;
4285 
4286 struct REBARINFO {
4287     UINT       cbSize = REBARINFO.sizeof;
4288     UINT       fMask;
4289     HIMAGELIST himl;
4290 }
4291 alias REBARINFO* LPREBARINFO;
4292 
4293 static if (_WIN32_IE >= 0x400) {
4294     struct REBARBANDINFOA {
4295         UINT     cbSize = REBARBANDINFOA.sizeof;
4296         UINT     fMask;
4297         UINT     fStyle;
4298         COLORREF clrFore;
4299         COLORREF clrBack;
4300         LPSTR    lpText;
4301         UINT     cch;
4302         int      iImage;
4303         HWND     hwndChild;
4304         UINT     cxMinChild;
4305         UINT     cyMinChild;
4306         UINT     cx;
4307         HBITMAP  hbmBack;
4308         UINT     wID;
4309         UINT     cyChild;
4310         UINT     cyMaxChild;
4311         UINT     cyIntegral;
4312         UINT     cxIdeal;
4313         LPARAM   lParam;
4314         UINT     cxHeader;
4315     }
4316 
4317     struct REBARBANDINFOW {
4318         UINT     cbSize = REBARBANDINFOW.sizeof;
4319         UINT     fMask;
4320         UINT     fStyle;
4321         COLORREF clrFore;
4322         COLORREF clrBack;
4323         LPWSTR   lpText;
4324         UINT     cch;
4325         int      iImage;
4326         HWND     hwndChild;
4327         UINT     cxMinChild;
4328         UINT     cyMinChild;
4329         UINT     cx;
4330         HBITMAP  hbmBack;
4331         UINT     wID;
4332         UINT     cyChild;
4333         UINT     cyMaxChild;
4334         UINT     cyIntegral;
4335         UINT     cxIdeal;
4336         LPARAM   lParam;
4337         UINT     cxHeader;
4338     }
4339 
4340     enum : size_t {
4341         REBARBANDINFOA_V3_SIZE = REBARBANDINFOA.cyChild.offsetof,
4342         REBARBANDINFOW_V3_SIZE = REBARBANDINFOW.cyChild.offsetof
4343     }
4344 } else {
4345     struct REBARBANDINFOA {
4346         UINT     cbSize = REBARBANDINFOA.sizeof;
4347         UINT     fMask;
4348         UINT     fStyle;
4349         COLORREF clrFore;
4350         COLORREF clrBack;
4351         LPSTR    lpText;
4352         UINT     cch;
4353         int      iImage;
4354         HWND     hwndChild;
4355         UINT     cxMinChild;
4356         UINT     cyMinChild;
4357         UINT     cx;
4358         HBITMAP  hbmBack;
4359         UINT     wID;
4360     }
4361 
4362     struct REBARBANDINFOW {
4363         UINT     cbSize = REBARBANDINFOW.sizeof;
4364         UINT     fMask;
4365         UINT     fStyle;
4366         COLORREF clrFore;
4367         COLORREF clrBack;
4368         LPWSTR   lpText;
4369         UINT     cch;
4370         int      iImage;
4371         HWND     hwndChild;
4372         UINT     cxMinChild;
4373         UINT     cyMinChild;
4374         UINT     cx;
4375         HBITMAP  hbmBack;
4376         UINT     wID;
4377     }
4378 
4379     enum : size_t {
4380         REBARBANDINFOA_V3_SIZE = REBARBANDINFOA.sizeof,
4381         REBARBANDINFOW_V3_SIZE = REBARBANDINFOW.sizeof
4382     }
4383 }
4384 alias REBARBANDINFOA*        LPREBARBANDINFOA;
4385 alias const(REBARBANDINFOA)* LPCREBARBANDINFOA;
4386 alias REBARBANDINFOW*        LPREBARBANDINFOW;
4387 alias const(REBARBANDINFOW)* LPCREBARBANDINFOW;
4388 
4389 static if (_WIN32_IE >= 0x300) {
4390     struct NMLVODSTATECHANGE {
4391         NMHDR hdr;
4392         int iFrom;
4393         int iTo;
4394         UINT uNewState;
4395         UINT uOldState;
4396     }
4397     alias NMLVODSTATECHANGE* LPNMLVODSTATECHANGE;
4398 
4399     static if (_WIN32_WINNT >= 0x501) {
4400         struct IMAGELISTDRAWPARAMS {
4401             DWORD      cbSize = IMAGELISTDRAWPARAMS.sizeof;
4402             HIMAGELIST himl;
4403             int        i;
4404             HDC        hdcDst;
4405             int        x;
4406             int        y;
4407             int        cx;
4408             int        cy;
4409             int        xBitmap;
4410             int        yBitmap;
4411             COLORREF   rgbBk;
4412             COLORREF   rgbFg;
4413             UINT       fStyle;
4414             DWORD      dwRop;
4415             DWORD      fState;
4416             DWORD      Frame;
4417             COLORREF   crEffect;
4418         }
4419     } else {
4420         struct IMAGELISTDRAWPARAMS {
4421             DWORD      cbSize = IMAGELISTDRAWPARAMS.sizeof;
4422             HIMAGELIST himl;
4423             int        i;
4424             HDC        hdcDst;
4425             int        x;
4426             int        y;
4427             int        cx;
4428             int        cy;
4429             int        xBitmap;
4430             int        yBitmap;
4431             COLORREF   rgbBk;
4432             COLORREF   rgbFg;
4433             UINT       fStyle;
4434             DWORD      dwRop;
4435         }
4436     }
4437     alias IMAGELISTDRAWPARAMS* LPIMAGELISTDRAWPARAMS;
4438 }
4439 
4440 static if (_WIN32_IE >= 0x400) {
4441     struct NMREBARCHILDSIZE {
4442         NMHDR hdr;
4443         UINT  uBand;
4444         UINT  wID;
4445         RECT  rcChild;
4446         RECT  rcBand;
4447     }
4448     alias NMREBARCHILDSIZE* LPNMREBARCHILDSIZE;
4449 
4450     struct NMREBAR {
4451         NMHDR  hdr;
4452         DWORD  dwMask;
4453         UINT   uBand;
4454         UINT   fStyle;
4455         UINT   wID;
4456         LPARAM lParam;
4457     }
4458     alias NMREBAR* LPNMREBAR;
4459 
4460     struct NMRBAUTOSIZE {
4461         NMHDR hdr;
4462         BOOL  fChanged;
4463         RECT  rcTarget;
4464         RECT  rcActual;
4465     }
4466     alias NMRBAUTOSIZE* LPNMRBAUTOSIZE;
4467 
4468     static if (_WIN32_IE >= 0x500) {
4469         struct NMREBARCHEVRON {
4470             NMHDR  hdr;
4471             UINT   uBand;
4472             UINT   wID;
4473             LPARAM lParam;
4474             RECT   rc;
4475             LPARAM lParamNM;
4476         }
4477         alias NMREBARCHEVRON* LPNMREBARCHEVRON;
4478     }
4479 
4480     struct RBHITTESTINFO {
4481         POINT pt;
4482         UINT  flags;
4483         int   iBand;
4484     }
4485     alias RBHITTESTINFO* LPRBHITTESTINFO;
4486 }
4487 
4488 mixin DECLARE_HANDLE!("HDSA");
4489 mixin DECLARE_HANDLE!("HDPA");
4490 
4491 version (Unicode) {
4492     alias HDITEMW HDITEM;
4493     alias LPHDITEMW LPHDITEM;
4494     alias TOOLINFOW TOOLINFO;
4495     alias TOOLINFOW* PTOOLINFO, LPTOOLINFO;
4496     alias TTHITTESTINFOW TTHITTESTINFO;
4497     alias TTHITTESTINFOW* LPHITTESTINFO, LPTTHITTESTINFO;
4498     alias TOOLTIPTEXTW TOOLTIPTEXT;
4499     alias TOOLTIPTEXTW* LPTOOLTIPTEXT;
4500     alias NMTTDISPINFOW NMTTDISPINFO;
4501     alias NMTTDISPINFOW* LPNMTTDISPINFO;
4502     alias TV_ITEMW TV_ITEM;
4503     alias TV_ITEMW* LPTV_ITEM;
4504     alias TVITEMW TVITEM;
4505     alias TVITEMW* LPTVITEM;
4506 
4507     static if (_WIN32_IE >= 0x400) {
4508         alias TVITEMEXW TVITEMEX;
4509         alias TVITEMEXW* LPTVITEMEX;
4510     }
4511 
4512     alias TV_INSERTSTRUCTW TV_INSERTSTRUCT;
4513     alias TV_INSERTSTRUCTW* LPTV_INSERTSTRUCT;
4514     alias TVINSERTSTRUCTW TVINSERTSTRUCT;
4515     alias TVINSERTSTRUCTW* LPTVINSERTSTRUCT;
4516     alias NM_TREEVIEWW NM_TREEVIEW;
4517     alias NM_TREEVIEWW* LPNM_TREEVIEW;
4518     alias NMTREEVIEWW NMTREEVIEW;
4519     alias NMTREEVIEWW* LPNMTREEVIEW;
4520     alias NMHDDISPINFOW NMHDDISPINFO;
4521     alias NMHDDISPINFOW* LPNMHDDISPINFO;
4522 
4523     alias ACM_OPENW ACM_OPEN;
4524     alias COMBOBOXEXITEMW COMBOBOXEXITEM;
4525     alias PCOMBOBOXEXITEMW PCOMBOBOXEXITEM;
4526     //alias PCCOMBOBOXEXITEMW PCCOMBOBOXEXITEM; fixme
4527     alias CBEM_INSERTITEMW CBEM_INSERTITEM;
4528     alias CBEM_SETITEMW CBEM_SETITEM;
4529     alias CBEM_GETITEMW CBEM_GETITEM;
4530     alias CBEN_ENDEDITW CBEN_ENDEDIT;
4531     alias NMCBEENDEDITW NMCBEENDEDIT;
4532     alias LPNMCBEENDEDITW LPNMCBEENDEDIT;
4533     alias PNMCBEENDEDITW PNMCBEENDEDIT;
4534 
4535     static if (_WIN32_IE >= 0x400) {
4536         alias NMCOMBOBOXEXW NMCOMBOBOXEX;
4537         alias PNMCOMBOBOXEXW PNMCOMBOBOXEX;
4538         alias CBEN_GETDISPINFOW CBEN_GETDISPINFO;
4539         alias CBEN_DRAGBEGINW CBEN_DRAGBEGIN;
4540         alias NMCBEDRAGBEGINW NMCBEDRAGBEGIN;
4541         alias LPNMCBEDRAGBEGINW LPNMCBEDRAGBEGIN;
4542         alias PNMCBEDRAGBEGINW PNMCBEDRAGBEGIN;
4543     }
4544 
4545     alias SB_GETTEXTW SB_GETTEXT;
4546     alias SB_SETTEXTW SB_SETTEXT;
4547     alias SB_GETTEXTLENGTHW SB_GETTEXTLENGTH;
4548     alias HDM_INSERTITEMW HDM_INSERTITEM;
4549     alias HDM_GETITEMW HDM_GETITEM;
4550     alias HDM_SETITEMW HDM_SETITEM;
4551     alias HDN_ITEMCHANGINGW HDN_ITEMCHANGING;
4552     alias HDN_ITEMCHANGEDW HDN_ITEMCHANGED;
4553     alias HDN_ITEMCLICKW HDN_ITEMCLICK;
4554     alias HDN_ITEMDBLCLICKW HDN_ITEMDBLCLICK;
4555     alias HDN_DIVIDERDBLCLICKW HDN_DIVIDERDBLCLICK;
4556     alias HDN_BEGINTRACKW HDN_BEGINTRACK;
4557     alias HDN_ENDTRACKW HDN_ENDTRACK;
4558     alias HDN_TRACKW HDN_TRACK;
4559 
4560     static if (_WIN32_IE >= 0x300) {
4561         alias HDN_GETDISPINFOW HDN_GETDISPINFO;
4562     }
4563 
4564     alias HD_NOTIFYW HD_NOTIFY;
4565     alias TBSAVEPARAMSW TBSAVEPARAMS;
4566     alias TB_GETBUTTONTEXTW TB_GETBUTTONTEXT;
4567     alias TB_SAVERESTOREW TB_SAVERESTORE;
4568     alias TB_ADDSTRINGW TB_ADDSTRING;
4569 
4570     static if (_WIN32_IE >= 0x400) {
4571         alias TBN_GETBUTTONINFOW TBN_GETBUTTONINFO;  // fixme
4572         alias TB_GETBUTTONINFOW TB_GETBUTTONINFO;
4573         alias TB_SETBUTTONINFOW TB_SETBUTTONINFO;
4574         alias TB_INSERTBUTTONW TB_INSERTBUTTON;
4575         alias TB_ADDBUTTONSW TB_ADDBUTTONS;
4576         alias TB_MAPACCELERATORW TB_MAPACCELERATOR;
4577         alias TB_GETSTRINGW TB_GETSTRING;
4578         alias TBBUTTONINFOW TBBUTTONINFO;
4579         alias LPTBBUTTONINFOW LPTBBUTTONINFO;
4580         alias TBN_GETDISPINFOW TBN_GETDISPINFO;
4581         alias NMTBDISPINFOW NMTBDISPINFO;
4582         alias LPNMTBDISPINFOW LPNMTBDISPINFO;
4583         alias NMTBGETINFOTIPW NMTBGETINFOTIP;
4584         alias LPNMTBGETINFOTIPW LPNMTBGETINFOTIP;
4585     }
4586 
4587     alias TBNOTIFYW TBNOTIFY;
4588     alias LPTBNOTIFYW LPTBNOTIFY;
4589     alias NMTOOLBARW NMTOOLBAR;
4590     alias LPNMTOOLBARW LPNMTOOLBAR;
4591     alias TTM_ADDTOOLW TTM_ADDTOOL;
4592     alias TTM_DELTOOLW TTM_DELTOOL;
4593     alias TTM_NEWTOOLRECTW TTM_NEWTOOLRECT;
4594     alias TTM_GETTOOLINFOW TTM_GETTOOLINFO;
4595     alias TTM_SETTOOLINFOW TTM_SETTOOLINFO;
4596     alias TTM_HITTESTW TTM_HITTEST;
4597     alias TTM_GETTEXTW TTM_GETTEXT;
4598     alias TTM_UPDATETIPTEXTW TTM_UPDATETIPTEXT;
4599     alias TTM_ENUMTOOLSW TTM_ENUMTOOLS;
4600     alias TTM_GETCURRENTTOOLW TTM_GETCURRENTTOOL;
4601     alias TTN_NEEDTEXTW TTN_NEEDTEXT;
4602     alias TTN_GETDISPINFOW TTN_GETDISPINFO;
4603     //alias SB_GETTEXTW SB_GETTEXT;
4604     //alias SB_SETTEXTW SB_SETTEXT;
4605     //alias SB_GETTEXTLENGTHW SB_GETTEXTLENGTH;
4606     alias LV_ITEMW LV_ITEM;
4607     alias LVITEMW LVITEM;
4608     alias LVITEM* LPLVITEM;
4609     alias LPSTR_TEXTCALLBACKW LPSTR_TEXTCALLBACK;
4610 
4611     static if (_WIN32_IE >= 0x400) {
4612         alias LVBKIMAGEW LVBKIMAGE;
4613         alias LPLVBKIMAGEW LPLVBKIMAGE;
4614         alias LVM_SETBKIMAGEW LVM_SETBKIMAGE;
4615         alias LVM_GETBKIMAGEW LVM_GETBKIMAGE;
4616     }
4617 
4618     alias LVM_GETITEMW LVM_GETITEM;
4619     alias LVM_SETITEMW LVM_SETITEM;
4620     alias LVM_INSERTITEMW LVM_INSERTITEM;
4621     alias LV_FINDINFOW LV_FINDINFO;
4622     alias LVFINDINFOW LVFINDINFO;
4623     alias LPFINDINFOW LPFINDINFO;
4624     alias NMLVFINDITEMW NMLVFINDITEM;
4625     alias PNMLVFINDITEMW PNMLVFINDITEM;
4626     alias LPNMLVFINDITEMW LPNMLVFINDITEM;
4627     alias LVM_FINDITEMW LVM_FINDITEM;
4628     alias LVM_GETSTRINGWIDTHW LVM_GETSTRINGWIDTH;
4629     alias LVM_EDITLABELW LVM_EDITLABEL;
4630     alias LV_COLUMNW LV_COLUMN;
4631     alias LVCOLUMNW LVCOLUMN;
4632     alias LVCOLUMNW* LPLVCOLUMN;
4633     alias LVM_GETCOLUMNW LVM_GETCOLUMN;
4634     alias LVM_SETCOLUMNW LVM_SETCOLUMN;
4635     alias LVM_INSERTCOLUMNW LVM_INSERTCOLUMN;
4636     alias LVM_GETITEMTEXTW LVM_GETITEMTEXT;
4637     alias LVM_SETITEMTEXTW LVM_SETITEMTEXT;
4638     alias LVM_GETISEARCHSTRINGW LVM_GETISEARCHSTRING;
4639     alias LVN_BEGINLABELEDITW LVN_BEGINLABELEDIT;
4640     alias LVN_ENDLABELEDITW LVN_ENDLABELEDIT;
4641     alias LVN_GETDISPINFOW LVN_GETDISPINFO;
4642     alias LVN_SETDISPINFOW LVN_SETDISPINFO;
4643 
4644     static if (_WIN32_IE >= 0x400) {
4645         alias LVN_GETINFOTIPW LVN_GETINFOTIP;
4646         alias NMLVGETINFOTIPW NMLVGETINFOTIP;
4647         alias LPNMLVGETINFOTIPW LPNMLVGETINFOTIP;
4648     }
4649 
4650     alias LV_DISPINFOW LV_DISPINFO;
4651     alias NMLVDISPINFOW NMLVDISPINFO;
4652     alias LPNMLVDISPINFOW LPNMLVDISPINFO;
4653     alias TVM_INSERTITEMW TVM_INSERTITEM;
4654     alias TVM_GETITEMW TVM_GETITEM;
4655     alias TVM_SETITEMW TVM_SETITEM;
4656     alias TVM_EDITLABELW TVM_EDITLABEL;
4657     alias TVM_GETISEARCHSTRINGW TVM_GETISEARCHSTRING;
4658     alias NMTVDISPINFOW TV_DISPINFO;
4659     alias NMTVDISPINFOW NMTVDISPINFO;
4660     alias LPNMTVDISPINFOW LPNMTVDISPINFO;
4661 
4662     static if (_WIN32_IE >= 0x400) {
4663         alias NMTVGETINFOTIPW NMTVGETINFOTIP;
4664         alias LPNMTVGETINFOTIPW LPNMTVGETINFOTIP;
4665         alias TVN_GETINFOTIPW TVN_GETINFOTIP;
4666     }
4667 
4668     alias TVN_SELCHANGINGW TVN_SELCHANGING;
4669     alias TVN_SELCHANGEDW TVN_SELCHANGED;
4670     alias TVN_GETDISPINFOW TVN_GETDISPINFO;
4671     alias TVN_SETDISPINFOW TVN_SETDISPINFO;
4672     alias TVN_ITEMEXPANDINGW TVN_ITEMEXPANDING;
4673     alias TVN_ITEMEXPANDEDW TVN_ITEMEXPANDED;
4674     alias TVN_BEGINDRAGW TVN_BEGINDRAG;
4675     alias TVN_BEGINRDRAGW TVN_BEGINRDRAG;
4676     alias TVN_DELETEITEMW TVN_DELETEITEM;
4677     alias TVN_BEGINLABELEDITW TVN_BEGINLABELEDIT;
4678     alias TVN_ENDLABELEDITW TVN_ENDLABELEDIT;
4679     alias TC_ITEMHEADERW TC_ITEMHEADER;
4680     alias TC_ITEMW TC_ITEM;
4681     alias TCITEMW TCITEM;
4682     alias LPTCITEMW LPTCITEM;
4683     alias TCM_GETITEMW TCM_GETITEM;
4684     alias TCM_SETITEMW TCM_SETITEM;
4685     alias TCM_INSERTITEMW TCM_INSERTITEM;
4686     alias CreateStatusWindowW CreateStatusWindow;
4687     alias DrawStatusTextW DrawStatusText;
4688     alias ImageList_LoadImageW ImageList_LoadImage;
4689     alias DTM_SETFORMATW DTM_SETFORMAT;
4690     alias DTN_USERSTRINGW DTN_USERSTRING;
4691     alias DTN_WMKEYDOWNW DTN_WMKEYDOWN;
4692     alias DTN_FORMATW DTN_FORMAT;
4693     alias DTN_FORMATQUERYW DTN_FORMATQUERY;
4694     alias REBARBANDINFOW REBARBANDINFO;
4695     alias REBARBANDINFO* LPREBARBANDINFO;
4696     alias LPCREBARBANDINFOW LPCREBARBANDINFO;
4697     alias REBARBANDINFOW_V3_SIZE REBARBANDINFO_V3_SIZE;
4698     alias RB_INSERTBANDW RB_INSERTBAND;
4699     alias RB_SETBANDINFOW RB_SETBANDINFO;
4700 } else {
4701     alias HDITEMA HDITEM;
4702     alias LPHDITEMA LPHDITEM;
4703     alias TOOLINFOA TOOLINFO;
4704     alias TOOLINFOA* PTOOLINFO, LPTOOLINFO;
4705     alias TTHITTESTINFOA TTHITTESTINFO;
4706     alias TTHITTESTINFOA* LPHITTESTINFO, LPTTHITTESTINFO;
4707     alias TOOLTIPTEXTA TOOLTIPTEXT;
4708     alias TOOLTIPTEXTA* LPTOOLTIPTEXT;
4709     alias NMTTDISPINFOA NMTTDISPINFO;
4710     alias NMTTDISPINFOA* LPNMTTDISPINFO;
4711     alias TV_ITEMA TV_ITEM;
4712     alias TV_ITEMA* LPTV_ITEM;
4713     alias TVITEMA TVITEM;
4714     alias TVITEMA* LPTVITEM;
4715 
4716     static if (_WIN32_IE >= 0x400) {
4717         alias TVITEMEXA TVITEMEX;
4718         alias TVITEMEXA* LPTVITEMEX;
4719     }
4720 
4721     alias TV_INSERTSTRUCTA TV_INSERTSTRUCT;
4722     alias TV_INSERTSTRUCTA* LPTV_INSERTSTRUCT;
4723     alias TVINSERTSTRUCTA TVINSERTSTRUCT;
4724     alias TVINSERTSTRUCTA* LPTVINSERTSTRUCT;
4725     alias NM_TREEVIEWA NM_TREEVIEW;
4726     alias NM_TREEVIEWA* LPNM_TREEVIEW;
4727     alias NMTREEVIEWA NMTREEVIEW;
4728     alias NMTREEVIEWA* LPNMTREEVIEW;
4729     alias NMHDDISPINFOW NMHDDISPINFO;
4730     alias NMHDDISPINFOW* LPNMHDDISPINFO;
4731 
4732     alias ACM_OPENA ACM_OPEN;
4733     alias COMBOBOXEXITEMA COMBOBOXEXITEM;
4734     alias PCOMBOBOXEXITEMA PCOMBOBOXEXITEM;
4735     //alias PCCOMBOBOXEXITEMA PCCOMBOBOXEXITEM; fixme
4736     alias CBEM_INSERTITEMA CBEM_INSERTITEM;
4737     alias CBEM_SETITEMA CBEM_SETITEM;
4738     alias CBEM_GETITEMA CBEM_GETITEM;
4739     alias CBEN_ENDEDITA CBEN_ENDEDIT;
4740     alias NMCBEENDEDITA NMCBEENDEDIT;
4741     alias LPNMCBEENDEDITA LPNMCBEENDEDIT;
4742     alias PNMCBEENDEDITA PNMCBEENDEDIT;
4743 
4744     static if (_WIN32_IE >= 0x400) {
4745         alias TB_GETBUTTONINFOA TB_GETBUTTONINFO;
4746         alias TB_SETBUTTONINFOA TB_SETBUTTONINFO;
4747         alias TB_INSERTBUTTONA TB_INSERTBUTTON;
4748         alias TB_ADDBUTTONSA TB_ADDBUTTONS;
4749         alias TB_MAPACCELERATORA TB_MAPACCELERATOR;
4750         alias TB_GETSTRINGA TB_GETSTRING;
4751         alias NMCOMBOBOXEXA NMCOMBOBOXEX;
4752         alias PNMCOMBOBOXEXA PNMCOMBOBOXEX;
4753         alias CBEN_DRAGBEGINA CBEN_DRAGBEGIN;
4754         alias CBEN_GETDISPINFOA CBEN_GETDISPINFO;
4755         alias NMCBEDRAGBEGINA NMCBEDRAGBEGIN;
4756         alias LPNMCBEDRAGBEGINA LPNMCBEDRAGBEGIN;
4757         alias PNMCBEDRAGBEGINA PNMCBEDRAGBEGIN;
4758         alias TBN_GETDISPINFOA TBN_GETDISPINFO;
4759         alias NMTBDISPINFOA NMTBDISPINFO;
4760         alias LPNMTBDISPINFOA LPNMTBDISPINFO;
4761         alias NMTBGETINFOTIPA NMTBGETINFOTIP;
4762         alias LPNMTBGETINFOTIPA LPNMTBGETINFOTIP;
4763     }
4764 
4765     alias SB_GETTEXTA SB_GETTEXT;
4766     alias SB_SETTEXTA SB_SETTEXT;
4767     alias SB_GETTEXTLENGTHA SB_GETTEXTLENGTH;
4768     alias HDM_INSERTITEMA HDM_INSERTITEM;
4769     alias HDM_GETITEMA HDM_GETITEM;
4770     alias HDM_SETITEMA HDM_SETITEM;
4771     alias HDN_ITEMCHANGINGA HDN_ITEMCHANGING;
4772     alias HDN_ITEMCHANGEDA HDN_ITEMCHANGED;
4773     alias HDN_ITEMCLICKA HDN_ITEMCLICK;
4774     alias HDN_ITEMDBLCLICKA HDN_ITEMDBLCLICK;
4775     alias HDN_DIVIDERDBLCLICKA HDN_DIVIDERDBLCLICK;
4776     alias HDN_BEGINTRACKA HDN_BEGINTRACK;
4777     alias HDN_ENDTRACKA HDN_ENDTRACK;
4778     alias HDN_TRACKA HDN_TRACK;
4779 
4780     static if (_WIN32_IE >= 0x300) {
4781         alias HDN_GETDISPINFOA HDN_GETDISPINFO;
4782     }
4783 
4784     alias HD_NOTIFYA HD_NOTIFY;
4785     alias TBSAVEPARAMSA TBSAVEPARAMS;
4786     alias TB_GETBUTTONTEXTA TB_GETBUTTONTEXT;
4787     alias TB_SAVERESTOREA TB_SAVERESTORE;
4788     alias TB_ADDSTRINGA TB_ADDSTRING;
4789     alias TBN_GETBUTTONINFOA TBN_GETBUTTONINFO;
4790 
4791     static if (_WIN32_IE >= 0x400) {
4792         alias TBBUTTONINFOA TBBUTTONINFO;
4793         alias LPTBBUTTONINFOA LPTBBUTTONINFO;
4794     }
4795 
4796     alias TBNOTIFYA TBNOTIFY;
4797     alias LPTBNOTIFYA LPTBNOTIFY;
4798     alias NMTOOLBARA NMTOOLBAR;
4799     alias LPNMTOOLBARA LPNMTOOLBAR;
4800     alias TTM_ADDTOOLA TTM_ADDTOOL;
4801     alias TTM_DELTOOLA TTM_DELTOOL;
4802     alias TTM_NEWTOOLRECTA TTM_NEWTOOLRECT;
4803     alias TTM_GETTOOLINFOA TTM_GETTOOLINFO;
4804     alias TTM_SETTOOLINFOA TTM_SETTOOLINFO;
4805     alias TTM_HITTESTA TTM_HITTEST;
4806     alias TTM_GETTEXTA TTM_GETTEXT;
4807     alias TTM_UPDATETIPTEXTA TTM_UPDATETIPTEXT;
4808     alias TTM_ENUMTOOLSA TTM_ENUMTOOLS;
4809     alias TTM_GETCURRENTTOOLA TTM_GETCURRENTTOOL;
4810     alias TTN_NEEDTEXTA TTN_NEEDTEXT;
4811     alias TTN_GETDISPINFOA TTN_GETDISPINFO;
4812     alias LV_ITEMA LV_ITEM;
4813     alias LVITEMA LVITEM;
4814     alias LVITEM* LPLVITEM;
4815     alias LPSTR_TEXTCALLBACKA LPSTR_TEXTCALLBACK;
4816 
4817     static if (_WIN32_IE >= 0x400) {
4818         alias LVBKIMAGEA LVBKIMAGE;
4819         alias LPLVBKIMAGEA LPLVBKIMAGE;
4820         alias LVM_SETBKIMAGEA LVM_SETBKIMAGE;
4821         alias LVM_GETBKIMAGEA LVM_GETBKIMAGE;
4822     }
4823 
4824     alias LVM_GETITEMA LVM_GETITEM;
4825     alias LVM_SETITEMA LVM_SETITEM;
4826     alias LVM_INSERTITEMA LVM_INSERTITEM;
4827     alias LV_FINDINFOA LV_FINDINFO;
4828     alias LVFINDINFOA LVFINDINFO;
4829     alias LPFINDINFOA LPFINDINFO;
4830     alias NMLVFINDITEMA NMLVFINDITEM;
4831     alias PNMLVFINDITEMA PNMLVFINDITEM;
4832     alias LPNMLVFINDITEMA LPNMLVFINDITEM;
4833     alias LVM_FINDITEMA LVM_FINDITEM;
4834     alias LVM_GETSTRINGWIDTHA LVM_GETSTRINGWIDTH;
4835     alias LVM_EDITLABELA LVM_EDITLABEL;
4836     alias LV_COLUMNA LV_COLUMN;
4837     alias LVCOLUMNA LVCOLUMN;
4838     alias LVCOLUMNA* LPLVCOLUMN;
4839     alias LVM_GETCOLUMNA LVM_GETCOLUMN;
4840     alias LVM_SETCOLUMNA LVM_SETCOLUMN;
4841     alias LVM_INSERTCOLUMNA LVM_INSERTCOLUMN;
4842     alias LVM_GETITEMTEXTA LVM_GETITEMTEXT;
4843     alias LVM_SETITEMTEXTA LVM_SETITEMTEXT;
4844     alias LVM_GETISEARCHSTRINGA LVM_GETISEARCHSTRING;
4845     alias LVN_BEGINLABELEDITA LVN_BEGINLABELEDIT;
4846     alias LVN_ENDLABELEDITA LVN_ENDLABELEDIT;
4847     alias LVN_GETDISPINFOA LVN_GETDISPINFO;
4848     alias LVN_SETDISPINFOA LVN_SETDISPINFO;
4849 
4850     static if (_WIN32_IE >= 0x400) {
4851         alias LVN_GETINFOTIPA LVN_GETINFOTIP;
4852         alias NMLVGETINFOTIPA NMLVGETINFOTIP;
4853         alias LPNMLVGETINFOTIPA LPNMLVGETINFOTIP;
4854     }
4855 
4856     alias LV_DISPINFOA LV_DISPINFO;
4857     alias NMLVDISPINFOA NMLVDISPINFO;
4858     alias LPNMLVDISPINFOA LPNMLVDISPINFO;
4859     alias TVM_INSERTITEMA TVM_INSERTITEM;
4860     alias TVM_GETITEMA TVM_GETITEM;
4861     alias TVM_SETITEMA TVM_SETITEM;
4862     alias TVM_EDITLABELA TVM_EDITLABEL;
4863     alias TVM_GETISEARCHSTRINGA TVM_GETISEARCHSTRING;
4864     alias NMTVDISPINFOA TV_DISPINFO;
4865     alias NMTVDISPINFOA NMTVDISPINFO;
4866     alias LPNMTVDISPINFOA LPNMTVDISPINFO;
4867 
4868     static if (_WIN32_IE >= 0x400) {
4869         alias NMTVGETINFOTIPA NMTVGETINFOTIP;
4870         alias LPNMTVGETINFOTIPA LPNMTVGETINFOTIP;
4871         alias TVN_GETINFOTIPA TVN_GETINFOTIP;
4872     }
4873 
4874     alias TVN_SELCHANGINGA TVN_SELCHANGING;
4875     alias TVN_SELCHANGEDA TVN_SELCHANGED;
4876     alias TVN_GETDISPINFOA TVN_GETDISPINFO;
4877     alias TVN_SETDISPINFOA TVN_SETDISPINFO;
4878     alias TVN_ITEMEXPANDINGA TVN_ITEMEXPANDING;
4879     alias TVN_ITEMEXPANDEDA TVN_ITEMEXPANDED;
4880     alias TVN_BEGINDRAGA TVN_BEGINDRAG;
4881     alias TVN_BEGINRDRAGA TVN_BEGINRDRAG;
4882     alias TVN_DELETEITEMA TVN_DELETEITEM;
4883     alias TVN_BEGINLABELEDITA TVN_BEGINLABELEDIT;
4884     alias TVN_ENDLABELEDITA TVN_ENDLABELEDIT;
4885     alias TC_ITEMHEADERA TC_ITEMHEADER;
4886     alias TC_ITEMA TC_ITEM;
4887     alias TCITEMA TCITEM;
4888     alias LPTCITEMA LPTCITEM;
4889     alias TCM_GETITEMA TCM_GETITEM;
4890     alias TCM_SETITEMA TCM_SETITEM;
4891     alias TCM_INSERTITEMA TCM_INSERTITEM;
4892     alias CreateStatusWindowA CreateStatusWindow;
4893     alias DrawStatusTextA DrawStatusText;
4894     alias ImageList_LoadImageA ImageList_LoadImage;
4895     alias DTM_SETFORMATA DTM_SETFORMAT;
4896     alias DTN_USERSTRINGA DTN_USERSTRING;
4897     alias DTN_WMKEYDOWNA DTN_WMKEYDOWN;
4898     alias DTN_FORMATA DTN_FORMAT;
4899     alias DTN_FORMATQUERYA DTN_FORMATQUERY;
4900     alias REBARBANDINFOA REBARBANDINFO;
4901     alias REBARBANDINFOA* LPREBARBANDINFO;
4902     alias LPCREBARBANDINFOA LPCREBARBANDINFO;
4903     alias REBARBANDINFOA_V3_SIZE REBARBANDINFO_V3_SIZE;
4904     alias RB_INSERTBANDA RB_INSERTBAND;
4905     alias RB_SETBANDINFOA RB_SETBANDINFO;
4906 }
4907 
4908 
4909 extern (Windows) {
4910 alias INT function(PVOID, PVOID) PFNDPAENUMCALLBACK;
4911 alias INT function(PVOID, PVOID) PFNDSAENUMCALLBACK;
4912 alias INT function(PVOID, PVOID, LPARAM) PFNDPACOMPARE;
4913 }
4914 
4915 static if (_WIN32_WINNT >= 0x501) {
4916     extern (Windows)
4917     alias LRESULT function(HWND, UINT, WPARAM, LPARAM, UINT_PTR, DWORD_PTR)
4918       SUBCLASSPROC;
4919 
4920     struct LITEM {
4921         UINT mask;
4922         int  iLink;
4923         UINT state;
4924         UINT stateMask;
4925         WCHAR[MAX_LINKID_TEXT]  szID = 0;
4926         WCHAR[L_MAX_URL_LENGTH] szUrl = 0;
4927     }
4928     alias LITEM* PLITEM;
4929 
4930     struct LHITTESTINFO {
4931         POINT pt;
4932         LITEM item;
4933     }
4934     alias LHITTESTINFO* PLHITTESTINFO;
4935 
4936     struct NMLINK {
4937         NMHDR hdr;
4938         LITEM item;
4939     }
4940     alias NMLINK* PNMLINK;
4941 }
4942 
4943 uint INDEXTOOVERLAYMASK()(uint i) { return i << 8; }
4944 uint INDEXTOSTATEIMAGEMASK()(uint i) { return i << 12; }
4945 
4946 template HANDLE_WM_NOTIFY(R) {
4947     private alias _prm_HANDLE_WM_NOTIFY = extern (Windows)
4948         R function(HWND, int, NMHDR*); // to inject linkage type
4949     R HANDLE_WM_NOTIFY()(HWND hwnd, WPARAM wParam, LPARAM lParam, _prm_HANDLE_WM_NOTIFY fn) {
4950         return fn(hwnd, wParam, cast(NMHDR*) lParam);
4951     }
4952 }
4953 private alias _prm_FORWARD_WM_NOTIFY = extern (Windows)
4954     LRESULT function(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); // to inject linkage type
4955 LRESULT FORWARD_WM_NOTIFY()(HWND hwnd, int idFrom, NMHDR* pnmhdr, _prm_FORWARD_WM_NOTIFY fn) {
4956     return fn(hwnd, WM_NOTIFY, idFrom, cast(LPARAM) pnmhdr);
4957 }
4958 
4959 //#define CCSIZEOF_STRUCT(s, m) (((int)((PBYTE)(&((s*)0)->m)-((PBYTE)((s*)0))))+sizeof(((s*)0)->m))
4960 
4961 LPARAM MAKEIPADDRESS()(ubyte b1, ubyte b2, ubyte b3, ubyte b4) {
4962     return (cast(DWORD) b1 << 24)
4963          | (cast(DWORD) b2 << 16)
4964          | (cast(DWORD) b3 << 8)
4965          | (cast(DWORD) b4);
4966 }
4967 
4968 LPARAM MAKEIPRANGE()(ubyte low, ubyte high) {
4969     return (cast(int) high << 8) | low;
4970 }
4971 
4972 ubyte FIRST_IPADDRESS()(LPARAM x) {
4973     return cast(ubyte) (x >> 24);
4974 }
4975 
4976 ubyte SECOND_IPADDRESS()(LPARAM x) {
4977     return cast(ubyte) (x >> 16);
4978 }
4979 
4980 ubyte THIRD_IPADDRESS()(LPARAM x) {
4981     return cast(ubyte) (x >> 8);
4982 }
4983 
4984 ubyte FOURTH_IPADDRESS()(LPARAM x) {
4985     return cast(ubyte) x;
4986 }
4987 
4988 HWND Animate_Create()(HWND hwndP, UINT id, DWORD dwStyle,
4989       HINSTANCE hInstance) {
4990     return CreateWindow(cast(TCHAR*)ANIMATE_CLASS.ptr, null, dwStyle, 0, 0, 0, 0, hwndP,
4991       cast(HMENU) id, hInstance, null);
4992 }
4993 
4994 BOOL Animate_Open()(HWND hwnd, LPTSTR szName) {
4995     return cast(BOOL) SendMessage(hwnd, ACM_OPEN, 0, cast(LPARAM) szName);
4996 }
4997 
4998 BOOL Animate_OpenEx()(HWND hwnd, HINSTANCE hInst, LPTSTR szName) {
4999     return cast(BOOL) SendMessage(hwnd, ACM_OPEN, cast(WPARAM) hInst,
5000       cast(LPARAM) szName);
5001 }
5002 
5003 BOOL Animate_Play()(HWND hwnd, int from, int to, int rep) {
5004     return cast(BOOL) SendMessage(hwnd, ACM_PLAY, rep,
5005       MAKELONG(cast(ushort) from, cast(ushort) to));
5006 }
5007 
5008 BOOL Animate_Stop()(HWND hwnd) {
5009     return cast(BOOL) SendMessage(hwnd, ACM_STOP, 0, 0);
5010 }
5011 
5012 BOOL Animate_Close()(HWND hwnd) {
5013     return Animate_Open(hwnd, null);
5014 }
5015 
5016 BOOL Animate_Seek()(HWND hwnd, int frame) {
5017     return Animate_Play(hwnd, frame, frame, 1);
5018 }
5019 
5020 extern (Windows) {
5021     HBITMAP CreateMappedBitmap(HINSTANCE, INT_PTR, UINT, LPCOLORMAP, int);
5022     HWND CreateStatusWindowA(LONG, LPCSTR, HWND, UINT);
5023     HWND CreateStatusWindowW(LONG, LPCWSTR, HWND, UINT);
5024     HWND CreateToolbarEx(HWND, DWORD, UINT, int, HINSTANCE, UINT_PTR,
5025       LPCTBBUTTON, int, int, int, int, int, UINT);
5026     HWND CreateUpDownControl(DWORD, int, int, int, int, HWND, int, HINSTANCE,
5027       HWND, int, int, int);
5028 }
5029 
5030 HWND DateTime_GetMonthCal()(HWND hwnd) {
5031     return cast(HWND) SendMessage(hwnd, DTM_GETMONTHCAL, 0, 0);
5032 }
5033 
5034 COLORREF DateTime_GetMonthCalColor()(HWND hwnd, int iColor) {
5035     return cast(COLORREF) SendMessage(hwnd, DTM_GETMCCOLOR, iColor, 0);
5036 }
5037 
5038 HFONT DateTime_GetMonthCalFont()(HWND hwnd) {
5039     return cast(HFONT) SendMessage(hwnd, DTM_GETMCFONT, 0, 0);
5040 }
5041 
5042 DWORD DateTime_GetRange()(HWND hwnd, LPSYSTEMTIME lpSysTimeArray) {
5043     return cast(DWORD) SendMessage(hwnd, DTM_GETRANGE, 0, cast(LPARAM) lpSysTimeArray);
5044 }
5045 
5046 DWORD DateTime_GetSystemtime()(HWND hwnd, LPSYSTEMTIME lpSysTime) {
5047     return cast(DWORD) SendMessage(hwnd, DTM_GETSYSTEMTIME, 0, cast(LPARAM) lpSysTime);
5048 }
5049 
5050 BOOL DateTime_SetFormat()(HWND hwnd, LPCTSTR lpszFormat) {
5051     return cast(BOOL) SendMessage(hwnd, DTM_SETFORMAT, 0,
5052       cast(LPARAM) lpszFormat);
5053 }
5054 
5055 LRESULT DateTime_SetMonthCalColor()(HWND hwnd, int iColor, COLORREF clr) {
5056     return SendMessage(hwnd, DTM_SETMCCOLOR, cast(WPARAM) iColor,
5057       cast(LPARAM) clr);
5058 }
5059 
5060 void DateTime_SetMonthCalFont()(HWND hwnd, HFONT hfont, BOOL fRedraw) {
5061     SendMessage(hwnd, DTM_SETMCFONT, cast(WPARAM) hfont, fRedraw);
5062 }
5063 
5064 BOOL DateTime_SetRange()(HWND hwnd, WPARAM flags, LPSYSTEMTIME lpSysTimeArray) {
5065     return cast(BOOL) SendMessage(hwnd, DTM_SETRANGE, flags,
5066       cast(LPARAM) lpSysTimeArray);
5067 }
5068 
5069 BOOL DateTime_SetSystemtime()(HWND hwnd, WPARAM flag, LPSYSTEMTIME lpSysTime) {
5070     return cast(BOOL) SendMessage(hwnd, DTM_SETSYSTEMTIME, flag,
5071       cast(LPARAM) lpSysTime);
5072 }
5073 
5074 extern (Windows) {
5075     void DrawInsert(HWND, HWND, int);
5076     void DrawStatusTextA(HDC, LPRECT, LPCSTR, UINT);
5077     void DrawStatusTextW(HDC, LPRECT, LPCWSTR, UINT);
5078     void GetEffectiveClientRect(HWND, LPRECT, LPINT);
5079 }
5080 
5081 int Header_GetItemCount()(HWND w) {
5082     return cast(int) SendMessage(w, HDM_GETITEMCOUNT, 0, 0);
5083 }
5084 
5085 int Header_InsertItem()(HWND w, int i, const(HDITEM)* phdi) {
5086     return cast(int) SendMessage(w, HDM_INSERTITEM, i, cast(LPARAM) phdi);
5087 }
5088 
5089 BOOL Header_DeleteItem()(HWND w, int i) {
5090     return cast(BOOL) SendMessage(w, HDM_DELETEITEM, i, 0);
5091 }
5092 
5093 BOOL Header_GetItem()(HWND w, int i, LPHDITEM phdi) {
5094     return cast(BOOL) SendMessage(w, HDM_GETITEM, i, cast(LPARAM) phdi);
5095 }
5096 
5097 BOOL Header_SetItem()(HWND w, int i, const(HDITEM)* phdi) {
5098     return cast(BOOL) SendMessage(w, HDM_SETITEM, i, cast(LPARAM) phdi);
5099 }
5100 
5101 BOOL Header_Layout()(HWND w, LPHDLAYOUT playout) {
5102     return cast(BOOL) SendMessage(w, HDM_LAYOUT, 0, cast(LPARAM) playout);
5103 }
5104 
5105 static if (_WIN32_IE >= 0x300) {
5106     int Header_OrderToIndex()(HWND w, int i) {
5107         return cast(int) SendMessage(w, HDM_ORDERTOINDEX, i, 0);
5108     }
5109 
5110     BOOL Header_GetItemRect()(HWND w, int i, RECT* r) {
5111         return cast(BOOL) SendMessage(w, HDM_GETITEMRECT, i, cast(LPARAM) r);
5112     }
5113 
5114     BOOL Header_GetOrderArray()(HWND w, int iSize, LPINT lpiArray) {
5115         return cast(BOOL) SendMessage(w, HDM_GETORDERARRAY, iSize,
5116           cast(LPARAM) lpiArray);
5117     }
5118 
5119     BOOL Header_SetOrderArray()(HWND w, int iSize, LPINT lpiArray) {
5120         return cast(BOOL) SendMessage(w, HDM_SETORDERARRAY, iSize,
5121           cast(LPARAM) lpiArray);
5122     }
5123 
5124     HIMAGELIST Header_CreateDragImage()(HWND w, int i) {
5125         return cast(HIMAGELIST) SendMessage(w, HDM_CREATEDRAGIMAGE, i, 0);
5126     }
5127 
5128     HIMAGELIST Header_SetImageList()(HWND w, HIMAGELIST himl) {
5129         return cast(HIMAGELIST) SendMessage(w, HDM_SETIMAGELIST, 0,
5130           cast(LPARAM) himl);
5131     }
5132 
5133     HIMAGELIST Header_GetImageList()(HWND w) {
5134         return cast(HIMAGELIST) SendMessage(w, HDM_GETIMAGELIST, 0, 0);
5135     }
5136 }
5137 
5138 static if (_WIN32_IE >= 0x400) {
5139     BOOL Header_GetUnicodeFormat()(HWND w) {
5140         return cast(BOOL) SendMessage(w, HDM_GETUNICODEFORMAT, 0, 0);
5141     }
5142 
5143     BOOL Header_SetUnicodeFormat()(HWND w, BOOL fUnicode) {
5144         return cast(BOOL) SendMessage(w, HDM_SETUNICODEFORMAT, fUnicode, 0);
5145     }
5146 }
5147 
5148 extern (Windows) {
5149     HDSA DSA_Create(INT, INT);
5150     BOOL DSA_Destroy(HDSA);
5151     VOID DSA_DestroyCallback(HDSA, PFNDSAENUMCALLBACK, PVOID);
5152     PVOID DSA_GetItemPtr(HDSA, INT);
5153     INT DSA_InsertItem(HDSA, INT, PVOID);
5154     HDPA DPA_Create(INT);
5155     BOOL DPA_Destroy(HDPA);
5156     PVOID DPA_DeletePtr(HDPA, INT);
5157     BOOL DPA_DeleteAllPtrs(HDPA);
5158     VOID DPA_EnumCallback(HDPA, PFNDPAENUMCALLBACK, PVOID);
5159     VOID DPA_DestroyCallback(HDPA, PFNDPAENUMCALLBACK, PVOID);
5160     BOOL DPA_SetPtr(HDPA, INT, PVOID);
5161     INT DPA_InsertPtr(HDPA, INT, PVOID);
5162     PVOID DPA_GetPtr(HDPA, INT_PTR);
5163     BOOL DPA_Sort(HDPA, PFNDPACOMPARE, LPARAM);
5164     INT DPA_Search(HDPA, PVOID, INT, PFNDPACOMPARE, LPARAM, UINT);
5165     BOOL Str_SetPtrW(LPWSTR*, LPCWSTR);
5166 
5167     static if (_WIN32_IE >= 0x400) {
5168         BOOL FlatSB_EnableScrollBar(HWND, INT, UINT);
5169         BOOL FlatSB_ShowScrollBar(HWND, INT, BOOL);
5170         BOOL FlatSB_GetScrollRange(HWND, INT, LPINT, LPINT);
5171         BOOL FlatSB_GetScrollInfo(HWND, INT, LPSCROLLINFO);
5172         INT FlatSB_GetScrollPos(HWND, INT);
5173         BOOL FlatSB_GetScrollProp(HWND, INT, LPINT);
5174         version (Win64) {
5175             BOOL FlatSB_GetScrollPropPtr(HWND, INT, PINT_PTR);
5176         } else {
5177             alias FlatSB_GetScrollProp FlatSB_GetScrollPropPtr;
5178         }
5179         INT FlatSB_SetScrollPos(HWND, INT, INT, BOOL);
5180         INT FlatSB_SetScrollInfo(HWND, INT, LPSCROLLINFO, BOOL);
5181         INT FlatSB_SetScrollRange(HWND, INT, INT, INT, BOOL);
5182         BOOL FlatSB_SetScrollProp(HWND, UINT, INT_PTR, BOOL);
5183         alias FlatSB_SetScrollProp FlatSB_SetScrollPropPtr;
5184         BOOL InitializeFlatSB(HWND);
5185         HRESULT UninitializeFlatSB(HWND);
5186     }
5187 
5188     static if (_WIN32_WINNT >= 0x501) {
5189         BOOL SetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR);
5190         BOOL GetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR*);
5191         BOOL RemoveWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR);
5192         LRESULT DefSubclassProc(HWND, UINT, WPARAM, LPARAM);
5193         INT DrawShadowText(HDC, LPCWSTR, UINT, RECT*, DWORD, COLORREF,
5194           COLORREF, INT, INT);
5195     }
5196 
5197     int ImageList_Add(HIMAGELIST, HBITMAP, HBITMAP);
5198     int ImageList_AddMasked(HIMAGELIST, HBITMAP, COLORREF);
5199     BOOL ImageList_BeginDrag(HIMAGELIST, int, int, int);
5200     HIMAGELIST ImageList_Create(int, int, UINT, int, int);
5201     BOOL ImageList_Destroy(HIMAGELIST);
5202     BOOL ImageList_DragEnter(HWND, int, int);
5203     BOOL ImageList_DragLeave(HWND);
5204     BOOL ImageList_DragMove(int, int);
5205     BOOL ImageList_DragShowNolock(BOOL);
5206     BOOL ImageList_Draw(HIMAGELIST, int, HDC, int, int, UINT);
5207     BOOL ImageList_DrawEx(HIMAGELIST, int, HDC, int, int, int, int, COLORREF,
5208       COLORREF, UINT);
5209     void ImageList_EndDrag();
5210     COLORREF ImageList_GetBkColor(HIMAGELIST);
5211     HIMAGELIST ImageList_GetDragImage(LPPOINT, LPPOINT);
5212     HICON ImageList_GetIcon(HIMAGELIST, int, UINT);
5213     BOOL ImageList_GetIconSize(HIMAGELIST, int*, int*);
5214     int ImageList_GetImageCount(HIMAGELIST);
5215     BOOL ImageList_GetImageInfo(HIMAGELIST, int, IMAGEINFO*);
5216     HIMAGELIST ImageList_LoadImageA(HINSTANCE, LPCSTR, int, int, COLORREF,
5217       UINT, UINT);
5218     HIMAGELIST ImageList_LoadImageW(HINSTANCE, LPCWSTR, int, int, COLORREF,
5219       UINT, UINT);
5220     HIMAGELIST ImageList_Merge(HIMAGELIST, int, HIMAGELIST, int, int, int);
5221     BOOL ImageList_Remove(HIMAGELIST, int);
5222     BOOL ImageList_Replace(HIMAGELIST, int, HBITMAP, HBITMAP);
5223     int ImageList_ReplaceIcon(HIMAGELIST, int, HICON);
5224     COLORREF ImageList_SetBkColor(HIMAGELIST, COLORREF);
5225     BOOL ImageList_SetDragCursorImage(HIMAGELIST, int, int, int);
5226     BOOL ImageList_SetIconSize(HIMAGELIST, int, int);
5227     BOOL ImageList_SetOverlayImage(HIMAGELIST, int, int);
5228 
5229     //#ifdef _OBJIDL_H
5230     HIMAGELIST ImageList_Read(LPSTREAM);
5231     BOOL ImageList_Write(HIMAGELIST, LPSTREAM);
5232     //#endif
5233 
5234     static if (_WIN32_IE >= 0x400) {
5235         HIMAGELIST ImageList_Duplicate(HIMAGELIST himl);
5236     }
5237 
5238     void InitCommonControls();
5239 
5240     static if (_WIN32_IE >= 0x300) {
5241         BOOL InitCommonControlsEx(LPINITCOMMONCONTROLSEX);
5242     }
5243 
5244     int LBItemFromPt(HWND, POINT, BOOL);
5245 }
5246 
5247 int ImageList_AddIcon()(HIMAGELIST himl, HICON hicon) {
5248     return ImageList_ReplaceIcon(himl, -1, hicon);
5249 }
5250 
5251 HICON ImageList_ExtractIcon()(HINSTANCE hi, HIMAGELIST himl, int i) {
5252     return ImageList_GetIcon(himl, i, 0);
5253 }
5254 
5255 HIMAGELIST ImageList_LoadBitmap()(HINSTANCE hi, LPCTSTR lpbmp, int cx,
5256       int cGrow, COLORREF crMask) {
5257     return ImageList_LoadImage(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0);
5258 }
5259 
5260 BOOL ImageList_RemoveAll()(HIMAGELIST himl) {
5261     return ImageList_Remove(himl, -1);
5262 }
5263 
5264 COLORREF ListView_GetBkColor()(HWND w) {
5265     return cast(COLORREF) SendMessage(w, LVM_GETBKCOLOR, 0, 0);
5266 }
5267 
5268 HIMAGELIST ListView_GetImageList()(HWND w, int i) {
5269     return cast(HIMAGELIST) SendMessage(w, LVM_GETIMAGELIST, i, 0);
5270 }
5271 
5272 int ListView_GetItemCount()(HWND w) {
5273     return cast(int) SendMessage(w, LVM_GETITEMCOUNT, 0, 0);
5274 }
5275 
5276 BOOL ListView_GetItem()(HWND w, LPLVITEM pitem) {
5277     return cast(BOOL) SendMessage(w, LVM_GETITEM, 0, cast(LPARAM) pitem);
5278 }
5279 
5280 BOOL ListView_SetBkColor()(HWND w, COLORREF c) {
5281     return cast(BOOL) SendMessage(w, LVM_SETBKCOLOR, 0, cast(LPARAM) c);
5282 }
5283 
5284 HIMAGELIST ListView_SetImageList()(HWND w, HIMAGELIST h, int i) {
5285     return cast(HIMAGELIST) SendMessage(w, LVM_SETIMAGELIST, i,
5286       cast(LPARAM) h);
5287 }
5288 
5289 BOOL ListView_SetItem()(HWND w, const(LV_ITEM)* i) {
5290     return cast(BOOL) SendMessage(w, LVM_SETITEM, 0, cast(LPARAM) i);
5291 }
5292 
5293 int ListView_InsertItem()(HWND w, const(LV_ITEM)* i) {
5294     return cast(int) SendMessage(w, LVM_INSERTITEM, 0, cast(LPARAM) i);
5295 }
5296 
5297 BOOL ListView_DeleteItem()(HWND w, int i) {
5298     return cast(BOOL) SendMessage(w, LVM_DELETEITEM, i, 0);
5299 }
5300 
5301 BOOL ListView_DeleteAllItems()(HWND w) {
5302     return cast(BOOL) SendMessage(w, LVM_DELETEALLITEMS, 0, 0);
5303 }
5304 
5305 UINT ListView_GetCallbackMask()(HWND w) {
5306     return cast(UINT) SendMessage(w, LVM_GETCALLBACKMASK, 0, 0);
5307 }
5308 
5309 BOOL ListView_SetCallbackMask()(HWND w, UINT m) {
5310     return cast(BOOL) SendMessage(w, LVM_SETCALLBACKMASK, m, 0);
5311 }
5312 
5313 int ListView_GetNextItem()(HWND w, int i, UINT f) {
5314     return cast(int) SendMessage(w, LVM_GETNEXTITEM, i, MAKELPARAM(cast(ushort)f, 0));
5315 }
5316 
5317 int ListView_FindItem()(HWND w, int i, const(LV_FINDINFO)* p) {
5318     return cast(int) SendMessage(w, LVM_FINDITEM, i, cast(LPARAM) p);
5319 }
5320 
5321 BOOL ListView_GetItemRect()(HWND w, int i, LPRECT p, int c) {
5322     if (p)
5323         p.left = c;
5324     return cast(BOOL) SendMessage(w, LVM_GETITEMRECT, i, cast(LPARAM) p);
5325 }
5326 
5327 BOOL ListView_SetItemPosition()(HWND w, int i, int x, int y) {
5328     return cast(BOOL) SendMessage(w, LVM_SETITEMPOSITION, i, MAKELPARAM(cast(ushort)x, cast(ushort)y));
5329 }
5330 
5331 BOOL ListView_GetItemPosition()(HWND w, int i, POINT* p) {
5332     return cast(BOOL) SendMessage(w, LVM_GETITEMPOSITION, i, cast(LPARAM) p);
5333 }
5334 
5335 DWORD ListView_GetItemSpacing()(HWND w, BOOL f) {
5336     return cast(DWORD) SendMessage(w, LVM_GETITEMSPACING, f, 0);
5337 }
5338 
5339 int ListView_GetStringWidth()(HWND w, LPCSTR s) {
5340     return cast(int) SendMessage(w, LVM_GETSTRINGWIDTH, 0, cast(LPARAM) s);
5341 }
5342 
5343 int ListView_HitTest()(HWND w, LPLVHITTESTINFO p) {
5344     return cast(int) SendMessage(w, LVM_HITTEST, 0, cast(LPARAM) p);
5345 }
5346 
5347 BOOL ListView_EnsureVisible()(HWND w, int i, BOOL f) {
5348     return cast(BOOL) SendMessage(w, LVM_ENSUREVISIBLE, i, MAKELPARAM(cast(ushort)f, 0));
5349 }
5350 
5351 BOOL ListView_Scroll()(HWND w, int dx, int dy) {
5352     return cast(BOOL) SendMessage(w, LVM_SCROLL, dx, dy);
5353 }
5354 
5355 BOOL ListView_RedrawItems()(HWND w, int f, int l) {
5356     return cast(BOOL) SendMessage(w, LVM_REDRAWITEMS, f, l);
5357 }
5358 
5359 BOOL ListView_Arrange()(HWND w, UINT c) {
5360     return cast(BOOL) SendMessage(w, LVM_ARRANGE, c, 0);
5361 }
5362 
5363 HWND ListView_EditLabel()(HWND w, int i) {
5364     return cast(HWND) SendMessage(w, LVM_EDITLABEL, i, 0);
5365 }
5366 
5367 HWND ListView_GetEditControl()(HWND w) {
5368     return cast(HWND) SendMessage(w, LVM_GETEDITCONTROL, 0, 0);
5369 }
5370 
5371 BOOL ListView_GetColumn()(HWND w, int i, LPLVCOLUMN p) {
5372     return cast(BOOL) SendMessage(w, LVM_GETCOLUMN, i, cast(LPARAM) p);
5373 }
5374 
5375 BOOL ListView_SetColumn()(HWND w, int i, const(LV_COLUMN)* p) {
5376     return cast(BOOL) SendMessage(w, LVM_SETCOLUMN, i, cast(LPARAM) p);
5377 }
5378 
5379 int ListView_InsertColumn()(HWND w, int i, const(LV_COLUMN)* p) {
5380     return cast(int) SendMessage(w, LVM_INSERTCOLUMN, i, cast(LPARAM) p);
5381 }
5382 
5383 BOOL ListView_DeleteColumn()(HWND w, int i) {
5384     return cast(BOOL) SendMessage(w, LVM_DELETECOLUMN, i, 0);
5385 }
5386 
5387 int ListView_GetColumnWidth()(HWND w, int i) {
5388     return cast(int) SendMessage(w, LVM_GETCOLUMNWIDTH, i, 0);
5389 }
5390 
5391 BOOL ListView_SetColumnWidth()(HWND w, int i, int x) {
5392     return cast(BOOL) SendMessage(w, LVM_SETCOLUMNWIDTH, i, MAKELPARAM(cast(ushort)x, 0));
5393 }
5394 
5395 HIMAGELIST ListView_CreateDragImage()(HWND w, int i, LPPOINT p) {
5396     return cast(HIMAGELIST) SendMessage(w, LVM_CREATEDRAGIMAGE, i,
5397       cast(LPARAM) p);
5398 }
5399 
5400 BOOL ListView_GetViewRect()(HWND w, RECT* p) {
5401     return cast(BOOL) SendMessage(w, LVM_GETVIEWRECT, 0, cast(LPARAM) p);
5402 }
5403 
5404 COLORREF ListView_GetTextColor()(HWND w) {
5405     return cast(COLORREF) SendMessage(w, LVM_GETTEXTCOLOR, 0, 0);
5406 }
5407 
5408 BOOL ListView_SetTextColor()(HWND w, COLORREF c) {
5409     return cast(BOOL) SendMessage(w, LVM_SETTEXTCOLOR, 0, cast(LPARAM) c);
5410 }
5411 
5412 COLORREF ListView_GetTextBkColor()(HWND w) {
5413     return cast(COLORREF) SendMessage(w, LVM_GETTEXTBKCOLOR, 0, 0);
5414 }
5415 
5416 BOOL ListView_SetTextBkColor()(HWND w, COLORREF c) {
5417     return cast(BOOL) SendMessage(w, LVM_SETTEXTBKCOLOR, 0, cast(LPARAM) c);
5418 }
5419 
5420 int ListView_GetTopIndex()(HWND w) {
5421     return cast(int) SendMessage(w, LVM_GETTOPINDEX, 0, 0);
5422 }
5423 
5424 int ListView_GetCountPerPage()(HWND w) {
5425     return cast(int) SendMessage(w, LVM_GETCOUNTPERPAGE, 0, 0);
5426 }
5427 
5428 BOOL ListView_GetOrigin()(HWND w, LPPOINT p) {
5429     return cast(BOOL) SendMessage(w, LVM_GETORIGIN, 0, cast(LPARAM) p);
5430 }
5431 
5432 BOOL ListView_Update()(HWND w, WPARAM i) {
5433     return cast(BOOL) SendMessage(w, LVM_UPDATE, i, 0);
5434 }
5435 
5436 void ListView_SetItemState()(HWND w, int i, UINT d, UINT m) {
5437     LV_ITEM _lvi;
5438     _lvi.stateMask = m;
5439     _lvi.state = d;
5440     SendMessage(w, LVM_SETITEMSTATE, i, cast(LPARAM) &_lvi);
5441 }
5442 
5443 UINT ListView_GetItemState()(HWND w, int i, UINT m) {
5444     return cast(UINT) SendMessage(w, LVM_GETITEMSTATE, i, m);
5445 }
5446 
5447 void ListView_GetItemText()(HWND w, int i, int iS, LPTSTR s, int n) {
5448     LV_ITEM _lvi;
5449     _lvi.iSubItem = iS;
5450     _lvi.cchTextMax = n;
5451     _lvi.pszText = s;
5452     SendMessage(w, LVM_GETITEMTEXT, i, cast(LPARAM) &_lvi);
5453 }
5454 
5455 void ListView_SetItemText()(HWND w, int i, int iS, LPTSTR s) {
5456     LV_ITEM _lvi;
5457     _lvi.iSubItem = iS;
5458     _lvi.pszText = s;
5459     SendMessage(w, LVM_SETITEMTEXT, i, cast(LPARAM) &_lvi);
5460 }
5461 
5462 void ListView_SetItemCount()(HWND w, int n) {
5463     SendMessage(w, LVM_SETITEMCOUNT, n, 0);
5464 }
5465 
5466 BOOL ListView_SortItems()(HWND w, PFNLVCOMPARE f, LPARAM l) {
5467     return cast(BOOL) SendMessage(w, LVM_SORTITEMS, l, cast(LPARAM) f);
5468 }
5469 
5470 void ListView_SetItemPosition32()(HWND w, int i, int x, int y) {
5471     POINT p;
5472     p.x = x;
5473     p.y = y;
5474     SendMessage(w, LVM_SETITEMPOSITION32, i, cast(LPARAM) &p);
5475 }
5476 
5477 UINT ListView_GetSelectedCount()(HWND w) {
5478     return cast(UINT) SendMessage(w, LVM_GETSELECTEDCOUNT, 0, 0);
5479 }
5480 
5481 UINT ListView_GetCheckState()(HWND w, UINT i) {
5482     return ((cast(UINT) SendMessage(w, LVM_GETITEMSTATE, i, LVIS_STATEIMAGEMASK)) >> 12) - 1;
5483 }
5484 
5485 void ListView_SetCheckState()(HWND w, UINT i, BOOL f) {
5486     ListView_SetItemState(w, i, INDEXTOSTATEIMAGEMASK(f ? 2 : 1),
5487       LVIS_STATEIMAGEMASK);
5488 }
5489 
5490 BOOL ListView_GetISearchString()(HWND w, LPSTR lpsz) {
5491     return cast(BOOL) SendMessage(w, LVM_GETISEARCHSTRING, 0,
5492       cast(LPARAM) lpsz);
5493 }
5494 
5495 void ListView_CancelEditLabel()(HWND w) {
5496     SendMessage(w, LVM_CANCELEDITLABEL, 0, 0);
5497 }
5498 
5499 int ListView_EnableGroupView()(HWND w, BOOL i) {
5500     return cast(int) SendMessage(w, LVM_ENABLEGROUPVIEW, i, 0);
5501 }
5502 
5503 //static if (_WIN32_WINNT >= 0x500 || _WIN32_IE >= 0x500) {
5504     BOOL ListView_SortItemsEx()(HWND w, PFNLVCOMPARE c, LPARAM p) {
5505         return cast(BOOL) SendMessage(w, LVM_SORTITEMSEX, cast(WPARAM) p, cast(LPARAM)c);
5506     }
5507 //}
5508 
5509 static if (_WIN32_WINNT >= 0x501) {
5510     int ListView_GetGroupInfo()(HWND w, int i, PLVGROUP p) {
5511         return cast(int) SendMessage(w, LVM_GETGROUPINFO, i, cast(LPARAM) p);
5512     }
5513 
5514     void ListView_GetGroupMetrics()(HWND w, PLVGROUPMETRICS p) {
5515         SendMessage(w, LVM_GETGROUPMETRICS, 0, cast(LPARAM) p);
5516     }
5517 
5518     BOOL ListView_GetInsertMark()(HWND w, PLVINSERTMARK p) {
5519         return cast(BOOL) SendMessage(w, LVM_GETINSERTMARK, 0, cast(LPARAM) p);
5520     }
5521 
5522     COLORREF ListView_GetInsertMarkColor()(HWND w) {
5523         return cast(COLORREF) SendMessage(w, LVM_GETINSERTMARKCOLOR, 0, 0);
5524     }
5525 
5526     int ListView_GetInsertMarkRect()(HWND w, LPRECT p) {
5527         return cast(int) SendMessage(w, LVM_GETINSERTMARKRECT, 0, cast(LPARAM) p);
5528     }
5529 
5530     COLORREF ListView_GetOutlineColor()(HWND w) {
5531         return cast(COLORREF) SendMessage(w, LVM_GETOUTLINECOLOR, 0, 0);
5532     }
5533 
5534     UINT ListView_GetSelectedColumn()(HWND w) {
5535         return cast(UINT) SendMessage(w, LVM_GETSELECTEDCOLUMN, 0, 0);
5536     }
5537 
5538     void ListView_GetTileInfo()(HWND w, PLVTILEINFO p) {
5539         SendMessage(w, LVM_GETTILEINFO, 0, cast(LPARAM) p);
5540     }
5541 
5542     void ListView_GetTileViewInfo()(HWND w, PLVTILEVIEWINFO p) {
5543         SendMessage(w, LVM_GETTILEVIEWINFO, 0, cast(LPARAM) p);
5544     }
5545 
5546     DWORD ListView_GetView()(HWND w) {
5547         return cast(DWORD) SendMessage(w, LVM_GETVIEW, 0, 0);
5548     }
5549 
5550     BOOL ListView_HasGroup()(HWND w, int i) {
5551         return cast(BOOL) SendMessage(w, LVM_HASGROUP, i, 0);
5552     }
5553 
5554     int ListView_InsertGroup()(HWND w, int i, PLVGROUP p) {
5555         return cast(int) SendMessage(w, LVM_INSERTGROUP, i, cast(LPARAM) p);
5556     }
5557 
5558     void ListView_InsertGroupSorted()(HWND w, PLVINSERTGROUPSORTED p) {
5559         SendMessage(w, LVM_INSERTGROUPSORTED, cast(WPARAM) p, 0);
5560     }
5561 
5562     BOOL ListView_InsertMarkHitTest()(HWND w, LPPOINT p, PLVINSERTMARK t) {
5563         return cast(BOOL) SendMessage(w, LVM_INSERTMARKHITTEST, cast(WPARAM) p, cast(LPARAM) t);
5564     }
5565 
5566     BOOL ListView_IsGroupViewEnabled()(HWND w) {
5567         return cast(BOOL) SendMessage(w, LVM_ISGROUPVIEWENABLED, 0, 0);
5568     }
5569 
5570     UINT ListView_MapIDToIndex()(HWND w, UINT i) {
5571         return cast(UINT) SendMessage(w, LVM_MAPIDTOINDEX, i, 0);
5572     }
5573 
5574     /*  ??? MSDN documents this as "Not implemented", except in relation to
5575      *  Windows CE/Mobile.
5576      */
5577     void ListView_MoveGroup()(HWND w, int i, int t) {
5578         SendMessage(w, LVM_MOVEGROUP, i, t);
5579     }
5580 
5581     void ListView_RemoveAllGroups()(HWND w) {
5582         SendMessage(w, LVM_REMOVEALLGROUPS, 0, 0);
5583     }
5584 
5585     int ListView_RemoveGroup()(HWND w, int i) {
5586         return cast(int) SendMessage(w, LVM_REMOVEGROUP, i, 0);
5587     }
5588 
5589     int ListView_SetGroupInfo()(HWND w, int i, PLVGROUP p) {
5590         return cast(int) SendMessage(w, LVM_SETGROUPINFO, i, cast(LPARAM) p);
5591     }
5592 
5593     void ListView_SetGroupMetrics()(HWND w, PLVGROUPMETRICS p) {
5594         SendMessage(w, LVM_SETGROUPMETRICS, 0, cast(LPARAM) p);
5595     }
5596 
5597     BOOL ListView_SetInfoTip()(HWND w, PLVSETINFOTIP p) {
5598         return cast(BOOL) SendMessage(w, LVM_SETINFOTIP, 0, cast(LPARAM) p);
5599     }
5600 
5601     BOOL ListView_SetInsertMark()(HWND w, PLVINSERTMARK p) {
5602         return cast(BOOL) SendMessage(w, LVM_SETINSERTMARK, 0, cast(LPARAM) p);
5603     }
5604 
5605     COLORREF ListView_SetInsertMarkColor()(HWND w, COLORREF c) {
5606         return cast(COLORREF) SendMessage(w, LVM_SETINSERTMARKCOLOR, 0, c);
5607     }
5608 
5609     COLORREF ListView_SetOutlineColor()(HWND w, COLORREF c) {
5610         return cast(COLORREF) SendMessage(w, LVM_SETOUTLINECOLOR, 0, c);
5611     }
5612 
5613     void ListView_SetSelectedColumn()(HWND w, int i) {
5614         SendMessage(w, LVM_SETSELECTEDCOLUMN, i, 0);
5615     }
5616 
5617     BOOL ListView_SetTileInfo()(HWND w, PLVTILEINFO p) {
5618         return cast(BOOL) SendMessage(w, LVM_SETTILEINFO, 0, cast(LPARAM) p);
5619     }
5620 
5621     BOOL ListView_SetTileViewInfo()(HWND w, PLVTILEVIEWINFO p) {
5622         return cast(BOOL) SendMessage(w, LVM_SETTILEVIEWINFO, 0, cast(LPARAM) p);
5623     }
5624 
5625     int ListView_SetView()(HWND w, DWORD i) {
5626         return cast(int) SendMessage(w, LVM_SETVIEW, i, 0);
5627     }
5628 
5629     int ListView_SortGroups()(HWND w, PFNLVGROUPCOMPARE c, LPVOID p) {
5630         return cast(int) SendMessage(w, LVM_SORTGROUPS, cast(WPARAM) c, cast(LPARAM) p);
5631     }
5632 }
5633 
5634 static if (_WIN32_WINNT >= 0x501) {
5635     enum {
5636         CBM_FIRST        = 0x1700,
5637         CB_SETMINVISIBLE = CBM_FIRST + 1,
5638         CB_GETMINVISIBLE = CBM_FIRST + 2,
5639         CB_SETCUEBANNER = CBM_FIRST + 3,
5640         CB_GETCUEBANNER = CBM_FIRST + 4,
5641     }
5642 
5643     BOOL ComboBox_SetMinVisible()(HWND w, INT i) {
5644         return cast(BOOL) SendMessage(w, CB_SETMINVISIBLE, cast(WPARAM) i, 0);
5645     }
5646 
5647     int ComboBox_GetMinVisible()(HWND w) {
5648         return cast(int) SendMessage(w, CB_GETMINVISIBLE, 0, 0);
5649     }
5650 }
5651 
5652 extern (Windows) BOOL MakeDragList(HWND);
5653 extern (Windows) void MenuHelp(UINT, WPARAM, LPARAM, HMENU, HINSTANCE, HWND,
5654   PUINT);
5655 
5656 COLORREF MonthCal_GetColor()(HWND hwnd, INT icolor) {
5657     return cast(COLORREF) SendMessage(hwnd, MCM_GETCOLOR,
5658       cast(WPARAM) icolor, 0);
5659 }
5660 
5661 BOOL MonthCal_GetCurSel()(HWND hwnd, LPSYSTEMTIME lpsystime) {
5662     return cast(BOOL) SendMessage(hwnd, MCM_GETCURSEL, 0,
5663       cast(LPARAM) lpsystime);
5664 }
5665 
5666 DWORD MonthCal_GetFirstDayOfWeek()(HWND hwnd) {
5667     return cast(DWORD) SendMessage(hwnd, MCM_GETFIRSTDAYOFWEEK, 0, 0);
5668 }
5669 
5670 DWORD MonthCal_GetMaxSelCount()(HWND hwnd) {
5671     return cast(DWORD) SendMessage(hwnd, MCM_GETMAXSELCOUNT, 0, 0);
5672 }
5673 
5674 DWORD MonthCal_GetMaxTodayWidth()(HWND hwnd) {
5675     return cast(DWORD) SendMessage(hwnd, MCM_GETMAXTODAYWIDTH, 0, 0);
5676 }
5677 
5678 BOOL MonthCal_GetMinReqRect()(HWND hwnd, LPRECT lpRectInfo) {
5679     return cast(BOOL) SendMessage(hwnd, MCM_GETMINREQRECT, 0,
5680       cast(LPARAM) lpRectInfo);
5681 }
5682 
5683 INT MonthCal_GetMonthDelta()(HWND hwnd) {
5684     return cast(INT) SendMessage(hwnd, MCM_GETMONTHDELTA, 0, 0);
5685 }
5686 
5687 INT MonthCal_GetMonthRange()(HWND hwnd, DWORD flag, LPSYSTEMTIME systimearray) {
5688     return cast(INT) SendMessage(hwnd, MCM_GETMONTHRANGE, cast(WPARAM) flag,
5689       cast(LPARAM) systimearray);
5690 }
5691 
5692 DWORD MonthCal_GetRange()(HWND hwnd, LPSYSTEMTIME systimearray) {
5693     return cast(DWORD) SendMessage(hwnd, MCM_GETRANGE, 0,
5694       cast(LPARAM) systimearray);
5695 }
5696 
5697 BOOL MonthCal_GetSelRange()(HWND hwnd, LPSYSTEMTIME systimearray) {
5698     return cast(BOOL) SendMessage(hwnd, MCM_GETSELRANGE, 0,
5699       cast(LPARAM) systimearray);
5700 }
5701 
5702 BOOL MonthCal_GetToday()(HWND hwnd, LPSYSTEMTIME systime) {
5703     return cast(BOOL) SendMessage(hwnd, MCM_GETTODAY, 0,
5704       cast(LPARAM) systime);
5705 }
5706 
5707 BOOL MonthCal_GetUnicodeFormat()(HWND hwnd) {
5708     return cast(BOOL) SendMessage(hwnd, MCM_GETUNICODEFORMAT, 0, 0);
5709 }
5710 
5711 DWORD MonthCal_HitTest()(HWND hwnd, PMCHITTESTINFO pmchittest) {
5712     return cast(DWORD) SendMessage(hwnd, MCM_HITTEST, 0,
5713       cast(LPARAM) pmchittest);
5714 }
5715 
5716 COLORREF MonthCal_SetColor()(HWND hwnd, INT icolor, COLORREF clr) {
5717     return cast(COLORREF) SendMessage(hwnd, MCM_SETCOLOR, cast(WPARAM) icolor,
5718       cast(LPARAM) clr);
5719 }
5720 
5721 BOOL MonthCal_SetCurSel()(HWND hwnd, LPSYSTEMTIME lpsystime) {
5722     return cast(BOOL) SendMessage(hwnd, MCM_SETCURSEL, 0,
5723       cast(LPARAM) lpsystime);
5724 }
5725 
5726 BOOL MonthCal_SetDayState()(HWND hwnd, INT imonths, LPMONTHDAYSTATE lpdatestatearray) {
5727     return cast(BOOL) SendMessage(hwnd, MCM_SETDAYSTATE, cast(WPARAM) imonths,
5728       cast(LPARAM) lpdatestatearray);
5729 }
5730 
5731 DWORD MonthCal_SetFirstDayOfWeek()(HWND hwnd, INT iday) {
5732     return cast(DWORD) SendMessage(hwnd, MCM_SETFIRSTDAYOFWEEK, 0,
5733       cast(LPARAM) iday);
5734 }
5735 
5736 BOOL MonthCal_SetMaxSelCount()(HWND hwnd, UINT imax) {
5737     return cast(BOOL) SendMessage(hwnd, MCM_SETMAXSELCOUNT,
5738       cast(WPARAM) imax, 0);
5739 }
5740 
5741 INT MonthCal_SetMonthDelta()(HWND hwnd, INT idelta) {
5742     return cast(INT) SendMessage(hwnd, MCM_SETMONTHDELTA, cast(WPARAM) idelta, 0);
5743 }
5744 
5745 BOOL MonthCal_SetSelRange()(HWND hwnd, LPSYSTEMTIME systimearray) {
5746     return cast(BOOL) SendMessage(hwnd, MCM_SETSELRANGE, 0,
5747       cast(LPARAM) systimearray);
5748 }
5749 
5750 void MonthCal_SetToday()(HWND hwnd, LPSYSTEMTIME systime) {
5751     SendMessage(hwnd, MCM_SETTODAY, 0, cast(LPARAM) systime);
5752 }
5753 
5754 BOOL MonthCal_SetUnicodeFormat()(HWND hwnd, BOOL unicode) {
5755     return cast(BOOL) SendMessage(hwnd, MCM_SETUNICODEFORMAT,
5756       cast(WPARAM) unicode, 0);
5757 }
5758 
5759 BOOL MonthCal_SetRange()(HWND w, DWORD f, LPSYSTEMTIME st) {
5760     return cast(BOOL) SendMessage(w, MCM_SETRANGE, cast(WPARAM) f,
5761       cast(LPARAM) st);
5762 }
5763 
5764 extern (Windows) BOOL ShowHideMenuCtl(HWND, UINT_PTR, PINT);
5765 
5766 BOOL TabCtrl_GetItem()(HWND w, int i, LPTCITEM p) {
5767     return cast(BOOL) SendMessage(w, TCM_GETITEM, i, cast(LPARAM) p);
5768 }
5769 
5770 BOOL TabCtrl_SetItem()(HWND w, int i, LPTCITEM p) {
5771     return cast(BOOL) SendMessage(w, TCM_SETITEM, i, cast(LPARAM) p);
5772 }
5773 
5774 int TabCtrl_InsertItem()(HWND w, int i, const(TC_ITEM)* p) {
5775     return cast(int) SendMessage(w, TCM_INSERTITEM, i, cast(LPARAM) p);
5776 }
5777 
5778 BOOL TabCtrl_DeleteItem()(HWND w, int i) {
5779     return cast(BOOL) SendMessage(w, TCM_DELETEITEM, i, 0);
5780 }
5781 
5782 BOOL TabCtrl_DeleteAllItems()(HWND w) {
5783     return cast(BOOL) SendMessage(w, TCM_DELETEALLITEMS, 0, 0);
5784 }
5785 
5786 BOOL TabCtrl_GetItemRect()(HWND w, int i, LPRECT p) {
5787     return cast(BOOL) SendMessage(w, TCM_GETITEMRECT, i, cast(LPARAM) p);
5788 }
5789 
5790 int TabCtrl_GetCurSel()(HWND w) {
5791     return cast(int) SendMessage(w, TCM_GETCURSEL, 0, 0);
5792 }
5793 
5794 int TabCtrl_SetCurSel()(HWND w, int i) {
5795     return cast(int) SendMessage(w, TCM_SETCURSEL, i, 0);
5796 }
5797 
5798 int TabCtrl_HitTest()(HWND w, LPTCHITTESTINFO p) {
5799     return cast(int) SendMessage(w, TCM_HITTEST, 0, cast(LPARAM) p);
5800 }
5801 
5802 BOOL TabCtrl_SetItemExtra()(HWND w, int c) {
5803     return cast(BOOL) SendMessage(w, TCM_SETITEMEXTRA, c, 0);
5804 }
5805 
5806 int TabCtrl_AdjustRect()(HWND w, BOOL b, LPRECT p) {
5807     return cast(int) SendMessage(w, TCM_ADJUSTRECT, b, cast(LPARAM) p);
5808 }
5809 
5810 DWORD TabCtrl_SetItemSize()(HWND w, int x, int y) {
5811     return cast(DWORD) SendMessage(w, TCM_SETITEMSIZE, 0, MAKELPARAM(cast(ushort)x, cast(ushort)y));
5812 }
5813 
5814 void TabCtrl_RemoveImage()(HWND w, int i) {
5815     SendMessage(w, TCM_REMOVEIMAGE, i, 0);
5816 }
5817 
5818 void TabCtrl_SetPadding()(HWND w, int x, int y) {
5819     SendMessage(w, TCM_SETPADDING, 0, MAKELPARAM(cast(ushort)x, cast(ushort)y));
5820 }
5821 
5822 int TabCtrl_GetRowCount()(HWND w) {
5823     return cast(int) SendMessage(w, TCM_GETROWCOUNT, 0, 0);
5824 }
5825 
5826 HWND TabCtrl_GetToolTips()(HWND w) {
5827     return cast(HWND) SendMessage(w, TCM_GETTOOLTIPS, 0, 0);
5828 }
5829 
5830 void TabCtrl_SetToolTips()(HWND w, HWND t) {
5831     SendMessage(w, TCM_SETTOOLTIPS, cast(WPARAM) t, 0);
5832 }
5833 
5834 int TabCtrl_GetCurFocus()(HWND w) {
5835     return cast(int) SendMessage(w, TCM_GETCURFOCUS, 0, 0);
5836 }
5837 
5838 void TabCtrl_SetCurFocus()(HWND w, int i) {
5839     SendMessage(w, TCM_SETCURFOCUS, i, 0);
5840 }
5841 
5842 HIMAGELIST TabCtrl_GetImageList()(HWND w) {
5843     return cast(HIMAGELIST) SendMessage(w, TCM_GETIMAGELIST, 0, 0);
5844 }
5845 
5846 HIMAGELIST TabCtrl_SetImageList()(HWND w, HIMAGELIST h) {
5847     return cast(HIMAGELIST) SendMessage(w, TCM_SETIMAGELIST, 0,
5848       cast(LPARAM) h);
5849 }
5850 
5851 int TabCtrl_GetItemCount()(HWND w) {
5852     return cast(int) SendMessage(w, TCM_GETITEMCOUNT, 0, 0);
5853 }
5854 
5855 extern (Windows) BOOL _TrackMouseEvent(LPTRACKMOUSEEVENT);
5856 
5857 HTREEITEM TreeView_InsertItem()(HWND w, LPTVINSERTSTRUCT i) {
5858     return cast(HTREEITEM) SendMessage(w, TVM_INSERTITEM, 0, cast(LPARAM) i);
5859 }
5860 
5861 BOOL TreeView_DeleteItem()(HWND w, HTREEITEM i) {
5862     return cast(BOOL) SendMessage(w, TVM_DELETEITEM, 0, cast(LPARAM) i);
5863 }
5864 
5865 BOOL TreeView_DeleteAllItems()(HWND w) {
5866     return cast(BOOL) SendMessage(w, TVM_DELETEITEM, 0, cast(LPARAM) TVI_ROOT);
5867 }
5868 
5869 BOOL TreeView_Expand()(HWND w, HTREEITEM i, UINT c) {
5870     return cast(BOOL) SendMessage(w, TVM_EXPAND, c, cast(LPARAM) i);
5871 }
5872 
5873 BOOL TreeView_GetItemRect()(HWND w, HTREEITEM i, LPRECT p, BOOL c) {
5874     *cast(HTREEITEM*) p = i;
5875     return cast(BOOL) SendMessage(w, TVM_GETITEMRECT, c, cast(LPARAM) p);
5876 }
5877 
5878 UINT TreeView_GetCount()(HWND w) {
5879     return cast(UINT) SendMessage(w, TVM_GETCOUNT, 0, 0);
5880 }
5881 
5882 UINT TreeView_GetIndent()(HWND w) {
5883     return cast(UINT) SendMessage(w, TVM_GETINDENT, 0, 0);
5884 }
5885 
5886 BOOL TreeView_SetIndent()(HWND w, INT i) {
5887     return cast(BOOL) SendMessage(w, TVM_SETINDENT, i, 0);
5888 }
5889 
5890 HIMAGELIST TreeView_GetImageList()(HWND w, INT i) {
5891     return cast(HIMAGELIST) SendMessage(w, TVM_GETIMAGELIST, i, 0);
5892 }
5893 
5894 HIMAGELIST TreeView_SetImageList()(HWND w, HIMAGELIST h, INT i) {
5895     return cast(HIMAGELIST) SendMessage(w, TVM_SETIMAGELIST, i,
5896       cast(LPARAM) h);
5897 }
5898 
5899 HTREEITEM TreeView_GetNextItem()(HWND w, HTREEITEM i, UINT c) {
5900     return cast(HTREEITEM) SendMessage(w, TVM_GETNEXTITEM, c, cast(LPARAM) i);
5901 }
5902 
5903 HTREEITEM TreeView_GetChild()(HWND w, HTREEITEM i) {
5904     return TreeView_GetNextItem(w, i, TVGN_CHILD);
5905 }
5906 
5907 HTREEITEM TreeView_GetNextSibling()(HWND w, HTREEITEM i) {
5908     return TreeView_GetNextItem(w, i, TVGN_NEXT);
5909 }
5910 
5911 HTREEITEM TreeView_GetPrevSibling()(HWND w, HTREEITEM i) {
5912     return TreeView_GetNextItem(w, i, TVGN_PREVIOUS);
5913 }
5914 
5915 HTREEITEM TreeView_GetParent()(HWND w, HTREEITEM i) {
5916     return TreeView_GetNextItem(w, i, TVGN_PARENT);
5917 }
5918 
5919 HTREEITEM TreeView_GetFirstVisible()(HWND w) {
5920     return TreeView_GetNextItem(w, null, TVGN_FIRSTVISIBLE);
5921 }
5922 
5923 HTREEITEM TreeView_GetNextVisible()(HWND w, HTREEITEM i) {
5924     return TreeView_GetNextItem(w, i, TVGN_NEXTVISIBLE);
5925 }
5926 
5927 HTREEITEM TreeView_GetPrevVisible()(HWND w, HTREEITEM i) {
5928     return TreeView_GetNextItem(w, i, TVGN_PREVIOUSVISIBLE);
5929 }
5930 
5931 HTREEITEM TreeView_GetSelection()(HWND w) {
5932     return TreeView_GetNextItem(w, null, TVGN_CARET);
5933 }
5934 
5935 HTREEITEM TreeView_GetDropHilight()(HTREEITEM w) {
5936     return TreeView_GetNextItem(w, null, TVGN_DROPHILITE);
5937 }
5938 
5939 HTREEITEM TreeView_GetRoot()(HWND w) {
5940     return TreeView_GetNextItem(w, null, TVGN_ROOT);
5941 }
5942 
5943 BOOL TreeView_Select()(HWND w, HTREEITEM i, UINT c) {
5944     return cast(BOOL) SendMessage(w, TVM_SELECTITEM, c, cast(LPARAM) i);
5945 }
5946 
5947 BOOL TreeView_SelectItem()(HWND w, HTREEITEM i) {
5948     return TreeView_Select(w, i, TVGN_CARET);
5949 }
5950 
5951 BOOL TreeView_SelectDropTarget()(HWND w, HTREEITEM i) {
5952     return TreeView_Select(w, i, TVGN_DROPHILITE);
5953 }
5954 
5955 BOOL TreeView_SelectSetFirstVisible()(HWND w, HTREEITEM i) {
5956     return TreeView_Select(w, i, TVGN_FIRSTVISIBLE);
5957 }
5958 
5959 BOOL TreeView_GetItem()(HWND w, LPTVITEM i) {
5960  return cast(BOOL) SendMessage(w, TVM_GETITEM, 0, cast(LPARAM) i);
5961 }
5962 
5963 BOOL TreeView_SetItem()(HWND w, const(TV_ITEM)* i) {
5964     return cast(BOOL) SendMessage(w, TVM_SETITEM, 0, cast(LPARAM) i);
5965 }
5966 
5967 HWND TreeView_EditLabel()(HWND w, HTREEITEM i) {
5968     return cast(HWND) SendMessage(w, TVM_EDITLABEL, 0, cast(LPARAM) i);
5969 }
5970 
5971 HWND TreeView_GetEditControl()(HWND w) {
5972     return cast(HWND) SendMessage(w, TVM_GETEDITCONTROL, 0, 0);
5973 }
5974 
5975 UINT TreeView_GetVisibleCount()(HWND w) {
5976     return cast(UINT) SendMessage(w, TVM_GETVISIBLECOUNT, 0, 0);
5977 }
5978 
5979 HTREEITEM TreeView_HitTest()(HWND w, LPTVHITTESTINFO p) {
5980     return cast(HTREEITEM) SendMessage(w, TVM_HITTEST, 0, cast(LPARAM) p);
5981 }
5982 
5983 HIMAGELIST TreeView_CreateDragImage()(HWND w, HTREEITEM i) {
5984     return cast(HIMAGELIST) SendMessage(w, TVM_CREATEDRAGIMAGE, 0,
5985       cast(LPARAM) i);
5986 }
5987 
5988 BOOL TreeView_SortChildren()(HWND w, HTREEITEM i, BOOL r) {
5989     return cast(BOOL) SendMessage(w, TVM_SORTCHILDREN, r, cast(LPARAM) i);
5990 }
5991 
5992 BOOL TreeView_EnsureVisible()(HWND w, HTREEITEM i) {
5993     return cast(BOOL) SendMessage(w, TVM_ENSUREVISIBLE, 0, cast(LPARAM) i);
5994 }
5995 
5996 BOOL TreeView_SortChildrenCB()(HWND w, LPTVSORTCB s, BOOL r) {
5997     return cast(BOOL) SendMessage(w, TVM_SORTCHILDRENCB, r, cast(LPARAM) s);
5998 }
5999 
6000 BOOL TreeView_EndEditLabelNow()(HWND w, BOOL f) {
6001     return cast(BOOL) SendMessage(w, TVM_ENDEDITLABELNOW, f, 0);
6002 }
6003 
6004 BOOL TreeView_GetISearchString()(HWND w, LPTSTR s) {
6005     return cast(BOOL) SendMessage(w, TVM_GETISEARCHSTRING, 0, cast(LPARAM) s);
6006 }
6007 
6008 static if (_WIN32_IE >= 0x300) {
6009     DWORD ListView_ApproximateViewRect()(HWND w, int iw, int ih, int i) {
6010         return cast(DWORD) SendMessage(w, LVM_APPROXIMATEVIEWRECT, i,
6011           MAKELPARAM(cast(ushort)iw, cast(ushort)ih));
6012     }
6013 
6014     DWORD ListView_SetExtendedListViewStyle()(HWND w, DWORD s) {
6015         return cast(DWORD) SendMessage(w, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, s);
6016     }
6017 
6018     DWORD ListView_GetExtendedListViewStyle()(HWND w) {
6019         return cast(DWORD) SendMessage(w, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
6020     }
6021 
6022     BOOL ListView_SetColumnOrderArray()(HWND w, int i, int* a) {
6023         return cast(BOOL) SendMessage(w, LVM_SETCOLUMNORDERARRAY,
6024           cast(WPARAM) i, cast(LPARAM) a);
6025     }
6026 
6027     BOOL ListView_GetColumnOrderArray()(HWND w, int i, int* a) {
6028         return cast(BOOL) SendMessage(w, LVM_GETCOLUMNORDERARRAY,
6029           cast(WPARAM) i, cast(LPARAM) a);
6030     }
6031 
6032     HWND ListView_GetHeader()(HWND w) {
6033         return cast(HWND) SendMessage(w, LVM_GETHEADER, 0, 0);
6034     }
6035 
6036     HCURSOR ListView_GetHotCursor()(HWND w) {
6037         return cast(HCURSOR) SendMessage(w, LVM_GETHOTCURSOR, 0, 0);
6038     }
6039 
6040     INT ListView_GetHotItem()(HWND w) {
6041         return cast(INT) SendMessage(w, LVM_GETHOTITEM, 0, 0);
6042     }
6043 
6044     BOOL ListView_GetSubItemRect()(HWND w, int i, int isi, int c, LPRECT p) {
6045         if (p)
6046         {
6047             p.left = c;
6048             p.top = isi;
6049         }
6050         return cast(BOOL) SendMessage(w, LVM_GETSUBITEMRECT, i, cast(LPARAM) p);
6051     }
6052 
6053     HCURSOR ListView_SetHotCursor()(HWND w, HCURSOR c) {
6054         return cast(HCURSOR) SendMessage(w, LVM_SETHOTCURSOR, 0,
6055           cast(LPARAM) c);
6056     }
6057 
6058     INT ListView_SetHotItem()(HWND w, INT i) {
6059         return cast(INT) SendMessage(w, LVM_SETHOTITEM, cast(WPARAM) i, 0);
6060     }
6061 
6062     DWORD ListView_SetIconSpacing()(HWND w, int x, int y) {
6063         return cast(DWORD) SendMessage(w, LVM_SETICONSPACING, 0,
6064           MAKELONG(cast(ushort)x, cast(ushort)y));
6065     }
6066 
6067     INT ListView_SubItemHitTest()(HWND w, LPLVHITTESTINFO p) {
6068         return cast(INT) SendMessage(w, LVM_SUBITEMHITTEST, 0, cast(LPARAM) p);
6069     }
6070 
6071     BOOL ListView_SetItemCountEx()(HWND w, int i, DWORD f) {
6072         return cast(BOOL) SendMessage(w, LVM_SETITEMCOUNT, i, cast(LPARAM) f);
6073     }
6074 
6075     extern (Windows) {
6076         WINBOOL ImageList_SetImageCount(HIMAGELIST, UINT);
6077         WINBOOL ImageList_Copy(HIMAGELIST, int, HIMAGELIST, int, UINT);
6078         WINBOOL ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*);
6079     }
6080 
6081     int TabCtrl_SetMinTabWidth()(HWND hwnd, int x) {
6082         return cast(int) SendMessage(hwnd, TCM_SETMINTABWIDTH, 0, x);
6083     }
6084 
6085     VOID TabCtrl_DeselectAll()(HWND hwnd, UINT fExcludeFocus) {
6086         SendMessage(hwnd, TCM_DESELECTALL, fExcludeFocus, 0);
6087     }
6088 
6089     HWND TreeView_GetToolTips()(HWND w) {
6090         return cast(HWND) SendMessage(w, TVM_GETTOOLTIPS, 0, 0);
6091     }
6092 
6093     HWND TreeView_SetToolTips()(HWND w, HWND wt) {
6094         return cast(HWND) SendMessage(w, TVM_SETTOOLTIPS, cast(WPARAM) wt, 0);
6095     }
6096 }
6097 
6098 static if (_WIN32_IE >= 0x400) {
6099     BOOL ListView_GetBkImage()(HWND h, LPLVBKIMAGE plvbki) {
6100         return cast(BOOL) SendMessage(h, LVM_GETBKIMAGE, 0,
6101           cast(LPARAM) plvbki);
6102     }
6103 
6104     BOOL ListView_SetBkImage()(HWND h, LPLVBKIMAGE plvbki) {
6105         return cast(BOOL) SendMessage(h, LVM_SETBKIMAGE, 0,
6106           cast(LPARAM) plvbki);
6107     }
6108 
6109     DWORD ListView_SetExtendedListViewStyleEx()(HWND w, DWORD m, DWORD s) {
6110         return cast(DWORD) SendMessage(w, LVM_SETEXTENDEDLISTVIEWSTYLE, m, s);
6111     }
6112 
6113     VOID ListView_SetWorkAreas()(HWND w, INT n, LPRECT r) {
6114         SendMessage(w, LVM_SETWORKAREAS, cast(WPARAM) n, cast(LPARAM) r);
6115     }
6116 
6117     VOID ListView_GetWorkAreas()(HWND w, INT n, LPRECT r) {
6118         SendMessage(w, LVM_GETWORKAREAS, cast(WPARAM) n, cast(LPARAM) r);
6119     }
6120 
6121     BOOL ListView_GetNumberOfWorkAreas()(HWND w, LPUINT n) {
6122         return cast(BOOL) SendMessage(w, LVM_GETNUMBEROFWORKAREAS, 0,
6123           cast(LPARAM) n);
6124     }
6125 
6126     DWORD ListView_SetHoverTime()(HWND w, DWORD t) {
6127         return cast(DWORD) SendMessage(w, LVM_SETHOVERTIME, 0,
6128           cast(LPARAM) t);
6129     }
6130 
6131     DWORD ListView_GetHoverTime()(HWND w) {
6132         return cast(DWORD) SendMessage(w, LVM_GETHOVERTIME, 0, 0);
6133     }
6134 
6135     INT ListView_GetSelectionMark()(HWND w) {
6136         return cast(INT) SendMessage(w, LVM_GETSELECTIONMARK, 0, 0);
6137     }
6138 
6139     INT ListView_SetSelectionMark()(HWND w, INT i) {
6140         return cast(INT) SendMessage(w, LVM_SETSELECTIONMARK, 0, cast(LPARAM) i);
6141     }
6142 
6143     HWND ListView_SetToolTips()(HWND w, HWND n) {
6144         return cast(HWND) SendMessage(w, LVM_SETTOOLTIPS, cast(WPARAM) n, 0);
6145     }
6146 
6147     HWND ListView_GetToolTips()(HWND w) {
6148         return cast(HWND) SendMessage(w, LVM_GETTOOLTIPS, 0, 0);
6149     }
6150 
6151     BOOL ListView_SetUnicodeFormat()(HWND w, BOOL f) {
6152         return cast(BOOL) SendMessage(w, LVM_SETUNICODEFORMAT,
6153           cast(WPARAM) f, 0);
6154     }
6155 
6156     BOOL ListView_GetUnicodeFormat()(HWND w) {
6157         return cast(BOOL) SendMessage(w, LVM_GETUNICODEFORMAT, 0, 0);
6158     }
6159 
6160     BOOL TabCtrl_HighlightItem()(HWND hwnd, INT i, WORD fHighlight) {
6161         return cast(BOOL) SendMessage(hwnd, TCM_HIGHLIGHTITEM,
6162           cast(WPARAM) i, cast(LPARAM) MAKELONG(fHighlight, 0));
6163     }
6164 
6165     DWORD TabCtrl_SetExtendedStyle()(HWND hwnd, DWORD dw) {
6166         return cast(DWORD) SendMessage(hwnd, TCM_SETEXTENDEDSTYLE, 0, dw);
6167     }
6168 
6169     DWORD TabCtrl_GetExtendedStyle()(HWND hwnd) {
6170         return cast(DWORD) SendMessage(hwnd, TCM_GETEXTENDEDSTYLE, 0, 0);
6171     }
6172 
6173     BOOL TabCtrl_SetUnicodeFormat()(HWND hwnd, HWND fUnicode) {
6174         return cast(BOOL) SendMessage(hwnd, TCM_SETUNICODEFORMAT,
6175           cast(WPARAM) fUnicode, 0);
6176     }
6177 
6178     BOOL TabCtrl_GetUnicodeFormat()(HWND hwnd) {
6179         return cast(BOOL) SendMessage(hwnd, TCM_GETUNICODEFORMAT, 0, 0);
6180     }
6181 
6182     COLORREF TreeView_GetBkColor()(HWND w) {
6183         return cast(COLORREF) SendMessage(w, TVM_GETBKCOLOR, 0, 0);
6184     }
6185 
6186     COLORREF TreeView_GetInsertMarkColor()(HWND w) {
6187         return cast(COLORREF) SendMessage(w, TVM_GETINSERTMARKCOLOR, 0, 0);
6188     }
6189 
6190     int TreeView_GetItemHeight()(HWND w) {
6191         return cast(int) SendMessage(w, TVM_GETITEMHEIGHT, 0, 0);
6192     }
6193 
6194     UINT TreeView_GetScrollTime()(HWND w) {
6195         return cast(UINT) SendMessage(w, TVM_GETSCROLLTIME, 0, 0);
6196     }
6197 
6198     COLORREF TreeView_GetTextColor()(HWND w) {
6199         return cast(COLORREF) SendMessage(w, TVM_GETTEXTCOLOR, 0, 0);
6200     }
6201 
6202     COLORREF TreeView_SetBkColor()(HWND w, COLORREF c) {
6203         return cast(COLORREF) SendMessage(w, TVM_SETBKCOLOR, 0,
6204           cast(LPARAM) c);
6205     }
6206 
6207     COLORREF TreeView_SetInsertMarkColor()(HWND w, COLORREF c) {
6208         return cast(COLORREF) SendMessage(w, TVM_SETINSERTMARKCOLOR, 0,
6209           cast(LPARAM) c);
6210     }
6211 
6212     int TreeView_SetItemHeight()(HWND w, SHORT h) {
6213         return cast(int) SendMessage(w, TVM_SETITEMHEIGHT, cast(WPARAM) h, 0);
6214     }
6215 
6216     UINT TreeView_SetScrollTime()(HWND w, UINT t) {
6217         return cast(UINT) SendMessage(w, TVM_SETSCROLLTIME, cast(WPARAM) t, 0);
6218     }
6219 
6220     COLORREF TreeView_SetTextColor()(HWND w, COLORREF c) {
6221         return cast(COLORREF) SendMessage(w, TVM_SETTEXTCOLOR, 0,
6222           cast(LPARAM) c);
6223     }
6224 
6225     BOOL TreeView_SetInsertMark()(HWND w, HTREEITEM i, BOOL a) {
6226         return cast(BOOL) SendMessage(w, TVM_SETINSERTMARK, cast(WPARAM) a,
6227           cast(LPARAM) i);
6228     }
6229 
6230     BOOL TreeView_SetUnicodeFormat()(HWND w, BOOL u) {
6231         return cast(BOOL) SendMessage(w, TVM_SETUNICODEFORMAT,
6232           cast(WPARAM) u, 0);
6233     }
6234 
6235     BOOL TreeView_GetUnicodeFormat()(HWND w) {
6236         return cast(BOOL) SendMessage(w, TVM_GETUNICODEFORMAT, 0, 0);
6237     }
6238 
6239     HTREEITEM TreeView_GetLastVisible()(HWND w) {
6240         return TreeView_GetNextItem(w, null, TVGN_LASTVISIBLE);
6241     }
6242 }
6243 
6244 static if (_WIN32_IE >= 0x500) {
6245     UINT TreeView_GetItemState()(HWND w, HTREEITEM i, UINT m) {
6246         return cast(UINT) SendMessage(w, TVM_GETITEMSTATE, cast(WPARAM) i,
6247           cast(LPARAM) m);
6248     }
6249 
6250     BOOL TreeView_SetItemState()(HWND w, HTREEITEM i, UINT d, UINT m) {
6251         TVITEM _tvi;
6252         _tvi.mask = TVIF_STATE;
6253         _tvi.hItem = i;
6254         _tvi.stateMask = m;
6255         _tvi.state = d;
6256         return cast(BOOL) SendMessage(w, TVM_SETITEM, 0, cast(LPARAM) &_tvi);
6257     }
6258 }
6259 
6260 
6261 //#ifdef _WIN32_WCE               // these are PPC only
6262 /+
6263 extern (Windows) {
6264     HWND  CommandBar_Create(HINSTANCE, HWND, int);
6265     BOOL  CommandBar_Show(HWND, BOOL);
6266     int   CommandBar_AddBitmap(HWND, HINSTANCE, int, int, int, int);
6267     HWND  CommandBar_InsertComboBox(HWND, HINSTANCE, int, UINT, WORD, WORD);
6268     BOOL  CommandBar_InsertMenubar(HWND, HINSTANCE, WORD, WORD );
6269     BOOL  CommandBar_InsertMenubarEx(HWND, HINSTANCE, LPTSTR, WORD);
6270     BOOL  CommandBar_DrawMenuBar(HWND, WORD);
6271     HMENU CommandBar_GetMenu(HWND, WORD);
6272     BOOL  CommandBar_AddAdornments(HWND, DWORD, DWORD);
6273     int   CommandBar_Height(HWND hwndCB);
6274 }
6275 
6276 // MinGW: These two are not in the DLL
6277 void CommandBar_InsertButton()(HWND hwnd, int i, LPTBBUTTON lptbbutton) {
6278     SendMessage(hwnd, TB_INSERTBUTTON, i, lptbbutton);
6279 }
6280 alias DestroyWindow CommandBar_Destroy;
6281 +/
6282 //#endif // _WIN32_WCE
6283 
6284 
6285 static if (_WIN32_WINNT >= 0x501) {
6286     struct EDITBALLOONTIP
6287     {
6288         DWORD cbStruct;
6289         LPCWSTR pszTitle;
6290         LPCWSTR pszText;
6291         INT ttiIcon;
6292     }
6293     alias EDITBALLOONTIP* PEDITBALLOONTIP;
6294 
6295 enum EM_SETCUEBANNER = ECM_FIRST + 1;
6296 enum EM_GETCUEBANNER = ECM_FIRST + 2;
6297 enum EM_SHOWBALLOONTIP = ECM_FIRST + 3;
6298 enum EM_HIDEBALLOONTIP = ECM_FIRST + 4;
6299 }
6300 
6301 static if (_WIN32_WINNT >= 0x600) {
6302 enum EM_SETHILITE = ECM_FIRST + 5;
6303 enum EM_GETHILITE = ECM_FIRST + 6;
6304 }