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