root/trunk/win32/commctrl.d

Revision 318, 137.0 kB (checked in by dyh, 3 years ago)

ListView?_Scroll typo

Line 
1 /***********************************************************************\
2 *                               commctrl.d                              *
3 *                                                                       *
4 *                       Windows API header module                       *
5 *                                                                       *
6 *             Translated from MinGW API for MS-Windows 3.12             *
7 *                                                                       *
8 *                       Placed into public domain                       *
9 \***********************************************************************/
10 module win32.commctrl;
11 pragma(lib, "comctl32.lib");
12
13 private import win32.w32api, win32.windef, win32.winuser;
14 private import win32.winbase; // for SYSTEMTIME
15 private import win32.objfwd;  // for LPSTREAM
16
17 import win32.prsht;
18
19 const COMCTL32_VERSION = 6;
20
21 const TCHAR[]
22     DRAGLISTMSGSTRING  = "commctrl_DragListMsg",
23     HOTKEY_CLASS       = "msctls_hotkey32",
24     PROGRESS_CLASS     = "msctls_progress32",
25     STATUSCLASSNAME    = "msctls_statusbar32",
26     TOOLBARCLASSNAME   = "ToolbarWindow32",
27     TOOLTIPS_CLASS     = "tooltips_class32",
28     TRACKBAR_CLASS     = "msctls_trackbar32",
29     UPDOWN_CLASS       = "msctls_updown32",
30     ANIMATE_CLASS      = "SysAnimate32",
31     DATETIMEPICK_CLASS = "SysDateTimePick32",
32     MONTHCAL_CLASS     = "SysMonthCal32",
33     REBARCLASSNAME     = "ReBarWindow32",
34     WC_COMBOBOXEX      = "ComboBoxEx32",
35     WC_IPADDRESS       = "SysIPAddress32",
36     WC_LISTVIEW        = "SysListView32",
37     WC_TABCONTROL      = "SysTabControl32",
38     WC_TREEVIEW        = "SysTreeView32",
39     WC_HEADER          = "SysHeader32",
40     WC_PAGESCROLLER    = "SysPager",
41     WC_NATIVEFONTCTL   = "NativeFontCtl",
42     WC_BUTTON          = "Button",
43     WC_STATIC          = "Static",
44     WC_EDIT            = "Edit",
45     WC_LISTBOX         = "ListBox",
46     WC_COMBOBOX        = "ComboBox",
47     WC_SCROLLBAR       = "ScrollBar",
48     WC_LINKA           = "SysLink";
49
50 enum {
51     LVM_FIRST = 0x1000,
52     TV_FIRST  = 0x1100,
53     HDM_FIRST = 0x1200
54 }
55
56 enum {
57     ACM_OPENA = WM_USER + 100,
58     ACM_PLAY  = WM_USER + 101,
59     ACM_STOP  = WM_USER + 102,
60     ACM_OPENW = WM_USER + 103
61 }
62
63 enum {
64     ACN_START = 1,
65     ACN_STOP
66 }
67
68 enum {
69     CBEIF_TEXT          = 0x00000001,
70     CBEIF_IMAGE         = 0x00000002,
71     CBEIF_SELECTEDIMAGE = 0x00000004,
72     CBEIF_OVERLAY       = 0x00000008,
73     CBEIF_INDENT        = 0x00000010,
74     CBEIF_LPARAM        = 0x00000020,
75     CBEIF_DI_SETITEM    = 0x10000000
76 }
77
78 enum {
79     RBN_FIRST  = -831U,
80     RBN_LAST   = -859U,
81     MCN_FIRST  = -750U,
82     MCN_LAST   = -759U,
83     DTN_FIRST  = -760U,
84     DTN_LAST   = -799U,
85     CBEN_FIRST = -800U,
86     CBEN_LAST  = -830U
87 }
88
89 enum {
90     CBEN_INSERTITEM = CBEN_FIRST - 1,
91     CBEN_DELETEITEM = CBEN_FIRST - 2,
92     CBEN_BEGINEDIT  = CBEN_FIRST - 4,
93     CBEN_ENDEDITA   = CBEN_FIRST - 5,
94     CBEN_ENDEDITW   = CBEN_FIRST - 6
95 }
96
97 enum {
98     CBENF_KILLFOCUS = 1,
99     CBENF_RETURN,
100     CBENF_ESCAPE,
101     CBENF_DROPDOWN // = 4
102 }
103
104 const CBEMAXSTRLEN = 260;
105
106 enum {
107     DL_BEGINDRAG  = 1157,
108     DL_CANCELDRAG = 1160,
109     DL_DRAGGING   = 1158,
110     DL_DROPPED    = 1159,
111     DL_CURSORSET  = 0,
112     DL_STOPCURSOR = 1,
113     DL_COPYCURSOR = 2,
114     DL_MOVECURSOR = 3
115 }
116
117 enum {
118     CCS_TOP           = 1,
119     CCS_NOMOVEY       = 2,
120     CCS_BOTTOM        = 3,
121     CCS_NORESIZE      = 4,
122     CCS_NOPARENTALIGN = 8,
123     CCS_ADJUSTABLE    = 32,
124     CCS_NODIVIDER     = 64
125 }
126 static if (_WIN32_IE >= 0x300) {
127     enum {
128         CCS_VERT    = 128,
129         CCS_LEFT    = 129,
130         CCS_NOMOVEX = 130,
131         CCS_RIGHT   = 131
132     }
133 }
134
135 enum {
136     ACS_CENTER      = 0x0001,
137     ACS_TRANSPARENT = 0x0002,
138     ACS_AUTOPLAY    = 0x0004,
139     ACS_TIMER       = 0x0008
140 }
141
142 enum {
143     PGS_VERT       = 0x00000000,
144     PGS_HORZ       = 0x00000001,
145     PGS_AUTOSCROLL = 0x00000002,
146     PGS_DRAGNDROP  = 0x00000004
147 }
148
149 const CMB_MASKED = 2;
150
151 const MINSYSCOMMAND = SC_SIZE;
152
153 enum {
154     SBT_OWNERDRAW  = 0x1000,
155     SBT_NOBORDERS  = 256,
156     SBT_POPOUT     = 512,
157     SBT_RTLREADING = 1024
158 }
159
160 enum {
161     SB_SETTEXTA       = WM_USER + 1,
162     SB_SETTEXTW       = WM_USER + 11,
163     SB_GETTEXTA       = WM_USER + 2,
164     SB_GETTEXTW       = WM_USER + 13,
165     SB_GETTEXTLENGTHA = WM_USER + 3,
166     SB_GETTEXTLENGTHW = WM_USER + 12,
167     SB_SETPARTS       = WM_USER + 4,
168     SB_GETPARTS       = WM_USER + 6,
169     SB_GETBORDERS     = WM_USER + 7,
170     SB_SETMINHEIGHT   = WM_USER + 8,
171     SB_SIMPLE         = WM_USER + 9,
172     SB_GETRECT        = WM_USER + 10
173 }
174
175 enum {
176     MSGF_COMMCTRL_BEGINDRAG   = 0x4200,
177     MSGF_COMMCTRL_SIZEHEADER  = 0x4201,
178     MSGF_COMMCTRL_DRAGSELECT  = 0x4202,
179     MSGF_COMMCTRL_TOOLBARCUST = 0x4203
180 }
181
182 enum {
183     ILC_COLOR    = 0,
184     ILC_COLOR4   = 4,
185     ILC_COLOR8   = 8,
186     ILC_COLOR16  = 16,
187     ILC_COLOR24  = 24,
188     ILC_COLOR32  = 32,
189     ILC_COLORDDB = 254,
190     ILC_MASK     = 1,
191     ILC_PALETTE  = 2048
192 }
193
194 enum {
195     ILCF_MOVE,
196     ILCF_SWAP
197 }
198
199 enum {
200     ILS_NORMAL        = 0,
201     ILS_GLOW          = 1,
202     ILS_SHADOW        = 2,
203     ILS_SATURATE      = 4,
204     ILS_ALPHA         = 8,
205     ILD_BLEND25       = 2,
206     ILD_BLEND50       = 4,
207     ILD_SELECTED      = 4,
208     ILD_BLEND         = 4,
209     ILD_FOCUS         = 2,
210     ILD_MASK          = 16,
211     ILD_NORMAL        = 0,
212     ILD_TRANSPARENT   = 1,
213     ILD_IMAGE         = 0x0020,
214     ILD_ROP           = 0x0040,
215     ILD_OVERLAYMASK   = 0x0F00,
216     ILD_PRESERVEALPHA = 0x1000,
217     ILD_SCALE         = 0x2000,
218     ILD_DPISCALE      = 0x4000
219 }
220
221 enum {
222     HDS_HORZ    = 0,
223     HDS_BUTTONS = 2,
224     HDS_HIDDEN  = 8
225 }
226 static if (_WIN32_IE >= 0x400) {
227     enum {
228         HDS_HOTTRACK = 4,
229         HDS_DRAGDROP = 0x0040,
230         HDS_FULLDRAG = 0x0080
231     }
232 }
233 static if (_WIN32_IE >= 0x500) {
234     enum {
235         HDS_FILTERBAR = 0x0100
236     }
237 }
238
239 enum {
240     NM_FIRST  = 0,
241     NM_LAST   = -99U,
242     LVN_FIRST = -100U,
243     LVN_LAST  = -199U,
244     HDN_FIRST = -300U,
245     HDN_LAST  = -399U,
246     TVN_FIRST = -400U,
247     TVN_LAST  = -499U,
248     TTN_FIRST = -520U,
249     TTN_LAST  = -549U,
250     TCN_FIRST = -550U,
251     TCN_LAST  = -580U,
252     CDN_FIRST = -601U, /* also in commdlg.h */
253     CDN_LAST  = -699U,
254     TBN_FIRST = -700U,
255     TBN_LAST  = -720U,
256     UDN_FIRST = -721U,
257     UDN_LAST  = -740U
258 }
259 /*static if (_WIN32_IE >= 0x300) {
260     enum {
261         RBN_FIRST  = -831U,
262         RBN_LAST   = -859U,
263         MCN_FIRST  = -750U,
264         MCN_LAST   = -759U,
265         DTN_FIRST  = -760U,
266         DTN_LAST   = -799U,
267         CBEN_FIRST = -800U,
268         CBEN_LAST  = -830U
269     }
270 }*/
271 static if (_WIN32_IE >= 0x400) {
272     enum {
273         IPN_FIRST        = -860U,
274         IPN_LAST         = -879U,
275         IPN_FIELDCHANGED = IPN_FIRST,
276         SBN_FIRST        = -880U,
277         SBN_LAST         = -899U,
278         PGN_FIRST        = -900U,
279         PGN_LAST         = -950U,
280         PGN_SCROLL       = PGN_FIRST-1,
281         PGN_CALCSIZE     = PGN_FIRST-2
282     }
283 }
284
285 enum {
286     HDI_WIDTH  = 1,
287     HDI_HEIGHT = 1,
288     HDI_TEXT   = 2,
289     HDI_FORMAT = 4,
290     HDI_LPARAM = 8,
291     HDI_BITMAP = 16
292 }
293 static if (_WIN32_IE >= 0x300) {
294     enum {
295         HDI_IMAGE      = 32,
296         HDI_DI_SETITEM = 64,
297         HDI_ORDER      = 128
298     }
299 }
300 static if (_WIN32_IE >= 0x500) {
301     enum {
302         HDI_FILTER = 256
303     }
304 }
305
306 enum {
307     CBES_EX_NOEDITIMAGE       = 0x00000001,
308     CBES_EX_NOEDITIMAGEINDENT = 0x00000002,
309     CBES_EX_PATHWORDBREAKPROC = 0x00000004
310 }
311 static if (_WIN32_IE >= 0x400) {
312     enum {
313         CBES_EX_NOSIZELIMIT   = 0x00000008,
314         CBES_EX_CASESENSITIVE = 0x00000010,
315         CBEN_GETDISPINFOA     = CBEN_FIRST - 0,
316         CBEN_GETDISPINFOW     = CBEN_FIRST - 7,
317         CBEN_DRAGBEGINA       = CBEN_FIRST - 8,
318         CBEN_DRAGBEGINW       = CBEN_FIRST - 9
319     }
320 }
321
322 enum {
323     HDF_LEFT,
324     HDF_RIGHT,
325     HDF_CENTER,
326     HDF_JUSTIFYMASK,
327     HDF_RTLREADING, // = 4
328     HDF_OWNERDRAW = 0x8000,
329     HDF_STRING    = 0x4000,
330     HDF_BITMAP    = 0x2000
331 }
332 static if (_WIN32_IE >= 0x300) {
333     enum {
334         HDF_BITMAP_ON_RIGHT = 0x1000,
335         HDF_IMAGE           = 0x0800
336     }
337 }
338
339 enum {
340     CCM_FIRST            = 0x2000,
341     CCM_LAST             = CCM_FIRST + 0x200,
342     CCM_SETBKCOLOR       = 8193,
343     CCM_SETCOLORSCHEME   = 8194,
344     CCM_GETCOLORSCHEME   = 8195,
345     CCM_GETDROPTARGET    = 8196,
346     CCM_SETUNICODEFORMAT = 8197,
347     CCM_GETUNICODEFORMAT = 8198,
348     CCM_SETVERSION       = 0x2007,
349     CCM_GETVERSION       = 0x2008,
350     CCM_SETNOTIFYWINDOW  = 0x2009
351 }
352
353 enum {
354     HDM_GETITEMCOUNT = HDM_FIRST,
355     HDM_INSERTITEMA  = HDM_FIRST + 1,
356     HDM_INSERTITEMW  = HDM_FIRST + 10,
357     HDM_DELETEITEM   = HDM_FIRST + 2,
358     HDM_GETITEMA     = HDM_FIRST + 3,
359     HDM_GETITEMW     = HDM_FIRST + 11,
360     HDM_SETITEMA     = HDM_FIRST + 4,
361     HDM_SETITEMW     = HDM_FIRST + 12,
362     HDM_LAYOUT       = HDM_FIRST + 5
363 }
364 static if (_WIN32_IE >= 0x300) {
365     enum {
366         HDM_GETITEMRECT     = HDM_FIRST + 7,
367         HDM_SETIMAGELIST    = HDM_FIRST + 8,
368         HDM_GETIMAGELIST    = HDM_FIRST + 9,
369         HDM_ORDERTOINDEX    = HDM_FIRST + 15,
370         HDM_CREATEDRAGIMAGE = HDM_FIRST + 16,
371         HDM_GETORDERARRAY   = HDM_FIRST + 17,
372         HDM_SETORDERARRAY   = HDM_FIRST + 18,
373         HDM_SETHOTDIVIDER   = HDM_FIRST + 19
374     }
375 }
376 static if (_WIN32_IE >= 0x400) {
377     enum {
378         HDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT,
379         HDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT
380     }
381 }
382
383 enum {
384     HHT_NOWHERE   = 1,
385     HHT_ONHEADER  = 2,
386     HHT_ONDIVIDER = 4,
387     HHT_ONDIVOPEN = 8,
388     HHT_ABOVE     = 256,
389     HHT_BELOW     = 512,
390     HHT_TORIGHT   = 1024,
391     HHT_TOLEFT    = 2048
392 }
393
394 enum {
395     HDM_HITTEST = HDM_FIRST + 6
396 }
397
398 enum {
399     HDN_ITEMCHANGINGA    = HDN_FIRST -0,
400     HDN_ITEMCHANGINGW    = HDN_FIRST -20,
401     HDN_ITEMCHANGEDA     = HDN_FIRST -1,
402     HDN_ITEMCHANGEDW     = HDN_FIRST -21,
403     HDN_ITEMCLICKA       = HDN_FIRST -2,
404     HDN_ITEMCLICKW       = HDN_FIRST -22,
405     HDN_ITEMDBLCLICKA    = HDN_FIRST -3,
406     HDN_ITEMDBLCLICKW    = HDN_FIRST -23,
407     HDN_DIVIDERDBLCLICKA = HDN_FIRST -5,
408     HDN_DIVIDERDBLCLICKW = HDN_FIRST -25,
409     HDN_BEGINTRACKA      = HDN_FIRST -6,
410     HDN_BEGINTRACKW      = HDN_FIRST -26,
411     HDN_ENDTRACKA        = HDN_FIRST -7,
412     HDN_ENDTRACKW        = HDN_FIRST -27,
413     HDN_TRACKA           = HDN_FIRST -8,
414     HDN_TRACKW           = HDN_FIRST -28
415 }
416 static if (_WIN32_IE >= 0x300) {
417     enum {
418         HDN_ENDDRAG      = (HDN_FIRST-11),
419         HDN_BEGINDRAG    = (HDN_FIRST-10),
420         HDN_GETDISPINFOA = (HDN_FIRST-9),
421         HDN_GETDISPINFOW = (HDN_FIRST-29)
422     }
423 }
424
425 static if (_WIN32_IE >= 0x400) {
426     enum {
427         HICF_OTHER          = 0x00,
428         HICF_MOUSE          = 0x01,
429         HICF_ARROWKEYS      = 0x02,
430         HICF_ACCELERATOR    = 0x04,
431         HICF_DUPACCEL       = 0x08,
432         HICF_ENTERING       = 0x10,
433         HICF_LEAVING        = 0x20,
434         HICF_RESELECT       = 0x40,
435         HICF_LMOUSE         = 0x80,
436         HICF_TOGGLEDROPDOWN = 0x100
437     }
438 }
439
440 enum {
441     IPM_CLEARADDRESS = WM_USER + 100,
442     IPM_SETADDRESS   = WM_USER + 101,
443     IPM_GETADDRESS   = WM_USER + 102,
444     IPM_SETRANGE     = WM_USER + 103,
445     IPM_SETFOCUS     = WM_USER + 104,
446     IPM_ISBLANK      = WM_USER + 105
447 }
448
449 static if (_WIN32_IE >= 0x500) {
450     enum {
451         I_INDENTCALLBACK = -1,
452         I_IMAGENONE      = -2
453     }
454 }
455
456 enum {
457     TBSTATE_CHECKED       = 1,
458     TBSTATE_PRESSED       = 2,
459     TBSTATE_ENABLED       = 4,
460     TBSTATE_HIDDEN        = 8,
461     TBSTATE_INDETERMINATE = 16,
462     TBSTATE_WRAP          = 32
463 }
464 static if (_WIN32_IE >= 0x300) {
465     enum {
466         TBSTATE_ELLIPSES = 0x40
467     }
468 }
469 static if (_WIN32_IE >= 0x400) {
470     enum {
471         TBSTATE_MARKED = 0x0080
472     }
473 }
474
475 enum {
476     TBSTYLE_BUTTON     = 0,
477     TBSTYLE_SEP        = 1,
478     TBSTYLE_CHECK      = 2,
479     TBSTYLE_GROUP      = 4,
480     TBSTYLE_CHECKGROUP = TBSTYLE_GROUP | TBSTYLE_CHECK
481 }
482 static if (_WIN32_IE >= 0x300) {
483     enum {
484         TBSTYLE_DROPDOWN = 8
485     }
486 }
487 static if (_WIN32_IE >= 0x400) {
488     enum {
489         TBSTYLE_AUTOSIZE = 16,
490         TBSTYLE_NOPREFIX = 32
491     }
492 }
493 enum {
494     TBSTYLE_TOOLTIPS = 256,
495     TBSTYLE_WRAPABLE = 512,
496     TBSTYLE_ALTDRAG  = 1024
497 }
498 static if (_WIN32_IE >= 0x300) {
499     enum {
500         TBSTYLE_FLAT        = 2048,
501         TBSTYLE_LIST        = 4096,
502         TBSTYLE_CUSTOMERASE = 8192
503     }
504 }
505 static if (_WIN32_IE >= 0x400) {
506     enum {
507         TBSTYLE_REGISTERDROP    = 0x4000,
508         TBSTYLE_TRANSPARENT     = 0x8000,
509         TBSTYLE_EX_DRAWDDARROWS = 0x00000001
510     }
511 }
512 static if (_WIN32_IE >= 0x501) {
513     enum {
514         TBSTYLE_EX_MIXEDBUTTONS       = 8,
515         TBSTYLE_EX_HIDECLIPPEDBUTTONS = 16
516     }
517 }
518 static if (_WIN32_WINNT >= 0x501) {
519     enum {
520         TBSTYLE_EX_DOUBLEBUFFER = 0x80
521     }
522 }
523
524 static if (_WIN32_IE >= 0x500) {
525     enum {
526         BTNS_BUTTON        = TBSTYLE_BUTTON,
527         BTNS_SEP           = TBSTYLE_SEP,
528         BTNS_CHECK         = TBSTYLE_CHECK,
529         BTNS_GROUP         = TBSTYLE_GROUP,
530         BTNS_CHECKGROUP    = TBSTYLE_CHECKGROUP,
531         BTNS_DROPDOWN      = TBSTYLE_DROPDOWN,
532         BTNS_AUTOSIZE      = TBSTYLE_AUTOSIZE,
533         BTNS_NOPREFIX      = TBSTYLE_NOPREFIX,
534         BTNS_WHOLEDROPDOWN = 0x0080
535     }
536 }
537 static if (_WIN32_IE >= 0x501) {
538     enum {
539         BTNS_SHOWTEXT = 0x0040
540     }
541 }
542
543 static if (_WIN32_IE >= 0x400) {
544     enum {
545         TBCDRF_NOEDGES        = 0x10000,
546         TBCDRF_HILITEHOTTRACK = 0x20000,
547         TBCDRF_NOOFFSET       = 0x40000,
548         TBCDRF_NOMARK         = 0x80000,
549         TBCDRF_NOETCHEDEFFECT = 0x100000
550     }
551 }
552
553 const HINST_COMMCTRL = cast(HINSTANCE) (-1);
554
555 enum {
556     IDB_STD_SMALL_COLOR,
557     IDB_STD_LARGE_COLOR,
558     IDB_VIEW_SMALL_COLOR = 4,
559     IDB_VIEW_LARGE_COLOR = 5
560 }
561 static if (_WIN32_IE >= 0x300) {
562     enum {
563         IDB_HIST_SMALL_COLOR = 8,
564         IDB_HIST_LARGE_COLOR = 9
565     }
566 }
567
568 enum {
569     STD_CUT,
570     STD_COPY,
571     STD_PASTE,
572     STD_UNDO,
573     STD_REDOW,
574     STD_DELETE,
575     STD_FILENEW,
576     STD_FILEOPEN,
577     STD_FILESAVE,
578     STD_PRINTPRE,
579     STD_PROPERTIES,
580     STD_HELP,
581     STD_FIND,
582     STD_REPLACE,
583     STD_PRINT // = 14
584 }
585
586 enum {
587     VIEW_LARGEICONS,
588     VIEW_SMALLICONS,
589     VIEW_LIST,
590     VIEW_DETAILS,
591     VIEW_SORTNAME,
592     VIEW_SORTSIZE,
593     VIEW_SORTDATE,
594     VIEW_SORTTYPE,
595     VIEW_PARENTFOLDER,
596     VIEW_NETCONNECT,
597     VIEW_NETDISCONNECT,
598     VIEW_NEWFOLDER // = 11
599 }
600
601 enum {
602     TB_ENABLEBUTTON          = WM_USER + 1,
603     TB_CHECKBUTTON,
604     TB_PRESSBUTTON,
605     TB_HIDEBUTTON,
606     TB_INDETERMINATE, //     = WM_USER + 5,
607     TB_ISBUTTONENABLED       = WM_USER + 9,
608     TB_ISBUTTONCHECKED,
609     TB_ISBUTTONPRESSED,
610     TB_ISBUTTONHIDDEN,
611     TB_ISBUTTONINDETERMINATE, // = WM_USER + 13,
612     TB_SETSTATE              = WM_USER + 17,
613     TB_GETSTATE              = WM_USER + 18,
614     TB_ADDBITMAP             = WM_USER + 19,
615     TB_DELETEBUTTON          = WM_USER + 22,
616     TB_GETBUTTON,
617     TB_BUTTONCOUNT,
618     TB_COMMANDTOINDEX,
619     TB_SAVERESTOREA,
620     TB_CUSTOMIZE,
621     TB_ADDSTRINGA,
622     TB_GETITEMRECT,
623     TB_BUTTONSTRUCTSIZE,
624     TB_SETBUTTONSIZE,
625     TB_SETBITMAPSIZE,
626     TB_AUTOSIZE, //          = WM_USER + 33,
627     TB_GETTOOLTIPS           = WM_USER + 35,
628     TB_SETTOOLTIPS           = WM_USER + 36,
629     TB_SETPARENT             = WM_USER + 37,
630     TB_SETROWS               = WM_USER + 39,
631     TB_GETROWS,
632     TB_GETBITMAPFLAGS,
633     TB_SETCMDID,
634     TB_CHANGEBITMAP,
635     TB_GETBITMAP,
636     TB_GETBUTTONTEXTA,
637     TB_REPLACEBITMAP, //     = WM_USER + 46,
638     TB_GETBUTTONSIZE         = WM_USER + 58,
639     TB_SETBUTTONWIDTH        = WM_USER + 59,
640     TB_GETBUTTONTEXTW        = WM_USER + 75,
641     TB_SAVERESTOREW          = WM_USER + 76,
642     TB_ADDSTRINGW            = WM_USER + 77,
643 }
644 static if (_WIN32_IE >= 0x400) {
645     enum {
646         TB_MARKBUTTON = WM_USER + 6
647     }
648 }
649 static if (_WIN32_IE >= 0x400) {
650     enum {
651         TB_ISBUTTONHIGHLIGHTED = WM_USER + 14
652     }
653 }
654 static if (_WIN32_IE >= 0x400) {
655     enum {
656         TB_ADDBUTTONSA   = WM_USER + 20,
657         TB_INSERTBUTTONA = WM_USER + 21
658     }
659 } else {
660     enum {
661         TB_ADDBUTTONS   = WM_USER + 20,
662         TB_INSERTBUTTON = WM_USER + 21
663     }
664 }
665 static if (_WIN32_IE >= 0x300) {
666     enum {
667         TB_SETINDENT = WM_USER + 47,
668         TB_SETIMAGELIST,
669         TB_GETIMAGELIST,
670         TB_LOADIMAGES,
671         TB_GETRECT,
672         TB_SETHOTIMAGELIST,
673         TB_GETHOTIMAGELIST,
674         TB_SETDISABLEDIMAGELIST,
675         TB_GETDISABLEDIMAGELIST,
676         TB_SETSTYLE,
677         TB_GETSTYLE,
678         //TB_GETBUTTONSIZE,
679         //TB_SETBUTTONWIDTH,
680         TB_SETMAXTEXTROWS,
681         TB_GETTEXTROWS // = WM_USER + 61
682     }
683 }
684 static if (_WIN32_IE >= 0x400) {
685     enum {
686         TB_GETOBJECT            = WM_USER + 62,
687         TB_GETBUTTONINFOW,
688         TB_SETBUTTONINFOW,
689         TB_GETBUTTONINFOA,
690         TB_SETBUTTONINFOA,
691         TB_INSERTBUTTONW,
692         TB_ADDBUTTONSW,
693         TB_HITTEST, //          = WM_USER + 69
694         TB_SETEXTENDEDSTYLE     = WM_USER + 84,
695         TB_GETEXTENDEDSTYLE     = WM_USER + 85,
696         TB_SETDRAWTEXTFLAGS     = WM_USER + 70,
697         TB_GETHOTITEM,
698         TB_SETHOTITEM,
699         TB_SETANCHORHIGHLIGHT,
700         TB_GETANCHORHIGHLIGHT, // = WM_USER + 74
701         TB_MAPACCELERATORA      = WM_USER + 78,
702         TB_GETINSERTMARK,
703         TB_SETINSERTMARK,
704         TB_INSERTMARKHITTEST,
705         TB_MOVEBUTTON,
706         TB_GETMAXSIZE,
707         //TB_SETEXTENDEDSTYLE,
708         //TB_GETEXTENDEDSTYLE,
709         TB_GETPADDING,
710         TB_SETPADDING,
711         TB_SETINSERTMARKCOLOR,
712         TB_GETINSERTMARKCOLOR,
713         TB_MAPACCELERATORW,
714         TB_GETSTRINGW,
715         TB_GETSTRINGA, //       = WM_USER + 92
716         TB_SETCOLORSCHEME       = CCM_SETCOLORSCHEME,
717         TB_GETCOLORSCHEME       = CCM_GETCOLORSCHEME,
718         TB_SETUNICODEFORMAT     = CCM_SETUNICODEFORMAT,
719         TB_GETUNICODEFORMAT     = CCM_GETUNICODEFORMAT
720     }
721 }
722
723 const TBBF_LARGE = 1;
724
725 enum {
726     TBN_GETBUTTONINFOA = TBN_FIRST -0,
727     TBN_BEGINDRAG      = TBN_FIRST -1,
728     TBN_ENDDRAG        = TBN_FIRST -2,
729     TBN_BEGINADJUST    = TBN_FIRST -3,
730     TBN_ENDADJUST      = TBN_FIRST -4,
731     TBN_RESET          = TBN_FIRST -5,
732     TBN_QUERYINSERT    = TBN_FIRST -6,
733     TBN_QUERYDELETE    = TBN_FIRST -7,
734     TBN_TOOLBARCHANGE  = TBN_FIRST -8,
735     TBN_CUSTHELP       = TBN_FIRST -9
736 }
737 static if (_WIN32_IE >= 0x300) {
738     enum {
739         TBN_DROPDOWN = TBN_FIRST - 10
740     }
741 }
742 static if (_WIN32_IE >= 0x400) {
743     enum {
744         TBN_HOTITEMCHANGE  = TBN_FIRST - 13,
745         TBN_DRAGOUT        = TBN_FIRST - 14,
746         TBN_DELETINGBUTTON = TBN_FIRST - 15,
747         TBN_GETDISPINFOA   = TBN_FIRST - 16,
748         TBN_GETDISPINFOW   = TBN_FIRST - 17,
749         TBN_GETINFOTIPA    = TBN_FIRST - 18,
750         TBN_GETINFOTIPW    = TBN_FIRST - 19,
751         TBN_GETBUTTONINFOW = TBN_FIRST - 20
752     }
753 }
754 static if (_WIN32_IE >= 0x500) {
755     enum {
756         TBN_RESTORE       = TBN_FIRST - 21,
757         TBN_SAVE          = TBN_FIRST - 22,
758         TBN_INITCUSTOMIZE = TBN_FIRST - 23
759     }
760
761     enum {
762         TBNRF_HIDEHELP = 1,
763         TBNRF_ENDCUSTOMIZE
764     }
765
766     enum {
767         TBNF_IMAGE      = 1,
768         TBNF_TEXT       = 2,
769         TBNF_DI_SETITEM = 0x10000000
770     }
771 }
772
773 enum {
774     TTS_ALWAYSTIP = 1,
775     TTS_NOPREFIX
776 }
777 static if(_WIN32_IE >= 0x500) {
778     enum {
779         TTS_NOANIMATE = 0x10,
780         TTS_NOFADE    = 0x20,
781         TTS_BALLOON   = 0x40,
782         TTS_CLOSE     = 0x80
783     }
784 }
785
786 enum {
787     TTF_IDISHWND   = 1,
788     TTF_CENTERTIP  = 2,
789     TTF_RTLREADING = 4,
790     TTF_SUBCLASS   = 16
791 }
792 static if (_WIN32_IE >= 0x300) {
793     enum {
794         TTF_TRACK       = 0x0020,
795         TTF_ABSOLUTE    = 0x0080,
796         TTF_TRANSPARENT = 0x0100,
797         TTF_DI_SETITEM  = 0x8000
798     }
799
800     static if (_WIN32_IE >= 0x501) {
801         enum {
802             TTF_PARSELINKS = 0x1000
803         }
804     }
805
806     enum {
807         TBCD_TICS = 1,
808         TBCD_THUMB,
809         TBCD_CHANNEL // = 3
810     }
811 }
812
813 static if (_WIN32_IE >= 0x400) {
814     enum {
815         TBDDRET_DEFAULT,
816         TBDDRET_NODEFAULT,
817         TBDDRET_TREATPRESSED
818     }
819
820     enum {
821         TBIMHT_AFTER = 1,
822         TBIMHT_BACKGROUND
823     }
824 }
825
826 enum {
827     TTDT_AUTOMATIC,
828     TTDT_RESHOW,
829     TTDT_AUTOPOP,
830     TTDT_INITIAL
831 }
832
833 enum {
834     TTM_ACTIVATE        = WM_USER + 1,
835     TTM_SETDELAYTIME    = WM_USER + 3,
836     TTM_ADDTOOLA,
837     TTM_DELTOOLA,
838     TTM_NEWTOOLRECTA,
839     TTM_RELAYEVENT,
840     TTM_GETTOOLINFOA,
841     TTM_SETTOOLINFOA,
842     TTM_HITTESTA,
843     TTM_GETTEXTA,
844     TTM_UPDATETIPTEXTA,
845     TTM_GETTOOLCOUNT,
846     TTM_ENUMTOOLSA,
847     TTM_GETCURRENTTOOLA,
848     TTM_WINDOWFROMPOINT, // = WM_USER + 16
849     TTM_ADDTOOLW        = WM_USER + 50,
850     TTM_DELTOOLW,
851     TTM_NEWTOOLRECTW,
852     TTM_GETTOOLINFOW,
853     TTM_SETTOOLINFOW,
854     TTM_HITTESTW,
855     TTM_GETTEXTW,
856     TTM_UPDATETIPTEXTW,
857     TTM_ENUMTOOLSW,
858     TTM_GETCURRENTTOOLW // = WM_USER + 59
859 }
860
861 static if (_WIN32_IE >= 0x300) {
862     enum {
863         TTM_TRACKACTIVATE = WM_USER + 17,
864         TTM_TRACKPOSITION,
865         TTM_SETTIPBKCOLOR,
866         TTM_SETTIPTEXTCOLOR,
867         TTM_GETDELAYTIME,
868         TTM_GETTIPBKCOLOR,
869         TTM_GETTIPTEXTCOLOR,
870         TTM_SETMAXTIPWIDTH,
871         TTM_GETMAXTIPWIDTH,
872         TTM_SETMARGIN,
873         TTM_GETMARGIN,
874         TTM_POP // = WM_USER + 28
875     }
876 }
877
878 static if (_WIN32_IE >= 0x400) {  // IE4.0 ???
879     enum {
880         TTM_UPDATE = WM_USER + 29,
881         TTM_GETBUBBLESIZE,
882         TTM_ADJUSTRECT,
883         TTM_SETTITLEA,
884         TTM_SETTITLEW // = WM_USER + 33
885     }
886 }
887
888 enum {
889     TTN_GETDISPINFOA = TTN_FIRST - 0,
890     TTN_GETDISPINFOW = TTN_FIRST - 10,
891     TTN_NEEDTEXTA    = TTN_GETDISPINFOA,
892     TTN_NEEDTEXTW    = TTN_GETDISPINFOW,
893     TTN_SHOW         = TTN_FIRST-1,
894     TTN_POP          = TTN_FIRST-2
895 }
896
897 const UD_MAXVAL = 0x7fff;
898 const UD_MINVAL = -UD_MAXVAL;
899
900 enum {
901     UDN_DELTAPOS    = UDN_FIRST-1,
902     UDS_WRAP        = 1,
903     UDS_SETBUDDYINT = 2,
904     UDS_ALIGNRIGHT  = 4,
905     UDS_ALIGNLEFT   = 8,
906     UDS_AUTOBUDDY   = 16,
907     UDS_ARROWKEYS   = 32,
908     UDS_HORZ        = 64,
909     UDS_NOTHOUSANDS = 128
910 }
911
912 static if (_WIN32_IE >= 0x300) {
913     enum {
914         UDS_HOTTRACK = 0x0100
915     }
916 }
917
918 enum {
919     UDM_SETRANGE = WM_USER + 101,
920     UDM_GETRANGE,
921     UDM_SETPOS,
922     UDM_GETPOS,
923     UDM_SETBUDDY,
924     UDM_GETBUDDY,
925     UDM_SETACCEL,
926     UDM_GETACCEL,
927     UDM_SETBASE,
928     UDM_GETBASE // = WM_USER + 110
929 }
930
931 static if (_WIN32_IE >= 0x400) {
932     enum {
933         UDM_SETRANGE32 = WM_USER + 111,
934         UDM_GETRANGE32,
935         UDM_SETPOS32,
936         UDM_GETPOS32 // = WM_USER + 114
937     }
938 }
939
940 static if (_WIN32_IE >= 0x500) {
941     enum {
942         UDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
943         UDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
944     }
945 }
946
947 /*enum {
948     SB_SETTEXTA       = WM_USER + 1,
949     SB_GETTEXTA,
950     SB_GETTEXTLENGTHA,
951     SB_SETPARTS,   // = WM_USER + 4
952     SB_GETPARTS       = WM_USER + 6,
953     SB_GETBORDERS,
954     SB_SETMINHEIGHT,
955     SB_SIMPLE,
956     SB_GETRECT,
957     SB_SETTEXTW,
958     SB_GETTEXTLENGTHW,
959     SB_GETTEXTW    // = WM_USER + 13
960 }*/
961
962 /*enum {
963     SBT_OWNERDRAW  = 0x1000,
964     SBT_NOBORDERS  = 256,
965     SBT_POPOUT     = 512,
966     SBT_RTLREADING = 1024
967 }*/
968
969 static if(_WIN32_IE >= 0x400) {
970     enum {
971         SBT_TOOLTIPS         = 0x0800,
972         SBN_SIMPLEMODECHANGE = SBN_FIRST
973     }
974 }
975
976 enum {
977     TBS_AUTOTICKS      = 1,
978     TBS_VERT           = 2,
979     TBS_HORZ           = 0,
980     TBS_TOP            = 4,
981     TBS_BOTTOM         = 0,
982     TBS_LEFT           = 4,
983     TBS_RIGHT          = 0,
984     TBS_BOTH           = 8,
985     TBS_NOTICKS        = 16,
986     TBS_ENABLESELRANGE = 32,
987     TBS_FIXEDLENGTH    = 64,
988     TBS_NOTHUMB        = 128
989 }
990
991 static if (_WIN32_IE >= 0x300) {
992     enum {
993         TBS_TOOLTIPS = 0x0100,
994         TBTS_TOP     = 0,
995         TBTS_LEFT,
996         TBTS_BOTTOM,
997         TBTS_RIGHT // = 3
998     }
999 }
1000
1001 static if (_WIN32_IE >= 0x500) {
1002     enum {
1003         TBS_REVERSED = 0x0200
1004     }
1005 }
1006
1007 static if (_WIN32_IE >= 0x501) {
1008     enum {
1009         TBS_DOWNISLEFT = 0x0400
1010     }
1011 }
1012
1013 static if (_WIN32_IE >= 0x400) {
1014     enum {
1015         TBIF_BYINDEX = 0x80000000,
1016         TBIF_COMMAND = 32,
1017         TBIF_IMAGE   = 1,
1018         TBIF_LPARAM  = 16,
1019         TBIF_SIZE    = 64,
1020         TBIF_STATE   = 4,
1021         TBIF_STYLE   = 8,
1022         TBIF_TEXT    = 2
1023     }
1024 }
1025
1026 enum {
1027     TBM_GETPOS           = WM_USER,
1028     TBM_GETRANGEMIN,
1029     TBM_GETRANGEMAX,
1030     TBM_GETTIC,
1031     TBM_SETTIC,
1032     TBM_SETPOS,
1033     TBM_SETRANGE,
1034     TBM_SETRANGEMIN,
1035     TBM_SETRANGEMAX,
1036     TBM_CLEARTICS,
1037     TBM_SETSEL,
1038     TBM_SETSELSTART,
1039     TBM_SETSELEND,    // = WM_USER+12,
1040     TBM_GETPTICS         = WM_USER+14,
1041     TBM_GETTICPOS,
1042     TBM_GETNUMTICS,
1043     TBM_GETSELSTART,
1044     TBM_GETSELEND,
1045     TBM_CLEARSEL,
1046     TBM_SETTICFREQ,
1047     TBM_SETPAGESIZE,
1048     TBM_GETPAGESIZE,
1049     TBM_SETLINESIZE,
1050     TBM_GETLINESIZE,
1051     TBM_GETTHUMBRECT,
1052     TBM_GETCHANNELRECT,
1053     TBM_SETTHUMBLENGTH,
1054     TBM_GETTHUMBLENGTH,
1055     TBM_SETTOOLTIPS,
1056     TBM_GETTOOLTIPS,
1057     TBM_SETTIPSIDE,
1058     TBM_SETBUDDY,
1059     TBM_GETBUDDY, //     = WM_USER+33,
1060     TBM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT,
1061     TBM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT
1062 }
1063
1064 enum {
1065     TB_LINEUP,
1066     TB_LINEDOWN,
1067     TB_PAGEUP,
1068     TB_PAGEDOWN,
1069     TB_THUMBPOSITION,
1070     TB_THUMBTRACK,
1071     TB_TOP,
1072     TB_BOTTOM,
1073     TB_ENDTRACK // = 8
1074 }
1075
1076 enum {
1077     HOTKEYF_SHIFT   = 1,
1078     HOTKEYF_CONTROL = 2,
1079     HOTKEYF_ALT     = 4,
1080     HOTKEYF_EXT     = 8
1081 }
1082
1083 enum {
1084     HKCOMB_NONE = 1,
1085     HKCOMB_S    = 2,
1086     HKCOMB_C    = 4,
1087     HKCOMB_A    = 8,
1088     HKCOMB_SC   = 16,
1089     HKCOMB_SA   = 32,
1090     HKCOMB_CA   = 64,
1091     HKCOMB_SCA  = 128
1092 }
1093
1094 enum {
1095     HKM_SETHOTKEY = WM_USER + 1,
1096     HKM_GETHOTKEY = WM_USER + 2,
1097     HKM_SETRULES  = WM_USER + 3
1098 }
1099
1100 enum {
1101     PBM_SETRANGE     = WM_USER + 1,
1102     PBM_SETPOS,
1103     PBM_DELTAPOS,
1104     PBM_SETSTEP,
1105     PBM_STEPIT,   // = WM_USER + 5
1106     PBM_SETRANGE32   = 1030,
1107     PBM_GETRANGE,
1108     PBM_GETPOS,
1109     PBM_SETBARCOLOR, // = 1033
1110     PBM_SETBKCOLOR   = CCM_SETBKCOLOR
1111 }
1112
1113 enum {
1114     PBS_SMOOTH   = 1,
1115     PBS_VERTICAL = 4
1116 }
1117
1118 enum {
1119     LVS_ICON,
1120     LVS_REPORT,
1121     LVS_SMALLICON,
1122     LVS_LIST,        // = 3
1123     LVS_TYPEMASK        = 3,
1124     LVS_SINGLESEL       = 4,
1125     LVS_SHOWSELALWAYS   = 8,
1126     LVS_SORTASCENDING   = 16,
1127     LVS_SORTDESCENDING  = 32,
1128     LVS_SHAREIMAGELISTS = 64,
1129     LVS_NOLABELWRAP     = 128,
1130     LVS_AUTOARRANGE     = 256,
1131     LVS_EDITLABELS      = 512,
1132     LVS_NOSCROLL        = 0x2000,
1133     LVS_TYPESTYLEMASK   = 0xFC00,
1134     LVS_ALIGNTOP        = 0,
1135     LVS_ALIGNLEFT       = 0x800,
1136     LVS_ALIGNMASK       = 0xC00,
1137     LVS_OWNERDRAWFIXED  = 0x400,
1138     LVS_NOCOLUMNHEADER  = 0x4000,
1139     LVS_NOSORTHEADER    = 0x8000
1140 }
1141
1142 static if (_WIN32_IE >= 0x300) {
1143     enum {
1144         CDIS_CHECKED       = 8,
1145         CDIS_DEFAULT       = 32,
1146         CDIS_DISABLED      = 4,
1147         CDIS_FOCUS         = 16,
1148         CDIS_GRAYED        = 2,
1149         CDIS_HOT           = 64,
1150         CDIS_SELECTED      = 1,
1151         CDIS_MARKED        = 128,
1152         CDIS_INDETERMINATE = 256
1153     }
1154
1155     static if (_WIN32_WINNT >= 0x501) {
1156         enum {
1157             CDIS_SHOWKEYBOARDCUES = 512
1158         }
1159     }
1160
1161     enum {
1162         CDDS_POSTERASE     = 4,
1163         CDDS_POSTPAINT     = 2,
1164         CDDS_PREERASE      = 3,
1165         CDDS_PREPAINT      = 1,
1166         CDDS_ITEM          = 65536,
1167         CDDS_ITEMPOSTERASE = 65540,
1168         CDDS_ITEMPOSTPAINT = 65538,
1169         CDDS_ITEMPREERASE  = 65539,
1170         CDDS_ITEMPREPAINT  = 65537
1171     }
1172
1173     static if (_WIN32_IE >= 0x400) {
1174         enum {
1175             CDDS_SUBITEM = 0x20000
1176         }
1177     }
1178
1179     enum {
1180         CDRF_DODEFAULT         = 0x00,
1181         CDRF_NOTIFYITEMDRAW    = 0x20,
1182         CDRF_NOTIFYSUBITEMDRAW = 0x20,
1183         CDRF_NOTIFYITEMERASE   = 0x80,
1184         CDRF_NOTIFYPOSTERASE   = 0x40,
1185         CDRF_NOTIFYPOSTPAINT   = 0x10,
1186         CDRF_NEWFONT           = 0x02,
1187         CDRF_SKIPDEFAULT       = 0x04
1188     }
1189
1190     static if (_WIN32_IE >= 0x400) {
1191         enum {
1192             LVBKIF_SOURCE_NONE    = 0x00000000,
1193             LVBKIF_SOURCE_HBITMAP = 0x00000001,
1194             LVBKIF_SOURCE_URL     = 0x00000002,
1195             LVBKIF_SOURCE_MASK    = 0x00000003,
1196             LVBKIF_STYLE_NORMAL   = 0x00000000,
1197             LVBKIF_STYLE_TILE     = 0x00000010,
1198             LVBKIF_STYLE_MASK     = 0x00000010
1199         }
1200     }
1201
1202     static if (_WIN32_WINNT >= 0x501) {
1203         enum {
1204             LVBKIF_FLAG_TILEOFFSET = 0x00000100,
1205             LVBKIF_TYPE_WATERMARK  = 0x10000000
1206         }
1207     }
1208
1209     enum {
1210         LVS_OWNERDATA = 4096
1211     }
1212
1213     enum {
1214         LVS_EX_CHECKBOXES       = 4,
1215         LVS_EX_FULLROWSELECT    = 32,
1216         LVS_EX_GRIDLINES        = 1,
1217         LVS_EX_HEADERDRAGDROP   = 16,
1218         LVS_EX_ONECLICKACTIVATE = 64,
1219         LVS_EX_SUBITEMIMAGES    = 2,
1220         LVS_EX_TRACKSELECT      = 8,
1221         LVS_EX_TWOCLICKACTIVATE = 128
1222     }
1223
1224     enum {
1225         LVSICF_NOINVALIDATEALL = 0x00000001,
1226         LVSICF_NOSCROLL        = 0x00000002
1227     }
1228
1229     static if(_WIN32_IE >= 0x400) {
1230         enum {
1231             LVS_EX_FLATSB         = 0x00000100,
1232             LVS_EX_REGIONAL       = 0x00000200,
1233             LVS_EX_INFOTIP        = 0x00000400,
1234             LVS_EX_UNDERLINEHOT   = 0x00000800,
1235             LVS_EX_UNDERLINECOLD  = 0x00001000,
1236             LVS_EX_MULTIWORKAREAS = 0x00002000
1237         }
1238     }
1239
1240     static if(_WIN32_IE >= 0x500) {
1241         enum {
1242             LVS_EX_LABELTIP     = 0x00004000,
1243             LVS_EX_BORDERSELECT = 0x00008000
1244         }
1245     }
1246 }
1247
1248 enum {
1249     LVSIL_NORMAL,
1250     LVSIL_SMALL,
1251     LVSIL_STATE
1252 }
1253
1254 enum {
1255     LVM_GETBKCOLOR             = LVM_FIRST,
1256     LVM_SETBKCOLOR,
1257     LVM_GETIMAGELIST,
1258     LVM_SETIMAGELIST,
1259     LVM_GETITEMCOUNT,       // = LVM_FIRST +   4
1260     LVM_SORTITEMSEX            = LVM_FIRST +  81,
1261     LVM_SETVIEW                = LVM_FIRST + 142,
1262     LVM_GETVIEW,            // = LVM_FIRST + 143
1263     LVM_INSERTGROUP            = LVM_FIRST + 145,
1264     LVM_SETGROUPINFO           = LVM_FIRST + 147,
1265     LVM_GETGROUPINFO           = LVM_FIRST + 149,
1266     LVM_REMOVEGROUP,
1267     LVM_MOVEGROUP,          // = LVM_FIRST + 151
1268     LVM_SETGROUPMETRICS        = LVM_FIRST + 155,
1269     LVM_GETGROUPMETRICS,
1270     LVM_ENABLEGROUPVIEW,
1271     LVM_SORTGROUPS,
1272     LVM_INSERTGROUPSORTED,
1273     LVM_REMOVEALLGROUPS,
1274     LVM_HASGROUP,
1275     LVM_SETTILEVIEWINFO,
1276     LVM_GETTILEVIEWINFO,
1277     LVM_SETTILEINFO,
1278     LVM_GETTILEINFO,
1279     LVM_SETINSERTMARK,
1280     LVM_GETINSERTMARK,
1281     LVM_INSERTMARKHITTEST,
1282     LVM_GETINSERTMARKRECT,
1283     LVM_SETINSERTMARKCOLOR,
1284     LVM_GETINSERTMARKCOLOR, // = LVM_FIRST + 171
1285     LVM_SETINFOTIP             = LVM_FIRST + 173,
1286     LVM_GETSELECTEDCOLUMN,
1287     LVM_ISGROUPVIEWENABLED,
1288     LVM_GETOUTLINECOLOR,
1289     LVM_SETOUTLINECOLOR,    // = LVM_FIRST + 177
1290     LVM_CANCELEDITLABEL        = LVM_FIRST + 179,
1291     LVM_MAPIDTOINDEX           = LVM_FIRST + 181
1292 }
1293
1294 static if (_WIN32_WINNT >= 0x501) {
1295     enum {
1296         LVM_SETSELECTEDCOLUMN  = LVM_FIRST + 140
1297     }
1298 }
1299
1300 enum {
1301     LVIF_TEXT  = 1,
1302     LVIF_IMAGE = 2,
1303     LVIF_PARAM = 4,
1304     LVIF_STATE = 8
1305 }
1306
1307 static if (_WIN32_IE >= 0x300) {
1308     enum {
1309         LVIF_INDENT      = 16,
1310         LVIF_NORECOMPUTE = 2048
1311     }
1312 }
1313
1314 static if (_WIN32_WINNT >= 0x501) {
1315     enum {
1316         LVIF_GROUPID = 128,
1317         LVIF_COLUMNS = 256
1318     }
1319 }
1320
1321 enum {
1322     LVIS_FOCUSED        = 1,
1323     LVIS_SELECTED       = 2,
1324     LVIS_CUT            = 4,
1325     LVIS_DROPHILITED    = 8,
1326     LVIS_OVERLAYMASK    = 0xF00,
1327     LVIS_STATEIMAGEMASK = 0xF000
1328 }
1329
1330 const LPWSTR LPSTR_TEXTCALLBACKW = cast(LPWSTR) -1;
1331 const LPSTR  LPSTR_TEXTCALLBACKA = cast(LPSTR) -1;
1332
1333 const I_IMAGECALLBACK = -1;
1334
1335 static if(_WIN32_IE >= 0x400) {
1336     enum {
1337         LVM_SETBKIMAGEA          = LVM_FIRST + 68,
1338         LVM_SETBKIMAGEW          = LVM_FIRST + 138,
1339         LVM_GETBKIMAGEA          = LVM_FIRST + 69,
1340         LVM_GETBKIMAGEW          = LVM_FIRST + 139,
1341         LV_MAX_WORKAREAS         = 16,
1342         LVM_SETWORKAREAS         = LVM_FIRST + 65,
1343         LVM_GETWORKAREAS         = LVM_FIRST + 70,
1344         LVM_GETNUMBEROFWORKAREAS = LVM_FIRST + 73,
1345         LVM_GETSELECTIONMARK     = LVM_FIRST + 66,
1346         LVM_SETSELECTIONMARK     = LVM_FIRST + 67,
1347         LVM_SETHOVERTIME         = LVM_FIRST + 71,
1348         LVM_GETHOVERTIME         = LVM_FIRST + 72,
1349         LVM_SETTOOLTIPS          = LVM_FIRST + 74,
1350         LVM_GETTOOLTIPS          = LVM_FIRST + 78,
1351         LVM_SETUNICODEFORMAT     = CCM_SETUNICODEFORMAT,
1352         LVM_GETUNICODEFORMAT     = CCM_GETUNICODEFORMAT
1353     }
1354 }
1355
1356 enum {
1357     LVNI_ALL,
1358     LVNI_FOCUSED     = 1,
1359     LVNI_SELECTED    = 2,
1360     LVNI_CUT         = 4,
1361     LVNI_DROPHILITED = 8,
1362     LVNI_ABOVE       = 256,
1363     LVNI_BELOW       = 512,
1364     LVNI_TOLEFT      = 1024,
1365     LVNI_TORIGHT     = 2048
1366 }
1367
1368 enum {
1369     LVM_GETITEMA          = LVM_FIRST + 5,
1370     LVM_SETITEMA,
1371     LVM_INSERTITEMA,
1372     LVM_DELETEITEM,
1373     LVM_DELETEALLITEMS,
1374     LVM_GETCALLBACKMASK,
1375     LVM_SETCALLBACKMASK,
1376     LVM_GETNEXTITEM,
1377     LVM_FINDITEMA,
1378     LVM_GETITEMRECT,
1379     LVM_SETITEMPOSITION,
1380     LVM_GETITEMPOSITION,
1381     LVM_GETSTRINGWIDTHA,
1382     LVM_HITTEST,
1383     LVM_ENSUREVISIBLE,
1384     LVM_SCROLL,
1385     LVM_REDRAWITEMS,
1386     LVM_ARRANGE,
1387     LVM_EDITLABELA,
1388     LVM_GETEDITCONTROL,
1389     LVM_GETCOLUMNA,
1390     LVM_SETCOLUMNA,
1391     LVM_INSERTCOLUMNA,
1392     LVM_DELETECOLUMN,
1393     LVM_GETCOLUMNWIDTH,
1394     LVM_SETCOLUMNWIDTH, // = LVM_FIRST + 30,
1395     LVM_CREATEDRAGIMAGE   = LVM_FIRST + 33,
1396     LVM_GETVIEWRECT,
1397     LVM_GETTEXTCOLOR,
1398     LVM_SETTEXTCOLOR,
1399     LVM_GETTEXTBKCOLOR,
1400     LVM_SETTEXTBKCOLOR,
1401     LVM_GETTOPINDEX,
1402     LVM_GETCOUNTPERPAGE,
1403     LVM_GETORIGIN,
1404     LVM_UPDATE,
1405     LVM_SETITEMSTATE,
1406     LVM_GETITEMSTATE,
1407     LVM_GETITEMTEXTA,
1408     LVM_SETITEMTEXTA,
1409     LVM_SETITEMCOUNT,
1410     LVM_SORTITEMS,
1411     LVM_SETITEMPOSITION32,
1412     LVM_GETSELECTEDCOUNT,
1413     LVM_GETITEMSPACING,
1414     LVM_GETISEARCHSTRINGA, // = LVM_FIRST + 52,
1415     LVM_GETITEMW          = LVM_FIRST + 75,
1416     LVM_SETITEMW          = LVM_FIRST + 76,
1417     LVM_INSERTITEMW       = LVM_FIRST + 77,
1418     LVM_FINDITEMW         = LVM_FIRST + 83,
1419     LVM_GETSTRINGWIDTHW   = LVM_FIRST + 87,
1420     LVM_GETCOLUMNW        = LVM_FIRST + 95,
1421     LVM_SETCOLUMNW        = LVM_FIRST + 96,
1422     LVM_INSERTCOLUMNW     = LVM_FIRST + 97,
1423     LVM_GETITEMTEXTW      = LVM_FIRST + 115,
1424     LVM_SETITEMTEXTW,
1425     LVM_GETISEARCHSTRINGW,
1426     LVM_EDITLABELW     // = LVM_FIRST + 118,
1427 }
1428
1429 static if (_WIN32_IE >= 0x300) {
1430     enum {
1431         LVM_GETHEADER                = LVM_FIRST + 31,
1432         LVM_SETICONSPACING           = LVM_FIRST + 53,
1433         LVM_SETEXTENDEDLISTVIEWSTYLE,
1434         LVM_GETEXTENDEDLISTVIEWSTYLE,
1435         LVM_GETSUBITEMRECT,
1436         LVM_SUBITEMHITTEST,
1437         LVM_SETCOLUMNORDERARRAY,
1438         LVM_GETCOLUMNORDERARRAY,
1439         LVM_SETHOTITEM,
1440         LVM_GETHOTITEM,
1441         LVM_SETHOTCURSOR,
1442         LVM_GETHOTCURSOR,
1443         LVM_APPROXIMATEVIEWRECT   // = LVM_FIRST + 64,
1444     }
1445 }
1446
1447 enum {
1448     LVFI_PARAM     = 1,
1449     LVFI_STRING    = 2,
1450     LVFI_PARTIAL   = 8,
1451     LVFI_WRAP      = 32,
1452     LVFI_NEARESTXY = 64
1453 }
1454
1455 enum {
1456     LVIF_DI_SETITEM = 0x1000
1457 }
1458
1459 enum {
1460     LVIR_BOUNDS,
1461     LVIR_ICON,
1462     LVIR_LABEL,
1463     LVIR_SELECTBOUNDS // = 3
1464 }
1465
1466 enum {
1467     LVHT_NOWHERE         = 1,
1468     LVHT_ONITEMICON      = 2,
1469     LVHT_ONITEMLABEL     = 4,
1470     LVHT_ONITEMSTATEICON = 8,
1471     LVHT_ONITEM          = LVHT_ONITEMICON | LVHT_ONITEMLABEL
1472                            | LVHT_ONITEMSTATEICON,
1473     LVHT_ABOVE           = 8,
1474     LVHT_BELOW           = 16,
1475     LVHT_TORIGHT         = 32,
1476     LVHT_TOLEFT          = 64
1477 }
1478
1479 enum {
1480     LVA_DEFAULT    = 0,
1481     LVA_ALIGNLEFT  = 1,
1482     LVA_ALIGNTOP   = 2,
1483     LVA_SNAPTOGRID = 5
1484 }
1485
1486 enum {
1487     LVCF_FMT     = 1,
1488     LVCF_WIDTH   = 2,
1489     LVCF_TEXT    = 4,
1490     LVCF_SUBITEM = 8
1491 }
1492
1493 static if (_WIN32_IE >= 0x300) {
1494     enum {
1495         LVCF_IMAGE = 16,
1496         LVCF_ORDER = 32
1497     }
1498 }
1499
1500 enum {
1501     LVCFMT_LEFT,
1502     LVCFMT_RIGHT,
1503     LVCFMT_CENTER,
1504     LVCFMT_JUSTIFYMASK // = 3
1505 }
1506
1507 static if (_WIN32_IE >= 0x300) {
1508     enum {
1509         LVCFMT_IMAGE           = 2048,
1510         LVCFMT_BITMAP_ON_RIGHT = 4096,
1511         LVCFMT_COL_HAS_IMAGES  = 32768
1512     }
1513 }
1514
1515 enum {
1516     LVSCW_AUTOSIZE           = -1,
1517     LVSCW_AUTOSIZE_USEHEADER = -2
1518 }
1519
1520 enum {
1521     LVN_ITEMCHANGING    = LVN_FIRST,
1522     LVN_ITEMCHANGED     = LVN_FIRST - 1,
1523     LVN_INSERTITEM      = LVN_FIRST - 2,
1524     LVN_DELETEITEM      = LVN_FIRST - 3,
1525     LVN_DELETEALLITEMS  = LVN_FIRST - 4,
1526     LVN_BEGINLABELEDITA = LVN_FIRST - 5,
1527     LVN_ENDLABELEDITA   = LVN_FIRST - 6,
1528     LVN_COLUMNCLICK     = LVN_FIRST - 8,
1529     LVN_BEGINDRAG       = LVN_FIRST - 9,
1530     LVN_BEGINRDRAG      = LVN_FIRST - 11,
1531     LVN_GETDISPINFOA    = LVN_FIRST - 50,
1532     LVN_SETDISPINFOA    = LVN_FIRST - 51,
1533     LVN_KEYDOWN         = LVN_FIRST - 55,
1534     LVN_BEGINLABELEDITW = LVN_FIRST - 75,
1535     LVN_ENDLABELEDITW   = LVN_FIRST - 76,
1536     LVN_GETDISPINFOW    = LVN_FIRST - 77,
1537     LVN_SETDISPINFOW    = LVN_FIRST - 78
1538 }
1539
1540 static if (_WIN32_IE >= 0x400) {
1541     enum {
1542         LVN_MARQUEEBEGIN = LVN_FIRST - 56,
1543         LVN_GETINFOTIPA  = LVN_FIRST - 57,
1544         LVN_GETINFOTIPW  = LVN_FIRST - 58,
1545         LVKF_ALT         = 1,
1546         LVKF_CONTROL     = 2,
1547         LVKF_SHIFT       = 4,
1548         LVGIT_UNFOLDED   = 1
1549     }
1550 }
1551
1552 enum {
1553     TVS_HASBUTTONS      = 1,
1554     TVS_HASLINES        = 2,
1555     TVS_LINESATROOT     = 4,
1556     TVS_EDITLABELS      = 8,
1557     TVS_DISABLEDRAGDROP = 16,
1558     TVS_SHOWSELALWAYS   = 32
1559 }
1560
1561 static if (_WIN32_IE >= 0x300) {
1562     enum {
1563         TVS_RTLREADING  = 64,
1564         TVS_NOTOOLTIPS  = 128,
1565         TVS_CHECKBOXES  = 256,
1566         TVS_TRACKSELECT = 512
1567     }
1568 }
1569
1570 static if (_WIN32_IE >= 0x400) {
1571     enum {
1572         TVS_SINGLEEXPAND  = 1024,
1573         TVS_INFOTIP       = 2048,
1574         TVS_FULLROWSELECT = 4096,
1575         TVS_NOSCROLL      = 8192,
1576         TVS_NONEVENHEIGHT = 16384
1577     }
1578 }
1579
1580 static if (_WIN32_IE >= 0x500) {
1581     enum {
1582         TVS_NOHSCROLL = 0x8000
1583     }
1584 }
1585
1586 enum {
1587     TVIF_TEXT          = 1,
1588     TVIF_IMAGE         = 2,
1589     TVIF_PARAM         = 4,
1590     TVIF_STATE         = 8,
1591     TVIF_HANDLE        = 16,
1592     TVIF_SELECTEDIMAGE = 32,
1593     TVIF_CHILDREN      = 64
1594 }
1595
1596 static if (_WIN32_IE >= 0x400) {
1597     enum {
1598         TVIF_INTEGRAL = 0x0080
1599     }
1600 }
1601
1602 enum {
1603     TVIS_FOCUSED        = 1,
1604     TVIS_SELECTED       = 2,
1605     TVIS_CUT            = 4,
1606     TVIS_DROPHILITED    = 8,
1607     TVIS_BOLD           = 16,
1608     TVIS_EXPANDED       = 32,
1609     TVIS_EXPANDEDONCE   = 64,
1610     TVIS_OVERLAYMASK    = 0xF00,
1611     TVIS_STATEIMAGEMASK = 0xF000,
1612     TVIS_USERMASK       = 0xF000
1613 }
1614
1615 enum {
1616     I_CHILDRENCALLBACK = -1
1617 }
1618
1619 alias HANDLE HTREEITEM;
1620
1621 const HTREEITEM
1622     TVI_ROOT  = cast(HTREEITEM) 0xFFFF0000,
1623     TVI_FIRST = cast(HTREEITEM) 0xFFFF0001,
1624     TVI_LAST  = cast(HTREEITEM) 0xFFFF0002,
1625     TVI_SORT  = cast(HTREEITEM) 0xFFFF0003;
1626
1627 enum {
1628     TVSIL_NORMAL = 0,
1629     TVSIL_STATE  = 2
1630 }
1631
1632 enum {
1633     TVM_INSERTITEMA       = TV_FIRST,
1634     TVM_DELETEITEM        = TV_FIRST + 1,
1635     TVM_EXPAND            = TV_FIRST + 2,
1636     TVM_GETITEMRECT       = TV_FIRST + 4,
1637     TVM_GETCOUNT,
1638     TVM_GETINDENT,
1639     TVM_SETINDENT,
1640     TVM_GETIMAGELIST,
1641     TVM_SETIMAGELIST,
1642     TVM_GETNEXTITEM,
1643     TVM_SELECTITEM,
1644     TVM_GETITEMA,
1645     TVM_SETITEMA,
1646     TVM_EDITLABELA,
1647     TVM_GETEDITCONTROL,
1648     TVM_GETVISIBLECOUNT,
1649     TVM_HITTEST,
1650     TVM_CREATEDRAGIMAGE,
1651     TVM_SORTCHILDREN,
1652     TVM_ENSUREVISIBLE,
1653     TVM_SORTCHILDRENCB,
1654     TVM_ENDEDITLABELNOW,
1655     TVM_GETISEARCHSTRINGA, // = TV_FIRST + 23
1656     TVM_INSERTITEMW       = TV_FIRST + 50,
1657     TVM_GETITEMW          = TV_FIRST + 62,
1658     TVM_SETITEMW          = TV_FIRST + 63,
1659     TVM_GETISEARCHSTRINGW = TV_FIRST + 64,
1660     TVM_EDITLABELW        = TV_FIRST + 65
1661 }
1662
1663 static if (_WIN32_IE >= 0x300) {
1664     enum {
1665         TVM_GETTOOLTIPS = TV_FIRST + 25,
1666         TVM_SETTOOLTIPS = TV_FIRST + 24
1667     }
1668 }
1669
1670 static if (_WIN32_IE >= 0x400) {
1671     enum {
1672         TVM_SETINSERTMARK      = TV_FIRST + 26,
1673         TVM_SETITEMHEIGHT,
1674         TVM_GETITEMHEIGHT,
1675         TVM_SETBKCOLOR,
1676         TVM_SETTEXTCOLOR,
1677         TVM_GETBKCOLOR,
1678         TVM_GETTEXTCOLOR,
1679         TVM_SETSCROLLTIME,
1680         TVM_GETSCROLLTIME,  // = TV_FIRST + 34
1681         TVM_SETINSERTMARKCOLOR = TV_FIRST + 37,
1682         TVM_GETINSERTMARKCOLOR = TV_FIRST + 38,
1683         TVM_SETUNICODEFORMAT   = CCM_SETUNICODEFORMAT,
1684         TVM_GETUNICODEFORMAT   = CCM_GETUNICODEFORMAT
1685     }
1686 }
1687
1688 static if (_WIN32_IE >= 0x500) {
1689     enum {
1690         TVM_GETITEMSTATE = TV_FIRST + 39,
1691         TVM_SETLINECOLOR = TV_FIRST + 40,
1692         TVM_GETLINECOLOR = TV_FIRST + 41
1693     }
1694 }
1695
1696 enum {
1697     TVE_COLLAPSE      = 1,
1698     TVE_EXPAND        = 2,
1699     TVE_TOGGLE        = 3,
1700     TVE_COLLAPSERESET = 0x8000
1701 }
1702
1703 static if (_WIN32_IE >= 0x300) {
1704     enum {
1705         TVE_EXPANDPARTIAL = 0x4000
1706     }
1707 }
1708
1709 enum {
1710     TVC_UNKNOWN,
1711     TVC_BYMOUSE,
1712     TVC_BYKEYBOARD // = 2
1713 }
1714
1715 enum {
1716     TVGN_ROOT,
1717     TVGN_NEXT,
1718     TVGN_PREVIOUS,
1719     TVGN_PARENT,
1720     TVGN_CHILD,
1721     TVGN_FIRSTVISIBLE,
1722     TVGN_NEXTVISIBLE,
1723     TVGN_PREVIOUSVISIBLE,
1724     TVGN_DROPHILITE,
1725     TVGN_CARET // = 9
1726 }
1727
1728 static if (_WIN32_IE >= 0x400) {
1729     enum {
1730         TVGN_LASTVISIBLE = 10
1731     }
1732 }
1733
1734 enum {
1735     TVN_SELCHANGINGA    = TVN_FIRST - 1,
1736     TVN_SELCHANGEDA     = TVN_FIRST - 2,
1737     TVN_GETDISPINFOA    = TVN_FIRST - 3,
1738     TVN_SETDISPINFOA    = TVN_FIRST - 4,
1739     TVN_ITEMEXPANDINGA  = TVN_FIRST - 5,
1740     TVN_ITEMEXPANDEDA   = TVN_FIRST - 6,
1741     TVN_BEGINDRAGA      = TVN_FIRST - 7,
1742     TVN_BEGINRDRAGA     = TVN_FIRST - 8,
1743     TVN_DELETEITEMA     = TVN_FIRST - 9,
1744     TVN_BEGINLABELEDITA = TVN_FIRST - 10,
1745     TVN_ENDLABELEDITA   = TVN_FIRST - 11,
1746     TVN_KEYDOWN         = TVN_FIRST - 12,
1747     TVN_SELCHANGINGW    = TVN_FIRST - 50,
1748     TVN_SELCHANGEDW     = TVN_FIRST - 51,
1749     TVN_GETDISPINFOW    = TVN_FIRST - 52,
1750     TVN_SETDISPINFOW    = TVN_FIRST - 53,
1751     TVN_ITEMEXPANDINGW  = TVN_FIRST - 54,
1752     TVN_ITEMEXPANDEDW   = TVN_FIRST - 55,
1753     TVN_BEGINDRAGW      = TVN_FIRST - 56,
1754     TVN_BEGINRDRAGW     = TVN_FIRST - 57,
1755     TVN_DELETEITEMW     = TVN_FIRST - 58,
1756     TVN_BEGINLABELEDITW = TVN_FIRST - 59,
1757     TVN_ENDLABELEDITW   = TVN_FIRST - 60
1758 }
1759
1760 static if (_WIN32_IE >= 0x400) {
1761     enum {
1762         TVNRET_DEFAULT   = 0,
1763         TVNRET_SKIPOLD   = 1,
1764         TVNRET_SKIPNEW   = 2,
1765         TVN_GETINFOTIPA  = TVN_FIRST - 13,
1766         TVN_GETINFOTIPW  = TVN_FIRST - 14,
1767         TVN_SINGLEEXPAND = TVN_FIRST - 15
1768     }
1769 }
1770
1771 enum {
1772     TVIF_DI_SETITEM = 0x1000
1773 }
1774
1775 enum {
1776     TVHT_NOWHERE         = 1,
1777     TVHT_ONITEMICON      = 2,
1778     TVHT_ONITEMLABEL     = 4,
1779     TVHT_ONITEMINDENT    = 8,
1780     TVHT_ONITEMBUTTON    = 16,
1781     TVHT_ONITEMRIGHT     = 32,
1782     TVHT_ONITEMSTATEICON = 64,
1783     TVHT_ABOVE           = 256,
1784     TVHT_BELOW           = 512,
1785     TVHT_TORIGHT         = 1024,
1786     TVHT_TOLEFT          = 2048,
1787     TCHT_NOWHERE         = 1,
1788     TCHT_ONITEMICON      = 2,
1789     TCHT_ONITEMLABEL     = 4,
1790     TVHT_ONITEM          = TVHT_ONITEMICON | TVHT_ONITEMLABEL
1791                            | TVHT_ONITEMSTATEICON,
1792     TCHT_ONITEM          = TCHT_ONITEMICON | TCHT_ONITEMLABEL
1793 }
1794
1795 enum {
1796     TCS_TABS              = 0,
1797     TCS_RIGHTJUSTIFY      = 0,
1798     TCS_SINGLELINE        = 0,
1799     TCS_FORCEICONLEFT     = 16,
1800     TCS_FORCELABELLEFT    = 32,
1801     TCS_BUTTONS           = 256,
1802     TCS_MULTILINE         = 512,
1803     TCS_FIXEDWIDTH        = 1024,
1804     TCS_RAGGEDRIGHT       = 2048,
1805     TCS_FOCUSONBUTTONDOWN = 0x1000,
1806     TCS_OWNERDRAWFIXED    = 0x2000,
1807     TCS_TOOLTIPS          = 0x4000,
1808     TCS_FOCUSNEVER        = 0x8000
1809 }
1810
1811 static if (_WIN32_IE >= 0x300) {
1812     enum {
1813         TCS_BOTTOM         = 2,
1814         TCS_RIGHT          = 2,
1815         TCS_VERTICAL       = 128,
1816         TCS_SCROLLOPPOSITE = 0x0001,
1817         TCS_HOTTRACK       = 0x0040,
1818         TCS_MULTISELECT    = 0x0004
1819     }
1820 }
1821
1822 static if(_WIN32_IE >= 0x400) {
1823     enum {
1824         TCS_FLATBUTTONS       = 0x0008,
1825         TCS_EX_FLATSEPARATORS = 0x00000001,
1826         TCS_EX_REGISTERDROP   = 0x00000002
1827     }
1828 }
1829
1830 enum {
1831     TCIF_TEXT       = 1,
1832     TCIF_IMAGE      = 2,
1833     TCIF_RTLREADING = 4,
1834     TCIF_PARAM      = 8
1835 }
1836
1837 static if (_WIN32_IE >= 0x400) {
1838     enum {
1839         TCIF_STATE = 16
1840     }
1841 }
1842
1843 enum {
1844     TCIS_BUTTONPRESSED = 1
1845 }
1846
1847 static if (_WIN32_IE >= 0x400) {
1848     enum {
1849         TCIS_HIGHLIGHTED = 2
1850     }
1851 }
1852
1853 enum {
1854     TCM_FIRST          = 0x1300,
1855     TCM_GETIMAGELIST   = TCM_FIRST + 2,
1856     TCM_SETIMAGELIST,
1857     TCM_GETITEMCOUNT,
1858     TCM_GETITEMA,
1859     TCM_SETITEMA,
1860     TCM_INSERTITEMA,
1861     TCM_DELETEITEM,
1862     TCM_DELETEALLITEMS,
1863     TCM_GETITEMRECT,
1864     TCM_GETCURSEL,
1865     TCM_SETCURSEL,
1866     TCM_HITTEST,
1867     TCM_SETITEMEXTRA, // = TCM_FIRST + 14
1868     TCM_ADJUSTRECT     = TCM_FIRST + 40,
1869     TCM_SETITEMSIZE,
1870     TCM_REMOVEIMAGE,
1871     TCM_SETPADDING,
1872     TCM_GETROWCOUNT,
1873     TCM_GETTOOLTIPS,
1874     TCM_SETTOOLTIPS,
1875     TCM_GETCURFOCUS,
1876     TCM_SETCURFOCUS,
1877     TCM_SETMINTABWIDTH,
1878     TCM_DESELECTALL, // = TCM_FIRST + 50
1879     TCM_GETITEMW       = TCM_FIRST + 60,
1880     TCM_SETITEMW       = TCM_FIRST + 61,
1881     TCM_INSERTITEMW    = TCM_FIRST + 62
1882 }
1883
1884 static if (_WIN32_IE >=0x0400) {
1885     enum {
1886         TCM_HIGHLIGHTITEM    = TCM_FIRST + 51,
1887         TCM_SETEXTENDEDSTYLE = TCM_FIRST + 52,
1888         TCM_GETEXTENDEDSTYLE = TCM_FIRST + 53,
1889         TCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
1890         TCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
1891     }
1892 }
1893
1894 enum {
1895     TCN_KEYDOWN     = TCN_FIRST,
1896     TCN_SELCHANGE   = TCN_FIRST - 1,
1897     TCN_SELCHANGING = TCN_FIRST - 2
1898 }
1899
1900 enum {
1901     NM_OUTOFMEMORY     = NM_FIRST - 1,
1902     NM_CLICK           = NM_FIRST - 2,
1903     NM_DBLCLK          = NM_FIRST - 3,
1904     NM_RETURN          = NM_FIRST - 4,
1905     NM_RCLICK          = NM_FIRST - 5,
1906     NM_RDBLCLK         = NM_FIRST - 6,
1907     NM_SETFOCUS        = NM_FIRST - 7,
1908     NM_KILLFOCUS       = NM_FIRST - 8,
1909     NM_CUSTOMDRAW      = NM_FIRST - 12,
1910     NM_HOVER           = NM_FIRST - 13,
1911     NM_NCHITTEST       = NM_FIRST - 14,
1912     NM_KEYDOWN         = NM_FIRST - 15,
1913     NM_RELEASEDCAPTURE = NM_FIRST - 16,
1914     NM_SETCURSOR       = NM_FIRST - 17,
1915     NM_CHAR            = NM_FIRST - 18,
1916     NM_TOOLTIPSCREATED = NM_FIRST - 19
1917 }
1918
1919 enum {
1920     SBARS_SIZEGRIP = 256
1921 }
1922
1923 /*enum {
1924     CCM_FIRST            = 0x2000,
1925     CCM_LAST             = CCM_FIRST + 0x200,
1926     CCM_SETBKCOLOR       = 8193,
1927     CCM_SETCOLORSCHEME   = 8194,
1928     CCM_GETCOLORSCHEME   = 8195,
1929     CCM_GETDROPTARGET    = 8196,
1930     CCM_SETUNICODEFORMAT = 8197,
1931     CCM_GETUNICODEFORMAT = 8198,
1932     CCM_SETVERSION       = 0x2007,
1933     CCM_GETVERSION       = 0x2008,
1934     CCM_SETNOTIFYWINDOW  = 0x2009
1935 }*/
1936
1937 static if (_WIN32_WINNT >= 0x501) {
1938     enum {
1939         CCM_SETWINDOWTHEME = 0x200b,
1940         CCM_DPISCALE       = 0x200c
1941     }
1942 }
1943
1944 enum {
1945     ICC_LISTVIEW_CLASSES = 1,
1946     ICC_TREEVIEW_CLASSES = 2,
1947     ICC_BAR_CLASSES      = 4,
1948     ICC_TAB_CLASSES      = 8,
1949     ICC_UPDOWN_CLASS     = 16,
1950     ICC_PROGRESS_CLASS   = 32,
1951     ICC_HOTKEY_CLASS     = 64,
1952     ICC_ANIMATE_CLASS    = 128,
1953     ICC_WIN95_CLASSES    = 255,
1954     ICC_DATE_CLASSES     = 256,
1955     ICC_USEREX_CLASSES   = 512,
1956     ICC_COOL_CLASSES     = 1024
1957 }
1958
1959 static if (_WIN32_IE >= 0x400) {
1960     enum {
1961         INFOTIPSIZE            = 1024,
1962         ICC_INTERNET_CLASSES   = 2048,
1963         ICC_PAGESCROLLER_CLASS = 4096,
1964         ICC_NATIVEFNTCTL_CLASS = 8192
1965     }
1966 }
1967
1968 static if (_WIN32_WINNT >= 0x501) {
1969     enum {
1970         ICC_STANDARD_CLASSES = 0x00004000,
1971         ICC_LINK_CLASS       = 0x00008000
1972     }
1973 }
1974
1975 enum {
1976     GDTR_MIN = 1,
1977     GDTR_MAX = 2
1978 }
1979
1980 enum {
1981     GMR_VISIBLE,
1982     GMR_DAYSTATE
1983 }
1984
1985 enum {
1986     GDT_ERROR = -1,
1987     GDT_VALID = 0,
1988     GDT_NONE  = 1
1989 }
1990
1991 enum {
1992     DTS_SHORTDATEFORMAT = 0,
1993     DTS_UPDOWN          = 1,
1994     DTS_SHOWNONE        = 2,
1995     DTS_LONGDATEFORMAT  = 4,
1996     DTS_TIMEFORMAT      = 9,
1997     DTS_APPCANPARSE     = 16,
1998     DTS_RIGHTALIGN      = 32
1999 }
2000
2001 static if (_WIN32_IE >= 0x500) {
2002     enum {
2003         DTS_SHORTDATECENTURYFORMAT = 0x000C
2004     }
2005 }
2006
2007 enum {
2008     MCS_DAYSTATE    = 1,
2009     MCS_MULTISELECT = 2,
2010     MCS_WEEKNUMBERS = 4
2011 }
2012
2013 static if (_WIN32_IE >= 0x400) {
2014     enum {
2015         MCS_NOTODAYCIRCLE = 0x0008,
2016         MCS_NOTODAY       = 0x0010
2017     }
2018 } else {
2019     enum {
2020         MCS_NOTODAY = 0x0008
2021     }
2022 }
2023
2024 enum {
2025     DTM_GETSYSTEMTIME = 0x1001,
2026     DTM_SETSYSTEMTIME = 0x1002,
2027     DTM_GETRANGE      = 0x1003,
2028     DTM_SETRANGE      = 0x1004,
2029     DTM_SETFORMATA    = 0x1005,
2030     DTM_SETMCCOLOR    = 0x1006,
2031     DTM_GETMCCOLOR    = 0x1007,
2032     DTM_GETMONTHCAL   = 0x1008,
2033     DTM_SETMCFONT     = 0x1009,
2034     DTM_GETMCFONT     = 0x100a,
2035     DTM_SETFORMATW    = 0x1050
2036 }
2037
2038 enum {
2039     DTN_USERSTRINGA    = -758U,
2040     DTN_USERSTRINGW    = -745U,
2041     DTN_WMKEYDOWNA     = -757U,
2042     DTN_WMKEYDOWNW     = -744U,
2043     DTN_FORMATA        = -756U,
2044     DTN_FORMATW        = -743U,
2045     DTN_FORMATQUERYA   = -755U,
2046     DTN_FORMATQUERYW   = -742U,
2047     DTN_DROPDOWN       = -754U,
2048     DTN_CLOSEUP        = -753U,
2049     DTN_DATETIMECHANGE = -759U,
2050 }
2051
2052 enum {
2053     MCM_GETCURSEL         = 0x1001,
2054     MCM_SETCURSEL         = 0x1002,
2055     MCM_GETMAXSELCOUNT    = 0x1003,
2056     MCM_SETMAXSELCOUNT    = 0x1004,
2057     MCM_GETSELRANGE       = 0x1005,
2058     MCM_SETSELRANGE       = 0x1006,
2059     MCM_GETMONTHRANGE     = 0x1007,
2060     MCM_SETDAYSTATE       = 0x1008,
2061     MCM_GETMINREQRECT     = 0x1009,
2062     MCM_SETCOLOR          = 0x100a,
2063     MCM_GETCOLOR          = 0x100b,
2064     MCM_SETTODAY          = 0x100c,
2065     MCM_GETTODAY          = 0x100d,
2066     MCM_HITTEST           = 0x100e,
2067     MCM_SETFIRSTDAYOFWEEK = 0x100f,
2068     MCM_GETFIRSTDAYOFWEEK = 0x1010,
2069     MCM_GETRANGE          = 0x1011,
2070     MCM_SETRANGE          = 0x1012,
2071     MCM_GETMONTHDELTA     = 0x1013,
2072     MCM_SETMONTHDELTA     = 0x1014,
2073     MCM_GETMAXTODAYWIDTH  = 0x1015,
2074     MCM_GETUNICODEFORMAT  = CCM_GETUNICODEFORMAT,
2075     MCM_SETUNICODEFORMAT  = CCM_SETUNICODEFORMAT
2076 }
2077
2078 enum {
2079     MCN_SELCHANGE   = -749U,
2080     MCN_GETDAYSTATE = -747U,
2081     MCN_SELECT      = -746U
2082 }
2083
2084 enum {
2085     ODT_HEADER = 100,
2086     ODT_TAB,
2087     ODT_LISTVIEW // = 102
2088 }
2089
2090 enum {
2091     SB_SETBKCOLOR = 0x2001
2092 }
2093
2094 static if (_WIN32_IE >= 0x300) {
2095     enum {
2096         SB_ISSIMPLE = 1038
2097     }
2098
2099     enum {
2100         MCSC_BACKGROUND,
2101         MCSC_TEXT,
2102         MCSC_TITLEBK,
2103         MCSC_TITLETEXT,
2104         MCSC_MONTHBK,
2105         MCSC_TRAILINGTEXT // = 5
2106     }
2107 }
2108
2109 static if (_WIN32_IE >= 0x400) {
2110     enum {
2111         MCHT_TITLE            = 0x10000,
2112         MCHT_CALENDAR         = 0x20000,
2113         MCHT_TODAYLINK        = 0x30000,
2114         MCHT_NEXT             = 0x1000000,
2115         MCHT_PREV             = 0x2000000,
2116         MCHT_NOWHERE          = 0x00,
2117         MCHT_TITLEBK          = MCHT_TITLE,
2118         MCHT_TITLEMONTH       = MCHT_TITLE | 0x0001,
2119         MCHT_TITLEYEAR        = MCHT_TITLE | 0x0002,
2120         MCHT_TITLEBTNNEXT     = MCHT_TITLE | MCHT_NEXT | 0x0003,
2121         MCHT_TITLEBTNPREV     = MCHT_TITLE | MCHT_PREV | 0x0003,
2122         MCHT_CALENDARBK       = MCHT_CALENDAR,
2123         MCHT_CALENDARDATE     = MCHT_CALENDAR | 0x0001,
2124         MCHT_CALENDARDATENEXT = MCHT_CALENDARDATE | MCHT_NEXT,
2125         MCHT_CALENDARDATEPREV = MCHT_CALENDARDATE | MCHT_PREV,
2126         MCHT_CALENDARDAY      = MCHT_CALENDAR | 0x0002,
2127         MCHT_CALENDARWEEKNUM  = MCHT_CALENDAR | 0x0003
2128     }
2129 }
2130
2131 enum {
2132     RBS_TOOLTIPS    = 256,
2133     RBS_VARHEIGHT   = 512,
2134     RBS_BANDBORDERS = 1024,
2135     RBS_FIXEDORDER  = 2048
2136 }
2137
2138 enum {
2139     RBIM_IMAGELIST = 1
2140 }
2141
2142 enum {
2143     RB_SETCOLORSCHEME = CCM_SETCOLORSCHEME,
2144     RB_GETCOLORSCHEME = CCM_GETCOLORSCHEME
2145 }
2146
2147 enum {
2148     RBBS_BREAK          = 0x0001,
2149     RBBS_FIXEDSIZE      = 0x0002,
2150     RBBS_CHILDEDGE      = 0x0004,
2151     RBBS_HIDDEN         = 0x0008,
2152     RBBS_NOVERT         = 0x0010,
2153     RBBS_FIXEDBMP       = 0x0020,
2154     RBBS_VARIABLEHEIGHT = 0x0040,
2155     RBBS_GRIPPERALWAYS  = 0x0080,
2156     RBBS_NOGRIPPER      = 0x0100
2157 }
2158
2159 static if (_WIN32_IE >= 0x500) {
2160     enum {
2161         RBBS_USECHEVRON = 0x0200
2162     }
2163 }
2164
2165 static if (_WIN32_IE >= 0x501) {
2166     enum {
2167         RBBS_HIDETITLE = 0x0400,
2168         RBBS_TOPALIGN  = 0x0800
2169     }
2170 }
2171
2172 enum {
2173     RBBIM_STYLE      = 1,
2174     RBBIM_COLORS     = 2,
2175     RBBIM_TEXT       = 4,
2176     RBBIM_IMAGE      = 8,
2177     RBBIM_CHILD      = 16,
2178     RBBIM_CHILDSIZE  = 32,
2179     RBBIM_SIZE       = 64,
2180     RBBIM_BACKGROUND = 128,
2181     RBBIM_ID         = 256
2182 }
2183
2184 enum {
2185     RB_INSERTBANDA  = WM_USER + 1,
2186     RB_DELETEBAND,
2187     RB_GETBARINFO,
2188     RB_SETBARINFO, // = WM_USER + 4
2189     RB_SETBANDINFOA = WM_USER + 6,
2190     RB_SETPARENT    = WM_USER + 7,
2191     RB_INSERTBANDW  = WM_USER + 10,
2192     RB_SETBANDINFOW,
2193     RB_GETBANDCOUNT,
2194     RB_GETROWCOUNT,
2195     RB_GETROWHEIGHT // = WM_USER + 14,
2196 }
2197
2198 enum {
2199     RBN_HEIGHTCHANGE = RBN_FIRST
2200 }
2201
2202 static if (_WIN32_IE >= 0x300) {
2203     enum {
2204         LVN_ODCACHEHINT    = LVN_FIRST - 13,
2205         LVN_ODFINDITEMA    = LVN_FIRST - 52,
2206         LVN_ODFINDITEMW    = LVN_FIRST - 79,
2207         LVN_ITEMACTIVATE   = LVN_FIRST - 14,
2208         LVN_ODSTATECHANGED = LVN_FIRST - 15
2209     }
2210
2211     version (Unicode) {
2212         enum {
2213             LVN_ODFINDITEM = LVN_ODFINDITEMW
2214         }
2215     } else {
2216         enum {
2217             LVN_ODFINDITEM = LVN_ODFINDITEMA
2218         }
2219     }
2220 }
2221
2222 static if (_WIN32_IE >= 0x400) {
2223     enum {
2224         SB_SETICON          = 1039,
2225         SB_SETTIPTEXTA,
2226         SB_SETTIPTEXTW,
2227         SB_GETTIPTEXTA,
2228         SB_GETTIPTEXTW,
2229         SB_GETICON,      // = 1044
2230         SB_SETUNICODEFORMAT = 0x2005,
2231         SB_GETUNICODEFORMAT = 0x2006
2232     }
2233
2234     enum {
2235         PGF_INVISIBLE = 0,
2236         PGF_NORMAL    = 1,
2237         PGF_GRAYED    = 2,
2238         PGF_DEPRESSED = 4,
2239         PGF_HOT       = 8
2240     }
2241
2242     enum {
2243         PGB_TOPORLEFT,
2244         PGB_BOTTOMORRIGHT
2245     }
2246
2247     enum {
2248         PGF_SCROLLUP    = 1,
2249         PGF_SCROLLDOWN  = 2,
2250         PGF_SCROLLLEFT  = 4,
2251         PGF_SCROLLRIGHT = 8
2252     }
2253
2254     enum {
2255         PGK_SHIFT   = 1,
2256         PGK_CONTROL = 2,
2257         PGK_MENU    = 4
2258     }
2259
2260     enum {
2261         PGF_CALCWIDTH  = 1,
2262         PGF_CALCHEIGHT = 2
2263     }
2264
2265     enum {
2266         PGM_FIRST    = 0x1400,
2267         PGM_SETCHILD = PGM_FIRST + 1,
2268         PGM_RECALCSIZE,
2269         PGM_FORWARDMOUSE,
2270         PGM_SETBKCOLOR,
2271         PGM_GETBKCOLOR,
2272         PGM_SETBORDER,
2273         PGM_GETBORDER,
2274         PGM_SETPOS,
2275         PGM_GETPOS,
2276         PGM_SETBUTTONSIZE,
2277         PGM_GETBUTTONSIZE,
2278         PGM_GETBUTTONSTATE, // = PGM_FIRST + 12
2279         PGM_GETDROPTARGET = CCM_GETDROPTARGET
2280     }
2281
2282     enum {
2283         RBS_REGISTERDROP    = 4096,
2284         RBS_AUTOSIZE        = 8192,
2285         RBS_VERTICALGRIPPER = 16384,
2286         RBS_DBLCLKTOGGLE    = 32768
2287     }
2288
2289     enum {
2290         RBBIM_IDEALSIZE  = 512,
2291         RBBIM_LPARAM     = 1024,
2292         RBBIM_HEADERSIZE = 2048
2293     }
2294
2295     enum {
2296         RB_HITTEST          = WM_USER + 8,
2297         RB_GETRECT          = WM_USER + 9,
2298         RB_IDTOINDEX        = WM_USER + 16,
2299         RB_GETTOOLTIPS,
2300         RB_SETTOOLTIPS,
2301         RB_SETBKCOLOR,
2302         RB_GETBKCOLOR,
2303         RB_SETTEXTCOLOR,
2304         RB_GETTEXTCOLOR,
2305         RB_SIZETORECT,
2306         RB_BEGINDRAG,
2307         RB_ENDDRAG,
2308         RB_DRAGMOVE,
2309         RB_GETBARHEIGHT,
2310         RB_GETBANDINFOW,
2311         RB_GETBANDINFOA,
2312         RB_MINIMIZEBAND,
2313         RB_MAXIMIZEBAND, // = WM_USER + 31
2314         RB_GETDROPTARGET    = CCM_GETDROPTARGET,
2315         RB_GETBANDBORDERS   = WM_USER + 34,
2316         RB_SHOWBAND         = WM_USER + 35,
2317         RB_SETPALETTE       = WM_USER + 37,
2318         RB_GETPALETTE       = WM_USER + 38,
2319         RB_MOVEBAND         = WM_USER + 39,
2320         RB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
2321         RB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
2322     }
2323
2324     enum {
2325         RBN_GETOBJECT     = RBN_FIRST - 1,
2326         RBN_LAYOUTCHANGED = RBN_FIRST - 2,
2327         RBN_AUTOSIZE      = RBN_FIRST - 3,
2328         RBN_BEGINDRAG     = RBN_FIRST - 4,
2329         RBN_ENDDRAG       = RBN_FIRST - 5,
2330         RBN_DELETINGBAND  = RBN_FIRST - 6,
2331         RBN_DELETEDBAND   = RBN_FIRST - 7,
2332         RBN_CHILDSIZE     = RBN_FIRST - 8
2333     }
2334
2335     enum {
2336         RBNM_ID     = 1,
2337         RBNM_STYLE  = 2,
2338         RBNM_LPARAM = 4
2339     }
2340
2341     enum {
2342         RBHT_NOWHERE = 1,
2343         RBHT_CAPTION,
2344         RBHT_CLIENT,
2345         RBHT_GRABBER
2346     }
2347
2348     version (Unicode) {
2349         alias SB_SETTIPTEXTW SB_SETTIPTEXT;
2350         alias SB_GETTIPTEXTW SB_GETTIPTEXT;
2351         alias RB_GETBANDINFOW RB_GETBANDINFO;
2352     } else {
2353         alias SB_SETTIPTEXTA SB_SETTIPTEXT;
2354         alias SB_GETTIPTEXTA SB_GETTIPTEXT;
2355         alias RB_GETBANDINFOA RB_GETBANDINFO;
2356     }
2357 } else {
2358     enum {
2359         RB_GETBANDINFO = WM_USER + 5
2360     }
2361 }
2362
2363 enum {
2364     CBEM_INSERTITEMA = WM_USER + 1,
2365     CBEM_SETIMAGELIST,
2366     CBEM_GETIMAGELIST,
2367     CBEM_GETITEMA,
2368     CBEM_SETITEMA,
2369     CBEM_GETCOMBOCONTROL,
2370     CBEM_GETEDITCONTROL,
2371     CBEM_SETEXSTYLE,
2372     CBEM_GETEXSTYLE, // = WM_USER + 9)
2373     CBEM_DELETEITEM  = CB_DELETESTRING
2374 }
2375
2376 static if (_WIN32_IE >= 0x400) {
2377     enum {
2378         CBEM_SETEXTENDEDSTYLE = WM_USER + 14,
2379         CBEM_GETEXTENDEDSTYLE = WM_USER + 9,
2380         CBEM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
2381         CBEM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
2382     }
2383 }
2384
2385 enum {
2386     CBEM_HASEDITCHANGED = WM_USER + 10,
2387     CBEM_INSERTITEMW    = WM_USER + 11,
2388     CBEM_SETITEMW       = WM_USER + 12,
2389     CBEM_GETITEMW       = WM_USER + 13
2390 }
2391
2392 enum {
2393     DA_LAST = 0x7fffffff
2394 }
2395
2396 enum {
2397     DPA_APPEND = 0x7fffffff,
2398     DPA_ERR    = -1
2399 }
2400
2401 enum {
2402     DSA_APPEND = 0x7fffffff,
2403     DSA_ERR    = -1
2404 }
2405
2406 enum {
2407     DPAS_SORTED       = 1,
2408     DPAS_INSERTBEFORE = 2,
2409     DPAS_INSERTAFTER  = 4
2410 }
2411
2412 static if (_WIN32_IE >= 0x400) {
2413     enum {
2414         WSB_PROP_CYVSCROLL = 1,
2415         WSB_PROP_CXHSCROLL = 2,
2416         WSB_PROP_CYHSCROLL = 4,
2417         WSB_PROP_CXVSCROLL = 8,
2418         WSB_PROP_CXHTHUMB  = 16,
2419         WSB_PROP_CYVTHUMB  = 32,
2420         WSB_PROP_VBKGCOLOR = 64,
2421         WSB_PROP_HBKGCOLOR = 128,
2422         WSB_PROP_VSTYLE    = 256,
2423         WSB_PROP_HSTYLE    = 512,
2424         WSB_PROP_WINSTYLE  = 1024,
2425         WSB_PROP_PALETTE   = 2048,
2426         WSB_PROP_MASK      = 0xfff,
2427         FSB_FLAT_MODE      = 2,
2428         FSB_ENCARTA_MODE   = 1,
2429         FSB_REGULAR_MODE   = 0
2430     }
2431 }
2432
2433 static if (_WIN32_WINNT >= 0x0501) {
2434     enum {
2435         LIF_ITEMINDEX = 1,
2436         LIF_STATE     = 2,
2437         LIF_ITEMID    = 4,
2438         LIF_URL       = 8
2439     }
2440
2441     enum {
2442         LIS_FOCUSED = 1,
2443         LIS_ENABLED = 2,
2444         LIS_VISITED = 4
2445     }
2446
2447     enum {
2448         LM_HITTEST        = WM_USER + 768,
2449         LM_GETIDEALHEIGHT,
2450         LM_SETITEM,
2451         LM_GETITEM     // = WM_USER + 771
2452     }
2453
2454     const size_t MAX_LINKID_TEXT  =   48;
2455     const size_t L_MAX_URL_LENGTH = 2084;
2456 }
2457
2458
2459 struct COMBOBOXEXITEMA {
2460     UINT   mask;
2461     int    iItem;
2462     LPSTR  pszText;
2463     int    cchTextMax;
2464     int    iImage;
2465     int    iSelectedImage;
2466     int    iOverlay;
2467     int    iIndent;
2468     LPARAM lParam;
2469 }
2470 alias COMBOBOXEXITEMA*       PCOMBOBOXEXITEMA;
2471 alias CPtr!(COMBOBOXEXITEMA) PCCOMBOEXITEMA;
2472
2473 struct COMBOBOXEXITEMW {
2474     UINT   mask;
2475     int    iItem;
2476     LPWSTR pszText;
2477     int    cchTextMax;
2478     int    iImage;
2479     int    iSelectedImage;
2480     int    iOverlay;
2481     int    iIndent;
2482     LPARAM lParam;
2483 }
2484 alias COMBOBOXEXITEMW*       PCOMBOBOXEXITEMW;
2485 alias CPtr!(COMBOBOXEXITEMW) PCCOMBOEXITEMW;
2486
2487 static if (_WIN32_IE >= 0x400) {
2488     struct NMCOMBOBOXEXA {
2489         NMHDR           hdr;
2490         COMBOBOXEXITEMA ceItem;
2491     }
2492     alias NMCOMBOBOXEXA* PNMCOMBOBOXEXA;
2493
2494     struct NMCOMBOBOXEXW {
2495         NMHDR           hdr;
2496         COMBOBOXEXITEMW ceItem;
2497     }
2498     alias NMCOMBOBOXEXW* PNMCOMBOBOXEXW;
2499
2500     struct NMCBEDRAGBEGINW {
2501         NMHDR hdr;
2502         int   iItemid;
2503         WCHAR szText[CBEMAXSTRLEN];
2504     }
2505     alias NMCBEDRAGBEGINW* LPNMCBEDRAGBEGINW, PNMCBEDRAGBEGINW;
2506
2507     struct NMCBEDRAGBEGINA {
2508         NMHDR hdr;
2509         int   iItemid;
2510         char  szText[CBEMAXSTRLEN];
2511     }
2512     alias NMCBEDRAGBEGINA* LPNMCBEDRAGBEGINA, PNMCBEDRAGBEGINA;
2513
2514     struct NMIPADDRESS {
2515         NMHDR hdr;
2516         int   iField;
2517         int   iValue;
2518     }
2519     alias NMIPADDRESS* LPNMIPADDRESS;
2520
2521     struct NMLVKEYDOWN {
2522         NMHDR hdr;
2523         WORD  wVKey;
2524         UINT  flags;
2525     }
2526     alias NMLVKEYDOWN* LPNMLVKEYDOWN;
2527
2528     struct NMPGCALCSIZE {
2529         NMHDR hdr;
2530         DWORD dwFlag;
2531         int   iWidth;
2532         int   iHeight;
2533     }
2534     alias NMPGCALCSIZE* LPNMPGCALCSIZE;
2535
2536     struct NMPGSCROLL {
2537         NMHDR hdr;
2538         BOOL  fwKeys;
2539         RECT  rcParent;
2540         int   iDir;
2541         int   iXpos;
2542         int   iYpos;
2543         int   iScroll;
2544     }
2545     alias NMPGSCROLL* LPNMPGSCROLL;
2546
2547     struct NMSELCHANGE {
2548         NMHDR      nmhdr;
2549         SYSTEMTIME stSelStart;
2550         SYSTEMTIME stSelEnd;
2551     }
2552     alias NMSELCHANGE* LPNMSELCHANGE;
2553
2554     struct NMTBHOTITEM {
2555         NMHDR hdr;
2556         int   idOld;
2557         int   idNew;
2558         DWORD dwFlags;
2559     }
2560     alias NMTBHOTITEM* LPNMTBHOTITEM;
2561
2562     struct NMTBDISPINFOA {
2563         NMHDR     hdr;
2564         DWORD     dwMask;
2565         int       idCommand;
2566         DWORD_PTR lParam;
2567         int       iImage;
2568         LPSTR     pszText;
2569         int       cchText;
2570     }
2571     alias NMTBDISPINFOA* LPNMTBDISPINFOA;
2572
2573     struct NMTBDISPINFOW {
2574         NMHDR     hdr;
2575         DWORD     dwMask;
2576         int       idCommand;
2577         DWORD_PTR lParam;
2578         int       iImage;
2579         LPWSTR    pszText;
2580         int       cchText;
2581     }
2582     alias NMTBDISPINFOW* LPNMTBDISPINFOW;
2583
2584     struct NMTBGETINFOTIPA {
2585         NMHDR  hdr;
2586         LPSTR  pszText;
2587         int    cchTextMax;
2588         int    iItem;
2589         LPARAM lParam;
2590     }
2591     alias NMTBGETINFOTIPA* LPNMTBGETINFOTIPA;
2592
2593     struct NMTBGETINFOTIPW {
2594         NMHDR  hdr;
2595         LPWSTR pszText;
2596         int    cchTextMax;
2597         int    iItem;
2598         LPARAM lParam;
2599     }
2600     alias NMTBGETINFOTIPW* LPNMTBGETINFOTIPW;
2601
2602     struct NMMOUSE {
2603         NMHDR     hdr;
2604         DWORD_PTR dwItemSpec;
2605         DWORD_PTR dwItemData;
2606         POINT     pt;
2607         LPARAM    dwHitInfo;
2608     }
2609     alias NMMOUSE* LPNMMOUSE;
2610 }
2611
2612 static if (_WIN32_IE >= 0x401) {
2613     struct NMTOOLTIPSCREATED {
2614         NMHDR hdr;
2615         HWND  hwndToolTips;
2616     }
2617     alias NMTOOLTIPSCREATED* LPNMTOOLTIPSCREATED;
2618 }
2619
2620 struct NMDATETIMECHANGE {
2621     NMHDR      nmhdr;
2622     DWORD      dwFlags;
2623     SYSTEMTIME st;
2624 }
2625 alias NMDATETIMECHANGE* LPNMDATETIMECHANGE;
2626
2627 struct NMCBEENDEDITW {
2628     NMHDR hdr;
2629     BOOL  fChanged;
2630     int   iNewSelection;
2631     WCHAR szText[CBEMAXSTRLEN];
2632     int   iWhy;
2633 }
2634 alias NMCBEENDEDITW* LPNMCBEENDEDITW, PNMCBEENDEDITW;
2635
2636 struct NMCBEENDEDITA {
2637     NMHDR hdr;
2638     BOOL  fChanged;
2639     int   iNewSelection;
2640     char  szText[CBEMAXSTRLEN];
2641     int   iWhy;
2642 }
2643 alias NMCBEENDEDITA* LPNMCBEENDEDITA, PNMCBEENDEDITA;
2644
2645 struct COLORMAP {
2646     COLORREF from;
2647     COLORREF to;
2648 }
2649 alias COLORMAP* LPCOLORMAP;
2650
2651 struct DRAGLISTINFO {
2652     UINT  uNotification;
2653     HWND  hWnd;
2654     POINT ptCursor;
2655 }
2656 alias DRAGLISTINFO* LPDRAGLISTINFO;
2657
2658 struct TBBUTTON {
2659     int   iBitmap;
2660     int   idCommand;
2661     BYTE  fsState;
2662     BYTE  fsStyle;
2663     BYTE  bReserved[2];
2664     DWORD dwData;
2665     int   iString;
2666 }
2667 alias TBBUTTON*       PTBBUTTON, LPTBBUTTON;
2668 alias CPtr!(TBBUTTON) LPCTBBUTTON;
2669
2670 static if (_WIN32_IE >= 0x400) {
2671     struct TBBUTTONINFOA {
2672         UINT  cbSize = TBBUTTONINFOA.sizeof;
2673         DWORD dwMask;
2674         int   idCommand;
2675         int   iImage;
2676         BYTE  fsState;
2677         BYTE  fsStyle;
2678         WORD  cx;
2679         DWORD lParam;
2680         LPSTR pszText;
2681         int   cchText;
2682     }
2683     alias TBBUTTONINFOA* LPTBBUTTONINFOA;
2684
2685     struct TBBUTTONINFOW {
2686         UINT   cbSize = TBBUTTONINFOW.sizeof;
2687         DWORD  dwMask;
2688         int    idCommand;
2689         int    iImage;
2690         BYTE   fsState;
2691         BYTE   fsStyle;
2692         WORD   cx;
2693         DWORD  lParam;
2694         LPWSTR pszText;
2695         int    cchText;
2696     }
2697     alias TBBUTTONINFOW* LPTBBUTTONINFOW;
2698
2699     struct TBINSERTMARK {
2700         int   iButton;
2701         DWORD dwFlags;
2702     }
2703     alias TBINSERTMARK* LPTBINSERTMARK;
2704
2705     struct LVBKIMAGEA {
2706         ULONG   ulFlags;
2707         HBITMAP hbm;
2708         LPSTR   pszImage;
2709         UINT    cchImageMax;
2710         int     xOffsetPercent;
2711         int     yOffsetPercent;
2712     }
2713     alias LVBKIMAGEA* LPLVBKIMAGEA;
2714
2715     struct LVBKIMAGEW {
2716         ULONG   ulFlags;
2717         HBITMAP hbm;
2718         LPWSTR  pszImage;
2719         UINT    cchImageMax;
2720         int     xOffsetPercent;
2721         int     yOffsetPercent;
2722     }
2723     alias LVBKIMAGEW* LPLVBKIMAGEW;
2724 }
2725
2726 /*struct TBNOTIFY {
2727     NMHDR    hdr;
2728     int      iItem;
2729     TBBUTTON tbButton;
2730     int      cchText;
2731     LPTSTR   pszText;
2732 }
2733 alias TBNOTIFY* LPTBNOTIFY;
2734 */
2735
2736 /*struct TBSAVEPARAMS {
2737     HKEY    hkr;
2738     LPCTSTR pszSubKey;
2739     LPCTSTR pszValueName;
2740 }*/
2741
2742 struct IMAGEINFO {
2743     HBITMAP hbmImage;
2744     HBITMAP hbmMask;
2745     int     Unused1;
2746     int     Unused2;
2747     RECT    rcImage;
2748 }
2749 alias IMAGEINFO* LPIMAGEINFO;
2750
2751 alias HANDLE HIMAGELIST;
2752
2753 static if (_WIN32_IE >= 0x500) {
2754     struct HDITEMA {
2755         UINT    mask;
2756         int     cxy;
2757         LPSTR   pszText;
2758         HBITMAP hbm;
2759         int     cchTextMax;
2760         int     fmt;
2761         LPARAM  lParam;
2762         int     iImage;
2763         int     iOrder;
2764         UINT    type;
2765         LPVOID  pvFilter;
2766     }
2767
2768     struct HDITEMW {
2769         UINT    mask;
2770         int     cxy;
2771         LPWSTR  pszText;
2772         HBITMAP hbm;
2773         int     cchTextMax;
2774         int     fmt;
2775         LPARAM  lParam;
2776         int     iImage;
2777         int     iOrder;
2778         UINT    type;
2779         LPVOID  pvFilter;
2780     }
2781 } else static if (_WIN32_IE >= 0x300) {
2782     struct HDITEMA {
2783         UINT    mask;
2784         int     cxy;
2785         LPSTR   pszText;
2786         HBITMAP hbm;
2787         int     cchTextMax;
2788         int     fmt;
2789         LPARAM  lParam;
2790         int     iImage;
2791         int     iOrder;
2792     }
2793
2794     struct HDITEMW {
2795         UINT    mask;
2796         int     cxy;
2797         LPWSTR  pszText;
2798         HBITMAP hbm;
2799         int     cchTextMax;
2800         int     fmt;
2801         LPARAM  lParam;
2802         int     iImage;
2803         int     iOrder;
2804     }
2805 } else {
2806     struct HDITEMA {
2807         UINT    mask;
2808         int     cxy;
2809         LPSTR   pszText;
2810         HBITMAP hbm;
2811         int     cchTextMax;
2812         int     fmt;
2813         LPARAM  lParam;
2814     }
2815
2816     struct HDITEMW {
2817         UINT    mask;
2818         int     cxy;
2819         LPWSTR  pszText;
2820         HBITMAP hbm;
2821         int     cchTextMax;
2822         int     fmt;
2823         LPARAM  lParam;
2824     }
2825 }
2826 alias HDITEMA* LPHDITEMA;
2827 alias HDITEMW* LPHDITEMW;
2828
2829 deprecated {
2830     alias HDITEMA HD_ITEMA;
2831     alias HDITEMW HD_ITEMW;
2832     //alias HDITEM HD_ITEM; fixme
2833 }
2834
2835 struct HD_LAYOUT {
2836     RECT*      prc;
2837     WINDOWPOS* pwpos;
2838 }
2839 alias HDLAYOUT* LPHDLAYOUT;
2840 deprecated alias HD_LAYOUT HDLAYOUT;
2841
2842 struct HD_HITTESTINFO {
2843     POINT pt;
2844     UINT  flags;
2845     int   iItem;
2846 }
2847 alias HD_HITTESTINFO* LPHDHITTESTINFO;
2848
2849 struct HD_NOTIFYA {
2850     NMHDR    hdr;
2851     int      iItem;
2852     int      iButton;
2853     HDITEMA* pitem;
2854 }
2855
2856 struct HD_NOTIFYW {
2857     NMHDR    hdr;
2858     int      iItem;
2859     int      iButton;
2860     HDITEMW* pitem;
2861 }
2862
2863 /* FIXME: NMHEADER structure (base for all events of the comctl controls)
2864    is the same as HD_NOTIFY depending on the value of _WIN32_IE macro.
2865    I'm defining both for now. */
2866 struct NMHEADERA {
2867     NMHDR    hdr;
2868     int      iItem;
2869     int      iButton;
2870     HDITEMA* pitem;
2871 }
2872 alias NMHEADERA* LPNMHEADERA;
2873
2874 struct NMHEADERW {
2875     NMHDR    hdr;
2876     int      iItem;
2877     int      iButton;
2878     HDITEMW* pitem;
2879 }
2880 alias NMHEADERW* LPNMHEADERW;
2881
2882 version (Unicode) {
2883     alias NMHEADERW NMHEADER;
2884     alias LPNMHEADERW LPNMHEADER;
2885 } else {
2886     alias NMHEADERA NMHEADER;
2887     alias LPNMHEADERA LPNMHEADER;
2888 }
2889 // End FIXME
2890
2891 struct NMHDDISPINFOA {
2892     NMHDR  hdr;
2893     int    iItem;
2894     UINT   mask;
2895     LPSTR  pszText;
2896     int    cchTextMax;
2897     int    iImage;
2898     LPARAM lParam;
2899 }
2900 alias NMHDDISPINFOA* LPNMHDDISPINFOA;
2901
2902 struct NMHDDISPINFOW {
2903     NMHDR  hdr;
2904     int    iItem;
2905     UINT   mask;
2906     LPWSTR pszText;
2907     int    cchTextMax;
2908     int    iImage;
2909     LPARAM lParam;
2910 }
2911 alias NMHDDISPINFOW* LPNMHDDISPINFOW;
2912
2913 struct NMCUSTOMDRAW {
2914     NMHDR  hdr;
2915     DWORD  dwDrawStage;
2916     HDC    hdc;
2917     RECT   rc;
2918     DWORD  dwItemSpec;
2919     UINT   uItemState;
2920     LPARAM lItemlParam;
2921 }
2922 alias NMCUSTOMDRAW* LPNMCUSTOMDRAW;
2923
2924 static if (_WIN32_IE >= 0x400) {
2925     struct NMLVCUSTOMDRAW {
2926         NMCUSTOMDRAW nmcd;
2927         COLORREF     clrText;
2928         COLORREF     clrTextBk;
2929         int          iSubItem;
2930     }
2931 } else {
2932     struct NMLVCUSTOMDRAW {
2933         NMCUSTOMDRAW nmcd;
2934         COLORREF     clrText;
2935         COLORREF     clrTextBk;
2936     }
2937 }
2938 alias NMLVCUSTOMDRAW* LPNMLVCUSTOMDRAW;
2939
2940 static if (_WIN32_IE >= 0x400) {
2941     struct NMLVGETINFOTIPA {
2942         NMHDR  hdr;
2943         DWORD  dwFlags;
2944         LPSTR  pszText;
2945         int    cchTextMax;
2946         int    iItem;
2947         int    iSubItem;
2948         LPARAM lParam;
2949     }
2950     alias NMLVGETINFOTIPA* LPNMLVGETINFOTIPA;
2951
2952     struct NMLVGETINFOTIPW {
2953         NMHDR  hdr;
2954         DWORD  dwFlags;
2955         LPWSTR pszText;
2956         int    cchTextMax;
2957         int    iItem;
2958         int    iSubItem;
2959         LPARAM lParam;
2960     }
2961     alias NMLVGETINFOTIPW* LPNMLVGETINFOTIPW;
2962 }
2963
2964 static if (_WIN32_IE >= 0x400) {
2965     struct NMTVCUSTOMDRAW {
2966         NMCUSTOMDRAW nmcd;
2967         COLORREF     clrText;
2968         COLORREF     clrTextBk;
2969         int          iLevel;
2970     }
2971 } else {
2972     struct NMTVCUSTOMDRAW {
2973         NMCUSTOMDRAW nmcd;
2974         COLORREF     clrText;
2975         COLORREF     clrTextBk;
2976     }
2977 }
2978 alias NMTVCUSTOMDRAW* LPNMTVCUSTOMDRAW;
2979
2980 static if (_WIN32_IE >= 0x400) {
2981     static if (_WIN32_WINNT >= 0x501) {
2982         struct NMTBCUSTOMDRAW {
2983             NMCUSTOMDRAW nmcd;
2984             HBRUSH       hbrMonoDither;
2985             HBRUSH       hbrLines;
2986             HPEN         hpenLines;
2987             COLORREF     clrText;
2988             COLORREF     clrMark;
2989             COLORREF     clrTextHighlight;
2990             COLORREF     clrBtnFace;
2991             COLORREF     clrBtnHighlight;
2992             COLORREF     clrHighlightHotTrack;
2993             RECT         rcText;
2994             int          nStringBkMode;
2995             int          nHLStringBkMode;
2996             int          iListGap;
2997         }
2998     } else {
2999         struct NMTBCUSTOMDRAW {
3000             NMCUSTOMDRAW nmcd;
3001             HBRUSH       hbrMonoDither;
3002             HBRUSH       hbrLines;
3003             HPEN         hpenLines;
3004             COLORREF     clrText;
3005             COLORREF     clrMark;
3006             COLORREF     clrTextHighlight;
3007             COLORREF     clrBtnFace;
3008             COLORREF     clrBtnHighlight;
3009             COLORREF     clrHighlightHotTrack;
3010             RECT         rcText;
3011             int          nStringBkMode;
3012             int          nHLStringBkMode;
3013         }
3014     }
3015     alias NMTBCUSTOMDRAW* LPNMTBCUSTOMDRAW;
3016
3017     struct NMITEMACTIVATE {
3018         NMHDR  hdr;
3019         int    iItem;
3020         int    iSubItem;
3021         UINT   uNewState;
3022         UINT   uOldState;
3023         UINT   uChanged;
3024         POINT  ptAction;
3025         LPARAM lParam;
3026         UINT   uKeyFlags;
3027     }
3028     alias NMITEMACTIVATE* LPNMITEMACTIVATE;
3029 }
3030