1 // Copyright © 2015, Peter Atashian
2 // Licensed under the MIT License <LICENSE.md>
3 //138
4 STRUCT!{struct INITCOMMONCONTROLSEX {
5     dwSize: ::DWORD,
6     dwICC: ::DWORD,
7 }}
8 pub type LPINITCOMMONCONTROLSEX = *mut INITCOMMONCONTROLSEX;
9 pub const ICC_LISTVIEW_CLASSES: ::DWORD = 0x1;
10 pub const ICC_TREEVIEW_CLASSES: ::DWORD = 0x2;
11 pub const ICC_BAR_CLASSES: ::DWORD = 0x4;
12 pub const ICC_TAB_CLASSES: ::DWORD = 0x8;
13 pub const ICC_UPDOWN_CLASS: ::DWORD = 0x10;
14 pub const ICC_PROGRESS_CLASS: ::DWORD = 0x20;
15 pub const ICC_HOTKEY_CLASS: ::DWORD = 0x40;
16 pub const ICC_ANIMATE_CLASS: ::DWORD = 0x80;
17 pub const ICC_WIN95_CLASSES: ::DWORD = 0xFF;
18 pub const ICC_DATE_CLASSES: ::DWORD = 0x100;
19 pub const ICC_USEREX_CLASSES: ::DWORD = 0x200;
20 pub const ICC_COOL_CLASSES: ::DWORD = 0x400;
21 pub const ICC_INTERNET_CLASSES: ::DWORD = 0x800;
22 pub const ICC_PAGESCROLLER_CLASS: ::DWORD = 0x1000;
23 pub const ICC_NATIVEFNTCTL_CLASS: ::DWORD = 0x2000;
24 pub const ICC_STANDARD_CLASSES: ::DWORD = 0x4000;
25 pub const ICC_LINK_CLASS: ::DWORD = 0x8000;
26 pub const ODT_HEADER: ::UINT = 100;
27 pub const ODT_TAB: ::UINT = 101;
28 pub const ODT_LISTVIEW: ::UINT = 102;
29 pub const LVM_FIRST: ::UINT = 0x1000;
30 pub const TV_FIRST: ::UINT = 0x1100;
31 pub const HDM_FIRST: ::UINT = 0x1200;
32 pub const TCM_FIRST: ::UINT = 0x1300;
33 pub const PGM_FIRST: ::UINT = 0x1400;
34 pub const ECM_FIRST: ::UINT = 0x1500;
35 pub const BCM_FIRST: ::UINT = 0x1600;
36 pub const CBM_FIRST: ::UINT = 0x1700;
37 pub const CCM_FIRST: ::UINT = 0x2000;
38 pub const CCM_LAST: ::UINT = CCM_FIRST + 0x200;
39 pub const CCM_SETBKCOLOR: ::UINT = CCM_FIRST + 1;
40 STRUCT!{struct COLORSCHEME {
41     dwSize: ::DWORD,
42     clrBtnHighlight: ::COLORREF,
43     clrBtnShadow: ::COLORREF,
44 }}
45 pub type LPCOLORSCHEME = *mut COLORSCHEME;
46 pub const CCM_SETCOLORSCHEME: ::UINT = CCM_FIRST + 2;
47 pub const CCM_GETCOLORSCHEME: ::UINT = CCM_FIRST + 3;
48 pub const CCM_GETDROPTARGET: ::UINT = CCM_FIRST + 4;
49 pub const CCM_SETUNICODEFORMAT: ::UINT = CCM_FIRST + 5;
50 pub const CCM_GETUNICODEFORMAT: ::UINT = CCM_FIRST + 6;
51 pub const CCM_SETVERSION: ::UINT = CCM_FIRST + 7;
52 pub const CCM_GETVERSION: ::UINT = CCM_FIRST + 8;
53 pub const CCM_SETNOTIFYWINDOW: ::UINT = CCM_FIRST + 9;
54 pub const CCM_SETWINDOWTHEME: ::UINT = CCM_FIRST + 0xb;
55 pub const CCM_DPISCALE: ::UINT = CCM_FIRST + 0xc;
56 pub const INFOTIPSIZE: ::c_int = 1024;
57 pub const NM_OUTOFMEMORY: ::UINT = (NM_FIRST as ::INT - 1) as ::UINT;
58 pub const NM_CLICK: ::UINT = (NM_FIRST as ::INT - 2) as ::UINT;
59 pub const NM_DBLCLK: ::UINT = (NM_FIRST as ::INT - 3) as ::UINT;
60 pub const NM_RETURN: ::UINT = (NM_FIRST as ::INT - 4) as ::UINT;
61 pub const NM_RCLICK: ::UINT = (NM_FIRST as ::INT - 5) as ::UINT;
62 pub const NM_RDBLCLK: ::UINT = (NM_FIRST as ::INT - 6) as ::UINT;
63 pub const NM_SETFOCUS: ::UINT = (NM_FIRST as ::INT - 7) as ::UINT;
64 pub const NM_KILLFOCUS: ::UINT = (NM_FIRST as ::INT - 8) as ::UINT;
65 pub const NM_CUSTOMDRAW: ::UINT = (NM_FIRST as ::INT - 12) as ::UINT;
66 pub const NM_HOVER: ::UINT = (NM_FIRST as ::INT - 13) as ::UINT;
67 pub const NM_NCHITTEST: ::UINT = (NM_FIRST as ::INT - 14) as ::UINT;
68 pub const NM_KEYDOWN: ::UINT = (NM_FIRST as ::INT - 15) as ::UINT;
69 pub const NM_RELEASEDCAPTURE: ::UINT = (NM_FIRST as ::INT - 16) as ::UINT;
70 pub const NM_SETCURSOR: ::UINT = (NM_FIRST as ::INT - 17) as ::UINT;
71 pub const NM_CHAR: ::UINT = (NM_FIRST as ::INT - 18) as ::UINT;
72 pub const NM_TOOLTIPSCREATED: ::UINT = (NM_FIRST as ::INT - 19) as ::UINT;
73 pub const NM_LDOWN: ::UINT = (NM_FIRST as ::INT - 20) as ::UINT;
74 pub const NM_RDOWN: ::UINT = (NM_FIRST as ::INT - 21) as ::UINT;
75 pub const NM_THEMECHANGED: ::UINT = (NM_FIRST as ::INT - 22) as ::UINT;
76 pub const NM_FONTCHANGED: ::UINT = (NM_FIRST as ::INT - 23) as ::UINT;
77 pub const NM_CUSTOMTEXT: ::UINT = (NM_FIRST as ::INT - 24) as ::UINT;
78 pub const NM_TVSTATEIMAGECHANGING: ::UINT = (NM_FIRST as ::INT - 24) as ::UINT;
79 STRUCT!{struct NMTOOLTIPSCREATED {
80     hdr: ::NMHDR,
81     hwndToolTips: ::HWND,
82 }}
83 pub type LPNMTOOLTIPSCREATED = *mut NMTOOLTIPSCREATED;
84 STRUCT!{struct NMMOUSE {
85     hdr : ::NMHDR,
86     dwItemSpec: ::DWORD_PTR,
87     dwItemData: ::DWORD_PTR,
88     pt: ::POINT,
89     dwHitInfo: ::LPARAM,
90 }}
91 pub type LPNMMOUSE = *mut NMMOUSE;
92 pub type NMCLICK = NMMOUSE;
93 pub type LPNMCLICK = LPNMMOUSE;
94 STRUCT!{struct NMOBJECTNOTIFY {
95     hdr: ::NMHDR,
96     iItem: ::c_int,
97     piid: *const ::IID,
98     pObject: *mut ::c_void,
99     hResult: ::HRESULT,
100     dwFlags: ::DWORD,
101 }}
102 pub type LPNMOBJECTNOTIFY = *mut NMOBJECTNOTIFY;
103 STRUCT!{struct NMKEY {
104     hdr: ::NMHDR,
105     nVKey: ::UINT,
106     uFlags: ::UINT,
107 }}
108 pub type LPNMKEY = *mut NMKEY;
109 STRUCT!{struct NMCHAR {
110     hdr: ::NMHDR,
111     ch: ::UINT,
112     dwItemPrev: ::DWORD,
113     dwItemNext: ::DWORD,
114 }}
115 pub type LPNMCHAR = *mut NMCHAR;
116 STRUCT!{struct NMCUSTOMTEXT {
117     hdr: ::NMHDR,
118     hDC: ::HDC,
119     lpString: ::LPCWSTR,
120     nCount: ::c_int,
121     lpRect: ::LPRECT,
122     uFormat: ::UINT,
123     fLink: ::BOOL,
124 }}
125 pub type LPNMCUSTOMTEXT = *mut NMCUSTOMTEXT;
126 pub const NM_FIRST: ::UINT = 0;
127 pub const NM_LAST: ::UINT = -99i32 as ::UINT;
128 pub const LVN_FIRST: ::UINT = -100i32 as ::UINT;
129 pub const LVN_LAST: ::UINT = -199i32 as ::UINT;
130 pub const HDN_FIRST: ::UINT = -300i32 as ::UINT;
131 pub const HDN_LAST: ::UINT = -399i32 as ::UINT;
132 pub const TVN_FIRST: ::UINT = -400i32 as ::UINT;
133 pub const TVN_LAST: ::UINT = -499i32 as ::UINT;
134 pub const TTN_FIRST: ::UINT = -520i32 as ::UINT;
135 pub const TTN_LAST: ::UINT = -549i32 as ::UINT;
136 pub const TCN_FIRST: ::UINT = -550i32 as ::UINT;
137 pub const TCN_LAST: ::UINT = -580i32 as ::UINT;
138 // pub const CDN_FIRST: ::UINT = 0 - 601;
139 // pub const CDN_LAST: ::UINT = 0 - 699;
140 pub const TBN_FIRST: ::UINT = -700i32 as ::UINT;
141 pub const TBN_LAST: ::UINT = -720i32 as ::UINT;
142 pub const UDN_FIRST: ::UINT = -721i32 as ::UINT;
143 pub const UDN_LAST: ::UINT = -729i32 as ::UINT;
144 pub const DTN_FIRST: ::UINT = -740i32 as ::UINT;
145 pub const DTN_LAST: ::UINT = -745i32 as ::UINT;
146 pub const MCN_FIRST: ::UINT = -746i32 as ::UINT;
147 pub const MCN_LAST: ::UINT = -752i32 as ::UINT;
148 pub const DTN_FIRST2: ::UINT = -753i32 as ::UINT;
149 pub const DTN_LAST2: ::UINT = -799i32 as ::UINT;
150 pub const CBEN_FIRST: ::UINT = -800i32 as ::UINT;
151 pub const CBEN_LAST: ::UINT = -830i32 as ::UINT;
152 pub const RBN_FIRST: ::UINT = -831i32 as ::UINT;
153 pub const RBN_LAST: ::UINT = -859i32 as ::UINT;
154 pub const IPN_FIRST: ::UINT = -860i32 as ::UINT;
155 pub const IPN_LAST: ::UINT = -879i32 as ::UINT;
156 pub const SBN_FIRST: ::UINT = -880i32 as ::UINT;
157 pub const SBN_LAST: ::UINT = -899i32 as ::UINT;
158 pub const PGN_FIRST: ::UINT = -900i32 as ::UINT;
159 pub const PGN_LAST: ::UINT = -950i32 as ::UINT;
160 pub const WMN_FIRST: ::UINT = -1000i32 as ::UINT;
161 pub const WMN_LAST: ::UINT = -1200i32 as ::UINT;
162 pub const BCN_FIRST: ::UINT = -1250i32 as ::UINT;
163 pub const BCN_LAST: ::UINT = -1350i32 as ::UINT;
164 pub const TRBN_FIRST: ::UINT = -1501i32 as ::UINT;
165 pub const TRBN_LAST: ::UINT = -1519i32 as ::UINT;
166 pub const CDRF_DODEFAULT: ::LRESULT = 0x00000000;
167 pub const CDRF_NEWFONT: ::LRESULT = 0x00000002;
168 pub const CDRF_SKIPDEFAULT: ::LRESULT = 0x00000004;
169 pub const CDRF_DOERASE: ::LRESULT = 0x00000008;
170 pub const CDRF_SKIPPOSTPAINT: ::LRESULT = 0x00000100;
171 pub const CDRF_NOTIFYPOSTPAINT: ::LRESULT = 0x00000010;
172 pub const CDRF_NOTIFYITEMDRAW: ::LRESULT = 0x00000020;
173 pub const CDRF_NOTIFYSUBITEMDRAW: ::LRESULT = 0x00000020;
174 pub const CDRF_NOTIFYPOSTERASE: ::LRESULT = 0x00000040;
175 pub const CDDS_PREPAINT: ::DWORD = 0x00000001;
176 pub const CDDS_POSTPAINT: ::DWORD = 0x00000002;
177 pub const CDDS_PREERASE: ::DWORD = 0x00000003;
178 pub const CDDS_POSTERASE: ::DWORD = 0x00000004;
179 pub const CDDS_ITEM: ::DWORD = 0x00010000;
180 pub const CDDS_ITEMPREPAINT: ::DWORD = CDDS_ITEM | CDDS_PREPAINT;
181 pub const CDDS_ITEMPOSTPAINT: ::DWORD = CDDS_ITEM | CDDS_POSTPAINT;
182 pub const CDDS_ITEMPREERASE: ::DWORD = CDDS_ITEM | CDDS_PREERASE;
183 pub const CDDS_ITEMPOSTERASE: ::DWORD = CDDS_ITEM | CDDS_POSTERASE;
184 pub const CDDS_SUBITEM: ::DWORD = 0x00020000;
185 pub const CDIS_SELECTED: ::UINT = 0x0001;
186 pub const CDIS_GRAYED: ::UINT = 0x0002;
187 pub const CDIS_DISABLED: ::UINT = 0x0004;
188 pub const CDIS_CHECKED: ::UINT = 0x0008;
189 pub const CDIS_FOCUS: ::UINT = 0x0010;
190 pub const CDIS_DEFAULT: ::UINT = 0x0020;
191 pub const CDIS_HOT: ::UINT = 0x0040;
192 pub const CDIS_MARKED: ::UINT = 0x0080;
193 pub const CDIS_INDETERMINATE: ::UINT = 0x0100;
194 pub const CDIS_SHOWKEYBOARDCUES: ::UINT = 0x0200;
195 pub const CDIS_NEARHOT: ::UINT = 0x0400;
196 pub const CDIS_OTHERSIDEHOT: ::UINT = 0x0800;
197 pub const CDIS_DROPHILITED: ::UINT = 0x1000;
198 STRUCT!{struct NMCUSTOMDRAW {
199     hdr: ::NMHDR,
200     dwDrawStage: ::DWORD,
201     hdc: ::HDC,
202     rc: ::RECT,
203     dwItemSpec: ::DWORD_PTR,
204     uItemState: ::UINT,
205     lItemlParam: ::LPARAM,
206 }}
207 pub type LPNMCUSTOMDRAW = *mut NMCUSTOMDRAW;
208 STRUCT!{struct NMTTCUSTOMDRAW {
209     nmcd: NMCUSTOMDRAW,
210     uDrawFlags: ::UINT,
211 }}
212 pub type LPNMTTCUSTOMDRAW = *mut NMTTCUSTOMDRAW;
213 STRUCT!{struct NMCUSTOMSPLITRECTINFO {
214     hdr: ::NMHDR,
215     rcClient: ::RECT,
216     rcButton: ::RECT,
217     rcSplit: ::RECT,
218 }}
219 pub type LPNMCUSTOMSPLITRECTINFO = *mut NMCUSTOMSPLITRECTINFO;
220 pub const NM_GETCUSTOMSPLITRECT: ::UINT = BCN_FIRST + 0x0003;
221 pub const CLR_NONE: ::DWORD = 0xFFFFFFFF;
222 pub const CLR_DEFAULT: ::DWORD = 0xFF000000;
223 pub enum IMAGELIST {}
224 pub type HIMAGELIST = *mut IMAGELIST;
225 STRUCT!{struct IMAGELISTDRAWPARAMS {
226     cbSize: ::DWORD,
227     himl: HIMAGELIST,
228     i: ::c_int,
229     hdcDst: ::HDC,
230     x: ::c_int,
231     y: ::c_int,
232     cx: ::c_int,
233     cy: ::c_int,
234     xBitmap: ::c_int,
235     yBitmap: ::c_int,
236     rgbBk: ::COLORREF,
237     rgbFg: ::COLORREF,
238     fStyle: ::UINT,
239     dwRop: ::DWORD,
240     fState: ::DWORD,
241     Frame: ::DWORD,
242     crEffect: ::COLORREF,
243 }}
244 pub type LPIMAGELISTDRAWPARAMS = *mut IMAGELISTDRAWPARAMS;
245 pub const ILC_MASK: ::UINT = 0x00000001;
246 pub const ILC_COLOR: ::UINT = 0x00000000;
247 pub const ILC_COLORDDB: ::UINT = 0x000000FE;
248 pub const ILC_COLOR4: ::UINT = 0x00000004;
249 pub const ILC_COLOR8: ::UINT = 0x00000008;
250 pub const ILC_COLOR16: ::UINT = 0x00000010;
251 pub const ILC_COLOR24: ::UINT = 0x00000018;
252 pub const ILC_COLOR32: ::UINT = 0x00000020;
253 pub const ILC_PALETTE: ::UINT = 0x00000800;
254 pub const ILC_MIRROR: ::UINT = 0x00002000;
255 pub const ILC_PERITEMMIRROR: ::UINT = 0x00008000;
256 pub const ILC_ORIGINALSIZE: ::UINT = 0x00010000;
257 pub const ILC_HIGHQUALITYSCALE: ::UINT = 0x00020000;
258 pub const ILD_NORMAL: ::UINT = 0x00000000;
259 pub const ILD_TRANSPARENT: ::UINT = 0x00000001;
260 pub const ILD_MASK: ::UINT = 0x00000010;
261 pub const ILD_IMAGE: ::UINT = 0x00000020;
262 pub const ILD_ROP: ::UINT = 0x00000040;
263 pub const ILD_BLEND25: ::UINT = 0x00000002;
264 pub const ILD_BLEND50: ::UINT = 0x00000004;
265 pub const ILD_OVERLAYMASK: ::UINT = 0x00000F00;
266 #[inline] #[allow(dead_code)]
INDEXTOOVERLAYMASK(i: ::UINT) -> ::UINT267 pub fn INDEXTOOVERLAYMASK(i: ::UINT) -> ::UINT { i << 8 }
268 pub const ILD_PRESERVEALPHA: ::UINT = 0x00001000;
269 pub const ILD_SCALE: ::UINT = 0x00002000;
270 pub const ILD_DPISCALE: ::UINT = 0x00004000;
271 pub const ILD_ASYNC: ::UINT = 0x00008000;
272 pub const ILD_SELECTED: ::UINT = ILD_BLEND50;
273 pub const ILD_FOCUS: ::UINT = ILD_BLEND25;
274 pub const ILD_BLEND: ::UINT = ILD_BLEND50;
275 pub const CLR_HILIGHT: ::DWORD = CLR_DEFAULT;
276 pub const ILS_NORMAL: ::DWORD = 0x00000000;
277 pub const ILS_GLOW: ::DWORD = 0x00000001;
278 pub const ILS_SHADOW: ::DWORD = 0x00000002;
279 pub const ILS_SATURATE: ::DWORD = 0x00000004;
280 pub const ILS_ALPHA: ::DWORD = 0x00000008;
281 pub const HBITMAP_CALLBACK: ::HBITMAP = (0-1) as ::HBITMAP;
282 pub const ILCF_MOVE: ::UINT = 0x00000000;
283 pub const ILCF_SWAP: ::UINT = 0x00000001;
284 STRUCT!{struct IMAGEINFO {
285     hbmImage: ::HBITMAP,
286     hbmMask: ::HBITMAP,
287     Unused1: ::c_int,
288     Unused2: ::c_int,
289     rcImage: ::RECT,
290 }}
291 pub type LPIMAGEINFO = *mut IMAGEINFO;
292 pub const HDS_HORZ: ::DWORD = 0x0000;
293 pub const HDS_BUTTONS: ::DWORD = 0x0002;
294 pub const HDS_HOTTRACK: ::DWORD = 0x0004;
295 pub const HDS_HIDDEN: ::DWORD = 0x0008;
296 pub const HDS_DRAGDROP: ::DWORD = 0x0040;
297 pub const HDS_FULLDRAG: ::DWORD = 0x0080;
298 pub const HDS_FILTERBAR: ::DWORD = 0x0100;
299 pub const HDS_FLAT: ::DWORD = 0x0200;
300 pub const HDS_CHECKBOXES: ::DWORD = 0x0400;
301 pub const HDS_NOSIZING: ::DWORD = 0x0800;
302 pub const HDS_OVERFLOW: ::DWORD = 0x1000;
303 pub const HDFT_ISSTRING: ::UINT = 0x0000;
304 pub const HDFT_ISNUMBER: ::UINT = 0x0001;
305 pub const HDFT_ISDATE: ::UINT = 0x0002;
306 pub const HDFT_HASNOVALUE: ::UINT = 0x8000;
307 STRUCT!{struct HD_TEXTFILTERA {
308     pszText: ::LPSTR,
309     cchTextMax: ::INT,
310 }}
311 pub type LPHD_TEXTFILTERA = *mut HD_TEXTFILTERA;
312 STRUCT!{struct HD_TEXTFILTERW {
313     pszText: ::LPWSTR,
314     cchTextMax: ::INT,
315 }}
316 pub type LPHD_TEXTFILTERW = *mut HD_TEXTFILTERW;
317 STRUCT!{struct HDITEMA {
318     mask: ::UINT,
319     cxy: ::c_int,
320     pszText: ::LPSTR,
321     hbm: ::HBITMAP,
322     cchTextMax: ::c_int,
323     fmt: ::c_int,
324     lParam: ::LPARAM,
325     iImage: ::c_int,
326     iOrder: ::c_int,
327     _type: ::UINT,
328     pvFilter: *mut ::c_void,
329     state: ::UINT,
330 }}
331 pub type LPHDITEMA = *mut HDITEMA;
332 STRUCT!{struct HDITEMW {
333     mask: ::UINT,
334     cxy: ::c_int,
335     pszText: ::LPWSTR,
336     hbm: ::HBITMAP,
337     cchTextMax: ::c_int,
338     fmt: ::c_int,
339     lParam: ::LPARAM,
340     iImage: ::c_int,
341     iOrder: ::c_int,
342     _type: ::UINT,
343     pvFilter: *mut ::c_void,
344     state: ::UINT,
345 }}
346 pub type LPHDITEMW = *mut HDITEMW;
347 pub const HDI_WIDTH: ::UINT = 0x0001;
348 pub const HDI_HEIGHT: ::UINT = HDI_WIDTH;
349 pub const HDI_TEXT: ::UINT = 0x0002;
350 pub const HDI_FORMAT: ::UINT = 0x0004;
351 pub const HDI_LPARAM: ::UINT = 0x0008;
352 pub const HDI_BITMAP: ::UINT = 0x0010;
353 pub const HDI_IMAGE: ::UINT = 0x0020;
354 pub const HDI_DI_SETITEM: ::UINT = 0x0040;
355 pub const HDI_ORDER: ::UINT = 0x0080;
356 pub const HDI_FILTER: ::UINT = 0x0100;
357 pub const HDI_STATE: ::UINT = 0x0200;
358 pub const HDF_LEFT: ::c_int = 0x0000;
359 pub const HDF_RIGHT: ::c_int = 0x0001;
360 pub const HDF_CENTER: ::c_int = 0x0002;
361 pub const HDF_JUSTIFYMASK: ::c_int = 0x0003;
362 pub const HDF_RTLREADING: ::c_int = 0x0004;
363 pub const HDF_BITMAP: ::c_int = 0x2000;
364 pub const HDF_STRING: ::c_int = 0x4000;
365 pub const HDF_OWNERDRAW: ::c_int = 0x8000;
366 pub const HDF_IMAGE: ::c_int = 0x0800;
367 pub const HDF_BITMAP_ON_RIGHT: ::c_int = 0x1000;
368 pub const HDF_SORTUP: ::c_int = 0x0400;
369 pub const HDF_SORTDOWN: ::c_int = 0x0200;
370 pub const HDF_CHECKBOX: ::c_int = 0x0040;
371 pub const HDF_CHECKED: ::c_int = 0x0080;
372 pub const HDF_FIXEDWIDTH: ::c_int = 0x0100;
373 pub const HDF_SPLITBUTTON: ::c_int = 0x1000000;
374 pub const HDIS_FOCUSED: ::UINT = 0x00000001;
375 pub const HDM_GETITEMCOUNT: ::UINT = HDM_FIRST + 0;
376 pub const HDM_INSERTITEMA: ::UINT = HDM_FIRST + 1;
377 pub const HDM_INSERTITEMW: ::UINT = HDM_FIRST + 10;
378 pub const HDM_DELETEITEM: ::UINT = HDM_FIRST + 2;
379 pub const HDM_GETITEMA: ::UINT = HDM_FIRST + 3;
380 pub const HDM_GETITEMW: ::UINT = HDM_FIRST + 11;
381 pub const HDM_SETITEMA: ::UINT = HDM_FIRST + 4;
382 pub const HDM_SETITEMW: ::UINT = HDM_FIRST + 12;
383 STRUCT!{struct HDLAYOUT {
384     prc: *mut ::RECT,
385     pwpos: *mut ::WINDOWPOS,
386 }}
387 pub type LPHDLAYOUT = *mut HDLAYOUT;
388 pub const HDM_LAYOUT: ::UINT = HDM_FIRST + 5;
389 pub const HHT_NOWHERE: ::UINT = 0x0001;
390 pub const HHT_ONHEADER: ::UINT = 0x0002;
391 pub const HHT_ONDIVIDER: ::UINT = 0x0004;
392 pub const HHT_ONDIVOPEN: ::UINT = 0x0008;
393 pub const HHT_ONFILTER: ::UINT = 0x0010;
394 pub const HHT_ONFILTERBUTTON: ::UINT = 0x0020;
395 pub const HHT_ABOVE: ::UINT = 0x0100;
396 pub const HHT_BELOW: ::UINT = 0x0200;
397 pub const HHT_TORIGHT: ::UINT = 0x0400;
398 pub const HHT_TOLEFT: ::UINT = 0x0800;
399 pub const HHT_ONITEMSTATEICON: ::UINT = 0x1000;
400 pub const HHT_ONDROPDOWN: ::UINT = 0x2000;
401 pub const HHT_ONOVERFLOW: ::UINT = 0x4000;
402 STRUCT!{struct HDHITTESTINFO {
403     pt: ::POINT,
404     flags: ::UINT,
405     iItem: ::c_int,
406 }}
407 pub type LPHDHITTESTINFO = *mut HDHITTESTINFO;
408 pub const HDSIL_NORMAL: ::WPARAM = 0;
409 pub const HDSIL_STATE: ::WPARAM = 1;
410 pub const HDM_HITTEST: ::UINT = HDM_FIRST + 6;
411 pub const HDM_GETITEMRECT: ::UINT = HDM_FIRST + 7;
412 pub const HDM_SETIMAGELIST: ::UINT = HDM_FIRST + 8;
413 pub const HDM_GETIMAGELIST: ::UINT = HDM_FIRST + 9;
414 pub const HDM_ORDERTOINDEX: ::UINT = HDM_FIRST + 15;
415 pub const HDM_CREATEDRAGIMAGE: ::UINT = HDM_FIRST + 16;
416 pub const HDM_GETORDERARRAY: ::UINT = HDM_FIRST + 17;
417 pub const HDM_SETORDERARRAY: ::UINT = HDM_FIRST + 18;
418 pub const HDM_SETHOTDIVIDER: ::UINT = HDM_FIRST + 19;
419 pub const HDM_SETBITMAPMARGIN: ::UINT = HDM_FIRST + 20;
420 pub const HDM_GETBITMAPMARGIN: ::UINT = HDM_FIRST + 21;
421 pub const HDM_SETFILTERCHANGETIMEOUT: ::UINT = HDM_FIRST + 22;
422 pub const HDM_EDITFILTER: ::UINT = HDM_FIRST + 23;
423 pub const HDM_CLEARFILTER: ::UINT = HDM_FIRST + 24;
424 pub const HDM_GETITEMDROPDOWNRECT: ::UINT = HDM_FIRST + 25;
425 pub const HDM_GETOVERFLOWRECT: ::UINT = HDM_FIRST + 26;
426 pub const HDM_GETFOCUSEDITEM: ::UINT = HDM_FIRST + 27;
427 pub const HDM_SETFOCUSEDITEM: ::UINT = HDM_FIRST + 28;
428 pub const HDN_ITEMCHANGINGA: ::UINT = HDN_FIRST-0;
429 pub const HDN_ITEMCHANGINGW: ::UINT = HDN_FIRST-20;
430 pub const HDN_ITEMCHANGEDA: ::UINT = HDN_FIRST-1;
431 pub const HDN_ITEMCHANGEDW: ::UINT = HDN_FIRST-21;
432 pub const HDN_ITEMCLICKA: ::UINT = HDN_FIRST-2;
433 pub const HDN_ITEMCLICKW: ::UINT = HDN_FIRST-22;
434 pub const HDN_ITEMDBLCLICKA: ::UINT = HDN_FIRST-3;
435 pub const HDN_ITEMDBLCLICKW: ::UINT = HDN_FIRST-23;
436 pub const HDN_DIVIDERDBLCLICKA: ::UINT = HDN_FIRST-5;
437 pub const HDN_DIVIDERDBLCLICKW: ::UINT = HDN_FIRST-25;
438 pub const HDN_BEGINTRACKA: ::UINT = HDN_FIRST-6;
439 pub const HDN_BEGINTRACKW: ::UINT = HDN_FIRST-26;
440 pub const HDN_ENDTRACKA: ::UINT = HDN_FIRST-7;
441 pub const HDN_ENDTRACKW: ::UINT = HDN_FIRST-27;
442 pub const HDN_TRACKA: ::UINT = HDN_FIRST-8;
443 pub const HDN_TRACKW: ::UINT = HDN_FIRST-28;
444 pub const HDN_GETDISPINFOA: ::UINT = HDN_FIRST-9;
445 pub const HDN_GETDISPINFOW: ::UINT = HDN_FIRST-29;
446 pub const HDN_BEGINDRAG: ::UINT = HDN_FIRST-10;
447 pub const HDN_ENDDRAG: ::UINT = HDN_FIRST-11;
448 pub const HDN_FILTERCHANGE: ::UINT = HDN_FIRST-12;
449 pub const HDN_FILTERBTNCLICK: ::UINT = HDN_FIRST-13;
450 pub const HDN_BEGINFILTEREDIT: ::UINT = HDN_FIRST-14;
451 pub const HDN_ENDFILTEREDIT: ::UINT = HDN_FIRST-15;
452 pub const HDN_ITEMSTATEICONCLICK: ::UINT = HDN_FIRST-16;
453 pub const HDN_ITEMKEYDOWN: ::UINT = HDN_FIRST-17;
454 pub const HDN_DROPDOWN: ::UINT = HDN_FIRST-18;
455 pub const HDN_OVERFLOWCLICK: ::UINT = HDN_FIRST-19;
456 STRUCT!{struct NMHEADERA {
457     hdr: ::NMHDR,
458     iItem: ::c_int,
459     iButton: ::c_int,
460     pitem: *mut HDITEMA,
461 }}
462 pub type LPNMHEADERA = *mut NMHEADERA;
463 STRUCT!{struct NMHEADERW {
464     hdr: ::NMHDR,
465     iItem: ::c_int,
466     iButton: ::c_int,
467     pitem: *mut HDITEMW,
468 }}
469 pub type LPNMHEADERW = *mut NMHEADERW;
470 STRUCT!{struct NMHDDISPINFOW {
471     hdr: ::NMHDR,
472     iItem: ::c_int,
473     mask: ::UINT,
474     pszText: ::LPWSTR,
475     cchTextMax: ::c_int,
476     iImage: ::c_int,
477     lParam: ::LPARAM,
478 }}
479 pub type LPNMHDDISPINFOW = *mut NMHDDISPINFOW;
480 STRUCT!{struct NMHDDISPINFOA {
481     hdr: ::NMHDR,
482     iItem: ::c_int,
483     mask: ::UINT,
484     pszText: ::LPSTR,
485     cchTextMax: ::c_int,
486     iImage: ::c_int,
487     lParam: ::LPARAM,
488 }}
489 pub type LPNMHDDISPINFOA = *mut NMHDDISPINFOA;
490 STRUCT!{struct NMHDFILTERBTNCLICK {
491     hdr: ::NMHDR,
492     iItem: ::INT,
493     rc: ::RECT,
494 }}
495 pub type LPNMHDFILTERBTNCLICK = *mut NMHDFILTERBTNCLICK;
496 #[cfg(target_arch="x86")]
497 STRUCT!{struct TBBUTTON {
498     iBitmap: ::c_int,
499     idCommand: ::c_int,
500     fsState: ::BYTE,
501     fsStyle: ::BYTE,
502     bReserved: [::BYTE; 2],
503     dwData: ::DWORD_PTR,
504     iString: ::INT_PTR,
505 }}
506 #[cfg(target_arch="x86_64")]
507 STRUCT!{struct TBBUTTON {
508     iBitmap: ::c_int,
509     idCommand: ::c_int,
510     fsState: ::BYTE,
511     fsStyle: ::BYTE,
512     bReserved: [::BYTE; 6],
513     dwData: ::DWORD_PTR,
514     iString: ::INT_PTR,
515 }}
516 pub type PTBBUTTON = *mut TBBUTTON;
517 pub type LPTBBUTTON = *mut TBBUTTON;
518 pub type LPCTBBUTTON = *const TBBUTTON;
519 STRUCT!{struct COLORMAP {
520     from: ::COLORREF,
521     to: ::COLORREF,
522 }}
523 pub type LPCOLORMAP = *mut COLORMAP;
524 pub const CMB_MASKED: ::UINT = 0x02;
525 pub const TBSTATE_CHECKED: ::BYTE = 0x01;
526 pub const TBSTATE_PRESSED: ::BYTE = 0x02;
527 pub const TBSTATE_ENABLED: ::BYTE = 0x04;
528 pub const TBSTATE_HIDDEN: ::BYTE = 0x08;
529 pub const TBSTATE_INDETERMINATE: ::BYTE = 0x10;
530 pub const TBSTATE_WRAP: ::BYTE = 0x20;
531 pub const TBSTATE_ELLIPSES: ::BYTE = 0x40;
532 pub const TBSTATE_MARKED: ::BYTE = 0x80;
533 pub const TBSTYLE_BUTTON: ::DWORD = 0x0000;
534 pub const TBSTYLE_SEP: ::DWORD = 0x0001;
535 pub const TBSTYLE_CHECK: ::DWORD = 0x0002;
536 pub const TBSTYLE_GROUP: ::DWORD = 0x0004;
537 pub const TBSTYLE_CHECKGROUP: ::DWORD = TBSTYLE_GROUP | TBSTYLE_CHECK;
538 pub const TBSTYLE_DROPDOWN: ::DWORD = 0x0008;
539 pub const TBSTYLE_AUTOSIZE: ::DWORD = 0x0010;
540 pub const TBSTYLE_NOPREFIX: ::DWORD = 0x0020;
541 pub const TBSTYLE_TOOLTIPS: ::DWORD = 0x0100;
542 pub const TBSTYLE_WRAPABLE: ::DWORD = 0x0200;
543 pub const TBSTYLE_ALTDRAG: ::DWORD = 0x0400;
544 pub const TBSTYLE_FLAT: ::DWORD = 0x0800;
545 pub const TBSTYLE_LIST: ::DWORD = 0x1000;
546 pub const TBSTYLE_CUSTOMERASE: ::DWORD = 0x2000;
547 pub const TBSTYLE_REGISTERDROP: ::DWORD = 0x4000;
548 pub const TBSTYLE_TRANSPARENT: ::DWORD = 0x8000;
549 pub const TBSTYLE_EX_DRAWDDARROWS: ::DWORD = 0x00000001;
550 pub const BTNS_BUTTON: ::DWORD = TBSTYLE_BUTTON;
551 pub const BTNS_SEP: ::DWORD = TBSTYLE_SEP;
552 pub const BTNS_CHECK: ::DWORD = TBSTYLE_CHECK;
553 pub const BTNS_GROUP: ::DWORD = TBSTYLE_GROUP;
554 pub const BTNS_CHECKGROUP: ::DWORD = TBSTYLE_CHECKGROUP;
555 pub const BTNS_DROPDOWN: ::DWORD = TBSTYLE_DROPDOWN;
556 pub const BTNS_AUTOSIZE: ::DWORD = TBSTYLE_AUTOSIZE;
557 pub const BTNS_NOPREFIX: ::DWORD = TBSTYLE_NOPREFIX;
558 pub const BTNS_SHOWTEXT: ::DWORD = 0x0040;
559 pub const BTNS_WHOLEDROPDOWN: ::DWORD = 0x0080;
560 pub const TBSTYLE_EX_MIXEDBUTTONS: ::DWORD = 0x00000008;
561 pub const TBSTYLE_EX_HIDECLIPPEDBUTTONS: ::DWORD = 0x00000010;
562 pub const TBSTYLE_EX_MULTICOLUMN: ::DWORD = 0x00000002;
563 pub const TBSTYLE_EX_VERTICAL: ::DWORD = 0x00000004;
564 pub const TBSTYLE_EX_DOUBLEBUFFER: ::DWORD = 0x00000080;
565 STRUCT!{struct NMTBCUSTOMDRAW {
566     nmcd: NMCUSTOMDRAW,
567     hbrMonoDither: ::HBRUSH,
568     hbrLines: ::HBRUSH,
569     hpenLines: ::HPEN,
570     clrText: ::COLORREF,
571     clrMark: ::COLORREF,
572     clrTextHighlight: ::COLORREF,
573     clrBtnFace: ::COLORREF,
574     clrBtnHighlight: ::COLORREF,
575     clrHighlightHotTrack: ::COLORREF,
576     rcText: ::RECT,
577     nStringBkMode: ::c_int,
578     nHLStringBkMode: ::c_int,
579     iListGap: ::c_int,
580 }}
581 pub type LPNMTBCUSTOMDRAW = *mut NMTBCUSTOMDRAW;
582 pub const TBCDRF_NOEDGES: ::LRESULT = 0x00010000;
583 pub const TBCDRF_HILITEHOTTRACK: ::LRESULT = 0x00020000;
584 pub const TBCDRF_NOOFFSET: ::LRESULT = 0x00040000;
585 pub const TBCDRF_NOMARK: ::LRESULT = 0x00080000;
586 pub const TBCDRF_NOETCHEDEFFECT: ::LRESULT = 0x00100000;
587 pub const TBCDRF_BLENDICON: ::LRESULT = 0x00200000;
588 pub const TBCDRF_NOBACKGROUND: ::LRESULT = 0x00400000;
589 pub const TBCDRF_USECDCOLORS: ::LRESULT = 0x00800000;
590 pub const TB_ENABLEBUTTON: ::UINT = ::WM_USER + 1;
591 pub const TB_CHECKBUTTON: ::UINT = ::WM_USER + 2;
592 pub const TB_PRESSBUTTON: ::UINT = ::WM_USER + 3;
593 pub const TB_HIDEBUTTON: ::UINT = ::WM_USER + 4;
594 pub const TB_INDETERMINATE: ::UINT = ::WM_USER + 5;
595 pub const TB_MARKBUTTON: ::UINT = ::WM_USER + 6;
596 pub const TB_ISBUTTONENABLED: ::UINT = ::WM_USER + 9;
597 pub const TB_ISBUTTONCHECKED: ::UINT = ::WM_USER + 10;
598 pub const TB_ISBUTTONPRESSED: ::UINT = ::WM_USER + 11;
599 pub const TB_ISBUTTONHIDDEN: ::UINT = ::WM_USER + 12;
600 pub const TB_ISBUTTONINDETERMINATE : ::UINT = ::WM_USER + 13;
601 pub const TB_ISBUTTONHIGHLIGHTED: ::UINT = ::WM_USER + 14;
602 pub const TB_SETSTATE: ::UINT = ::WM_USER + 17;
603 pub const TB_GETSTATE: ::UINT = ::WM_USER + 18;
604 pub const TB_ADDBITMAP: ::UINT = ::WM_USER + 19;
605 STRUCT!{struct TBADDBITMAP {
606     hInst: ::HINSTANCE,
607     nID: ::UINT_PTR,
608 }}
609 pub type LPTBADDBITMAP = *mut TBADDBITMAP;
610 pub const HINST_COMMCTRL: ::HINSTANCE = (0 - 1) as ::HINSTANCE;
611 pub const IDB_STD_SMALL_COLOR: ::WPARAM = 0;
612 pub const IDB_STD_LARGE_COLOR: ::WPARAM = 1;
613 pub const IDB_VIEW_SMALL_COLOR: ::WPARAM = 4;
614 pub const IDB_VIEW_LARGE_COLOR: ::WPARAM = 5;
615 pub const IDB_HIST_SMALL_COLOR: ::WPARAM = 8;
616 pub const IDB_HIST_LARGE_COLOR: ::WPARAM = 9;
617 pub const IDB_HIST_NORMAL: ::WPARAM = 12;
618 pub const IDB_HIST_HOT: ::WPARAM = 13;
619 pub const IDB_HIST_DISABLED: ::WPARAM = 14;
620 pub const IDB_HIST_PRESSED: ::WPARAM = 15;
621 pub const STD_CUT: ::c_int = 0;
622 pub const STD_COPY: ::c_int = 1;
623 pub const STD_PASTE: ::c_int = 2;
624 pub const STD_UNDO: ::c_int = 3;
625 pub const STD_REDOW: ::c_int = 4;
626 pub const STD_DELETE: ::c_int = 5;
627 pub const STD_FILENEW: ::c_int = 6;
628 pub const STD_FILEOPEN: ::c_int = 7;
629 pub const STD_FILESAVE: ::c_int = 8;
630 pub const STD_PRINTPRE: ::c_int = 9;
631 pub const STD_PROPERTIES: ::c_int = 10;
632 pub const STD_HELP: ::c_int = 11;
633 pub const STD_FIND: ::c_int = 12;
634 pub const STD_REPLACE: ::c_int = 13;
635 pub const STD_PRINT: ::c_int = 14;
636 pub const VIEW_LARGEICONS: ::c_int = 0;
637 pub const VIEW_SMALLICONS: ::c_int = 1;
638 pub const VIEW_LIST: ::c_int = 2;
639 pub const VIEW_DETAILS: ::c_int = 3;
640 pub const VIEW_SORTNAME: ::c_int = 4;
641 pub const VIEW_SORTSIZE: ::c_int = 5;
642 pub const VIEW_SORTDATE: ::c_int = 6;
643 pub const VIEW_SORTTYPE: ::c_int = 7;
644 pub const VIEW_PARENTFOLDER: ::c_int = 8;
645 pub const VIEW_NETCONNECT: ::c_int = 9;
646 pub const VIEW_NETDISCONNECT: ::c_int = 10;
647 pub const VIEW_NEWFOLDER: ::c_int = 11;
648 pub const VIEW_VIEWMENU: ::c_int = 12;
649 pub const HIST_BACK: ::c_int = 0;
650 pub const HIST_FORWARD: ::c_int = 1;
651 pub const HIST_FAVORITES: ::c_int = 2;
652 pub const HIST_ADDTOFAVORITES: ::c_int = 3;
653 pub const HIST_VIEWTREE: ::c_int = 4;
654 pub const TB_ADDBUTTONSA: ::UINT = ::WM_USER + 20;
655 pub const TB_INSERTBUTTONA: ::UINT = ::WM_USER + 21;
656 pub const TB_DELETEBUTTON: ::UINT = ::WM_USER + 22;
657 pub const TB_GETBUTTON: ::UINT = ::WM_USER + 23;
658 pub const TB_BUTTONCOUNT: ::UINT = ::WM_USER + 24;
659 pub const TB_COMMANDTOINDEX: ::UINT = ::WM_USER + 25;
660 STRUCT!{struct TBSAVEPARAMSA {
661     hkr: ::HKEY,
662     pszSubKey: ::LPCSTR,
663     pszValueName: ::LPCSTR,
664 }}
665 pub type LPTBSAVEPARAMSA = *mut TBSAVEPARAMSA;
666 STRUCT!{struct TBSAVEPARAMSW {
667     hkr: ::HKEY,
668     pszSubKey: ::LPCWSTR,
669     pszValueName: ::LPCWSTR,
670 }}
671 pub type LPTBSAVEPARAMSW = *mut TBSAVEPARAMSW;
672 pub const TB_SAVERESTOREA: ::UINT = ::WM_USER + 26;
673 pub const TB_SAVERESTOREW: ::UINT = ::WM_USER + 76;
674 pub const TB_CUSTOMIZE: ::UINT = ::WM_USER + 27;
675 pub const TB_ADDSTRINGA: ::UINT = ::WM_USER + 28;
676 pub const TB_ADDSTRINGW: ::UINT = ::WM_USER + 77;
677 pub const TB_GETITEMRECT: ::UINT = ::WM_USER + 29;
678 pub const TB_BUTTONSTRUCTSIZE: ::UINT = ::WM_USER + 30;
679 pub const TB_SETBUTTONSIZE: ::UINT = ::WM_USER + 31;
680 pub const TB_SETBITMAPSIZE: ::UINT = ::WM_USER + 32;
681 pub const TB_AUTOSIZE: ::UINT = ::WM_USER + 33;
682 pub const TB_GETTOOLTIPS: ::UINT = ::WM_USER + 35;
683 pub const TB_SETTOOLTIPS: ::UINT = ::WM_USER + 36;
684 pub const TB_SETPARENT: ::UINT = ::WM_USER + 37;
685 pub const TB_SETROWS: ::UINT = ::WM_USER + 39;
686 pub const TB_GETROWS: ::UINT = ::WM_USER + 40;
687 pub const TB_SETCMDID: ::UINT = ::WM_USER + 42;
688 pub const TB_CHANGEBITMAP: ::UINT = ::WM_USER + 43;
689 pub const TB_GETBITMAP: ::UINT = ::WM_USER + 44;
690 pub const TB_GETBUTTONTEXTA: ::UINT = ::WM_USER + 45;
691 pub const TB_GETBUTTONTEXTW: ::UINT = ::WM_USER + 75;
692 pub const TB_REPLACEBITMAP: ::UINT = ::WM_USER + 46;
693 pub const TB_SETINDENT: ::UINT = ::WM_USER + 47;
694 pub const TB_SETIMAGELIST: ::UINT = ::WM_USER + 48;
695 pub const TB_GETIMAGELIST: ::UINT = ::WM_USER + 49;
696 pub const TB_LOADIMAGES: ::UINT = ::WM_USER + 50;
697 pub const TB_GETRECT: ::UINT = ::WM_USER + 51;
698 pub const TB_SETHOTIMAGELIST: ::UINT = ::WM_USER + 52;
699 pub const TB_GETHOTIMAGELIST: ::UINT = ::WM_USER + 53;
700 pub const TB_SETDISABLEDIMAGELIST: ::UINT = ::WM_USER + 54;
701 pub const TB_GETDISABLEDIMAGELIST: ::UINT = ::WM_USER + 55;
702 pub const TB_SETSTYLE: ::UINT = ::WM_USER + 56;
703 pub const TB_GETSTYLE: ::UINT = ::WM_USER + 57;
704 pub const TB_GETBUTTONSIZE: ::UINT = ::WM_USER + 58;
705 pub const TB_SETBUTTONWIDTH: ::UINT = ::WM_USER + 59;
706 pub const TB_SETMAXTEXTROWS: ::UINT = ::WM_USER + 60;
707 pub const TB_GETTEXTROWS: ::UINT = ::WM_USER + 61;
708 pub const TB_GETOBJECT: ::UINT = ::WM_USER + 62;
709 pub const TB_GETHOTITEM: ::UINT = ::WM_USER + 71;
710 pub const TB_SETHOTITEM: ::UINT = ::WM_USER + 72;
711 pub const TB_SETANCHORHIGHLIGHT: ::UINT = ::WM_USER + 73;
712 pub const TB_GETANCHORHIGHLIGHT: ::UINT = ::WM_USER + 74;
713 pub const TB_MAPACCELERATORA: ::UINT = ::WM_USER + 78;
714 STRUCT!{struct TBINSERTMARK {
715     iButton: ::c_int,
716     dwFlags: ::DWORD,
717 }}
718 pub type LPTBINSERTMARK = *mut TBINSERTMARK;
719 pub const TBIMHT_AFTER: ::DWORD = 0x00000001;
720 pub const TBIMHT_BACKGROUND: ::DWORD = 0x00000002;
721 pub const TB_GETINSERTMARK: ::UINT = ::WM_USER + 79;
722 pub const TB_SETINSERTMARK: ::UINT = ::WM_USER + 80;
723 pub const TB_INSERTMARKHITTEST: ::UINT = ::WM_USER + 81;
724 pub const TB_MOVEBUTTON: ::UINT = ::WM_USER + 82;
725 pub const TB_GETMAXSIZE: ::UINT = ::WM_USER + 83;
726 pub const TB_SETEXTENDEDSTYLE: ::UINT = ::WM_USER + 84;
727 pub const TB_GETEXTENDEDSTYLE: ::UINT = ::WM_USER + 85;
728 pub const TB_GETPADDING: ::UINT = ::WM_USER + 86;
729 pub const TB_SETPADDING: ::UINT = ::WM_USER + 87;
730 pub const TB_SETINSERTMARKCOLOR: ::UINT = ::WM_USER + 88;
731 pub const TB_GETINSERTMARKCOLOR: ::UINT = ::WM_USER + 89;
732 pub const TB_SETCOLORSCHEME: ::UINT = CCM_SETCOLORSCHEME;
733 pub const TB_GETCOLORSCHEME: ::UINT = CCM_GETCOLORSCHEME;
734 pub const TB_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
735 pub const TB_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
736 pub const TB_MAPACCELERATORW: ::UINT = ::WM_USER + 90;
737 STRUCT!{struct TBREPLACEBITMAP {
738     hInstOld: ::HINSTANCE,
739     nIDOld: ::UINT_PTR,
740     hInstNew: ::HINSTANCE,
741     nIDNew: ::UINT_PTR,
742     nButtons: ::c_int,
743 }}
744 pub type LPTBREPLACEBITMAP = *mut TBREPLACEBITMAP;
745 pub const TBBF_LARGE: ::DWORD = 0x0001;
746 pub const TB_GETBITMAPFLAGS: ::UINT = ::WM_USER + 41;
747 pub const TBIF_IMAGE: ::DWORD = 0x00000001;
748 pub const TBIF_TEXT: ::DWORD = 0x00000002;
749 pub const TBIF_STATE: ::DWORD = 0x00000004;
750 pub const TBIF_STYLE: ::DWORD = 0x00000008;
751 pub const TBIF_LPARAM: ::DWORD = 0x00000010;
752 pub const TBIF_COMMAND: ::DWORD = 0x00000020;
753 pub const TBIF_SIZE: ::DWORD = 0x00000040;
754 pub const TBIF_BYINDEX: ::DWORD = 0x80000000;
755 STRUCT!{struct TBBUTTONINFOA {
756     cbSize: ::UINT,
757     dwMask: ::DWORD,
758     idCommand: ::c_int,
759     iImage: ::c_int,
760     fsState: ::BYTE,
761     fsStyle: ::BYTE,
762     cx: ::WORD,
763     lParam: ::DWORD_PTR,
764     pszText: ::LPSTR,
765     cchText: ::c_int,
766 }}
767 pub type LPTBBUTTONINFOA = *mut TBBUTTONINFOA;
768 STRUCT!{struct TBBUTTONINFOW {
769     cbSize: ::UINT,
770     dwMask: ::DWORD,
771     idCommand: ::c_int,
772     iImage: ::c_int,
773     fsState: ::BYTE,
774     fsStyle: ::BYTE,
775     cx: ::WORD,
776     lParam: ::DWORD_PTR,
777     pszText: ::LPWSTR,
778     cchText: ::c_int,
779 }}
780 pub type LPTBBUTTONINFOW = *mut TBBUTTONINFOW;
781 pub const TB_GETBUTTONINFOW: ::UINT = ::WM_USER + 63;
782 pub const TB_SETBUTTONINFOW: ::UINT = ::WM_USER + 64;
783 pub const TB_GETBUTTONINFOA: ::UINT = ::WM_USER + 65;
784 pub const TB_SETBUTTONINFOA: ::UINT = ::WM_USER + 66;
785 pub const TB_INSERTBUTTONW: ::UINT = ::WM_USER + 67;
786 pub const TB_ADDBUTTONSW: ::UINT = ::WM_USER + 68;
787 pub const TB_HITTEST: ::UINT = ::WM_USER + 69;
788 pub const TB_SETDRAWTEXTFLAGS: ::UINT = ::WM_USER + 70;
789 pub const TB_GETSTRINGW: ::UINT = ::WM_USER + 91;
790 pub const TB_GETSTRINGA: ::UINT = ::WM_USER + 92;
791 pub const TB_SETBOUNDINGSIZE: ::UINT = ::WM_USER + 93;
792 pub const TB_SETHOTITEM2: ::UINT = ::WM_USER + 94;
793 pub const TB_HASACCELERATOR: ::UINT = ::WM_USER + 95;
794 pub const TB_SETLISTGAP: ::UINT = ::WM_USER + 96;
795 pub const TB_GETIMAGELISTCOUNT: ::UINT = ::WM_USER + 98;
796 pub const TB_GETIDEALSIZE: ::UINT = ::WM_USER + 99;
797 pub const TBMF_PAD: ::DWORD = 0x00000001;
798 pub const TBMF_BARPAD: ::DWORD = 0x00000002;
799 pub const TBMF_BUTTONSPACING: ::DWORD = 0x00000004;
800 STRUCT!{struct TBMETRICS {
801     cbSize: ::UINT,
802     dwMask: ::DWORD,
803     cxPad: ::c_int,
804     cyPad: ::c_int,
805     cxBarPad: ::c_int,
806     cyBarPad: ::c_int,
807     cxButtonSpacing: ::c_int,
808     cyButtonSpacing: ::c_int,
809 }}
810 pub type LPTBMETRICS = *mut TBMETRICS;
811 pub const TB_GETMETRICS: ::UINT = ::WM_USER + 101;
812 pub const TB_SETMETRICS: ::UINT = ::WM_USER + 102;
813 pub const TB_GETITEMDROPDOWNRECT: ::UINT = ::WM_USER + 103;
814 pub const TB_SETPRESSEDIMAGELIST: ::UINT = ::WM_USER + 104;
815 pub const TB_GETPRESSEDIMAGELIST: ::UINT = ::WM_USER + 105;
816 pub const TB_SETWINDOWTHEME: ::UINT = CCM_SETWINDOWTHEME;
817 pub const TBN_GETBUTTONINFOA: ::UINT = TBN_FIRST - 0;
818 pub const TBN_BEGINDRAG: ::UINT = TBN_FIRST - 1;
819 pub const TBN_ENDDRAG: ::UINT = TBN_FIRST - 2;
820 pub const TBN_BEGINADJUST: ::UINT = TBN_FIRST - 3;
821 pub const TBN_ENDADJUST: ::UINT = TBN_FIRST - 4;
822 pub const TBN_RESET: ::UINT = TBN_FIRST - 5;
823 pub const TBN_QUERYINSERT: ::UINT = TBN_FIRST - 6;
824 pub const TBN_QUERYDELETE: ::UINT = TBN_FIRST - 7;
825 pub const TBN_TOOLBARCHANGE: ::UINT = TBN_FIRST - 8;
826 pub const TBN_CUSTHELP: ::UINT = TBN_FIRST - 9;
827 pub const TBN_DROPDOWN: ::UINT = TBN_FIRST - 10;
828 pub const TBN_GETOBJECT: ::UINT = TBN_FIRST - 12;
829 STRUCT!{struct NMTBHOTITEM {
830     hdr: ::NMHDR,
831     idOld: ::c_int,
832     idNew: ::c_int,
833     dwFlags: ::DWORD,
834 }}
835 pub type LPNMTBHOTITEM = *mut NMTBHOTITEM;
836 pub const HICF_OTHER: ::DWORD = 0x00000000;
837 pub const HICF_MOUSE: ::DWORD = 0x00000001;
838 pub const HICF_ARROWKEYS: ::DWORD = 0x00000002;
839 pub const HICF_ACCELERATOR: ::DWORD = 0x00000004;
840 pub const HICF_DUPACCEL: ::DWORD = 0x00000008;
841 pub const HICF_ENTERING: ::DWORD = 0x00000010;
842 pub const HICF_LEAVING: ::DWORD = 0x00000020;
843 pub const HICF_RESELECT: ::DWORD = 0x00000040;
844 pub const HICF_LMOUSE: ::DWORD = 0x00000080;
845 pub const HICF_TOGGLEDROPDOWN: ::DWORD = 0x00000100;
846 pub const TBN_HOTITEMCHANGE: ::UINT = TBN_FIRST - 13;
847 pub const TBN_DRAGOUT: ::UINT = TBN_FIRST - 14;
848 pub const TBN_DELETINGBUTTON: ::UINT = TBN_FIRST - 15;
849 pub const TBN_GETDISPINFOA: ::UINT = TBN_FIRST - 16;
850 pub const TBN_GETDISPINFOW: ::UINT = TBN_FIRST - 17;
851 pub const TBN_GETINFOTIPA: ::UINT = TBN_FIRST - 18;
852 pub const TBN_GETINFOTIPW: ::UINT = TBN_FIRST - 19;
853 pub const TBN_GETBUTTONINFOW: ::UINT = TBN_FIRST - 20;
854 pub const TBN_RESTORE: ::UINT = TBN_FIRST - 21;
855 pub const TBN_SAVE: ::UINT = TBN_FIRST - 22;
856 pub const TBN_INITCUSTOMIZE: ::UINT = TBN_FIRST - 23;
857 pub const TBN_WRAPHOTITEM: ::UINT = TBN_FIRST - 24;
858 pub const TBN_DUPACCELERATOR: ::UINT = TBN_FIRST - 25;
859 pub const TBN_WRAPACCELERATOR: ::UINT = TBN_FIRST - 26;
860 pub const TBN_DRAGOVER: ::UINT = TBN_FIRST - 27;
861 pub const TBN_MAPACCELERATOR: ::UINT = TBN_FIRST - 28;
862 pub const TBNRF_HIDEHELP: ::LRESULT = 0x00000001;
863 pub const TBNRF_ENDCUSTOMIZE: ::LRESULT = 0x00000002;
864 STRUCT!{struct NMTBSAVE {
865     hdr: ::NMHDR,
866     pData: *mut ::DWORD,
867     pCurrent: *mut ::DWORD,
868     cbData: ::UINT,
869     iItem: ::c_int,
870     cButtons: ::c_int,
871     tbButton: TBBUTTON,
872 }}
873 pub type LPNMTBSAVE = *mut NMTBSAVE;
874 STRUCT!{struct NMTBRESTORE {
875     hdr: ::NMHDR,
876     pData: *mut ::DWORD,
877     pCurrent: *mut ::DWORD,
878     cbData: ::UINT,
879     iItem: ::c_int,
880     cButtons: ::c_int,
881     cbBytesPerRecord: ::c_int,
882     tbButton: TBBUTTON,
883 }}
884 pub type LPNMTBRESTORE = *mut NMTBRESTORE;
885 STRUCT!{struct NMTBGETINFOTIPA {
886     hdr: ::NMHDR,
887     pszText: ::LPSTR,
888     cchTextMax: ::c_int,
889     iItem: ::c_int,
890     lParal: ::LPARAM,
891 }}
892 pub type LPNMTBGETINFOTIPA = *mut NMTBGETINFOTIPA;
893 STRUCT!{struct NMTBGETINFOTIPW {
894     hdr: ::NMHDR,
895     pszText: ::LPWSTR,
896     cchTextMax: ::c_int,
897     iItem: ::c_int,
898     lParal: ::LPARAM,
899 }}
900 pub type LPNMTBGETINFOTIPW = *mut NMTBGETINFOTIPW;
901 pub const TBNF_IMAGE: ::DWORD = 0x00000001;
902 pub const TBNF_TEXT: ::DWORD = 0x00000002;
903 pub const TBNF_DI_SETITEM: ::DWORD = 0x10000000;
904 STRUCT!{struct NMTBDISPINFOA {
905     hdr: ::NMHDR,
906     dwMask: ::DWORD,
907     idCommand: ::c_int,
908     lParam: ::DWORD_PTR,
909     iImage: ::c_int,
910     pszText: ::LPSTR,
911     cchText: ::c_int,
912 }}
913 pub type LPNMTBDISPINFOA = *mut NMTBDISPINFOA;
914 STRUCT!{struct NMTBDISPINFOW {
915     hdr: ::NMHDR,
916     dwMask: ::DWORD,
917     idCommand: ::c_int,
918     lParam: ::DWORD_PTR,
919     iImage: ::c_int,
920     pszText: ::LPWSTR,
921     cchText: ::c_int,
922 }}
923 pub type LPNMTBDISPINFOW = *mut NMTBDISPINFOW;
924 pub const TBDDRET_DEFAULT: ::LRESULT = 0;
925 pub const TBDDRET_NODEFAULT: ::LRESULT = 1;
926 pub const TBDDRET_TREATPRESSED: ::LRESULT = 2;
927 pub type TBNOTIFYA = NMTOOLBARA;
928 pub type TBNOTIFYW = NMTOOLBARW;
929 pub type LPTBNOTIFYA = LPNMTOOLBARA;
930 pub type LPTBNOTIFYW = LPNMTOOLBARW;
931 STRUCT!{struct NMTOOLBARA {
932     hdr: ::NMHDR,
933     iItem: ::c_int,
934     tbButton: TBBUTTON,
935     cchText: ::c_int,
936     pszText: ::LPSTR,
937     rcButton: ::RECT,
938 }}
939 pub type LPNMTOOLBARA = *mut NMTOOLBARA;
940 STRUCT!{struct NMTOOLBARW {
941     hdr: ::NMHDR,
942     iItem: ::c_int,
943     tbButton: TBBUTTON,
944     cchText: ::c_int,
945     pszText: ::LPWSTR,
946     rcButton: ::RECT,
947 }}
948 pub type LPNMTOOLBARW = *mut NMTOOLBARW;
949 pub const RBIM_IMAGELIST: ::UINT = 0x00000001;
950 pub const RBS_TOOLTIPS: ::DWORD = 0x00000100;
951 pub const RBS_VARHEIGHT: ::DWORD = 0x00000200;
952 pub const RBS_BANDBORDERS: ::DWORD = 0x00000400;
953 pub const RBS_FIXEDORDER: ::DWORD = 0x00000800;
954 pub const RBS_REGISTERDROP: ::DWORD = 0x00001000;
955 pub const RBS_AUTOSIZE: ::DWORD = 0x00002000;
956 pub const RBS_VERTICALGRIPPER: ::DWORD = 0x00004000;
957 pub const RBS_DBLCLKTOGGLE: ::DWORD = 0x00008000;
958 STRUCT!{struct REBARINFO {
959     cbSize: ::UINT,
960     fMask: ::UINT,
961     himl: HIMAGELIST,
962 }}
963 pub type LPREBARINFO = *mut REBARINFO;
964 pub const RBBS_BREAK: ::UINT = 0x00000001;
965 pub const RBBS_FIXEDSIZE: ::UINT = 0x00000002;
966 pub const RBBS_CHILDEDGE: ::UINT = 0x00000004;
967 pub const RBBS_HIDDEN: ::UINT = 0x00000008;
968 pub const RBBS_NOVERT: ::UINT = 0x00000010;
969 pub const RBBS_FIXEDBMP: ::UINT = 0x00000020;
970 pub const RBBS_VARIABLEHEIGHT: ::UINT = 0x00000040;
971 pub const RBBS_GRIPPERALWAYS: ::UINT = 0x00000080;
972 pub const RBBS_NOGRIPPER: ::UINT = 0x00000100;
973 pub const RBBS_USECHEVRON: ::UINT = 0x00000200;
974 pub const RBBS_HIDETITLE: ::UINT = 0x00000400;
975 pub const RBBS_TOPALIGN: ::UINT = 0x00000800;
976 pub const RBBIM_STYLE: ::UINT = 0x00000001;
977 pub const RBBIM_COLORS: ::UINT = 0x00000002;
978 pub const RBBIM_TEXT: ::UINT = 0x00000004;
979 pub const RBBIM_IMAGE: ::UINT = 0x00000008;
980 pub const RBBIM_CHILD: ::UINT = 0x00000010;
981 pub const RBBIM_CHILDSIZE: ::UINT = 0x00000020;
982 pub const RBBIM_SIZE: ::UINT = 0x00000040;
983 pub const RBBIM_BACKGROUND: ::UINT = 0x00000080;
984 pub const RBBIM_ID: ::UINT = 0x00000100;
985 pub const RBBIM_IDEALSIZE: ::UINT = 0x00000200;
986 pub const RBBIM_LPARAM: ::UINT = 0x00000400;
987 pub const RBBIM_HEADERSIZE: ::UINT = 0x00000800;
988 pub const RBBIM_CHEVRONLOCATION: ::UINT = 0x00001000;
989 pub const RBBIM_CHEVRONSTATE: ::UINT = 0x00002000;
990 STRUCT!{struct REBARBANDINFOA {
991     cbSize: ::UINT,
992     fMask: ::UINT,
993     fStyle: ::UINT,
994     clrFore: ::COLORREF,
995     clrBack: ::COLORREF,
996     lpText: ::LPSTR,
997     cch: ::UINT,
998     iImage: ::c_int,
999     hwndChild: ::HWND,
1000     cxMinChild: ::UINT,
1001     cyMinChild: ::UINT,
1002     cx: ::UINT,
1003     hbmBack: ::HBITMAP,
1004     wID: ::UINT,
1005     cyChild: ::UINT,
1006     cyMaxChild: ::UINT,
1007     cyIntegral: ::UINT,
1008     cxIdeal: ::UINT,
1009     lParam: ::LPARAM,
1010     cxHeader: ::UINT,
1011     rcChevronLocation: ::RECT,
1012     uChevronState: ::UINT,
1013 }}
1014 pub type LPREBARBANDINFOA = *mut REBARBANDINFOA;
1015 pub type LPCREBARBANDINFOA = *const REBARBANDINFOA;
1016 STRUCT!{struct REBARBANDINFOW {
1017     cbSize: ::UINT,
1018     fMask: ::UINT,
1019     fStyle: ::UINT,
1020     clrFore: ::COLORREF,
1021     clrBack: ::COLORREF,
1022     lpText: ::LPWSTR,
1023     cch: ::UINT,
1024     iImage: ::c_int,
1025     hwndChild: ::HWND,
1026     cxMinChild: ::UINT,
1027     cyMinChild: ::UINT,
1028     cx: ::UINT,
1029     hbmBack: ::HBITMAP,
1030     wID: ::UINT,
1031     cyChild: ::UINT,
1032     cyMaxChild: ::UINT,
1033     cyIntegral: ::UINT,
1034     cxIdeal: ::UINT,
1035     lParam: ::LPARAM,
1036     cxHeader: ::UINT,
1037     rcChevronLocation: ::RECT,
1038     uChevronState: ::UINT,
1039 }}
1040 pub type LPREBARBANDINFOW = *mut REBARBANDINFOW;
1041 pub type LPCREBARBANDINFOW = *const REBARBANDINFOW;
1042 pub const RB_INSERTBANDA: ::UINT = ::WM_USER + 1;
1043 pub const RB_DELETEBAND: ::UINT = ::WM_USER + 2;
1044 pub const RB_GETBARINFO: ::UINT = ::WM_USER + 3;
1045 pub const RB_SETBARINFO: ::UINT = ::WM_USER + 4;
1046 pub const RB_SETBANDINFOA: ::UINT = ::WM_USER + 6;
1047 pub const RB_SETPARENT: ::UINT = ::WM_USER + 7;
1048 pub const RB_HITTEST: ::UINT = ::WM_USER + 8;
1049 pub const RB_GETRECT: ::UINT = ::WM_USER + 9;
1050 pub const RB_INSERTBANDW: ::UINT = ::WM_USER + 10;
1051 pub const RB_SETBANDINFOW: ::UINT = ::WM_USER + 11;
1052 pub const RB_GETBANDCOUNT: ::UINT = ::WM_USER + 12;
1053 pub const RB_GETROWCOUNT: ::UINT = ::WM_USER + 13;
1054 pub const RB_GETROWHEIGHT: ::UINT = ::WM_USER + 14;
1055 pub const RB_IDTOINDEX: ::UINT = ::WM_USER + 16;
1056 pub const RB_GETTOOLTIPS: ::UINT = ::WM_USER + 17;
1057 pub const RB_SETTOOLTIPS: ::UINT = ::WM_USER + 18;
1058 pub const RB_SETBKCOLOR: ::UINT = ::WM_USER + 19;
1059 pub const RB_GETBKCOLOR: ::UINT = ::WM_USER + 20;
1060 pub const RB_SETTEXTCOLOR: ::UINT = ::WM_USER + 21;
1061 pub const RB_GETTEXTCOLOR: ::UINT = ::WM_USER + 22;
1062 pub const RBSTR_CHANGERECT: ::WPARAM = 0x0001;
1063 pub const RB_SIZETORECT: ::UINT = ::WM_USER + 23;
1064 pub const RB_SETCOLORSCHEME: ::UINT = CCM_SETCOLORSCHEME;
1065 pub const RB_GETCOLORSCHEME: ::UINT = CCM_GETCOLORSCHEME;
1066 pub const RB_BEGINDRAG: ::UINT = ::WM_USER + 24;
1067 pub const RB_ENDDRAG: ::UINT = ::WM_USER + 25;
1068 pub const RB_DRAGMOVE: ::UINT = ::WM_USER + 26;
1069 pub const RB_GETBARHEIGHT: ::UINT = ::WM_USER + 27;
1070 pub const RB_GETBANDINFOW: ::UINT = ::WM_USER + 28;
1071 pub const RB_GETBANDINFOA: ::UINT = ::WM_USER + 29;
1072 pub const RB_MINIMIZEBAND: ::UINT = ::WM_USER + 30;
1073 pub const RB_MAXIMIZEBAND: ::UINT = ::WM_USER + 31;
1074 pub const RB_GETDROPTARGET: ::UINT = CCM_GETDROPTARGET;
1075 pub const RB_GETBANDBORDERS: ::UINT = ::WM_USER + 34;
1076 pub const RB_SHOWBAND: ::UINT = ::WM_USER + 35;
1077 pub const RB_SETPALETTE: ::UINT = ::WM_USER + 37;
1078 pub const RB_GETPALETTE: ::UINT = ::WM_USER + 38;
1079 pub const RB_MOVEBAND: ::UINT = ::WM_USER + 39;
1080 pub const RB_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
1081 pub const RB_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
1082 pub const RB_GETBANDMARGINS: ::UINT = ::WM_USER + 40;
1083 pub const RB_SETWINDOWTHEME: ::UINT = CCM_SETWINDOWTHEME;
1084 pub const RB_SETEXTENDEDSTYLE: ::UINT = ::WM_USER + 41;
1085 pub const RB_GETEXTENDEDSTYLE: ::UINT = ::WM_USER + 42;
1086 pub const RB_PUSHCHEVRON: ::UINT = ::WM_USER + 43;
1087 pub const RB_SETBANDWIDTH: ::UINT = ::WM_USER + 44;
1088 pub const RBN_HEIGHTCHANGE: ::UINT = RBN_FIRST - 0;
1089 pub const RBN_GETOBJECT: ::UINT = RBN_FIRST - 1;
1090 pub const RBN_LAYOUTCHANGED: ::UINT = RBN_FIRST - 2;
1091 pub const RBN_AUTOSIZE: ::UINT = RBN_FIRST - 3;
1092 pub const RBN_BEGINDRAG: ::UINT = RBN_FIRST - 4;
1093 pub const RBN_ENDDRAG: ::UINT = RBN_FIRST - 5;
1094 pub const RBN_DELETINGBAND: ::UINT = RBN_FIRST - 6;
1095 pub const RBN_DELETEDBAND: ::UINT = RBN_FIRST - 7;
1096 pub const RBN_CHILDSIZE: ::UINT = RBN_FIRST - 8;
1097 pub const RBN_CHEVRONPUSHED: ::UINT = RBN_FIRST - 10;
1098 pub const RBN_SPLITTERDRAG: ::UINT = RBN_FIRST - 11;
1099 pub const RBN_MINMAX: ::UINT = RBN_FIRST - 21;
1100 pub const RBN_AUTOBREAK: ::UINT = RBN_FIRST - 22;
1101 STRUCT!{struct NMREBARCHILDSIZE {
1102     hdr: ::NMHDR,
1103     uBand: ::UINT,
1104     wID: ::UINT,
1105     rcChild: ::RECT,
1106     rcBand: ::RECT,
1107 }}
1108 pub type LPNMREBARCHILDSIZE = *mut NMREBARCHILDSIZE;
1109 STRUCT!{struct NMREBAR {
1110     hdr: ::NMHDR,
1111     dwMask: ::DWORD,
1112     uBand: ::UINT,
1113     fStyle: ::UINT,
1114     wID: ::UINT,
1115     lParam: ::LPARAM,
1116 }}
1117 pub type LPNMREBAR = *mut NMREBAR;
1118 pub const RBNM_ID: ::DWORD = 0x00000001;
1119 pub const RBNM_STYLE: ::DWORD = 0x00000002;
1120 pub const RBNM_LPARAM: ::DWORD = 0x00000004;
1121 STRUCT!{struct NMRBAUTOSIZE {
1122     hdr: ::NMHDR,
1123     fChanged: ::BOOL,
1124     rcTarget: ::RECT,
1125     rcActual: ::RECT,
1126 }}
1127 pub type LPNMRBAUTOSIZE = *mut NMRBAUTOSIZE;
1128 STRUCT!{struct NMREBARCHEVRON {
1129     hdr: ::NMHDR,
1130     uBand: ::UINT,
1131     wID: ::UINT,
1132     lParam: ::LPARAM,
1133     rc: ::RECT,
1134     lParamNM: ::LPARAM,
1135 }}
1136 pub type LPNMREBARCHEVRON = *mut NMREBARCHEVRON;
1137 STRUCT!{struct NMREBARSPLITTER {
1138     hdr: ::NMHDR,
1139     rcSizing: ::RECT,
1140 }}
1141 pub type LPNMREBARSPLITTER = *mut NMREBARSPLITTER;
1142 pub const RBAB_AUTOSIZE: ::UINT = 0x0001;
1143 pub const RBAB_ADDBAND: ::UINT = 0x0002;
1144 STRUCT!{struct NMREBARAUTOBREAK {
1145     hdr: ::NMHDR,
1146     uBand: ::UINT,
1147     wID: ::UINT,
1148     lParam: ::LPARAM,
1149     uMsg: ::UINT,
1150     fStyleCurrent: ::UINT,
1151     fAutoBreak: ::UINT,
1152 }}
1153 pub type LPNMREBARAUTOBREAK = *mut NMREBARAUTOBREAK;
1154 pub const RBHT_NOWHERE: ::UINT = 0x0001;
1155 pub const RBHT_CAPTION: ::UINT = 0x0002;
1156 pub const RBHT_CLIENT: ::UINT = 0x0003;
1157 pub const RBHT_GRABBER: ::UINT = 0x0004;
1158 pub const RBHT_CHEVRON: ::UINT = 0x0008;
1159 pub const RBHT_SPLITTER: ::UINT = 0x0010;
1160 STRUCT!{struct RBHITTESTINFO {
1161     pt: ::POINT,
1162     flags: ::UINT,
1163     iBand: ::c_int,
1164 }}
1165 pub type LPRBHITTESTINFO = *mut RBHITTESTINFO;
1166 pub type LPTOOLINFOA = LPTTTOOLINFOA;
1167 pub type LPTOOLINFOW = LPTTTOOLINFOW;
1168 pub type TOOLINFOA = TTTOOLINFOA;
1169 pub type TOOLINFOW = TTTOOLINFOW;
1170 STRUCT!{struct TTTOOLINFOA {
1171     cbSize: ::UINT,
1172     uFlags: ::UINT,
1173     hwnd: ::HWND,
1174     uId: ::UINT_PTR,
1175     rect: ::RECT,
1176     hinst: ::HINSTANCE,
1177     lpszText: ::LPSTR,
1178     lParam: ::LPARAM,
1179     lpReserved: *mut ::c_void,
1180 }}
1181 pub type PTTTOOLINFOA = *mut TTTOOLINFOA;
1182 pub type LPTTTOOLINFOA = *mut TTTOOLINFOA;
1183 STRUCT!{struct TTTOOLINFOW {
1184     cbSize: ::UINT,
1185     uFlags: ::UINT,
1186     hwnd: ::HWND,
1187     uId: ::UINT_PTR,
1188     rect: ::RECT,
1189     hinst: ::HINSTANCE,
1190     lpszText: ::LPSTR,
1191     lParam: ::LPARAM,
1192     lpReserved: *mut ::c_void,
1193 }}
1194 pub type PTTTOOLINFOW = *mut TTTOOLINFOW;
1195 pub type LPTTTOOLINFOW = *mut TTTOOLINFOW;
1196 pub const TTS_ALWAYSTIP: ::DWORD = 0x01;
1197 pub const TTS_NOPREFIX: ::DWORD = 0x02;
1198 pub const TTS_NOANIMATE: ::DWORD = 0x10;
1199 pub const TTS_NOFADE: ::DWORD = 0x20;
1200 pub const TTS_BALLOON: ::DWORD = 0x40;
1201 pub const TTS_CLOSE: ::DWORD = 0x80;
1202 pub const TTS_USEVISUALSTYLE: ::DWORD = 0x100;
1203 pub const TTF_IDISHWND: ::UINT = 0x0001;
1204 pub const TTF_CENTERTIP: ::UINT = 0x0002;
1205 pub const TTF_RTLREADING: ::UINT = 0x0004;
1206 pub const TTF_SUBCLASS: ::UINT = 0x0010;
1207 pub const TTF_TRACK: ::UINT = 0x0020;
1208 pub const TTF_ABSOLUTE: ::UINT = 0x0080;
1209 pub const TTF_TRANSPARENT: ::UINT = 0x0100;
1210 pub const TTF_PARSELINKS: ::UINT = 0x1000;
1211 pub const TTF_DI_SETITEM: ::UINT = 0x8000;
1212 pub const TTDT_AUTOMATIC: ::WPARAM = 0;
1213 pub const TTDT_RESHOW: ::WPARAM = 1;
1214 pub const TTDT_AUTOPOP: ::WPARAM = 2;
1215 pub const TTDT_INITIAL: ::WPARAM = 3;
1216 pub const TTI_NONE: ::WPARAM = 0;
1217 pub const TTI_INFO: ::WPARAM = 1;
1218 pub const TTI_WARNING: ::WPARAM = 2;
1219 pub const TTI_ERROR: ::WPARAM = 3;
1220 pub const TTI_INFO_LARGE: ::WPARAM = 4;
1221 pub const TTI_WARNING_LARGE: ::WPARAM = 5;
1222 pub const TTI_ERROR_LARGE: ::WPARAM = 6;
1223 pub const TTM_ACTIVATE: ::UINT = ::WM_USER + 1;
1224 pub const TTM_SETDELAYTIME: ::UINT = ::WM_USER + 3;
1225 pub const TTM_ADDTOOLA: ::UINT = ::WM_USER + 4;
1226 pub const TTM_ADDTOOLW: ::UINT = ::WM_USER + 50;
1227 pub const TTM_DELTOOLA: ::UINT = ::WM_USER + 5;
1228 pub const TTM_DELTOOLW: ::UINT = ::WM_USER + 51;
1229 pub const TTM_NEWTOOLRECTA: ::UINT = ::WM_USER + 6;
1230 pub const TTM_NEWTOOLRECTW: ::UINT = ::WM_USER + 52;
1231 pub const TTM_RELAYEVENT: ::UINT = ::WM_USER + 7;
1232 pub const TTM_GETTOOLINFOA: ::UINT = ::WM_USER + 8;
1233 pub const TTM_GETTOOLINFOW: ::UINT = ::WM_USER + 53;
1234 pub const TTM_SETTOOLINFOA: ::UINT = ::WM_USER + 9;
1235 pub const TTM_SETTOOLINFOW: ::UINT = ::WM_USER + 54;
1236 pub const TTM_HITTESTA: ::UINT = ::WM_USER + 10;
1237 pub const TTM_HITTESTW: ::UINT = ::WM_USER + 55;
1238 pub const TTM_GETTEXTA: ::UINT = ::WM_USER + 11;
1239 pub const TTM_GETTEXTW: ::UINT = ::WM_USER + 56;
1240 pub const TTM_UPDATETIPTEXTA: ::UINT = ::WM_USER + 12;
1241 pub const TTM_UPDATETIPTEXTW: ::UINT = ::WM_USER + 57;
1242 pub const TTM_GETTOOLCOUNT: ::UINT = ::WM_USER + 13;
1243 pub const TTM_ENUMTOOLSA: ::UINT = ::WM_USER + 14;
1244 pub const TTM_ENUMTOOLSW: ::UINT = ::WM_USER + 58;
1245 pub const TTM_GETCURRENTTOOLA: ::UINT = ::WM_USER + 15;
1246 pub const TTM_GETCURRENTTOOLW: ::UINT = ::WM_USER + 59;
1247 pub const TTM_WINDOWFROMPOINT: ::UINT = ::WM_USER + 16;
1248 pub const TTM_TRACKACTIVATE: ::UINT = ::WM_USER + 17;
1249 pub const TTM_TRACKPOSITION: ::UINT = ::WM_USER + 18;
1250 pub const TTM_SETTIPBKCOLOR: ::UINT = ::WM_USER + 19;
1251 pub const TTM_SETTIPTEXTCOLOR: ::UINT = ::WM_USER + 20;
1252 pub const TTM_GETDELAYTIME: ::UINT = ::WM_USER + 21;
1253 pub const TTM_GETTIPBKCOLOR: ::UINT = ::WM_USER + 22;
1254 pub const TTM_GETTIPTEXTCOLOR: ::UINT = ::WM_USER + 23;
1255 pub const TTM_SETMAXTIPWIDTH: ::UINT = ::WM_USER + 24;
1256 pub const TTM_GETMAXTIPWIDTH: ::UINT = ::WM_USER + 25;
1257 pub const TTM_SETMARGIN: ::UINT = ::WM_USER + 26;
1258 pub const TTM_GETMARGIN: ::UINT = ::WM_USER + 27;
1259 pub const TTM_POP: ::UINT = ::WM_USER + 28;
1260 pub const TTM_UPDATE: ::UINT = ::WM_USER + 29;
1261 pub const TTM_GETBUBBLESIZE: ::UINT = ::WM_USER + 30;
1262 pub const TTM_ADJUSTRECT: ::UINT = ::WM_USER + 31;
1263 pub const TTM_SETTITLEA: ::UINT = ::WM_USER + 32;
1264 pub const TTM_SETTITLEW: ::UINT = ::WM_USER + 33;
1265 pub const TTM_POPUP: ::UINT = ::WM_USER + 34;
1266 pub const TTM_GETTITLE: ::UINT = ::WM_USER + 35;
1267 STRUCT!{struct TTGETTITLE {
1268     dwSize: ::DWORD,
1269     uTitleBitmap: ::UINT,
1270     cch: ::UINT,
1271     pszTitle: *mut ::WCHAR,
1272 }}
1273 pub type LPTTGETTITLE = *mut TTGETTITLE;
1274 pub const TTM_SETWINDOWTHEME: ::UINT = CCM_SETWINDOWTHEME;
1275 pub type LPHITTESTINFOW = LPTTHITTESTINFOW;
1276 pub type LPHITTESTINFOA = LPTTHITTESTINFOA;
1277 STRUCT!{struct TTHITTESTINFOA {
1278     hwnd: ::HWND,
1279     pt: ::POINT,
1280     ti: TTTOOLINFOA,
1281 }}
1282 pub type LPTTHITTESTINFOA = *mut TTHITTESTINFOA;
1283 STRUCT!{struct TTHITTESTINFOW {
1284     hwnd: ::HWND,
1285     pt: ::POINT,
1286     ti: TTTOOLINFOW,
1287 }}
1288 pub type LPTTHITTESTINFOW = *mut TTHITTESTINFOW;
1289 pub const TTN_GETDISPINFOA: ::UINT = TTN_FIRST - 0;
1290 pub const TTN_GETDISPINFOW: ::UINT = TTN_FIRST - 10;
1291 pub const TTN_SHOW: ::UINT = TTN_FIRST - 1;
1292 pub const TTN_POP: ::UINT = TTN_FIRST - 2;
1293 pub const TTN_LINKCLICK: ::UINT = TTN_FIRST - 3;
1294 pub const TTN_NEEDTEXTA: ::UINT = TTN_GETDISPINFOA;
1295 pub const TTN_NEEDTEXTW: ::UINT = TTN_GETDISPINFOW;
1296 pub type TOOLTIPTEXTW = NMTTDISPINFOW;
1297 pub type TOOLTIPTEXTA = NMTTDISPINFOA;
1298 pub type LPTOOLTIPTEXTA = LPNMTTDISPINFOA;
1299 pub type LPTOOLTIPTEXTW = LPNMTTDISPINFOW;
1300 STRUCT!{nodebug struct NMTTDISPINFOA {
1301     hdr: ::NMHDR,
1302     lpszText: ::LPSTR,
1303     szText: [::c_char; 80],
1304     hinst: ::HINSTANCE,
1305     uFlags: ::UINT,
1306     lParam: ::LPARAM,
1307 }}
1308 pub type LPNMTTDISPINFOA = *mut NMTTDISPINFOA;
1309 STRUCT!{nodebug struct NMTTDISPINFOW {
1310     hdr: ::NMHDR,
1311     lpszText: ::LPWSTR,
1312     szText: [::WCHAR; 80],
1313     hinst: ::HINSTANCE,
1314     uFlags: ::UINT,
1315     lParam: ::LPARAM,
1316 }}
1317 pub type LPNMTTDISPINFOW = *mut NMTTDISPINFOW;
1318 pub const SBARS_SIZEGRIP: ::DWORD = 0x0100;
1319 pub const SBARS_TOOLTIPS: ::DWORD = 0x0800;
1320 pub const SBT_TOOLTIPS: ::DWORD = 0x0800;
1321 pub const SB_SETTEXTA: ::UINT = ::WM_USER + 1;
1322 pub const SB_SETTEXTW: ::UINT = ::WM_USER + 11;
1323 pub const SB_GETTEXTA: ::UINT = ::WM_USER + 2;
1324 pub const SB_GETTEXTW: ::UINT = ::WM_USER + 13;
1325 pub const SB_GETTEXTLENGTHA: ::UINT = ::WM_USER + 3;
1326 pub const SB_GETTEXTLENGTHW: ::UINT = ::WM_USER + 12;
1327 pub const SB_SETPARTS: ::UINT = ::WM_USER + 4;
1328 pub const SB_GETPARTS: ::UINT = ::WM_USER + 6;
1329 pub const SB_GETBORDERS: ::UINT = ::WM_USER + 7;
1330 pub const SB_SETMINHEIGHT: ::UINT = ::WM_USER + 8;
1331 pub const SB_SIMPLE: ::UINT = ::WM_USER + 9;
1332 pub const SB_GETRECT: ::UINT = ::WM_USER + 10;
1333 pub const SB_ISSIMPLE: ::UINT = ::WM_USER + 14;
1334 pub const SB_SETICON: ::UINT = ::WM_USER + 15;
1335 pub const SB_SETTIPTEXTA: ::UINT = ::WM_USER + 16;
1336 pub const SB_SETTIPTEXTW: ::UINT = ::WM_USER + 17;
1337 pub const SB_GETTIPTEXTA: ::UINT = ::WM_USER + 18;
1338 pub const SB_GETTIPTEXTW: ::UINT = ::WM_USER + 19;
1339 pub const SB_GETICON: ::UINT = ::WM_USER + 20;
1340 pub const SB_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
1341 pub const SB_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
1342 pub const SBT_OWNERDRAW: ::WPARAM = 0x1000;
1343 pub const SBT_NOBORDERS: ::WPARAM = 0x0100;
1344 pub const SBT_POPOUT: ::WPARAM = 0x0200;
1345 pub const SBT_RTLREADING: ::WPARAM = 0x0400;
1346 pub const SBT_NOTABPARSING: ::WPARAM = 0x0800;
1347 pub const SB_SETBKCOLOR: ::UINT = CCM_SETBKCOLOR;
1348 pub const SBN_SIMPLEMODECHANGE: ::UINT = SBN_FIRST - 0;
1349 pub const SB_SIMPLEID: ::WPARAM = 0x00ff;
1350 pub const TBS_AUTOTICKS: ::DWORD = 0x0001;
1351 pub const TBS_VERT: ::DWORD = 0x0002;
1352 pub const TBS_HORZ: ::DWORD = 0x0000;
1353 pub const TBS_TOP: ::DWORD = 0x0004;
1354 pub const TBS_BOTTOM: ::DWORD = 0x0000;
1355 pub const TBS_LEFT: ::DWORD = 0x0004;
1356 pub const TBS_RIGHT: ::DWORD = 0x0000;
1357 pub const TBS_BOTH: ::DWORD = 0x0008;
1358 pub const TBS_NOTICKS: ::DWORD = 0x0010;
1359 pub const TBS_ENABLESELRANGE: ::DWORD = 0x0020;
1360 pub const TBS_FIXEDLENGTH: ::DWORD = 0x0040;
1361 pub const TBS_NOTHUMB: ::DWORD = 0x0080;
1362 pub const TBS_TOOLTIPS: ::DWORD = 0x0100;
1363 pub const TBS_REVERSED: ::DWORD = 0x0200;
1364 pub const TBS_DOWNISLEFT: ::DWORD = 0x0400;
1365 pub const TBS_NOTIFYBEFOREMOVE: ::DWORD = 0x0800;
1366 pub const TBS_TRANSPARENTBKGND: ::DWORD = 0x1000;
1367 pub const TBM_GETPOS: ::UINT = ::WM_USER;
1368 pub const TBM_GETRANGEMIN: ::UINT = ::WM_USER + 1;
1369 pub const TBM_GETRANGEMAX: ::UINT = ::WM_USER + 2;
1370 pub const TBM_GETTIC: ::UINT = ::WM_USER + 3;
1371 pub const TBM_SETTIC: ::UINT = ::WM_USER + 4;
1372 pub const TBM_SETPOS: ::UINT = ::WM_USER + 5;
1373 pub const TBM_SETRANGE: ::UINT = ::WM_USER + 6;
1374 pub const TBM_SETRANGEMIN: ::UINT = ::WM_USER + 7;
1375 pub const TBM_SETRANGEMAX: ::UINT = ::WM_USER + 8;
1376 pub const TBM_CLEARTICS: ::UINT = ::WM_USER + 9;
1377 pub const TBM_SETSEL: ::UINT = ::WM_USER + 10;
1378 pub const TBM_SETSELSTART: ::UINT = ::WM_USER + 11;
1379 pub const TBM_SETSELEND: ::UINT = ::WM_USER + 12;
1380 pub const TBM_GETPTICS: ::UINT = ::WM_USER + 14;
1381 pub const TBM_GETTICPOS: ::UINT = ::WM_USER + 15;
1382 pub const TBM_GETNUMTICS: ::UINT = ::WM_USER + 16;
1383 pub const TBM_GETSELSTART: ::UINT = ::WM_USER + 17;
1384 pub const TBM_GETSELEND: ::UINT = ::WM_USER + 18;
1385 pub const TBM_CLEARSEL: ::UINT = ::WM_USER + 19;
1386 pub const TBM_SETTICFREQ: ::UINT = ::WM_USER + 20;
1387 pub const TBM_SETPAGESIZE: ::UINT = ::WM_USER + 21;
1388 pub const TBM_GETPAGESIZE: ::UINT = ::WM_USER + 22;
1389 pub const TBM_SETLINESIZE: ::UINT = ::WM_USER + 23;
1390 pub const TBM_GETLINESIZE: ::UINT = ::WM_USER + 24;
1391 pub const TBM_GETTHUMBRECT: ::UINT = ::WM_USER + 25;
1392 pub const TBM_GETCHANNELRECT: ::UINT = ::WM_USER + 26;
1393 pub const TBM_SETTHUMBLENGTH: ::UINT = ::WM_USER + 27;
1394 pub const TBM_GETTHUMBLENGTH: ::UINT = ::WM_USER + 28;
1395 pub const TBM_SETTOOLTIPS: ::UINT = ::WM_USER + 29;
1396 pub const TBM_GETTOOLTIPS: ::UINT = ::WM_USER + 30;
1397 pub const TBM_SETTIPSIDE: ::UINT = ::WM_USER + 31;
1398 pub const TBTS_TOP: ::WPARAM = 0;
1399 pub const TBTS_LEFT: ::WPARAM = 1;
1400 pub const TBTS_BOTTOM: ::WPARAM = 2;
1401 pub const TBTS_RIGHT: ::WPARAM = 3;
1402 pub const TBM_SETBUDDY: ::UINT = ::WM_USER + 32;
1403 pub const TBM_GETBUDDY: ::UINT = ::WM_USER + 33;
1404 pub const TBM_SETPOSNOTIFY: ::UINT = ::WM_USER + 34;
1405 pub const TBM_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
1406 pub const TBM_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
1407 pub const TBCD_TICS: ::DWORD_PTR = 0x0001;
1408 pub const TBCD_THUMB: ::DWORD_PTR = 0x0001;
1409 pub const TBCD_CHANNEL: ::DWORD_PTR = 0x0001;
1410 pub const TB_LINEUP: ::WPARAM = 0;
1411 pub const TB_LINEDOWN: ::WPARAM = 1;
1412 pub const TB_PAGEUP: ::WPARAM = 2;
1413 pub const TB_PAGEDOWN: ::WPARAM = 3;
1414 pub const TB_THUMBPOSITION: ::WPARAM = 4;
1415 pub const TB_THUMBTRACK: ::WPARAM = 5;
1416 pub const TB_TOP: ::WPARAM = 6;
1417 pub const TB_BOTTOM: ::WPARAM = 7;
1418 pub const TB_ENDTRACK: ::WPARAM = 8;
1419 pub const TRBN_THUMBPOSCHANGING: ::UINT = TRBN_FIRST - 1;
1420 STRUCT!{struct NMTRBTHUMBPOSCHANGING {
1421     hdr: ::NMHDR,
1422     dwPos: ::DWORD,
1423     nReason: ::c_int,
1424 }}
1425 STRUCT!{struct DRAGLISTINFO {
1426     uNotification: ::UINT,
1427     hWnd: ::HWND,
1428     ptCursor: ::POINT,
1429 }}
1430 pub type LPDRAGLISTINFO = *mut DRAGLISTINFO;
1431 pub const DL_BEGINDRAG: ::UINT = ::WM_USER + 133;
1432 pub const DL_DRAGGING: ::UINT = ::WM_USER + 134;
1433 pub const DL_DROPPED: ::UINT = ::WM_USER + 135;
1434 pub const DL_CANCELDRAG: ::UINT = ::WM_USER + 136;
1435 pub const DL_CURSORSET: ::UINT = 0;
1436 pub const DL_STOPCURSOR: ::UINT = 1;
1437 pub const DL_COPYCURSOR: ::UINT = 2;
1438 pub const DL_MOVECURSOR: ::UINT = 3;
1439 STRUCT!{struct UDACCEL {
1440     nSec: ::UINT,
1441     nInc: ::UINT,
1442 }}
1443 pub type LPUDACCEL = *mut UDACCEL;
1444 pub const UD_MAXVAL: ::c_short = 0x7fff;
1445 pub const UD_MINVAL: ::c_short = 0 - UD_MAXVAL;
1446 pub const UDS_WRAP: ::DWORD = 0x0001;
1447 pub const UDS_SETBUDDYINT: ::DWORD = 0x0002;
1448 pub const UDS_ALIGNRIGHT: ::DWORD = 0x0004;
1449 pub const UDS_ALIGNLEFT: ::DWORD = 0x0008;
1450 pub const UDS_AUTOBUDDY: ::DWORD = 0x0010;
1451 pub const UDS_ARROWKEYS: ::DWORD = 0x0020;
1452 pub const UDS_HORZ: ::DWORD = 0x0040;
1453 pub const UDS_NOTHOUSANDS: ::DWORD = 0x0080;
1454 pub const UDS_HOTTRACK: ::DWORD = 0x0100;
1455 pub const UDM_SETRANGE: ::UINT = ::WM_USER + 101;
1456 pub const UDM_GETRANGE: ::UINT = ::WM_USER + 102;
1457 pub const UDM_SETPOS: ::UINT = ::WM_USER + 103;
1458 pub const UDM_GETPOS: ::UINT = ::WM_USER + 104;
1459 pub const UDM_SETBUDDY: ::UINT = ::WM_USER + 105;
1460 pub const UDM_GETBUDDY: ::UINT = ::WM_USER + 106;
1461 pub const UDM_SETACCEL: ::UINT = ::WM_USER + 107;
1462 pub const UDM_GETACCEL: ::UINT = ::WM_USER + 108;
1463 pub const UDM_SETBASE: ::UINT = ::WM_USER + 109;
1464 pub const UDM_GETBASE: ::UINT = ::WM_USER + 110;
1465 pub const UDM_SETRANGE32: ::UINT = ::WM_USER + 111;
1466 pub const UDM_GETRANGE32: ::UINT = ::WM_USER + 112;
1467 pub const UDM_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
1468 pub const UDM_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
1469 pub const UDM_SETPOS32: ::UINT = ::WM_USER + 113;
1470 pub const UDM_GETPOS32: ::UINT = ::WM_USER + 114;
1471 pub type NM_UPDOWN = NMUPDOWN;
1472 pub type LPNM_UPDOWN = LPNMUPDOWN;
1473 STRUCT!{struct NMUPDOWN {
1474     hdr: ::NMHDR,
1475     iPos: ::c_int,
1476     iDelta: ::c_int,
1477 }}
1478 pub type LPNMUPDOWN = *mut NMUPDOWN;
1479 pub const UDN_DELTAPOS: ::UINT = UDN_FIRST - 1;
1480 pub const PBS_SMOOTH: ::DWORD = 0x01;
1481 pub const PBS_VERTICAL: ::DWORD = 0x04;
1482 pub const PBM_SETRANGE: ::UINT = ::WM_USER + 1;
1483 pub const PBM_SETPOS: ::UINT = ::WM_USER + 2;
1484 pub const PBM_DELTAPOS: ::UINT = ::WM_USER + 3;
1485 pub const PBM_SETSTEP: ::UINT = ::WM_USER + 4;
1486 pub const PBM_STEPIT: ::UINT = ::WM_USER + 5;
1487 pub const PBM_SETRANGE32: ::UINT = ::WM_USER + 6;
1488 STRUCT!{struct PBRANGE {
1489     iLow: ::c_int,
1490     iHigh: ::c_int,
1491 }}
1492 pub type LPPBRANGE = *mut PBRANGE;
1493 pub const PBM_GETRANGE: ::UINT = ::WM_USER + 7;
1494 pub const PBM_GETPOS: ::UINT = ::WM_USER + 8;
1495 pub const PBM_SETBARCOLOR: ::UINT = ::WM_USER + 9;
1496 pub const PBM_SETBKCOLOR: ::UINT = CCM_SETBKCOLOR;
1497 pub const PBM_SETMARQUEE: ::UINT = ::WM_USER + 10;
1498 pub const PBS_MARQUEE: ::DWORD = 0x08;
1499 pub const PBS_SMOOTHREVERSE: ::DWORD = 0x10;
1500 pub const PBM_GETSTEP: ::UINT = ::WM_USER + 13;
1501 pub const PBM_GETBKCOLOR: ::UINT = ::WM_USER + 14;
1502 pub const PBM_GETBARCOLOR: ::UINT = ::WM_USER + 15;
1503 pub const PBM_SETSTATE: ::UINT = ::WM_USER + 16;
1504 pub const PBM_GETSTATE: ::UINT = ::WM_USER + 17;
1505 pub const PBST_NORMAL: ::c_int = 0x0001;
1506 pub const PBST_ERROR: ::c_int = 0x0002;
1507 pub const PBST_PAUSED: ::c_int = 0x0003;
1508 pub const HOTKEYF_SHIFT: ::BYTE = 0x01;
1509 pub const HOTKEYF_CONTROL: ::BYTE = 0x02;
1510 pub const HOTKEYF_ALT: ::BYTE = 0x04;
1511 pub const HOTKEYF_EXT: ::BYTE = 0x08;
1512 pub const HKCOMB_NONE: ::WPARAM = 0x0001;
1513 pub const HKCOMB_S: ::WPARAM = 0x0002;
1514 pub const HKCOMB_C: ::WPARAM = 0x0004;
1515 pub const HKCOMB_A: ::WPARAM = 0x0008;
1516 pub const HKCOMB_SC: ::WPARAM = 0x0010;
1517 pub const HKCOMB_SA: ::WPARAM = 0x0020;
1518 pub const HKCOMB_CA: ::WPARAM = 0x0040;
1519 pub const HKCOMB_SCA: ::WPARAM = 0x0080;
1520 pub const HKM_SETHOTKEY: ::UINT = ::WM_USER + 1;
1521 pub const HKM_GETHOTKEY: ::UINT = ::WM_USER + 2;
1522 pub const HKM_SETRULES: ::UINT = ::WM_USER + 3;
1523 pub const CCS_TOP: ::DWORD = 0x00000001;
1524 pub const CCS_NOMOVEY: ::DWORD = 0x00000002;
1525 pub const CCS_BOTTOM: ::DWORD = 0x00000003;
1526 pub const CCS_NORESIZE: ::DWORD = 0x00000004;
1527 pub const CCS_NOPARENTALIGN: ::DWORD = 0x00000008;
1528 pub const CCS_ADJUSTABLE: ::DWORD = 0x00000020;
1529 pub const CCS_NODIVIDER: ::DWORD = 0x00000040;
1530 pub const CCS_VERT: ::DWORD = 0x00000080;
1531 pub const CCS_LEFT: ::DWORD = CCS_VERT | CCS_TOP;
1532 pub const CCS_RIGHT: ::DWORD = CCS_VERT | CCS_BOTTOM;
1533 pub const CCS_NOMOVEX: ::DWORD = CCS_VERT | CCS_NOMOVEY;
1534 pub const MAX_LINKID_TEXT: usize = 48;
1535 pub const L_MAX_URL_LENGTH: usize = 2048 + 32 + 4;
1536 pub const LWS_TRANSPARENT: ::DWORD = 0x0001;
1537 pub const LWS_IGNORERETURN: ::DWORD = 0x0002;
1538 pub const LWS_NOPREFIX: ::DWORD = 0x0004;
1539 pub const LWS_USEVISUALSTYLE: ::DWORD = 0x0008;
1540 pub const LWS_USECUSTOMTEXT: ::DWORD = 0x0010;
1541 pub const LWS_RIGHT: ::DWORD = 0x0020;
1542 pub const LIF_ITEMINDEX: ::UINT = 0x00000001;
1543 pub const LIF_STATE: ::UINT = 0x00000002;
1544 pub const LIF_ITEMID: ::UINT = 0x00000004;
1545 pub const LIF_URL: ::UINT = 0x00000008;
1546 pub const LIS_FOCUSED: ::UINT = 0x00000001;
1547 pub const LIS_ENABLED: ::UINT = 0x00000002;
1548 pub const LIS_VISITED: ::UINT = 0x00000004;
1549 pub const LIS_HOTTRACK: ::UINT = 0x00000008;
1550 pub const LIS_DEFAULTCOLORS: ::UINT = 0x00000010;
1551 STRUCT!{nodebug struct LITEM {
1552     mask: ::UINT,
1553     iLink: ::c_int,
1554     state: ::UINT,
1555     stateMask: ::UINT,
1556     szID: [::WCHAR; MAX_LINKID_TEXT],
1557     szUrl: [::WCHAR; L_MAX_URL_LENGTH],
1558 }}
1559 pub type PLITEM = *mut LITEM;
1560 STRUCT!{nodebug struct LHITTESTINFO {
1561     pt: ::POINT,
1562     item: LITEM,
1563 }}
1564 pub type PLHITTESTINFO = *mut LHITTESTINFO;
1565 STRUCT!{nodebug struct NMLINK {
1566     hdr: ::NMHDR,
1567     item: LITEM,
1568 }}
1569 pub type PNMLINK = *mut NMLINK;
1570 pub const LM_HITTEST: ::UINT = ::WM_USER + 0x300;
1571 pub const LM_GETIDEALHEIGHT: ::UINT = ::WM_USER + 0x301;
1572 pub const LM_SETITEM: ::UINT = ::WM_USER + 0x302;
1573 pub const LM_GETITEM: ::UINT = ::WM_USER + 0x303;
1574 pub const LM_GETIDEALSIZE: ::UINT = LM_GETIDEALHEIGHT;
1575 pub const LVS_ICON: ::DWORD = 0x0000;
1576 pub const LVS_REPORT: ::DWORD = 0x0001;
1577 pub const LVS_SMALLICON: ::DWORD = 0x0002;
1578 pub const LVS_LIST: ::DWORD = 0x0003;
1579 pub const LVS_TYPEMASK: ::DWORD = 0x0003;
1580 pub const LVS_SINGLESEL: ::DWORD = 0x0004;
1581 pub const LVS_SHOWSELALWAYS: ::DWORD = 0x0008;
1582 pub const LVS_SORTASCENDING: ::DWORD = 0x0010;
1583 pub const LVS_SORTDESCENDING: ::DWORD = 0x0020;
1584 pub const LVS_SHAREIMAGELISTS: ::DWORD = 0x0040;
1585 pub const LVS_NOLABELWRAP: ::DWORD = 0x0080;
1586 pub const LVS_AUTOARRANGE: ::DWORD = 0x0100;
1587 pub const LVS_EDITLABELS: ::DWORD = 0x0200;
1588 pub const LVS_OWNERDATA: ::DWORD = 0x1000;
1589 pub const LVS_NOSCROLL: ::DWORD = 0x2000;
1590 pub const LVS_TYPESTYLEMASK: ::DWORD = 0xfc00;
1591 pub const LVS_ALIGNTOP: ::DWORD = 0x0000;
1592 pub const LVS_ALIGNLEFT: ::DWORD = 0x0800;
1593 pub const LVS_ALIGNMASK: ::DWORD = 0x0c00;
1594 pub const LVS_OWNERDRAWFIXED: ::DWORD = 0x0400;
1595 pub const LVS_NOCOLUMNHEADER: ::DWORD = 0x4000;
1596 pub const LVS_NOSORTHEADER: ::DWORD = 0x8000;
1597 pub const LVM_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
1598 pub const LVM_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
1599 pub const LVM_GETBKCOLOR: ::UINT = LVM_FIRST + 0;
1600 pub const LVM_SETBKCOLOR: ::UINT = LVM_FIRST + 1;
1601 pub const LVM_GETIMAGELIST: ::UINT = LVM_FIRST + 2;
1602 pub const LVM_SETIMAGELIST: ::UINT = LVM_FIRST + 3;
1603 pub const LVM_GETITEMCOUNT: ::UINT = LVM_FIRST + 4;
1604 pub const LVSIL_NORMAL: ::c_int = 0;
1605 pub const LVSIL_SMALL: ::c_int = 1;
1606 pub const LVSIL_STATE: ::c_int = 2;
1607 pub const LVSIL_GROUPHEADER: ::c_int = 3;
1608 pub const LVIF_TEXT: ::UINT = 0x00000001;
1609 pub const LVIF_IMAGE: ::UINT = 0x00000002;
1610 pub const LVIF_PARAM: ::UINT = 0x00000004;
1611 pub const LVIF_STATE: ::UINT = 0x00000008;
1612 pub const LVIF_INDENT: ::UINT = 0x00000010;
1613 pub const LVIF_NORECOMPUTE: ::UINT = 0x00000800;
1614 pub const LVIF_GROUPID: ::UINT = 0x00000100;
1615 pub const LVIF_COLUMNS: ::UINT = 0x00000200;
1616 pub const LVIF_COLFMT: ::UINT = 0x00010000;
1617 pub const LVIS_FOCUSED: ::UINT = 0x0001;
1618 pub const LVIS_SELECTED: ::UINT = 0x0002;
1619 pub const LVIS_CUT: ::UINT = 0x0004;
1620 pub const LVIS_DROPHILITED: ::UINT = 0x0008;
1621 pub const LVIS_GLOW: ::UINT = 0x0010;
1622 pub const LVIS_ACTIVATING: ::UINT = 0x0020;
1623 pub const LVIS_OVERLAYMASK: ::UINT = 0x0F00;
1624 pub const LVIS_STATEIMAGEMASK: ::UINT = 0xF000;
1625 #[inline] #[allow(dead_code)]
INDEXTOSTATEIMAGEMASK(i: ::UINT) -> ::UINT1626 pub fn INDEXTOSTATEIMAGEMASK(i: ::UINT) -> ::UINT { i << 12 }
1627 pub const I_INDENTCALLBACK: ::c_int = -1;
1628 pub type LV_ITEMA = LVITEMA;
1629 pub type LV_ITEMW = LVITEMW;
1630 pub const I_GROUPIDCALLBACK: ::c_int = -1;
1631 pub const I_GROUPIDNONE: ::c_int = -2;
1632 STRUCT!{struct LVITEMA {
1633     mask: ::UINT,
1634     iItem: ::c_int,
1635     iSubItem: ::c_int,
1636     state: ::UINT,
1637     stateMask: ::UINT,
1638     pszText: ::LPSTR,
1639     cchTextMax: ::c_int,
1640     iImage: ::c_int,
1641     lParam: ::LPARAM,
1642     iIndent: ::c_int,
1643     iGroupId: ::c_int,
1644     cColumns: ::UINT,
1645     puColumns: ::PUINT,
1646     piColFmt: *mut ::c_int,
1647     iGroup: ::c_int,
1648 }}
1649 pub type LPLVITEMA = *mut LVITEMA;
1650 STRUCT!{struct LVITEMW {
1651     mask: ::UINT,
1652     iItem: ::c_int,
1653     iSubItem: ::c_int,
1654     state: ::UINT,
1655     stateMask: ::UINT,
1656     pszText: ::LPWSTR,
1657     cchTextMax: ::c_int,
1658     iImage: ::c_int,
1659     lParam: ::LPARAM,
1660     iIndent: ::c_int,
1661     iGroupId: ::c_int,
1662     cColumns: ::UINT,
1663     puColumns: ::PUINT,
1664     piColFmt: *mut ::c_int,
1665     iGroup: ::c_int,
1666 }}
1667 pub type LPLVITEMW = *mut LVITEMW;
1668 pub const LPSTR_TEXTCALLBACKW: ::LPWSTR = (0 - 1) as ::LPWSTR;
1669 pub const LPSTR_TEXTCALLBACKA: ::LPSTR = (0 - 1) as ::LPSTR;
1670 pub const I_IMAGECALLBACK: ::c_int = -1;
1671 pub const I_IMAGENONE: ::c_int = -2;
1672 pub const I_COLUMNSCALLBACK: ::UINT = -1i32 as ::UINT;
1673 pub const LVM_GETITEMA: ::UINT = LVM_FIRST + 5;
1674 pub const LVM_GETITEMW: ::UINT = LVM_FIRST + 75;
1675 pub const LVM_SETITEMA: ::UINT = LVM_FIRST + 6;
1676 pub const LVM_SETITEMW: ::UINT = LVM_FIRST + 76;
1677 pub const LVM_INSERTITEMA: ::UINT = LVM_FIRST + 7;
1678 pub const LVM_INSERTITEMW: ::UINT = LVM_FIRST + 77;
1679 pub const LVM_DELETEITEM: ::UINT = LVM_FIRST + 8;
1680 pub const LVM_DELETEALLITEMS: ::UINT = LVM_FIRST + 9;
1681 pub const LVM_GETCALLBACKMASK: ::UINT = LVM_FIRST + 10;
1682 pub const LVM_SETCALLBACKMASK: ::UINT = LVM_FIRST + 11;
1683 pub const LVM_GETNEXTITEM: ::UINT = LVM_FIRST + 12;
1684 pub const LVNI_ALL: ::LPARAM = 0x0000;
1685 pub const LVNI_FOCUSED: ::LPARAM = 0x0001;
1686 pub const LVNI_SELECTED: ::LPARAM = 0x0002;
1687 pub const LVNI_CUT: ::LPARAM = 0x0004;
1688 pub const LVNI_DROPHILITED: ::LPARAM = 0x0008;
1689 pub const LVNI_STATEMASK: ::LPARAM = LVNI_FOCUSED | LVNI_SELECTED | LVNI_CUT | LVNI_DROPHILITED;
1690 pub const LVNI_VISIBLEORDER: ::LPARAM = 0x0010;
1691 pub const LVNI_PREVIOUS: ::LPARAM = 0x0020;
1692 pub const LVNI_VISIBLEONLY: ::LPARAM = 0x0040;
1693 pub const LVNI_SAMEGROUPONLY: ::LPARAM = 0x0080;
1694 pub const LVNI_ABOVE: ::LPARAM = 0x0100;
1695 pub const LVNI_BELOW: ::LPARAM = 0x0200;
1696 pub const LVNI_TOLEFT: ::LPARAM = 0x0400;
1697 pub const LVNI_TORIGHT: ::LPARAM = 0x0800;
1698 pub const LVNI_DIRECTIONMASK: ::LPARAM = LVNI_ABOVE | LVNI_BELOW | LVNI_TOLEFT | LVNI_TORIGHT;
1699 pub const LVFI_PARAM: ::UINT = 0x0001;
1700 pub const LVFI_STRING: ::UINT = 0x0002;
1701 pub const LVFI_SUBSTRING: ::UINT = 0x0004;
1702 pub const LVFI_PARTIAL: ::UINT = 0x0008;
1703 pub const LVFI_WRAP: ::UINT = 0x0020;
1704 pub const LVFI_NEARESTXY: ::UINT = 0x0040;
1705 pub type LV_FINDINFOA = LVFINDINFOA;
1706 pub type LV_FINDINFOW = LVFINDINFOW;
1707 STRUCT!{struct LVFINDINFOA {
1708     flags: ::UINT,
1709     psz: ::LPCSTR,
1710     lParam: ::LPARAM,
1711     pt: ::POINT,
1712     vkDirection: ::UINT,
1713 }}
1714 pub type LPLVFINDINFOA = *mut LVFINDINFOA;
1715 STRUCT!{struct LVFINDINFOW {
1716     flags: ::UINT,
1717     psz: ::LPCWSTR,
1718     lParam: ::LPARAM,
1719     pt: ::POINT,
1720     vkDirection: ::UINT,
1721 }}
1722 pub type LPLVFINDINFOW = *mut LVFINDINFOW;
1723 pub const LVM_FINDITEMA: ::UINT = LVM_FIRST + 13;
1724 pub const LVM_FINDITEMW: ::UINT = LVM_FIRST + 83;
1725 pub const LVIR_BOUNDS: ::c_int = 0;
1726 pub const LVIR_ICON: ::c_int = 1;
1727 pub const LVIR_LABEL: ::c_int = 2;
1728 pub const LVIR_SELECTBOUNDS: ::c_int = 3;
1729 pub const LVM_GETITEMRECT: ::UINT = LVM_FIRST + 14;
1730 pub const LVM_SETITEMPOSITION: ::UINT = LVM_FIRST + 15;
1731 pub const LVM_GETITEMPOSITION: ::UINT = LVM_FIRST + 16;
1732 pub const LVM_GETSTRINGWIDTHA: ::UINT = LVM_FIRST + 17;
1733 pub const LVM_GETSTRINGWIDTHW: ::UINT = LVM_FIRST + 87;
1734 pub const LVHT_NOWHERE: ::UINT = 0x00000001;
1735 pub const LVHT_ONITEMICON: ::UINT = 0x00000002;
1736 pub const LVHT_ONITEMLABEL: ::UINT = 0x00000004;
1737 pub const LVHT_ONITEMSTATEICON: ::UINT = 0x00000008;
1738 pub const LVHT_ONITEM: ::UINT = LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON;
1739 pub const LVHT_ABOVE: ::UINT = 0x00000008;
1740 pub const LVHT_BELOW: ::UINT = 0x00000010;
1741 pub const LVHT_TORIGHT: ::UINT = 0x00000020;
1742 pub const LVHT_TOLEFT: ::UINT = 0x00000040;
1743 pub const LVHT_EX_GROUP_HEADER: ::UINT = 0x10000000;
1744 pub const LVHT_EX_GROUP_FOOTER: ::UINT = 0x20000000;
1745 pub const LVHT_EX_GROUP_COLLAPSE: ::UINT = 0x40000000;
1746 pub const LVHT_EX_GROUP_BACKGROUND: ::UINT = 0x80000000;
1747 pub const LVHT_EX_GROUP_STATEICON: ::UINT = 0x01000000;
1748 pub const LVHT_EX_GROUP_SUBSETLINK: ::UINT = 0x02000000;
1749 pub const LVHT_EX_GROUP: ::UINT = LVHT_EX_GROUP_BACKGROUND | LVHT_EX_GROUP_COLLAPSE
1750     | LVHT_EX_GROUP_FOOTER | LVHT_EX_GROUP_HEADER | LVHT_EX_GROUP_STATEICON
1751     | LVHT_EX_GROUP_SUBSETLINK;
1752 pub const LVHT_EX_ONCONTENTS: ::UINT = 0x04000000;
1753 pub const LVHT_EX_FOOTER: ::UINT = 0x08000000;
1754 pub type LV_HITTESTINFO = LVHITTESTINFO;
1755 STRUCT!{struct LVHITTESTINFO {
1756     pt: ::POINT,
1757     flags: ::UINT,
1758     iItem: ::c_int,
1759     iSubItem: ::c_int,
1760     iGroup: ::c_int,
1761 }}
1762 pub type LPLVHITTESTINFO = *mut LVHITTESTINFO;
1763 pub const LVM_HITTEST: ::UINT = LVM_FIRST + 18;
1764 pub const LVM_ENSUREVISIBLE: ::UINT = LVM_FIRST + 19;
1765 pub const LVM_SCROLL: ::UINT = LVM_FIRST + 20;
1766 pub const LVM_REDRAWITEMS: ::UINT = LVM_FIRST + 21;
1767 pub const LVA_DEFAULT: ::WPARAM = 0x0000;
1768 pub const LVA_ALIGNLEFT: ::WPARAM = 0x0001;
1769 pub const LVA_ALIGNTOP: ::WPARAM = 0x0002;
1770 pub const LVA_SNAPTOGRID: ::WPARAM = 0x0005;
1771 pub const LVM_ARRANGE: ::UINT = LVM_FIRST + 22;
1772 pub const LVM_EDITLABELA: ::UINT = LVM_FIRST + 23;
1773 pub const LVM_EDITLABELW: ::UINT = LVM_FIRST + 118;
1774 pub const LVM_GETEDITCONTROL: ::UINT = LVM_FIRST + 24;
1775 pub type LV_COLUMNA = LVCOLUMNA;
1776 pub type LV_COLUMNW = LVCOLUMNW;
1777 STRUCT!{struct LVCOLUMNA {
1778     mask: ::UINT,
1779     fmt: ::c_int,
1780     cx: ::c_int,
1781     pszText: ::LPSTR,
1782     cchTextMax: ::c_int,
1783     iSubItem: ::c_int,
1784     iImage: ::c_int,
1785     iOrder: ::c_int,
1786     cxMin: ::c_int,
1787     cxDefault: ::c_int,
1788     cxIdeal: ::c_int,
1789 }}
1790 pub type LPLVCOLUMNA = *mut LVCOLUMNA;
1791 STRUCT!{struct LVCOLUMNW {
1792     mask: ::UINT,
1793     fmt: ::c_int,
1794     cx: ::c_int,
1795     pszText: ::LPWSTR,
1796     cchTextMax: ::c_int,
1797     iSubItem: ::c_int,
1798     iImage: ::c_int,
1799     iOrder: ::c_int,
1800     cxMin: ::c_int,
1801     cxDefault: ::c_int,
1802     cxIdeal: ::c_int,
1803 }}
1804 pub type LPLVCOLUMNW = *mut LVCOLUMNW;
1805 pub const LVCF_FMT: ::UINT = 0x0001;
1806 pub const LVCF_WIDTH: ::UINT = 0x0002;
1807 pub const LVCF_TEXT: ::UINT = 0x0004;
1808 pub const LVCF_SUBITEM: ::UINT = 0x0008;
1809 pub const LVCF_IMAGE: ::UINT = 0x0010;
1810 pub const LVCF_ORDER: ::UINT = 0x0020;
1811 pub const LVCF_MINWIDTH: ::UINT = 0x0040;
1812 pub const LVCF_DEFAULTWIDTH: ::UINT = 0x0080;
1813 pub const LVCF_IDEALWIDTH: ::UINT = 0x0100;
1814 pub const LVCFMT_LEFT: ::c_int = 0x0000;
1815 pub const LVCFMT_RIGHT: ::c_int = 0x0001;
1816 pub const LVCFMT_CENTER: ::c_int = 0x0002;
1817 pub const LVCFMT_JUSTIFYMASK: ::c_int = 0x0003;
1818 pub const LVCFMT_IMAGE: ::c_int = 0x0800;
1819 pub const LVCFMT_BITMAP_ON_RIGHT: ::c_int = 0x1000;
1820 pub const LVCFMT_COL_HAS_IMAGES: ::c_int = 0x8000;
1821 pub const LVCFMT_FIXED_WIDTH: ::c_int = 0x00100;
1822 pub const LVCFMT_NO_DPI_SCALE: ::c_int = 0x40000;
1823 pub const LVCFMT_FIXED_RATIO: ::c_int = 0x80000;
1824 pub const LVCFMT_LINE_BREAK: ::c_int = 0x100000;
1825 pub const LVCFMT_FILL: ::c_int = 0x200000;
1826 pub const LVCFMT_WRAP: ::c_int = 0x400000;
1827 pub const LVCFMT_NO_TITLE: ::c_int = 0x800000;
1828 pub const LVCFMT_TILE_PLACEMENTMASK: ::c_int = LVCFMT_LINE_BREAK | LVCFMT_FILL;
1829 pub const LVCFMT_SPLITBUTTON: ::c_int = 0x1000000;
1830 pub const LVM_GETCOLUMNA: ::UINT = LVM_FIRST + 25;
1831 pub const LVM_GETCOLUMNW: ::UINT = LVM_FIRST + 95;
1832 pub const LVM_SETCOLUMNA: ::UINT = LVM_FIRST + 26;
1833 pub const LVM_SETCOLUMNW: ::UINT = LVM_FIRST + 96;
1834 pub const LVM_INSERTCOLUMNA: ::UINT = LVM_FIRST + 27;
1835 pub const LVM_INSERTCOLUMNW: ::UINT = LVM_FIRST + 97;
1836 pub const LVM_DELETECOLUMN: ::UINT = LVM_FIRST + 28;
1837 pub const LVM_GETCOLUMNWIDTH: ::UINT = LVM_FIRST + 29;
1838 pub const LVM_SETCOLUMNWIDTH: ::UINT = LVM_FIRST + 30;
1839 pub const LVM_GETHEADER: ::UINT = LVM_FIRST + 31;
1840 pub const LVM_CREATEDRAGIMAGE: ::UINT = LVM_FIRST + 33;
1841 pub const LVM_GETVIEWRECT: ::UINT = LVM_FIRST + 34;
1842 pub const LVM_GETTEXTCOLOR: ::UINT = LVM_FIRST + 35;
1843 pub const LVM_SETTEXTCOLOR: ::UINT = LVM_FIRST + 36;
1844 pub const LVM_GETTEXTBKCOLOR: ::UINT = LVM_FIRST + 37;
1845 pub const LVM_SETTEXTBKCOLOR: ::UINT = LVM_FIRST + 38;
1846 pub const LVM_GETTOPINDEX: ::UINT = LVM_FIRST + 39;
1847 pub const LVM_GETCOUNTPERPAGE: ::UINT = LVM_FIRST + 40;
1848 pub const LVM_GETORIGIN: ::UINT = LVM_FIRST + 41;
1849 pub const LVM_UPDATE: ::UINT = LVM_FIRST + 42;
1850 pub const LVM_SETITEMSTATE: ::UINT = LVM_FIRST + 43;
1851 pub const LVM_GETITEMSTATE: ::UINT = LVM_FIRST + 44;
1852 pub const LVM_GETITEMTEXTA: ::UINT = LVM_FIRST + 45;
1853 pub const LVM_GETITEMTEXTW: ::UINT = LVM_FIRST + 115;
1854 pub const LVM_SETITEMTEXTA: ::UINT = LVM_FIRST + 46;
1855 pub const LVM_SETITEMTEXTW: ::UINT = LVM_FIRST + 116;
1856 pub const LVM_SETITEMCOUNT: ::UINT = LVM_FIRST + 47;
1857 pub const LVM_SORTITEMS: ::UINT = LVM_FIRST + 48;
1858 pub const LVM_SETITEMPOSITION32: ::UINT = LVM_FIRST + 49;
1859 pub const LVM_GETSELECTEDCOUNT: ::UINT = LVM_FIRST + 50;
1860 pub const LVM_GETITEMSPACING: ::UINT = LVM_FIRST + 51;
1861 pub const LVM_GETISEARCHSTRINGA: ::UINT = LVM_FIRST + 52;
1862 pub const LVM_GETISEARCHSTRINGW: ::UINT = LVM_FIRST + 117;
1863 pub const LVM_SETICONSPACING: ::UINT = LVM_FIRST + 53;
1864 pub const LVM_SETEXTENDEDLISTVIEWSTYLE: ::UINT = LVM_FIRST + 54;
1865 pub const LVM_GETEXTENDEDLISTVIEWSTYLE: ::UINT = LVM_FIRST + 55;
1866 pub const LVSICF_NOINVALIDATEALL: ::LPARAM = 0x00000001;
1867 pub const LVSICF_NOSCROLL: ::LPARAM = 0x00000002;
1868 pub const LVS_EX_GRIDLINES: ::DWORD = 0x00000001;
1869 pub const LVS_EX_SUBITEMIMAGES: ::DWORD = 0x00000002;
1870 pub const LVS_EX_CHECKBOXES: ::DWORD = 0x00000004;
1871 pub const LVS_EX_TRACKSELECT: ::DWORD = 0x00000008;
1872 pub const LVS_EX_HEADERDRAGDROP: ::DWORD = 0x00000010;
1873 pub const LVS_EX_FULLROWSELECT: ::DWORD = 0x00000020;
1874 pub const LVS_EX_ONECLICKACTIVATE: ::DWORD = 0x00000040;
1875 pub const LVS_EX_TWOCLICKACTIVATE: ::DWORD = 0x00000080;
1876 pub const LVS_EX_FLATSB: ::DWORD = 0x00000100;
1877 pub const LVS_EX_REGIONAL: ::DWORD = 0x00000200;
1878 pub const LVS_EX_INFOTIP: ::DWORD = 0x00000400;
1879 pub const LVS_EX_UNDERLINEHOT: ::DWORD = 0x00000800;
1880 pub const LVS_EX_UNDERLINECOLD: ::DWORD = 0x00001000;
1881 pub const LVS_EX_MULTIWORKAREAS: ::DWORD = 0x00002000;
1882 pub const LVS_EX_LABELTIP: ::DWORD = 0x00004000;
1883 pub const LVS_EX_BORDERSELECT: ::DWORD = 0x00008000;
1884 pub const LVS_EX_DOUBLEBUFFER: ::DWORD = 0x00010000;
1885 pub const LVS_EX_HIDELABELS: ::DWORD = 0x00020000;
1886 pub const LVS_EX_SINGLEROW: ::DWORD = 0x00040000;
1887 pub const LVS_EX_SNAPTOGRID: ::DWORD = 0x00080000;
1888 pub const LVS_EX_SIMPLESELECT: ::DWORD = 0x00100000;
1889 pub const LVS_EX_JUSTIFYCOLUMNS: ::DWORD = 0x00200000;
1890 pub const LVS_EX_TRANSPARENTBKGND: ::DWORD = 0x00400000;
1891 pub const LVS_EX_TRANSPARENTSHADOWTEXT: ::DWORD = 0x00800000;
1892 pub const LVS_EX_AUTOAUTOARRANGE: ::DWORD = 0x01000000;
1893 pub const LVS_EX_HEADERINALLVIEWS: ::DWORD = 0x02000000;
1894 pub const LVS_EX_AUTOCHECKSELECT: ::DWORD = 0x08000000;
1895 pub const LVS_EX_AUTOSIZECOLUMNS: ::DWORD = 0x10000000;
1896 pub const LVS_EX_COLUMNSNAPPOINTS: ::DWORD = 0x40000000;
1897 pub const LVS_EX_COLUMNOVERFLOW: ::DWORD = 0x80000000;
1898 pub const LVM_GETSUBITEMRECT: ::UINT = LVM_FIRST + 56;
1899 pub const LVM_SUBITEMHITTEST: ::UINT = LVM_FIRST + 57;
1900 pub const LVM_SETCOLUMNORDERARRAY: ::UINT = LVM_FIRST + 58;
1901 pub const LVM_GETCOLUMNORDERARRAY: ::UINT = LVM_FIRST + 59;
1902 pub const LVM_SETHOTITEM: ::UINT = LVM_FIRST + 60;
1903 pub const LVM_GETHOTITEM: ::UINT = LVM_FIRST + 61;
1904 pub const LVM_SETHOTCURSOR: ::UINT = LVM_FIRST + 62;
1905 pub const LVM_GETHOTCURSOR: ::UINT = LVM_FIRST + 63;
1906 pub const LVM_APPROXIMATEVIEWRECT: ::UINT = LVM_FIRST + 64;
1907 pub const LV_MAX_WORKAREAS: ::WPARAM = 16;
1908 pub const LVM_SETWORKAREAS: ::UINT = LVM_FIRST + 65;
1909 pub const LVM_GETWORKAREAS: ::UINT = LVM_FIRST + 70;
1910 pub const LVM_GETNUMBEROFWORKAREAS: ::UINT = LVM_FIRST + 73;
1911 pub const LVM_GETSELECTIONMARK: ::UINT = LVM_FIRST + 66;
1912 pub const LVM_SETSELECTIONMARK: ::UINT = LVM_FIRST + 67;
1913 pub const LVM_SETHOVERTIME: ::UINT = LVM_FIRST + 71;
1914 pub const LVM_GETHOVERTIME: ::UINT = LVM_FIRST + 72;
1915 pub const LVM_SETTOOLTIPS: ::UINT = LVM_FIRST + 74;
1916 pub const LVM_GETTOOLTIPS: ::UINT = LVM_FIRST + 78;
1917 pub const LVM_SORTITEMSEX: ::UINT = LVM_FIRST + 81;
1918 STRUCT!{struct LVBKIMAGEA {
1919     ulFlags: ::ULONG,
1920     hbm: ::HBITMAP,
1921     pszImage: ::LPSTR,
1922     cchImageMax: ::UINT,
1923     xOffsetPercent: ::c_int,
1924     yOffsetPercent: ::c_int,
1925 }}
1926 pub type LPLVBKIMAGEA = *mut LVBKIMAGEA;
1927 STRUCT!{struct LVBKIMAGEW {
1928     ulFlags: ::ULONG,
1929     hbm: ::HBITMAP,
1930     pszImage: ::LPWSTR,
1931     cchImageMax: ::UINT,
1932     xOffsetPercent: ::c_int,
1933     yOffsetPercent: ::c_int,
1934 }}
1935 pub type LPLVBKIMAGEW = *mut LVBKIMAGEW;
1936 pub const LVBKIF_SOURCE_NONE: ::ULONG = 0x00000000;
1937 pub const LVBKIF_SOURCE_HBITMAP: ::ULONG = 0x00000001;
1938 pub const LVBKIF_SOURCE_URL: ::ULONG = 0x00000002;
1939 pub const LVBKIF_SOURCE_MASK: ::ULONG = 0x00000003;
1940 pub const LVBKIF_STYLE_NORMAL: ::ULONG = 0x00000000;
1941 pub const LVBKIF_STYLE_TILE: ::ULONG = 0x00000010;
1942 pub const LVBKIF_STYLE_MASK: ::ULONG = 0x00000010;
1943 pub const LVBKIF_FLAG_TILEOFFSET: ::ULONG = 0x00000100;
1944 pub const LVBKIF_TYPE_WATERMARK: ::ULONG = 0x10000000;
1945 pub const LVBKIF_FLAG_ALPHABLEND: ::ULONG = 0x20000000;
1946 pub const LVM_SETBKIMAGEA: ::UINT = LVM_FIRST + 68;
1947 pub const LVM_SETBKIMAGEW: ::UINT = LVM_FIRST + 138;
1948 pub const LVM_GETBKIMAGEA: ::UINT = LVM_FIRST + 69;
1949 pub const LVM_GETBKIMAGEW: ::UINT = LVM_FIRST + 139;
1950 pub const LVM_SETSELECTEDCOLUMN: ::UINT = LVM_FIRST + 140;
1951 pub const LV_VIEW_ICON: ::DWORD = 0x0000;
1952 pub const LV_VIEW_DETAILS: ::DWORD = 0x0001;
1953 pub const LV_VIEW_SMALLICON: ::DWORD = 0x0002;
1954 pub const LV_VIEW_LIST: ::DWORD = 0x0003;
1955 pub const LV_VIEW_TILE: ::DWORD = 0x0004;
1956 pub const LV_VIEW_MAX: ::DWORD = 0x0004;
1957 pub const LVM_SETVIEW: ::UINT = LVM_FIRST + 142;
1958 pub const LVM_GETVIEW: ::UINT = LVM_FIRST + 143;
1959 pub const LVGF_NONE: ::UINT = 0x00000000;
1960 pub const LVGF_HEADER: ::UINT = 0x00000001;
1961 pub const LVGF_FOOTER: ::UINT = 0x00000002;
1962 pub const LVGF_STATE: ::UINT = 0x00000004;
1963 pub const LVGF_ALIGN: ::UINT = 0x00000008;
1964 pub const LVGF_GROUPID: ::UINT = 0x00000010;
1965 pub const LVGF_SUBTITLE: ::UINT = 0x00000100;
1966 pub const LVGF_TASK: ::UINT = 0x00000200;
1967 pub const LVGF_DESCRIPTIONTOP: ::UINT = 0x00000400;
1968 pub const LVGF_DESCRIPTIONBOTTOM: ::UINT = 0x00000800;
1969 pub const LVGF_TITLEIMAGE: ::UINT = 0x00001000;
1970 pub const LVGF_EXTENDEDIMAGE: ::UINT = 0x00002000;
1971 pub const LVGF_ITEMS: ::UINT = 0x00004000;
1972 pub const LVGF_SUBSET: ::UINT = 0x00008000;
1973 pub const LVGF_SUBSETITEMS: ::UINT = 0x00010000;
1974 pub const LVGS_NORMAL: ::UINT = 0x00000000;
1975 pub const LVGS_COLLAPSED: ::UINT = 0x00000001;
1976 pub const LVGS_HIDDEN: ::UINT = 0x00000002;
1977 pub const LVGS_NOHEADER: ::UINT = 0x00000004;
1978 pub const LVGS_COLLAPSIBLE: ::UINT = 0x00000008;
1979 pub const LVGS_FOCUSED: ::UINT = 0x00000010;
1980 pub const LVGS_SELECTED: ::UINT = 0x00000020;
1981 pub const LVGS_SUBSETED: ::UINT = 0x00000040;
1982 pub const LVGS_SUBSETLINKFOCUSED: ::UINT = 0x00000080;
1983 pub const LVGA_HEADER_LEFT: ::UINT = 0x00000001;
1984 pub const LVGA_HEADER_CENTER: ::UINT = 0x00000002;
1985 pub const LVGA_HEADER_RIGHT: ::UINT = 0x00000004;
1986 pub const LVGA_FOOTER_LEFT: ::UINT = 0x00000008;
1987 pub const LVGA_FOOTER_CENTER: ::UINT = 0x00000010;
1988 pub const LVGA_FOOTER_RIGHT: ::UINT = 0x00000020;
1989 STRUCT!{struct LVGROUP {
1990     cbSize: ::UINT,
1991     mask: ::UINT,
1992     pszHeader: ::LPWSTR,
1993     cchHeader: ::c_int,
1994     pszFooter: ::LPWSTR,
1995     cchFooter: ::c_int,
1996     iGroupId: ::c_int,
1997     stateMask: ::UINT,
1998     state: ::UINT,
1999     uAlign: ::UINT,
2000     pszSubtitle: ::LPWSTR,
2001     cchSubtitle: ::UINT,
2002     pszTask: ::LPWSTR,
2003     cchTask: ::UINT,
2004     pszDescriptionTop: ::LPWSTR,
2005     cchDescriptionTop: ::UINT,
2006     pszDescriptionBottom: ::LPWSTR,
2007     cchDescriptionBottom: ::UINT,
2008     iTitleImage: ::c_int,
2009     iExtendedImage: ::c_int,
2010     iFirstItem: ::c_int,
2011     cItems: ::UINT,
2012     pszSubsetTitle: ::LPWSTR,
2013     cchSubsetTitle: ::UINT,
2014 }}
2015 pub type PLVGROUP = *mut LVGROUP;
2016 pub const LVM_INSERTGROUP: ::UINT = LVM_FIRST + 145;
2017 pub const LVM_SETGROUPINFO: ::UINT = LVM_FIRST + 147;
2018 pub const LVM_GETGROUPINFO: ::UINT = LVM_FIRST + 149;
2019 pub const LVM_REMOVEGROUP: ::UINT = LVM_FIRST + 150;
2020 pub const LVM_MOVEGROUP: ::UINT = LVM_FIRST + 151;
2021 pub const LVM_GETGROUPCOUNT: ::UINT = LVM_FIRST + 152;
2022 pub const LVM_GETGROUPINFOBYINDEX: ::UINT = LVM_FIRST + 153;
2023 pub const LVM_MOVEITEMTOGROUP: ::UINT = LVM_FIRST + 154;
2024 pub const LVM_GETGROUPRECT: ::UINT = LVM_FIRST + 98;
2025 pub const LVGGR_GROUP: ::LPARAM = 0;
2026 pub const LVGGR_HEADER: ::LPARAM = 1;
2027 pub const LVGGR_LABEL: ::LPARAM = 2;
2028 pub const LVGGR_SUBSETLINK: ::LPARAM = 3;
2029 pub const LVGMF_NONE: ::UINT = 0x00000000;
2030 pub const LVGMF_BORDERSIZE: ::UINT = 0x00000001;
2031 pub const LVGMF_BORDERCOLOR: ::UINT = 0x00000002;
2032 pub const LVGMF_TEXTCOLOR: ::UINT = 0x00000004;
2033 STRUCT!{struct LVGROUPMETRICS {
2034     cbSize: ::UINT,
2035     mask: ::UINT,
2036     Left: ::UINT,
2037     Top: ::UINT,
2038     Right: ::UINT,
2039     Bottom: ::UINT,
2040     crLeft: ::COLORREF,
2041     crTop: ::COLORREF,
2042     crRight: ::COLORREF,
2043     crBottom: ::COLORREF,
2044     crHeader: ::COLORREF,
2045     crFooter: ::COLORREF,
2046 }}
2047 pub type PLVGROUPMETRICS = *mut LVGROUPMETRICS;
2048 pub const LVM_SETGROUPMETRICS: ::UINT = LVM_FIRST + 155;
2049 pub const LVM_GETGROUPMETRICS: ::UINT = LVM_FIRST + 156;
2050 pub const LVM_ENABLEGROUPVIEW: ::UINT = LVM_FIRST + 157;
2051 pub const LVM_SORTGROUPS: ::UINT = LVM_FIRST + 158;
2052 pub type PFNLVGROUPCOMPARE = Option<unsafe extern "system" fn(
2053     ::c_int, ::c_int, *mut ::c_void,
2054 ) -> ::c_int>;
2055 STRUCT!{nodebug struct LVINSERTGROUPSORTED {
2056     pfnGroupCompare: PFNLVGROUPCOMPARE,
2057     pvData: *mut ::c_void,
2058     lvGroup: LVGROUP,
2059 }}
2060 pub type PLVINSERTGROUPSORTED = *mut LVINSERTGROUPSORTED;
2061 pub const LVM_INSERTGROUPSORTED: ::UINT = LVM_FIRST + 159;
2062 pub const LVM_REMOVEALLGROUPS: ::UINT = LVM_FIRST + 160;
2063 pub const LVM_HASGROUP: ::UINT = LVM_FIRST + 161;
2064 pub const LVM_GETGROUPSTATE: ::UINT = LVM_FIRST + 92;
2065 pub const LVM_GETFOCUSEDGROUP: ::UINT = LVM_FIRST + 93;
2066 pub const LVTVIF_AUTOSIZE: ::DWORD = 0x00000000;
2067 pub const LVTVIF_FIXEDWIDTH: ::DWORD = 0x00000001;
2068 pub const LVTVIF_FIXEDHEIGHT: ::DWORD = 0x00000002;
2069 pub const LVTVIF_FIXEDSIZE: ::DWORD = 0x00000003;
2070 pub const LVTVIF_EXTENDED: ::DWORD = 0x00000004;
2071 pub const LVTVIM_TILESIZE: ::DWORD = 0x00000001;
2072 pub const LVTVIM_COLUMNS: ::DWORD = 0x00000002;
2073 pub const LVTVIM_LABELMARGIN: ::DWORD = 0x00000004;
2074 STRUCT!{struct LVTILEVIEWINFO {
2075     cbSize: ::UINT,
2076     dwMask: ::DWORD,
2077     dwFlags: ::DWORD,
2078     sizeTile: ::SIZE,
2079     cLines: ::c_int,
2080     rcLabelMargin: ::RECT,
2081 }}
2082 pub type PLVTILEVIEWINFO = *mut LVTILEVIEWINFO;
2083 STRUCT!{struct LVTILEINFO {
2084     cbSize: ::UINT,
2085     iItem: ::c_int,
2086     cColumns: ::UINT,
2087     puColumns: ::PUINT,
2088     piColFmt: *mut ::c_int,
2089 }}
2090 pub type PLVTILEINFO = *mut LVTILEINFO;
2091 pub const LVM_SETTILEVIEWINFO: ::UINT = LVM_FIRST + 162;
2092 pub const LVM_GETTILEVIEWINFO: ::UINT = LVM_FIRST + 163;
2093 pub const LVM_SETTILEINFO: ::UINT = LVM_FIRST + 164;
2094 pub const LVM_GETTILEINFO: ::UINT = LVM_FIRST + 165;
2095 STRUCT!{struct LVINSERTMARK {
2096     cbSize: ::UINT,
2097     dwFlags: ::DWORD,
2098     iItem: ::c_int,
2099     dwReserved: ::DWORD,
2100 }}
2101 pub type LPLVINSERTMARK = *mut LVINSERTMARK;
2102 pub const LVIM_AFTER: ::DWORD = 0x00000001;
2103 pub const LVM_SETINSERTMARK: ::UINT = LVM_FIRST + 166;
2104 pub const LVM_GETINSERTMARK: ::UINT = LVM_FIRST + 167;
2105 pub const LVM_INSERTMARKHITTEST: ::UINT = LVM_FIRST + 168;
2106 pub const LVM_GETINSERTMARKRECT: ::UINT = LVM_FIRST + 169;
2107 pub const LVM_SETINSERTMARKCOLOR: ::UINT = LVM_FIRST + 170;
2108 pub const LVM_GETINSERTMARKCOLOR: ::UINT = LVM_FIRST + 171;
2109 STRUCT!{struct LVSETINFOTIP {
2110     cbSize: ::UINT,
2111     dwFlags: ::DWORD,
2112     pszText: ::LPWSTR,
2113     iItem: ::c_int,
2114     iSubItem: ::c_int,
2115 }}
2116 pub type PLVSETINFOTIP = *mut LVSETINFOTIP;
2117 pub const  LVM_SETINFOTIP: ::UINT = LVM_FIRST + 173;
2118 pub const LVM_GETSELECTEDCOLUMN: ::UINT = LVM_FIRST + 174;
2119 pub const LVM_ISGROUPVIEWENABLED: ::UINT = LVM_FIRST + 175;
2120 pub const LVM_GETOUTLINECOLOR: ::UINT = LVM_FIRST + 176;
2121 pub const LVM_SETOUTLINECOLOR: ::UINT = LVM_FIRST + 177;
2122 pub const LVM_CANCELEDITLABEL: ::UINT = LVM_FIRST + 179;
2123 pub const LVM_MAPINDEXTOID: ::UINT = LVM_FIRST + 180;
2124 pub const LVM_MAPIDTOINDEX: ::UINT = LVM_FIRST + 181;
2125 pub const LVM_ISITEMVISIBLE: ::UINT = LVM_FIRST + 182;
2126 pub const LVM_GETEMPTYTEXT: ::UINT = LVM_FIRST + 204;
2127 pub const LVM_GETFOOTERRECT: ::UINT = LVM_FIRST + 205;
2128 pub const LVFF_ITEMCOUNT: ::UINT = 0x00000001;
2129 STRUCT!{struct LVFOOTERINFO {
2130     mask: ::UINT,
2131     pszText: ::LPWSTR,
2132     cchTextMax: ::c_int,
2133     cItems: ::UINT,
2134 }}
2135 pub type LPLVFOOTERINFO = *mut LVFOOTERINFO;
2136 pub const LVM_GETFOOTERINFO: ::UINT = LVM_FIRST + 206;
2137 pub const LVM_GETFOOTERITEMRECT: ::UINT = LVM_FIRST + 207;
2138 pub const LVFIF_TEXT: ::UINT = 0x00000001;
2139 pub const LVFIF_STATE: ::UINT = 0x00000002;
2140 pub const LVFIS_FOCUSED: ::UINT = 0x0001;
2141 STRUCT!{struct LVFOOTERITEM {
2142     mask: ::UINT,
2143     iItem: ::c_int,
2144     pszText: ::LPWSTR,
2145     cchTextMax: ::c_int,
2146     state: ::UINT,
2147     stateMask: ::UINT,
2148 }}
2149 pub type LPLVFOOTERITEM = *mut LVFOOTERITEM;
2150 pub const LVM_GETFOOTERITEM: ::UINT = LVM_FIRST + 208;
2151 STRUCT!{struct LVITEMINDEX {
2152     iItem: ::c_int,
2153     iGroup: ::c_int,
2154 }}
2155 pub type PLVITEMINDEX = *mut LVITEMINDEX;
2156 pub const LVM_GETITEMINDEXRECT: ::UINT = LVM_FIRST + 209;
2157 pub const LVM_SETITEMINDEXSTATE: ::UINT = LVM_FIRST + 210;
2158 pub const LVM_GETNEXTITEMINDEX: ::UINT = LVM_FIRST + 211;
2159 pub type LPNM_LISTVIEW = LPNMLISTVIEW;
2160 pub type NM_LISTVIEW = NMLISTVIEW;
2161 STRUCT!{struct NMLISTVIEW {
2162     hdr: ::NMHDR,
2163     iItem: ::c_int,
2164     iSubItem: ::c_int,
2165     uNewState: ::UINT,
2166     uOldState: ::UINT,
2167     uChanged: ::UINT,
2168     ptAction: ::POINT,
2169     lParam: ::LPARAM,
2170 }}
2171 pub type LPNMLISTVIEW = *mut NMLISTVIEW;
2172 STRUCT!{struct NMITEMACTIVATE {
2173     hdr: ::NMHDR,
2174     iItem: ::c_int,
2175     iSubItem: ::c_int,
2176     uNewState: ::UINT,
2177     uOldState: ::UINT,
2178     uChanged: ::UINT,
2179     ptAction: ::POINT,
2180     lParam: ::LPARAM,
2181     uKeyFlags: ::UINT,
2182 }}
2183 pub type LPNMITEMACTIVATE = *mut NMITEMACTIVATE;
2184 pub const LVKF_ALT: ::UINT = 0x0001;
2185 pub const LVKF_CONTROL: ::UINT = 0x0002;
2186 pub const LVKF_SHIFT: ::UINT = 0x0004;
2187 STRUCT!{struct NMLVCUSTOMDRAW {
2188     nmcd: NMCUSTOMDRAW,
2189     clrText: ::COLORREF,
2190     clrTextBk: ::COLORREF,
2191     iSubItem: ::c_int,
2192     dwItemType: ::DWORD,
2193     clrFace: ::COLORREF,
2194     iIconEffect: ::c_int,
2195     iIconPhase: ::c_int,
2196     iPartId: ::c_int,
2197     iStateId: ::c_int,
2198     rcText: ::RECT,
2199     uAlign: ::UINT,
2200 }}
2201 pub type LPNMLVCUSTOMDRAW = *mut NMLVCUSTOMDRAW;
2202 pub const LVCDI_ITEM: ::DWORD = 0x00000000;
2203 pub const LVCDI_GROUP: ::DWORD = 0x00000001;
2204 pub const LVCDI_ITEMSLIST: ::DWORD = 0x00000002;
2205 pub const LVCDRF_NOSELECT: ::LRESULT = 0x00010000;
2206 pub const LVCDRF_NOGROUPFRAME: ::LRESULT = 0x00020000;
2207 STRUCT!{struct NMLVCACHEHINT {
2208     hdr: ::NMHDR,
2209     iFrom: ::c_int,
2210     iTo: ::c_int,
2211 }}
2212 pub type LPNMLVCACHEHINT = *mut NMLVCACHEHINT;
2213 pub type LPNM_CACHEHINT = LPNMLVCACHEHINT;
2214 pub type PNM_CACHEHINT = LPNMLVCACHEHINT;
2215 pub type NM_CACHEHINT = NMLVCACHEHINT;
2216 STRUCT!{struct NMLVFINDITEMA {
2217     hdr: ::NMHDR,
2218     iStart: ::c_int,
2219     lvfi: LVFINDINFOA,
2220 }}
2221 pub type LPNMLVFINDITEMA = *mut NMLVFINDITEMA;
2222 STRUCT!{struct NMLVFINDITEMW {
2223     hdr: ::NMHDR,
2224     iStart: ::c_int,
2225     lvfi: LVFINDINFOW,
2226 }}
2227 pub type LPNMLVFINDITEMW = *mut NMLVFINDITEMW;
2228 pub type PNM_FINDITEMA = LPNMLVFINDITEMA;
2229 pub type LPNM_FINDITEMA = LPNMLVFINDITEMA;
2230 pub type NM_FINDITEMA = NMLVFINDITEMA;
2231 pub type PNM_FINDITEMW = LPNMLVFINDITEMW;
2232 pub type LPNM_FINDITEMW = LPNMLVFINDITEMW;
2233 pub type NM_FINDITEMW = NMLVFINDITEMW;
2234 STRUCT!{struct NMLVODSTATECHANGE {
2235     hdr: ::NMHDR,
2236     iFrom: ::c_int,
2237     iTo: ::c_int,
2238     uNewState: ::UINT,
2239     uOldState: ::UINT,
2240 }}
2241 pub type LPNMLVODSTATECHANGE = *mut NMLVODSTATECHANGE;
2242 pub type PNM_ODSTATECHANGE = LPNMLVODSTATECHANGE;
2243 pub type LPNM_ODSTATECHANGE = LPNMLVODSTATECHANGE;
2244 pub type NM_ODSTATECHANGE = NMLVODSTATECHANGE;
2245 pub const LVN_ITEMCHANGING: ::UINT = LVN_FIRST - 0;
2246 pub const LVN_ITEMCHANGED: ::UINT = LVN_FIRST - 1;
2247 pub const LVN_INSERTITEM: ::UINT = LVN_FIRST - 2;
2248 pub const LVN_DELETEITEM: ::UINT = LVN_FIRST - 3;
2249 pub const LVN_DELETEALLITEMS: ::UINT = LVN_FIRST - 4;
2250 pub const LVN_BEGINLABELEDITA: ::UINT = LVN_FIRST - 5;
2251 pub const LVN_BEGINLABELEDITW: ::UINT = LVN_FIRST - 75;
2252 pub const LVN_ENDLABELEDITA: ::UINT = LVN_FIRST - 6;
2253 pub const LVN_ENDLABELEDITW: ::UINT = LVN_FIRST - 76;
2254 pub const LVN_COLUMNCLICK: ::UINT = LVN_FIRST - 8;
2255 pub const LVN_BEGINDRAG: ::UINT = LVN_FIRST - 9;
2256 pub const LVN_BEGINRDRAG: ::UINT = LVN_FIRST - 11;
2257 pub const LVN_ODCACHEHINT: ::UINT = LVN_FIRST - 13;
2258 pub const LVN_ODFINDITEMA: ::UINT = LVN_FIRST - 52;
2259 pub const LVN_ODFINDITEMW: ::UINT = LVN_FIRST - 79;
2260 pub const LVN_ITEMACTIVATE: ::UINT = LVN_FIRST - 14;
2261 pub const LVN_ODSTATECHANGED: ::UINT = LVN_FIRST - 15;
2262 pub const LVN_HOTTRACK: ::UINT = LVN_FIRST - 21;
2263 pub const LVN_GETDISPINFOA: ::UINT = LVN_FIRST - 50;
2264 pub const LVN_GETDISPINFOW: ::UINT = LVN_FIRST - 77;
2265 pub const LVN_SETDISPINFOA: ::UINT = LVN_FIRST - 51;
2266 pub const LVN_SETDISPINFOW: ::UINT = LVN_FIRST - 78;
2267 pub const LVIF_DI_SETITEM: ::UINT = 0x1000;
2268 pub type LV_DISPINFOA = NMLVDISPINFOA;
2269 pub type LV_DISPINFOW = NMLVDISPINFOW;
2270 STRUCT!{struct NMLVDISPINFOA {
2271     hdr: ::NMHDR,
2272     item: LVITEMA,
2273 }}
2274 pub type LPNMLVDISPINFOA = *mut NMLVDISPINFOA;
2275 STRUCT!{struct NMLVDISPINFOW {
2276     hdr: ::NMHDR,
2277     item: LVITEMW,
2278 }}
2279 pub type LPNMLVDISPINFOW = *mut NMLVDISPINFOW;
2280 pub const LVN_KEYDOWN: ::UINT = LVN_FIRST - 55;
2281 pub type LV_KEYDOWN = NMLVKEYDOWN;
2282 STRUCT!{struct NMLVKEYDOWN {
2283     hdr: ::NMHDR,
2284     wVKey: ::WORD,
2285     flags: ::UINT,
2286 }}
2287 pub type LPNMLVKEYDOWN = *mut NMLVKEYDOWN;
2288 pub const LVN_MARQUEEBEGIN: ::UINT = LVN_FIRST - 56;
2289 STRUCT!{nodebug struct NMLVLINK {
2290     hdr: ::NMHDR,
2291     link: LITEM,
2292     iItem: ::c_int,
2293     iSubItem: ::c_int,
2294 }}
2295 pub type PNMLVLINK = *mut NMLVLINK;
2296 STRUCT!{struct NMLVGETINFOTIPA {
2297     hdr: ::NMHDR,
2298     dwFlags: ::DWORD,
2299     pszText: ::LPSTR,
2300     cchTextMax: ::c_int,
2301     iItem: ::c_int,
2302     iSubItem: ::c_int,
2303     lParam: ::LPARAM,
2304 }}
2305 pub type LPNMLVGETINFOTIPA = *mut NMLVGETINFOTIPA;
2306 STRUCT!{struct NMLVGETINFOTIPW {
2307     hdr: ::NMHDR,
2308     dwFlags: ::DWORD,
2309     pszText: ::LPWSTR,
2310     cchTextMax: ::c_int,
2311     iItem: ::c_int,
2312     iSubItem: ::c_int,
2313     lParam: ::LPARAM,
2314 }}
2315 pub type LPNMLVGETINFOTIPW = *mut NMLVGETINFOTIPW;
2316 pub const LVGIT_UNFOLDED: ::DWORD = 0x0001;
2317 pub const LVN_GETINFOTIPA: ::UINT = LVN_FIRST - 57;
2318 pub const LVN_GETINFOTIPW: ::UINT = LVN_FIRST - 58;
2319 pub const LVNSCH_DEFAULT: ::LPARAM = -1;
2320 pub const LVNSCH_ERROR: ::LPARAM = -2;
2321 pub const LVNSCH_IGNORE: ::LPARAM = -3;
2322 pub const LVN_INCREMENTALSEARCHA: ::UINT = LVN_FIRST - 62;
2323 pub const LVN_INCREMENTALSEARCHW: ::UINT = LVN_FIRST - 63;
2324 pub const LVN_COLUMNDROPDOWN: ::UINT = LVN_FIRST - 64;
2325 pub const LVN_COLUMNOVERFLOWCLICK: ::UINT = LVN_FIRST - 66;
2326 STRUCT!{struct NMLVSCROLL {
2327     hdr: ::NMHDR,
2328     dx: ::c_int,
2329     dy: ::c_int,
2330 }}
2331 pub type LPNMLVSCROLL = *mut NMLVSCROLL;
2332 pub const LVN_BEGINSCROLL: ::UINT = LVN_FIRST - 80;
2333 pub const LVN_ENDSCROLL: ::UINT = LVN_FIRST - 81;
2334 pub const LVN_LINKCLICK: ::UINT = LVN_FIRST - 84;
2335 pub const EMF_CENTERED: ::DWORD = 0x00000001;
2336 STRUCT!{nodebug struct NMLVEMPTYMARKUP {
2337     hdr: ::NMHDR,
2338     dwFlags: ::DWORD,
2339     szMarkup: [::WCHAR; L_MAX_URL_LENGTH],
2340 }}
2341 pub const LVN_GETEMPTYMARKUP: ::UINT = LVN_FIRST - 87;
2342 pub const TVS_HASBUTTONS: ::DWORD = 0x0001;
2343 pub const TVS_HASLINES: ::DWORD = 0x0002;
2344 pub const TVS_LINESATROOT: ::DWORD = 0x0004;
2345 pub const TVS_EDITLABELS: ::DWORD = 0x0008;
2346 pub const TVS_DISABLEDRAGDROP: ::DWORD = 0x0010;
2347 pub const TVS_SHOWSELALWAYS: ::DWORD = 0x0020;
2348 pub const TVS_RTLREADING: ::DWORD = 0x0040;
2349 pub const TVS_NOTOOLTIPS: ::DWORD = 0x0080;
2350 pub const TVS_CHECKBOXES: ::DWORD = 0x0100;
2351 pub const TVS_TRACKSELECT: ::DWORD = 0x0200;
2352 pub const TVS_SINGLEEXPAND: ::DWORD = 0x0400;
2353 pub const TVS_INFOTIP: ::DWORD = 0x0800;
2354 pub const TVS_FULLROWSELECT: ::DWORD = 0x1000;
2355 pub const TVS_NOSCROLL: ::DWORD = 0x2000;
2356 pub const TVS_NONEVENHEIGHT: ::DWORD = 0x4000;
2357 pub const TVS_NOHSCROLL: ::DWORD = 0x8000;
2358 pub const TVS_EX_NOSINGLECOLLAPSE: ::DWORD = 0x0001;
2359 pub const TVS_EX_MULTISELECT: ::DWORD = 0x0002;
2360 pub const TVS_EX_DOUBLEBUFFER: ::DWORD = 0x0004;
2361 pub const TVS_EX_NOINDENTSTATE: ::DWORD = 0x0008;
2362 pub const TVS_EX_RICHTOOLTIP: ::DWORD = 0x0010;
2363 pub const TVS_EX_AUTOHSCROLL: ::DWORD = 0x0020;
2364 pub const TVS_EX_FADEINOUTEXPANDOS: ::DWORD = 0x0040;
2365 pub const TVS_EX_PARTIALCHECKBOXES: ::DWORD = 0x0080;
2366 pub const TVS_EX_EXCLUSIONCHECKBOXES: ::DWORD = 0x0100;
2367 pub const TVS_EX_DIMMEDCHECKBOXES: ::DWORD = 0x0200;
2368 pub const TVS_EX_DRAWIMAGEASYNC: ::DWORD = 0x0400;
2369 pub enum TREEITEM {}
2370 pub type HTREEITEM = *mut TREEITEM;
2371 pub const TVIF_TEXT: ::UINT = 0x0001;
2372 pub const TVIF_IMAGE: ::UINT = 0x0002;
2373 pub const TVIF_PARAM: ::UINT = 0x0004;
2374 pub const TVIF_STATE: ::UINT = 0x0008;
2375 pub const TVIF_HANDLE: ::UINT = 0x0010;
2376 pub const TVIF_SELECTEDIMAGE: ::UINT = 0x0020;
2377 pub const TVIF_CHILDREN: ::UINT = 0x0040;
2378 pub const TVIF_INTEGRAL: ::UINT = 0x0080;
2379 pub const TVIF_STATEEX: ::UINT = 0x0100;
2380 pub const TVIF_EXPANDEDIMAGE: ::UINT = 0x0200;
2381 pub const TVIS_SELECTED: ::UINT = 0x0002;
2382 pub const TVIS_CUT: ::UINT = 0x0004;
2383 pub const TVIS_DROPHILITED: ::UINT = 0x0008;
2384 pub const TVIS_BOLD: ::UINT = 0x0010;
2385 pub const TVIS_EXPANDED: ::UINT = 0x0020;
2386 pub const TVIS_EXPANDEDONCE: ::UINT = 0x0040;
2387 pub const TVIS_EXPANDPARTIAL: ::UINT = 0x0080;
2388 pub const TVIS_OVERLAYMASK: ::UINT = 0x0F00;
2389 pub const TVIS_STATEIMAGEMASK: ::UINT = 0xF000;
2390 pub const TVIS_USERMASK: ::UINT = 0xF000;
2391 pub const TVIS_EX_FLAT: ::UINT = 0x0001;
2392 pub const TVIS_EX_DISABLED: ::UINT = 0x0002;
2393 pub const TVIS_EX_ALL: ::UINT = 0x0002;
2394 STRUCT!{struct NMTVSTATEIMAGECHANGING {
2395     hdr: ::NMHDR,
2396     hti: HTREEITEM,
2397     iOldStateImageIndex: ::c_int,
2398     iNewStateImageIndex: ::c_int,
2399 }}
2400 pub type LPNMTVSTATEIMAGECHANGING = *mut NMTVSTATEIMAGECHANGING;
2401 pub const I_CHILDRENCALLBACK: ::c_int = -1;
2402 pub const I_CHILDRENAUTO: ::c_int = -2;
2403 pub type LPTV_ITEMW = LPTVITEMW;
2404 pub type LPTV_ITEMA = LPTVITEMA;
2405 pub type TV_ITEMW = TVITEMW;
2406 pub type TV_ITEMA = TVITEMA;
2407 STRUCT!{struct TVITEMA {
2408     mask: ::UINT,
2409     hItem: HTREEITEM,
2410     state: ::UINT,
2411     stateMask: ::UINT,
2412     pszText: ::LPSTR,
2413     cchTextMax: ::c_int,
2414     iImage: ::c_int,
2415     iSelectedImage: ::c_int,
2416     cChildren: ::c_int,
2417     lParam: ::LPARAM,
2418 }}
2419 pub type LPTVITEMA = *mut TVITEMA;
2420 STRUCT!{struct TVITEMW {
2421     mask: ::UINT,
2422     hItem: HTREEITEM,
2423     state: ::UINT,
2424     stateMask: ::UINT,
2425     pszText: ::LPWSTR,
2426     cchTextMax: ::c_int,
2427     iImage: ::c_int,
2428     iSelectedImage: ::c_int,
2429     cChildren: ::c_int,
2430     lParam: ::LPARAM,
2431 }}
2432 pub type LPTVITEMW = *mut TVITEMW;
2433 STRUCT!{struct TVITEMEXA {
2434     mask: ::UINT,
2435     hItem: HTREEITEM,
2436     state: ::UINT,
2437     stateMask: ::UINT,
2438     pszText: ::LPSTR,
2439     cchTextMax: ::c_int,
2440     iImage: ::c_int,
2441     iSelectedImage: ::c_int,
2442     cChildren: ::c_int,
2443     lParam: ::LPARAM,
2444     iIntegral: ::c_int,
2445     uStateEx: ::UINT,
2446     hwnd: ::HWND,
2447     iExpandedImage: ::c_int,
2448     iReserved: ::c_int,
2449 }}
2450 pub type LPTVITEMEXA = *mut TVITEMEXA;
2451 STRUCT!{struct TVITEMEXW {
2452     mask: ::UINT,
2453     hItem: HTREEITEM,
2454     state: ::UINT,
2455     stateMask: ::UINT,
2456     pszText: ::LPWSTR,
2457     cchTextMax: ::c_int,
2458     iImage: ::c_int,
2459     iSelectedImage: ::c_int,
2460     cChildren: ::c_int,
2461     lParam: ::LPARAM,
2462     iIntegral: ::c_int,
2463     uStateEx: ::UINT,
2464     hwnd: ::HWND,
2465     iExpandedImage: ::c_int,
2466     iReserved: ::c_int,
2467 }}
2468 pub type LPTVITEMEXW = *mut TVITEMEXW;
2469 pub const TVI_ROOT: HTREEITEM = (0 - 0x10000) as HTREEITEM;
2470 pub const TVI_FIRST: HTREEITEM = (0 - 0x0FFFF) as HTREEITEM;
2471 pub const TVI_LAST: HTREEITEM = (0 - 0x0FFFE) as HTREEITEM;
2472 pub const TVI_SORT: HTREEITEM = (0 - 0x0FFFD) as HTREEITEM;
2473 pub type LPTV_INSERTSTRUCTA = LPTVINSERTSTRUCTA;
2474 pub type LPTV_INSERTSTRUCTW = LPTVINSERTSTRUCTW;
2475 pub type TV_INSERTSTRUCTA = TVINSERTSTRUCTA;
2476 pub type TV_INSERTSTRUCTW = TVINSERTSTRUCTW;
2477 STRUCT!{struct TVINSERTSTRUCTA {
2478     hParent: HTREEITEM,
2479     hInsertAfter: HTREEITEM,
2480     itemex: TVITEMEXA,
2481 }}
2482 UNION!(TVINSERTSTRUCTA, itemex, item, item_mut, TV_ITEMA);
2483 pub type LPTVINSERTSTRUCTA = *mut TVINSERTSTRUCTA;
2484 STRUCT!{struct TVINSERTSTRUCTW {
2485     hParent: HTREEITEM,
2486     hInsertAfter: HTREEITEM,
2487     itemex: TVITEMEXW,
2488 }}
2489 UNION!(TVINSERTSTRUCTW, itemex, item, item_mut, TV_ITEMW);
2490 pub type LPTVINSERTSTRUCTW = *mut TVINSERTSTRUCTW;
2491 pub const TVM_INSERTITEMA: ::UINT = TV_FIRST + 0;
2492 pub const TVM_INSERTITEMW: ::UINT = TV_FIRST + 50;
2493 pub const TVM_DELETEITEM: ::UINT = TV_FIRST + 1;
2494 pub const TVM_EXPAND: ::UINT = TV_FIRST + 2;
2495 pub const TVM_GETITEMRECT: ::UINT = TV_FIRST + 4;
2496 pub const TVE_COLLAPSE: ::WPARAM = 0x0001;
2497 pub const TVE_EXPAND: ::WPARAM = 0x0002;
2498 pub const TVE_TOGGLE: ::WPARAM = 0x0003;
2499 pub const TVE_EXPANDPARTIAL: ::WPARAM = 0x4000;
2500 pub const TVE_COLLAPSERESET: ::WPARAM = 0x8000;
2501 pub const TVM_GETCOUNT: ::UINT = TV_FIRST + 5;
2502 pub const TVM_GETINDENT: ::UINT = TV_FIRST + 6;
2503 pub const TVM_SETINDENT: ::UINT = TV_FIRST + 7;
2504 pub const TVM_GETIMAGELIST: ::UINT = TV_FIRST + 8;
2505 pub const TVM_SETIMAGELIST: ::UINT = TV_FIRST + 9;
2506 pub const TVM_GETNEXTITEM: ::UINT = TV_FIRST + 10;
2507 pub const TVSIL_NORMAL: ::WPARAM = 0;
2508 pub const TVSIL_STATE: ::WPARAM = 2;
2509 pub const TVGN_ROOT: ::WPARAM = 0x0000;
2510 pub const TVGN_NEXT: ::WPARAM = 0x0001;
2511 pub const TVGN_PREVIOUS: ::WPARAM = 0x0002;
2512 pub const TVGN_PARENT: ::WPARAM = 0x0003;
2513 pub const TVGN_CHILD: ::WPARAM = 0x0004;
2514 pub const TVGN_FIRSTVISIBLE: ::WPARAM = 0x0005;
2515 pub const TVGN_NEXTVISIBLE: ::WPARAM = 0x0006;
2516 pub const TVGN_PREVIOUSVISIBLE: ::WPARAM = 0x0007;
2517 pub const TVGN_DROPHILITE: ::WPARAM = 0x0008;
2518 pub const TVGN_CARET: ::WPARAM = 0x0009;
2519 pub const TVGN_LASTVISIBLE: ::WPARAM = 0x000A;
2520 pub const TVGN_NEXTSELECTED: ::WPARAM = 0x000B;
2521 pub const TVSI_NOSINGLEEXPAND: ::WPARAM = 0x8000;
2522 pub const TVM_SELECTITEM: ::UINT = TV_FIRST + 11;
2523 pub const TVM_GETITEMA: ::UINT = TV_FIRST + 12;
2524 pub const TVM_GETITEMW: ::UINT = TV_FIRST + 62;
2525 pub const TVM_SETITEMA: ::UINT = TV_FIRST + 13;
2526 pub const TVM_SETITEMW: ::UINT = TV_FIRST + 63;
2527 pub const TVM_EDITLABELA: ::UINT = TV_FIRST + 14;
2528 pub const TVM_EDITLABELW: ::UINT = TV_FIRST + 65;
2529 pub const TVM_GETEDITCONTROL: ::UINT = TV_FIRST + 15;
2530 pub const TVM_GETVISIBLECOUNT: ::UINT = TV_FIRST + 16;
2531 pub const TVM_HITTEST: ::UINT = TV_FIRST + 17;
2532 pub type LPTV_HITTESTINFO = LPTVHITTESTINFO;
2533 pub type TV_HITTESTINFO = TVHITTESTINFO;
2534 STRUCT!{struct TVHITTESTINFO {
2535     pt: ::POINT,
2536     flags: ::UINT,
2537     hItem: HTREEITEM,
2538 }}
2539 pub type LPTVHITTESTINFO = *mut TVHITTESTINFO;
2540 pub const TVHT_NOWHERE: ::UINT = 0x0001;
2541 pub const TVHT_ONITEMICON: ::UINT = 0x0002;
2542 pub const TVHT_ONITEMLABEL: ::UINT = 0x0004;
2543 pub const TVHT_ONITEM: ::UINT = TVHT_ONITEMICON | TVHT_ONITEMLABEL | TVHT_ONITEMSTATEICON;
2544 pub const TVHT_ONITEMINDENT: ::UINT = 0x0008;
2545 pub const TVHT_ONITEMBUTTON: ::UINT = 0x0010;
2546 pub const TVHT_ONITEMRIGHT: ::UINT = 0x0020;
2547 pub const TVHT_ONITEMSTATEICON: ::UINT = 0x0040;
2548 pub const TVHT_ABOVE: ::UINT = 0x0100;
2549 pub const TVHT_BELOW: ::UINT = 0x0200;
2550 pub const TVHT_TORIGHT: ::UINT = 0x0400;
2551 pub const TVHT_TOLEFT: ::UINT = 0x0800;
2552 pub const TVM_CREATEDRAGIMAGE: ::UINT = TV_FIRST + 18;
2553 pub const TVM_SORTCHILDREN: ::UINT = TV_FIRST + 19;
2554 pub const TVM_ENSUREVISIBLE: ::UINT = TV_FIRST + 20;
2555 pub const TVM_SORTCHILDRENCB: ::UINT = TV_FIRST + 21;
2556 pub const TVM_ENDEDITLABELNOW: ::UINT = TV_FIRST + 22;
2557 pub const TVM_GETISEARCHSTRINGA: ::UINT = TV_FIRST + 23;
2558 pub const TVM_GETISEARCHSTRINGW: ::UINT = TV_FIRST + 64;
2559 pub const TVM_SETTOOLTIPS: ::UINT = TV_FIRST + 24;
2560 pub const TVM_GETTOOLTIPS: ::UINT = TV_FIRST + 25;
2561 pub const TVM_SETINSERTMARK: ::UINT = TV_FIRST + 26;
2562 pub const TVM_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
2563 pub const TVM_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
2564 pub const TVM_SETITEMHEIGHT: ::UINT = TV_FIRST + 27;
2565 pub const TVM_GETITEMHEIGHT: ::UINT = TV_FIRST + 28;
2566 pub const TVM_SETBKCOLOR: ::UINT = TV_FIRST + 29;
2567 pub const TVM_SETTEXTCOLOR: ::UINT = TV_FIRST + 30;
2568 pub const TVM_GETBKCOLOR: ::UINT = TV_FIRST + 31;
2569 pub const TVM_GETTEXTCOLOR: ::UINT = TV_FIRST + 32;
2570 pub const TVM_SETSCROLLTIME: ::UINT = TV_FIRST + 33;
2571 pub const TVM_GETSCROLLTIME: ::UINT = TV_FIRST + 34;
2572 pub const TVM_SETINSERTMARKCOLOR: ::UINT = TV_FIRST + 37;
2573 pub const TVM_GETINSERTMARKCOLOR: ::UINT = TV_FIRST + 38;
2574 pub const TVM_SETBORDER: ::UINT = TV_FIRST + 35;
2575 pub const TVSBF_XBORDER: ::WPARAM = 0x00000001;
2576 pub const TVSBF_YBORDER: ::WPARAM = 0x00000002;
2577 pub const TVM_GETITEMSTATE: ::UINT = TV_FIRST + 39;
2578 pub const TVM_SETLINECOLOR: ::UINT = TV_FIRST + 40;
2579 pub const TVM_GETLINECOLOR: ::UINT = TV_FIRST + 41;
2580 pub const TVM_MAPACCIDTOHTREEITEM: ::UINT = TV_FIRST + 42;
2581 pub const TVM_MAPHTREEITEMTOACCID: ::UINT = TV_FIRST + 43;
2582 pub const TVM_SETEXTENDEDSTYLE: ::UINT = TV_FIRST + 44;
2583 pub const TVM_GETEXTENDEDSTYLE: ::UINT = TV_FIRST + 45;
2584 pub const TVM_SETAUTOSCROLLINFO: ::UINT = TV_FIRST + 59;
2585 pub const TVM_SETHOT: ::UINT = TV_FIRST + 58;
2586 pub const TVM_GETSELECTEDCOUNT: ::UINT = TV_FIRST + 70;
2587 pub const TVM_SHOWINFOTIP: ::UINT = TV_FIRST + 71;
2588 ENUM!{enum TVITEMPART {
2589     TVGIPR_BUTTON = 0x0001,
2590 }}
2591 STRUCT!{struct TVGETITEMPARTRECTINFO {
2592     hti: HTREEITEM,
2593     prc: *mut ::RECT,
2594     partID: TVITEMPART,
2595 }}
2596 pub const TVM_GETITEMPARTRECT: ::UINT = TV_FIRST + 72;
2597 pub type PFNTVCOMPARE = Option<unsafe extern "system" fn(
2598     lParam1: ::LPARAM, lParam2: ::LPARAM, lParamSort: ::LPARAM,
2599 ) -> ::c_int>;
2600 pub type LPTV_SORTCB = LPTVSORTCB;
2601 pub type TV_SORTCB = TVSORTCB;
2602 STRUCT!{nodebug struct TVSORTCB {
2603     hParent: HTREEITEM,
2604     lpfnCompare: PFNTVCOMPARE,
2605     lParam: ::LPARAM,
2606 }}
2607 pub type LPTVSORTCB = *mut TVSORTCB;
2608 pub type LPNM_TREEVIEWA = LPNMTREEVIEWA;
2609 pub type LPNM_TREEVIEWW = LPNMTREEVIEWW;
2610 pub type NM_TREEVIEWA = NMTREEVIEWA;
2611 pub type NM_TREEVIEWW = NMTREEVIEWW;
2612 STRUCT!{struct NMTREEVIEWA {
2613     hdr: ::NMHDR,
2614     action: ::UINT,
2615     itemOld: TVITEMA,
2616     itemNew: TVITEMA,
2617     ptDrag: ::POINT,
2618 }}
2619 pub type LPNMTREEVIEWA = *mut NMTREEVIEWA;
2620 STRUCT!{struct NMTREEVIEWW {
2621     hdr: ::NMHDR,
2622     action: ::UINT,
2623     itemOld: TVITEMW,
2624     itemNew: TVITEMW,
2625     ptDrag: ::POINT,
2626 }}
2627 pub type LPNMTREEVIEWW = *mut NMTREEVIEWW;
2628 pub const TVN_SELCHANGINGA: ::UINT = TVN_FIRST - 1;
2629 pub const TVN_SELCHANGINGW: ::UINT = TVN_FIRST - 50;
2630 pub const TVN_SELCHANGEDA: ::UINT = TVN_FIRST - 2;
2631 pub const TVN_SELCHANGEDW: ::UINT = TVN_FIRST - 51;
2632 pub const TVN_GETDISPINFOA: ::UINT = TVN_FIRST - 3;
2633 pub const TVN_GETDISPINFOW: ::UINT = TVN_FIRST - 52;
2634 pub const TVN_SETDISPINFOA: ::UINT = TVN_FIRST - 4;
2635 pub const TVN_SETDISPINFOW: ::UINT = TVN_FIRST - 53;
2636 pub const TVC_UNKNOWN: ::LPARAM = 0x0000;
2637 pub const TVC_BYMOUSE: ::LPARAM = 0x0001;
2638 pub const TVC_BYKEYBOARD: ::LPARAM = 0x0002;
2639 pub const TVIF_DI_SETITEM: ::UINT = 0x1000;
2640 pub type TV_DISPINFOA = NMTVDISPINFOA;
2641 pub type TV_DISPINFOW = NMTVDISPINFOW;
2642 STRUCT!{struct NMTVDISPINFOA {
2643     hdr: ::NMHDR,
2644     item: TVITEMA,
2645 }}
2646 pub type LPNMTVDISPINFOA = *mut NMTVDISPINFOA;
2647 STRUCT!{struct NMTVDISPINFOW {
2648     hdr: ::NMHDR,
2649     item: TVITEMW,
2650 }}
2651 pub type LPNMTVDISPINFOW = *mut NMTVDISPINFOW;
2652 STRUCT!{struct NMTVDISPINFOEXA {
2653     hdr: ::NMHDR,
2654     item: TVITEMEXA,
2655 }}
2656 pub type LPNMTVDISPINFOEXA = *mut NMTVDISPINFOEXA;
2657 STRUCT!{struct NMTVDISPINFOEXW {
2658     hdr: ::NMHDR,
2659     item: TVITEMEXW,
2660 }}
2661 pub type LPNMTVDISPINFOEXW = *mut NMTVDISPINFOEXW;
2662 pub type TV_DISPINFOEXA = NMTVDISPINFOEXA;
2663 pub type TV_DISPINFOEXW = NMTVDISPINFOEXW;
2664 pub const TVN_ITEMEXPANDINGA: ::UINT = TVN_FIRST - 5;
2665 pub const TVN_ITEMEXPANDINGW: ::UINT = TVN_FIRST - 54;
2666 pub const TVN_ITEMEXPANDEDA: ::UINT = TVN_FIRST - 6;
2667 pub const TVN_ITEMEXPANDEDW: ::UINT = TVN_FIRST - 55;
2668 pub const TVN_BEGINDRAGA: ::UINT = TVN_FIRST - 7;
2669 pub const TVN_BEGINDRAGW: ::UINT = TVN_FIRST - 56;
2670 pub const TVN_BEGINRDRAGA: ::UINT = TVN_FIRST - 8;
2671 pub const TVN_BEGINRDRAGW: ::UINT = TVN_FIRST - 57;
2672 pub const TVN_DELETEITEMA: ::UINT = TVN_FIRST - 9;
2673 pub const TVN_DELETEITEMW: ::UINT = TVN_FIRST - 58;
2674 pub const TVN_BEGINLABELEDITA: ::UINT = TVN_FIRST - 10;
2675 pub const TVN_BEGINLABELEDITW: ::UINT = TVN_FIRST - 59;
2676 pub const TVN_ENDLABELEDITA: ::UINT = TVN_FIRST - 11;
2677 pub const TVN_ENDLABELEDITW: ::UINT = TVN_FIRST - 60;
2678 pub const TVN_KEYDOWN: ::UINT = TVN_FIRST - 12;
2679 pub const TVN_GETINFOTIPA: ::UINT = TVN_FIRST - 13;
2680 pub const TVN_GETINFOTIPW: ::UINT = TVN_FIRST - 14;
2681 pub const TVN_SINGLEEXPAND: ::UINT = TVN_FIRST - 15;
2682 pub const TVN_ITEMCHANGINGA: ::UINT = TVN_FIRST - 16;
2683 pub const TVN_ITEMCHANGINGW: ::UINT = TVN_FIRST - 17;
2684 pub const TVN_ITEMCHANGEDA: ::UINT = TVN_FIRST - 18;
2685 pub const TVN_ITEMCHANGEDW: ::UINT = TVN_FIRST - 19;
2686 pub const TVN_ASYNCDRAW: ::UINT = TVN_FIRST - 20;
2687 pub const TVNRET_DEFAULT: ::LRESULT = 0;
2688 pub const TVNRET_SKIPOLD: ::LRESULT = 1;
2689 pub const TVNRET_SKIPNEW: ::LRESULT = 2;
2690 pub type TV_KEYDOWN = NMTVKEYDOWN;
2691 STRUCT!{struct NMTVKEYDOWN {
2692     hdr: ::NMHDR,
2693     wVKey: ::WORD,
2694     flags: ::UINT,
2695 }}
2696 pub type LPNMTVKEYDOWN = *mut NMTVKEYDOWN;
2697 STRUCT!{struct NMTVCUSTOMDRAW {
2698     nmcd: NMCUSTOMDRAW,
2699     clrText: ::COLORREF,
2700     clrTextBk: ::COLORREF,
2701     iLevel: ::c_int,
2702 }}
2703 pub type LPNMTVCUSTOMDRAW = *mut NMTVCUSTOMDRAW;
2704 STRUCT!{struct NMTVGETINFOTIPA {
2705     hdr: ::NMHDR,
2706     pszText: ::LPSTR,
2707     cchTextMax: ::c_int,
2708     hItem: HTREEITEM,
2709     lParam: ::LPARAM,
2710 }}
2711 pub type LPNMTVGETINFOTIPA = *mut NMTVGETINFOTIPA;
2712 STRUCT!{struct NMTVGETINFOTIPW {
2713     hdr: ::NMHDR,
2714     pszText: ::LPWSTR,
2715     cchTextMax: ::c_int,
2716     hItem: HTREEITEM,
2717     lParam: ::LPARAM,
2718 }}
2719 pub type LPNMTVGETINFOTIPW = *mut NMTVGETINFOTIPW;
2720 pub const TVCDRF_NOIMAGES: ::LRESULT = 0x00010000;
2721 STRUCT!{struct NMTVITEMCHANGE {
2722     hdr: ::NMHDR,
2723     uChanged: ::UINT,
2724     hItem: HTREEITEM,
2725     uStateNew: ::UINT,
2726     uStateOld: ::UINT,
2727     lParam: ::LPARAM,
2728 }}
2729 STRUCT!{struct NMTVASYNCDRAW {
2730     hdr: ::NMHDR,
2731     pimldp: *mut IMAGELISTDRAWPARAMS,
2732     hr: ::HRESULT,
2733     hItem: HTREEITEM,
2734     lParam: ::LPARAM,
2735     dwRetFlags: ::DWORD,
2736     iRetImageIndex: ::c_int,
2737 }}
2738 pub const CBEIF_TEXT: ::UINT = 0x00000001;
2739 pub const CBEIF_IMAGE: ::UINT = 0x00000002;
2740 pub const CBEIF_SELECTEDIMAGE: ::UINT = 0x00000004;
2741 pub const CBEIF_OVERLAY: ::UINT = 0x00000008;
2742 pub const CBEIF_INDENT: ::UINT = 0x00000010;
2743 pub const CBEIF_LPARAM: ::UINT = 0x00000020;
2744 pub const CBEIF_DI_SETITEM: ::UINT = 0x10000000;
2745 STRUCT!{struct COMBOBOXEXITEMA {
2746     mask: ::UINT,
2747     iItem: ::INT_PTR,
2748     pszText: ::LPSTR,
2749     cchTextMax: ::c_int,
2750     iImage: ::c_int,
2751     iSelectedImage: ::c_int,
2752     iOverlay: ::c_int,
2753     iIndent: ::c_int,
2754     lParam: ::LPARAM,
2755 }}
2756 pub type PCOMBOBOXEXITEMA = *mut COMBOBOXEXITEMA;
2757 pub type PCCOMBOBOXEXITEMA = *const COMBOBOXEXITEMA;
2758 STRUCT!{struct COMBOBOXEXITEMW {
2759     mask: ::UINT,
2760     iItem: ::INT_PTR,
2761     pszText: ::LPWSTR,
2762     cchTextMax: ::c_int,
2763     iImage: ::c_int,
2764     iSelectedImage: ::c_int,
2765     iOverlay: ::c_int,
2766     iIndent: ::c_int,
2767     lParam: ::LPARAM,
2768 }}
2769 pub type PCOMBOBOXEXITEMW = *mut COMBOBOXEXITEMW;
2770 pub type PCCOMBOBOXEXITEMW = *const COMBOBOXEXITEMW;
2771 pub const CBEM_INSERTITEMA: ::UINT = ::WM_USER + 1;
2772 pub const CBEM_SETIMAGELIST: ::UINT = ::WM_USER + 2;
2773 pub const CBEM_GETIMAGELIST: ::UINT = ::WM_USER + 3;
2774 pub const CBEM_GETITEMA: ::UINT = ::WM_USER + 4;
2775 pub const CBEM_SETITEMA: ::UINT = ::WM_USER + 5;
2776 pub const CBEM_DELETEITEM: ::UINT = ::CB_DELETESTRING;
2777 pub const CBEM_GETCOMBOCONTROL: ::UINT = ::WM_USER + 6;
2778 pub const CBEM_GETEDITCONTROL: ::UINT = ::WM_USER + 7;
2779 pub const CBEM_SETEXSTYLE: ::UINT = ::WM_USER + 8;
2780 pub const CBEM_SETEXTENDEDSTYLE: ::UINT = ::WM_USER + 14;
2781 pub const CBEM_GETEXSTYLE: ::UINT = ::WM_USER + 9;
2782 pub const CBEM_GETEXTENDEDSTYLE: ::UINT = ::WM_USER + 9;
2783 pub const CBEM_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
2784 pub const CBEM_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
2785 pub const CBEM_HASEDITCHANGED: ::UINT = ::WM_USER + 10;
2786 pub const CBEM_INSERTITEMW: ::UINT = ::WM_USER + 11;
2787 pub const CBEM_SETITEMW: ::UINT = ::WM_USER + 12;
2788 pub const CBEM_GETITEMW: ::UINT = ::WM_USER + 13;
2789 pub const CBEM_SETWINDOWTHEME: ::UINT = CCM_SETWINDOWTHEME;
2790 pub const CBES_EX_NOEDITIMAGE: ::DWORD = 0x00000001;
2791 pub const CBES_EX_NOEDITIMAGEINDENT: ::DWORD = 0x00000002;
2792 pub const CBES_EX_PATHWORDBREAKPROC: ::DWORD = 0x00000004;
2793 pub const CBES_EX_NOSIZELIMIT: ::DWORD = 0x00000008;
2794 pub const CBES_EX_CASESENSITIVE: ::DWORD = 0x00000010;
2795 pub const CBES_EX_TEXTENDELLIPSIS: ::DWORD = 0x00000020;
2796 STRUCT!{struct NMCOMBOBOXEXA {
2797     hdr: ::NMHDR,
2798     ceItem: COMBOBOXEXITEMA,
2799 }}
2800 pub type PNMCOMBOBOXEXA = *mut NMCOMBOBOXEXA;
2801 STRUCT!{struct NMCOMBOBOXEXW {
2802     hdr: ::NMHDR,
2803     ceItem: COMBOBOXEXITEMW,
2804 }}
2805 pub type PNMCOMBOBOXEXW = *mut NMCOMBOBOXEXW;
2806 pub const CBEN_GETDISPINFOA: ::UINT = CBEN_FIRST - 0;
2807 pub const CBEN_INSERTITEM: ::UINT = CBEN_FIRST - 1;
2808 pub const CBEN_DELETEITEM: ::UINT = CBEN_FIRST - 2;
2809 pub const CBEN_BEGINEDIT: ::UINT = CBEN_FIRST - 4;
2810 pub const CBEN_ENDEDITA: ::UINT = CBEN_FIRST - 5;
2811 pub const CBEN_ENDEDITW: ::UINT = CBEN_FIRST - 6;
2812 pub const CBEN_GETDISPINFOW: ::UINT = CBEN_FIRST - 7;
2813 pub const CBEN_DRAGBEGINA: ::UINT = CBEN_FIRST - 8;
2814 pub const CBEN_DRAGBEGINW: ::UINT = CBEN_FIRST - 9;
2815 pub const CBENF_KILLFOCUS: ::c_int = 1;
2816 pub const CBENF_RETURN: ::c_int = 2;
2817 pub const CBENF_ESCAPE: ::c_int = 3;
2818 pub const CBENF_DROPDOWN: ::c_int = 4;
2819 pub const CBEMAXSTRLEN: usize = 260;
2820 STRUCT!{nodebug struct NMCBEDRAGBEGINW {
2821     hdr: ::NMHDR,
2822     iItemid: ::c_int,
2823     szText: [::WCHAR; CBEMAXSTRLEN],
2824 }}
2825 pub type PNMCBEDRAGBEGINW = *mut NMCBEDRAGBEGINW;
2826 pub type LPNMCBEDRAGBEGINW = *mut NMCBEDRAGBEGINW;
2827 STRUCT!{nodebug struct NMCBEDRAGBEGINA {
2828     hdr: ::NMHDR,
2829     iItemid: ::c_int,
2830     szText: [::c_char; CBEMAXSTRLEN],
2831 }}
2832 pub type PNMCBEDRAGBEGINA = *mut NMCBEDRAGBEGINA;
2833 pub type LPNMCBEDRAGBEGINA = *mut NMCBEDRAGBEGINA;
2834 STRUCT!{nodebug struct NMCBEENDEDITW {
2835     hdr: ::NMHDR,
2836     fChanged: ::BOOL,
2837     iNewSelection: ::c_int,
2838     szText: [::WCHAR; CBEMAXSTRLEN],
2839     iWhy: ::c_int,
2840 }}
2841 pub type PNMCBEENDEDITW = *mut NMCBEENDEDITW;
2842 pub type LPNMCBEENDEDITW = *mut NMCBEENDEDITW;
2843 STRUCT!{nodebug struct NMCBEENDEDITA {
2844     hdr: ::NMHDR,
2845     fChanged: ::BOOL,
2846     iNewSelection: ::c_int,
2847     szText: [::c_char; CBEMAXSTRLEN],
2848     iWhy: ::c_int,
2849 }}
2850 pub type PNMCBEENDEDITA = *mut NMCBEENDEDITA;
2851 pub type LPNMCBEENDEDITA = *mut NMCBEENDEDITA;
2852 pub const TCS_SCROLLOPPOSITE: ::DWORD = 0x0001;
2853 pub const TCS_BOTTOM: ::DWORD = 0x0002;
2854 pub const TCS_RIGHT: ::DWORD = 0x0002;
2855 pub const TCS_MULTISELECT: ::DWORD = 0x0004;
2856 pub const TCS_FLATBUTTONS: ::DWORD = 0x0008;
2857 pub const TCS_FORCEICONLEFT: ::DWORD = 0x0010;
2858 pub const TCS_FORCELABELLEFT: ::DWORD = 0x0020;
2859 pub const TCS_HOTTRACK: ::DWORD = 0x0040;
2860 pub const TCS_VERTICAL: ::DWORD = 0x0080;
2861 pub const TCS_TABS: ::DWORD = 0x0000;
2862 pub const TCS_BUTTONS: ::DWORD = 0x0100;
2863 pub const TCS_SINGLELINE: ::DWORD = 0x0000;
2864 pub const TCS_MULTILINE: ::DWORD = 0x0200;
2865 pub const TCS_RIGHTJUSTIFY: ::DWORD = 0x0000;
2866 pub const TCS_FIXEDWIDTH: ::DWORD = 0x0400;
2867 pub const TCS_RAGGEDRIGHT: ::DWORD = 0x0800;
2868 pub const TCS_FOCUSONBUTTONDOWN: ::DWORD = 0x1000;
2869 pub const TCS_OWNERDRAWFIXED: ::DWORD = 0x2000;
2870 pub const TCS_TOOLTIPS: ::DWORD = 0x4000;
2871 pub const TCS_FOCUSNEVER: ::DWORD = 0x8000;
2872 pub const TCS_EX_FLATSEPARATORS: ::DWORD = 0x00000001;
2873 pub const TCS_EX_REGISTERDROP: ::DWORD = 0x00000002;
2874 pub const TCM_GETIMAGELIST: ::UINT = TCM_FIRST + 2;
2875 pub const TCM_SETIMAGELIST: ::UINT = TCM_FIRST + 3;
2876 pub const TCM_GETITEMCOUNT: ::UINT = TCM_FIRST + 4;
2877 pub const TCIF_TEXT: ::UINT = 0x0001;
2878 pub const TCIF_IMAGE: ::UINT = 0x0002;
2879 pub const TCIF_RTLREADING: ::UINT = 0x0004;
2880 pub const TCIF_PARAM: ::UINT = 0x0008;
2881 pub const TCIF_STATE: ::UINT = 0x0010;
2882 pub const TCIS_BUTTONPRESSED: ::DWORD = 0x0001;
2883 pub const TCIS_HIGHLIGHTED: ::DWORD = 0x0002;
2884 pub type TC_ITEMHEADERA = TCITEMHEADERA;
2885 pub type TC_ITEMHEADERW = TCITEMHEADERW;
2886 STRUCT!{struct TCITEMHEADERA {
2887     mask: ::UINT,
2888     lpReserved1: ::UINT,
2889     lpReserved2: ::UINT,
2890     pszText: ::LPSTR,
2891     cchTextMax: ::c_int,
2892     iImage: ::c_int,
2893 }}
2894 pub type LPTCITEMHEADERA = *mut TCITEMHEADERA;
2895 STRUCT!{struct TCITEMHEADERW {
2896     mask: ::UINT,
2897     lpReserved1: ::UINT,
2898     lpReserved2: ::UINT,
2899     pszText: ::LPWSTR,
2900     cchTextMax: ::c_int,
2901     iImage: ::c_int,
2902 }}
2903 pub type LPTCITEMHEADERW = *mut TCITEMHEADERW;
2904 pub type TC_ITEMA = TCITEMA;
2905 pub type TC_ITEMW = TCITEMW;
2906 STRUCT!{struct TCITEMA {
2907     mask: ::UINT,
2908     dwState: ::DWORD,
2909     dwStateMask: ::DWORD,
2910     pszText: ::LPSTR,
2911     cchTextMax: ::c_int,
2912     iImage: ::c_int,
2913     lParam: ::LPARAM,
2914 }}
2915 pub type LPTCITEMA = *mut TCITEMA;
2916 STRUCT!{struct TCITEMW {
2917     mask: ::UINT,
2918     dwState: ::DWORD,
2919     dwStateMask: ::DWORD,
2920     pszText: ::LPWSTR,
2921     cchTextMax: ::c_int,
2922     iImage: ::c_int,
2923     lParam: ::LPARAM,
2924 }}
2925 pub type LPTCITEMW = *mut TCITEMW;
2926 pub const TCM_GETITEMA: ::UINT = TCM_FIRST + 5;
2927 pub const TCM_GETITEMW: ::UINT = TCM_FIRST + 60;
2928 pub const TCM_SETITEMA: ::UINT = TCM_FIRST + 6;
2929 pub const TCM_SETITEMW: ::UINT = TCM_FIRST + 61;
2930 pub const TCM_INSERTITEMA: ::UINT = TCM_FIRST + 7;
2931 pub const TCM_INSERTITEMW: ::UINT = TCM_FIRST + 62;
2932 pub const TCM_DELETEITEM: ::UINT = TCM_FIRST + 8;
2933 pub const TCM_DELETEALLITEMS: ::UINT = TCM_FIRST + 9;
2934 pub const TCM_GETITEMRECT: ::UINT = TCM_FIRST + 10;
2935 pub const TCM_GETCURSEL: ::UINT = TCM_FIRST + 11;
2936 pub const TCM_SETCURSEL: ::UINT = TCM_FIRST + 12;
2937 pub const TCHT_NOWHERE: ::UINT = 0x0001;
2938 pub const TCHT_ONITEMICON: ::UINT = 0x0002;
2939 pub const TCHT_ONITEMLABEL: ::UINT = 0x0004;
2940 pub const TCHT_ONITEM: ::UINT = TCHT_ONITEMICON | TCHT_ONITEMLABEL;
2941 pub type LPTC_HITTESTINFO = LPTCHITTESTINFO;
2942 pub type TC_HITTESTINFO = TCHITTESTINFO;
2943 STRUCT!{struct TCHITTESTINFO {
2944     pt: ::POINT,
2945     flags: ::UINT,
2946 }}
2947 pub type LPTCHITTESTINFO = *mut TCHITTESTINFO;
2948 pub const TCM_HITTEST: ::UINT = TCM_FIRST + 13;
2949 pub const TCM_SETITEMEXTRA: ::UINT = TCM_FIRST + 14;
2950 pub const TCM_ADJUSTRECT: ::UINT = TCM_FIRST + 40;
2951 pub const TCM_SETITEMSIZE: ::UINT = TCM_FIRST + 41;
2952 pub const TCM_REMOVEIMAGE: ::UINT = TCM_FIRST + 42;
2953 pub const TCM_SETPADDING: ::UINT = TCM_FIRST + 43;
2954 pub const TCM_GETROWCOUNT: ::UINT = TCM_FIRST + 44;
2955 pub const TCM_GETTOOLTIPS: ::UINT = TCM_FIRST + 45;
2956 pub const TCM_SETTOOLTIPS: ::UINT = TCM_FIRST + 46;
2957 pub const TCM_GETCURFOCUS: ::UINT = TCM_FIRST + 47;
2958 pub const TCM_SETCURFOCUS: ::UINT = TCM_FIRST + 48;
2959 pub const TCM_SETMINTABWIDTH: ::UINT = TCM_FIRST + 49;
2960 pub const TCM_DESELECTALL: ::UINT = TCM_FIRST + 50;
2961 pub const TCM_HIGHLIGHTITEM: ::UINT = TCM_FIRST + 51;
2962 pub const TCM_SETEXTENDEDSTYLE: ::UINT = TCM_FIRST + 52;
2963 pub const TCM_GETEXTENDEDSTYLE: ::UINT = TCM_FIRST + 53;
2964 pub const TCM_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
2965 pub const TCM_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
2966 pub const TCN_KEYDOWN: ::UINT = TCN_FIRST - 0;
2967 pub type TC_KEYDOWN = NMTCKEYDOWN;
2968 STRUCT!{struct NMTCKEYDOWN {
2969     hdr: ::NMHDR,
2970     wVKey: ::WORD,
2971     flags: ::UINT,
2972 }}
2973 pub const TCN_SELCHANGE: ::UINT = TCN_FIRST - 1;
2974 pub const TCN_SELCHANGING: ::UINT = TCN_FIRST - 2;
2975 pub const TCN_GETOBJECT: ::UINT = TCN_FIRST - 3;
2976 pub const TCN_FOCUSCHANGE: ::UINT = TCN_FIRST - 4;
2977 pub const ACS_CENTER: ::DWORD = 0x0001;
2978 pub const ACS_TRANSPARENT: ::DWORD = 0x0002;
2979 pub const ACS_AUTOPLAY: ::DWORD = 0x0004;
2980 pub const ACS_TIMER: ::DWORD = 0x0008;
2981 pub const ACM_OPENA: ::UINT = ::WM_USER + 100;
2982 pub const ACM_OPENW: ::UINT = ::WM_USER + 103;
2983 pub const ACM_PLAY: ::UINT = ::WM_USER + 101;
2984 pub const ACM_STOP: ::UINT = ::WM_USER + 102;
2985 pub const ACM_ISPLAYING: ::UINT = ::WM_USER + 104;
2986 pub const ACN_START: ::WPARAM = 1;
2987 pub const ACN_STOP: ::WPARAM = 2;
2988 pub type MONTHDAYSTATE = ::DWORD;
2989 pub type LPMONTHDAYSTATE = *mut ::DWORD;
2990 pub const MCM_FIRST: ::UINT = 0x1000;
2991 pub const MCM_GETCURSEL: ::UINT = MCM_FIRST + 1;
2992 pub const MCM_SETCURSEL: ::UINT = MCM_FIRST + 2;
2993 pub const MCM_GETMAXSELCOUNT: ::UINT = MCM_FIRST + 3;
2994 pub const MCM_SETMAXSELCOUNT: ::UINT = MCM_FIRST + 4;
2995 pub const MCM_GETSELRANGE: ::UINT = MCM_FIRST + 5;
2996 pub const MCM_SETSELRANGE: ::UINT = MCM_FIRST + 6;
2997 pub const MCM_GETMONTHRANGE: ::UINT = MCM_FIRST + 7;
2998 pub const MCM_SETDAYSTATE: ::UINT = MCM_FIRST + 8;
2999 pub const MCM_GETMINREQRECT: ::UINT = MCM_FIRST + 9;
3000 pub const MCM_SETCOLOR: ::UINT = MCM_FIRST + 10;
3001 pub const MCM_GETCOLOR: ::UINT = MCM_FIRST + 11;
3002 pub const MCM_SETTODAY: ::UINT = MCM_FIRST + 12;
3003 pub const MCM_GETTODAY: ::UINT = MCM_FIRST + 13;
3004 pub const MCM_HITTEST: ::UINT = MCM_FIRST + 14;
3005 pub const MCSC_BACKGROUND: ::WPARAM = 0;
3006 pub const MCSC_TEXT: ::WPARAM = 1;
3007 pub const MCSC_TITLEBK: ::WPARAM = 2;
3008 pub const MCSC_TITLETEXT: ::WPARAM = 3;
3009 pub const MCSC_MONTHBK: ::WPARAM = 4;
3010 pub const MCSC_TRAILINGTEXT: ::WPARAM = 5;
3011 STRUCT!{struct MCHITTESTINFO {
3012     cbSize: ::UINT,
3013     pt: ::POINT,
3014     uHit: ::UINT,
3015     st: ::SYSTEMTIME,
3016     rc: ::RECT,
3017     iOffset: ::c_int,
3018     iRow: ::c_int,
3019     iCol: ::c_int,
3020 }}
3021 pub type PMCHITTESTINFO = *mut MCHITTESTINFO;
3022 pub const MCHT_TITLE: ::UINT = 0x00010000;
3023 pub const MCHT_CALENDAR: ::UINT = 0x00020000;
3024 pub const MCHT_TODAYLINK: ::UINT = 0x00030000;
3025 pub const MCHT_CALENDARCONTROL: ::UINT = 0x00100000;
3026 pub const MCHT_NEXT: ::UINT = 0x01000000;
3027 pub const MCHT_PREV: ::UINT = 0x02000000;
3028 pub const MCHT_NOWHERE: ::UINT = 0x00000000;
3029 pub const MCHT_TITLEBK: ::UINT = MCHT_TITLE;
3030 pub const MCHT_TITLEMONTH: ::UINT = MCHT_TITLE | 0x0001;
3031 pub const MCHT_TITLEYEAR: ::UINT = MCHT_TITLE | 0x0002;
3032 pub const MCHT_TITLEBTNNEXT: ::UINT = MCHT_TITLE | MCHT_NEXT | 0x0003;
3033 pub const MCHT_TITLEBTNPREV: ::UINT = MCHT_TITLE | MCHT_PREV | 0x0003;
3034 pub const MCHT_CALENDARBK: ::UINT = MCHT_CALENDAR;
3035 pub const MCHT_CALENDARDATE: ::UINT = MCHT_CALENDAR | 0x0001;
3036 pub const MCHT_CALENDARDATENEXT: ::UINT = MCHT_CALENDARDATE | MCHT_NEXT;
3037 pub const MCHT_CALENDARDATEPREV: ::UINT = MCHT_CALENDARDATE | MCHT_PREV;
3038 pub const MCHT_CALENDARDAY: ::UINT = MCHT_CALENDAR | 0x0002;
3039 pub const MCHT_CALENDARWEEKNUM: ::UINT = MCHT_CALENDAR | 0x0003;
3040 pub const MCHT_CALENDARDATEMIN: ::UINT = MCHT_CALENDAR | 0x0004;
3041 pub const MCHT_CALENDARDATEMAX: ::UINT = MCHT_CALENDAR | 0x0005;
3042 pub const MCM_SETFIRSTDAYOFWEEK: ::UINT = MCM_FIRST + 15;
3043 pub const MCM_GETFIRSTDAYOFWEEK: ::UINT = MCM_FIRST + 16;
3044 pub const MCM_GETRANGE: ::UINT = MCM_FIRST + 17;
3045 pub const MCM_SETRANGE: ::UINT = MCM_FIRST + 18;
3046 pub const MCM_GETMONTHDELTA: ::UINT = MCM_FIRST + 19;
3047 pub const MCM_SETMONTHDELTA: ::UINT = MCM_FIRST + 20;
3048 pub const MCM_GETMAXTODAYWIDTH: ::UINT = MCM_FIRST + 21;
3049 pub const MCM_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
3050 pub const MCM_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
3051 pub const MCM_GETCURRENTVIEW: ::UINT = MCM_FIRST + 22;
3052 pub const MCM_GETCALENDARCOUNT: ::UINT = MCM_FIRST + 23;
3053 pub const MCMV_MONTH: ::DWORD = 0;
3054 pub const MCMV_YEAR: ::DWORD = 1;
3055 pub const MCMV_DECADE: ::DWORD = 2;
3056 pub const MCMV_CENTURY: ::DWORD = 3;
3057 pub const MCMV_MAX: ::DWORD = MCMV_CENTURY;
3058 pub const MCGIP_CALENDARCONTROL: ::DWORD = 0;
3059 pub const MCGIP_NEXT: ::DWORD = 1;
3060 pub const MCGIP_PREV: ::DWORD = 2;
3061 pub const MCGIP_FOOTER: ::DWORD = 3;
3062 pub const MCGIP_CALENDAR: ::DWORD = 4;
3063 pub const MCGIP_CALENDARHEADER: ::DWORD = 5;
3064 pub const MCGIP_CALENDARBODY: ::DWORD = 6;
3065 pub const MCGIP_CALENDARROW: ::DWORD = 7;
3066 pub const MCGIP_CALENDARCELL: ::DWORD = 8;
3067 pub const MCGIF_DATE: ::DWORD = 0x00000001;
3068 pub const MCGIF_RECT: ::DWORD = 0x00000002;
3069 pub const MCGIF_NAME: ::DWORD = 0x00000004;
3070 STRUCT!{struct MCGRIDINFO {
3071     cbSize: ::UINT,
3072     dwPart: ::DWORD,
3073     dwFlags: ::DWORD,
3074     iCalendar: ::c_int,
3075     iRow: ::c_int,
3076     iCol: ::c_int,
3077     bSelected: ::BOOL,
3078     stStart: ::SYSTEMTIME,
3079     stEnd: ::SYSTEMTIME,
3080     rc: ::RECT,
3081     pszName: ::PWSTR,
3082     cchName: ::size_t,
3083 }}
3084 pub type PMCGRIDINFO = *mut MCGRIDINFO;
3085 pub const MCM_GETCALENDARGRIDINFO: ::UINT = MCM_FIRST + 24;
3086 pub const MCM_GETCALID: ::UINT = MCM_FIRST + 27;
3087 pub const MCM_SETCALID: ::UINT = MCM_FIRST + 28;
3088 pub const MCM_SIZERECTTOMIN: ::UINT = MCM_FIRST + 29;
3089 pub const MCM_SETCALENDARBORDER: ::UINT = MCM_FIRST + 30;
3090 pub const MCM_GETCALENDARBORDER: ::UINT = MCM_FIRST + 31;
3091 pub const MCM_SETCURRENTVIEW: ::UINT = MCM_FIRST + 32;
3092 STRUCT!{struct NMSELCHANGE {
3093     nmhdr: ::NMHDR,
3094     stSelStart: ::SYSTEMTIME,
3095     stSelEnd: ::SYSTEMTIME,
3096 }}
3097 pub type LPNMSELCHANGE = *mut NMSELCHANGE;
3098 pub const MCN_SELCHANGE: ::UINT = MCN_FIRST - 3;
3099 STRUCT!{struct NMDAYSTATE {
3100     nmhdr: ::NMHDR,
3101     stStart: ::SYSTEMTIME,
3102     cDayState: ::c_int,
3103     prgDayState: LPMONTHDAYSTATE,
3104 }}
3105 pub type LPNMDAYSTATE = *mut NMDAYSTATE;
3106 pub const MCN_GETDAYSTATE: ::UINT = MCN_FIRST - 1;
3107 pub type NMSELECT = NMSELCHANGE;
3108 pub type LPNMSELECT = *mut NMSELCHANGE;
3109 pub const MCN_SELECT: ::UINT = MCN_FIRST;
3110 STRUCT!{struct NMVIEWCHANGE {
3111     nmhdr: ::NMHDR,
3112     dwOldView: ::DWORD,
3113     dwNewView: ::DWORD,
3114 }}
3115 pub type LPNMVIEWCHANGE = *mut NMVIEWCHANGE;
3116 pub const MCN_VIEWCHANGE: ::UINT = MCN_FIRST - 4;
3117 pub const MCS_DAYSTATE: ::DWORD = 0x0001;
3118 pub const MCS_MULTISELECT: ::DWORD = 0x0002;
3119 pub const MCS_WEEKNUMBERS: ::DWORD = 0x0004;
3120 pub const MCS_NOTODAYCIRCLE: ::DWORD = 0x0008;
3121 pub const MCS_NOTODAY: ::DWORD = 0x0010;
3122 pub const MCS_NOTRAILINGDATES: ::DWORD = 0x0040;
3123 pub const MCS_SHORTDAYSOFWEEK: ::DWORD = 0x0080;
3124 pub const MCS_NOSELCHANGEONNAV: ::DWORD = 0x0100;
3125 pub const GMR_VISIBLE: ::DWORD = 0;
3126 pub const GMR_DAYSTATE: ::DWORD = 1;
3127 STRUCT!{struct DATETIMEPICKERINFO {
3128     cbSize: ::UINT,
3129     rcCheck: ::RECT,
3130     stateCheck: ::DWORD,
3131     rcButton: ::RECT,
3132     stateButton: ::DWORD,
3133     hwndEdit: ::HWND,
3134     hwndUD: ::HWND,
3135     hwndDropDown: ::HWND,
3136 }}
3137 pub type LPDATETIMEPICKERINFO = *mut DATETIMEPICKERINFO;
3138 pub const DTM_FIRST: ::UINT = 0x1000;
3139 pub const DTM_GETSYSTEMTIME: ::UINT = DTM_FIRST + 1;
3140 pub const DTM_SETSYSTEMTIME: ::UINT = DTM_FIRST + 2;
3141 pub const DTM_GETRANGE: ::UINT = DTM_FIRST + 3;
3142 pub const DTM_SETRANGE: ::UINT = DTM_FIRST + 4;
3143 pub const DTM_SETFORMATA: ::UINT = DTM_FIRST + 5;
3144 pub const DTM_SETFORMATW: ::UINT = DTM_FIRST + 50;
3145 pub const DTM_SETMCCOLOR: ::UINT = DTM_FIRST + 6;
3146 pub const DTM_GETMCCOLOR: ::UINT = DTM_FIRST + 7;
3147 pub const DTM_GETMONTHCAL: ::UINT = DTM_FIRST + 8;
3148 pub const DTM_SETMCFONT: ::UINT = DTM_FIRST + 9;
3149 pub const DTM_GETMCFONT: ::UINT = DTM_FIRST + 10;
3150 pub const DTM_SETMCSTYLE: ::UINT = DTM_FIRST + 11;
3151 pub const DTM_GETMCSTYLE: ::UINT = DTM_FIRST + 12;
3152 pub const DTM_CLOSEMONTHCAL: ::UINT = DTM_FIRST + 13;
3153 pub const DTM_GETDATETIMEPICKERINFO: ::UINT = DTM_FIRST + 14;
3154 pub const DTM_GETIDEALSIZE: ::UINT = DTM_FIRST + 15;
3155 pub const DTS_UPDOWN: ::DWORD = 0x0001;
3156 pub const DTS_SHOWNONE: ::DWORD = 0x0002;
3157 pub const DTS_SHORTDATEFORMAT: ::DWORD = 0x0000;
3158 pub const DTS_LONGDATEFORMAT: ::DWORD = 0x0004;
3159 pub const DTS_SHORTDATECENTURYFORMAT: ::DWORD = 0x000C;
3160 pub const DTS_TIMEFORMAT: ::DWORD = 0x0009;
3161 pub const DTS_APPCANPARSE: ::DWORD = 0x0010;
3162 pub const DTS_RIGHTALIGN: ::DWORD = 0x0020;
3163 pub const DTN_DATETIMECHANGE: ::UINT = DTN_FIRST2 - 6;
3164 STRUCT!{struct NMDATETIMECHANGE {
3165     nmhdr: ::NMHDR,
3166     dwFlags: ::DWORD,
3167     st: ::SYSTEMTIME,
3168 }}
3169 pub type LPNMDATETIMECHANGE = *mut NMDATETIMECHANGE;
3170 pub const DTN_USERSTRINGA: ::UINT = DTN_FIRST2 - 5;
3171 pub const DTN_USERSTRINGW: ::UINT = DTN_FIRST - 5;
3172 STRUCT!{struct NMDATETIMESTRINGA {
3173     nmhdr: ::NMHDR,
3174     pszUserString: ::LPCSTR,
3175     st: ::SYSTEMTIME,
3176     dwFlags: ::DWORD,
3177 }}
3178 pub type LPNMDATETIMESTRINGA = *mut NMDATETIMESTRINGA;
3179 STRUCT!{struct NMDATETIMESTRINGW {
3180     nmhdr: ::NMHDR,
3181     pszUserString: ::LPCWSTR,
3182     st: ::SYSTEMTIME,
3183     dwFlags: ::DWORD,
3184 }}
3185 pub type LPNMDATETIMESTRINGW = *mut NMDATETIMESTRINGW;
3186 pub const DTN_WMKEYDOWNA: ::UINT = DTN_FIRST2 - 4;
3187 pub const DTN_WMKEYDOWNW: ::UINT = DTN_FIRST - 4;
3188 STRUCT!{struct NMDATETIMEWMKEYDOWNA {
3189     nmhdr: ::NMHDR,
3190     nVirtKey: ::c_int,
3191     pszFormat: ::LPCSTR,
3192     st: ::SYSTEMTIME,
3193 }}
3194 pub type LPNMDATETIMEWMKEYDOWNA = *mut NMDATETIMEWMKEYDOWNA;
3195 STRUCT!{struct NMDATETIMEWMKEYDOWNW {
3196     nmhdr: ::NMHDR,
3197     nVirtKey: ::c_int,
3198     pszFormat: ::LPCWSTR,
3199     st: ::SYSTEMTIME,
3200 }}
3201 pub type LPNMDATETIMEWMKEYDOWNW = *mut NMDATETIMEWMKEYDOWNW;
3202 pub const DTN_FORMATA: ::UINT = DTN_FIRST2 - 3;
3203 pub const DTN_FORMATW: ::UINT = DTN_FIRST - 3;
3204 STRUCT!{nodebug struct NMDATETIMEFORMATA {
3205     nmhdr: ::NMHDR,
3206     pszFormat: ::LPCSTR,
3207     st: ::SYSTEMTIME,
3208     pszDisplay: ::LPCSTR,
3209     szDisplay: [::CHAR; 64],
3210 }}
3211 pub type LPNMDATETIMEFORMATA = *mut NMDATETIMEFORMATA;
3212 STRUCT!{nodebug struct NMDATETIMEFORMATW {
3213     nmhdr: ::NMHDR,
3214     pszFormat: ::LPCWSTR,
3215     st: ::SYSTEMTIME,
3216     pszDisplay: ::LPCWSTR,
3217     szDisplay: [::WCHAR; 64],
3218 }}
3219 pub type LPNMDATETIMEFORMATW = *mut NMDATETIMEFORMATW;
3220 pub const DTN_FORMATQUERYA: ::UINT = DTN_FIRST2 - 2;
3221 pub const DTN_FORMATQUERYW: ::UINT = DTN_FIRST - 2;
3222 STRUCT!{struct NMDATETIMEFORMATQUERYA {
3223     nmhdr: ::NMHDR,
3224     pszFormat: ::LPCSTR,
3225     szMax: ::SIZE,
3226 }}
3227 pub type LPNMDATETIMEFORMATQUERYA = *mut NMDATETIMEFORMATQUERYA;
3228 STRUCT!{struct NMDATETIMEFORMATQUERYW {
3229     nmhdr: ::NMHDR,
3230     pszFormat: ::LPCWSTR,
3231     szMax: ::SIZE,
3232 }}
3233 pub type LPNMDATETIMEFORMATQUERYW = *mut NMDATETIMEFORMATQUERYW;
3234 pub const DTN_DROPDOWN: ::UINT = DTN_FIRST2 - 1;
3235 pub const DTN_CLOSEUP: ::UINT = DTN_FIRST2;
3236 pub const GDTR_MIN: ::WPARAM = 0x0001;
3237 pub const GDTR_MAX: ::WPARAM = 0x0002;
3238 pub const GDT_ERROR: ::LRESULT = -1;
3239 pub const GDT_VALID: ::LRESULT = 0;
3240 pub const GDT_NONE: ::LRESULT = 1;
3241 pub const IPM_CLEARADDRESS: ::UINT = ::WM_USER + 100;
3242 pub const IPM_SETADDRESS: ::UINT = ::WM_USER + 101;
3243 pub const IPM_GETADDRESS: ::UINT = ::WM_USER + 102;
3244 pub const IPM_SETRANGE: ::UINT = ::WM_USER + 103;
3245 pub const IPM_SETFOCUS: ::UINT = ::WM_USER + 104;
3246 pub const IPM_ISBLANK: ::UINT = ::WM_USER + 105;
3247 pub const IPN_FIELDCHANGED: ::UINT = IPN_FIRST - 0;
3248 STRUCT!{struct NMIPADDRESS {
3249     hdr: ::NMHDR,
3250     iField: ::c_int,
3251     iValue: ::c_int,
3252 }}
3253 pub type LPNMIPADDRESS = *mut NMIPADDRESS;
3254 #[inline] #[allow(dead_code)]
MAKEIPRANGE(low: ::BYTE, high: ::BYTE) -> ::LPARAM3255 pub fn MAKEIPRANGE(low: ::BYTE, high: ::BYTE) -> ::LPARAM {
3256     (high << 8 + low) as ::LPARAM
3257 }
3258 #[inline] #[allow(dead_code)]
MAKEIPADDRESS(b1: ::DWORD, b2: ::DWORD, b3: ::DWORD, b4: ::DWORD) -> ::LPARAM3259 pub fn MAKEIPADDRESS(b1: ::DWORD, b2: ::DWORD, b3: ::DWORD, b4: ::DWORD) -> ::LPARAM {
3260     ((b1 << 24) + (b2 << 16) + (b3 << 8) + b4) as ::LPARAM
3261 }
3262 pub const PGS_VERT: ::DWORD = 0x00000000;
3263 pub const PGS_HORZ: ::DWORD = 0x00000001;
3264 pub const PGS_AUTOSCROLL: ::DWORD = 0x00000002;
3265 pub const PGS_DRAGNDROP: ::DWORD = 0x00000004;
3266 pub const  PGF_INVISIBLE: ::DWORD = 0;
3267 pub const  PGF_NORMAL: ::DWORD = 1;
3268 pub const  PGF_GRAYED: ::DWORD = 2;
3269 pub const  PGF_DEPRESSED: ::DWORD = 4;
3270 pub const  PGF_HOT: ::DWORD = 8;
3271 pub const PGB_TOPORLEFT: ::c_int = 0;
3272 pub const PGB_BOTTOMORRIGHT: ::c_int = 1;
3273 pub const PGM_SETCHILD: ::UINT = PGM_FIRST + 1;
3274 pub const PGM_RECALCSIZE: ::UINT = PGM_FIRST + 2;
3275 pub const PGM_FORWARDMOUSE: ::UINT = PGM_FIRST + 3;
3276 pub const PGM_SETBKCOLOR: ::UINT = PGM_FIRST + 4;
3277 pub const PGM_GETBKCOLOR: ::UINT = PGM_FIRST + 5;
3278 pub const PGM_SETBORDER: ::UINT = PGM_FIRST + 6;
3279 pub const PGM_GETBORDER: ::UINT = PGM_FIRST + 7;
3280 pub const PGM_SETPOS: ::UINT = PGM_FIRST + 8;
3281 pub const PGM_GETPOS: ::UINT = PGM_FIRST + 9;
3282 pub const PGM_SETBUTTONSIZE: ::UINT = PGM_FIRST + 10;
3283 pub const PGM_GETBUTTONSIZE: ::UINT = PGM_FIRST + 11;
3284 pub const PGM_GETBUTTONSTATE: ::UINT = PGM_FIRST + 12;
3285 pub const PGM_GETDROPTARGET: ::UINT = CCM_GETDROPTARGET;
3286 pub const PGM_SETSCROLLINFO: ::UINT = PGM_FIRST + 13;
3287 pub const PGN_SCROLL: ::UINT = PGN_FIRST - 1;
3288 pub const PGF_SCROLLUP: ::c_int = 1;
3289 pub const PGF_SCROLLDOWN: ::c_int = 2;
3290 pub const PGF_SCROLLLEFT: ::c_int = 4;
3291 pub const PGF_SCROLLRIGHT: ::c_int = 8;
3292 pub const PGK_SHIFT: ::BOOL = 1;
3293 pub const PGK_CONTROL: ::BOOL = 2;
3294 pub const PGK_MENU: ::BOOL = 4;
3295 STRUCT!{struct NMPGSCROLL {
3296     hdr: ::NMHDR,
3297     fwKeys: ::BOOL,
3298     rcParent: ::RECT,
3299     iDir: ::c_int,
3300     iXpos: ::c_int,
3301     iYpos: ::c_int,
3302     iScroll: ::c_int,
3303 }}
3304 pub type LPNMPGSCROLL = *mut NMPGSCROLL;
3305 pub const PGN_CALCSIZE: ::UINT = PGN_FIRST - 2;
3306 pub const PGF_CALCWIDTH: ::DWORD = 1;
3307 pub const PGF_CALCHEIGHT: ::DWORD = 2;
3308 STRUCT!{struct NMPGCALCSIZE {
3309     hdr: ::NMHDR,
3310     dwFlag: ::DWORD,
3311     iWidth: ::c_int,
3312     iHeight: ::c_int,
3313 }}
3314 pub type LPNMPGCALCSIZE = *mut NMPGCALCSIZE;
3315 pub const PGN_HOTITEMCHANGE: ::UINT = PGN_FIRST - 3;
3316 STRUCT!{struct NMPGHOTITEM {
3317     hdr: ::NMHDR,
3318     idOld: ::c_int,
3319     idNew: ::c_int,
3320     dwFlags: ::DWORD,
3321 }}
3322 pub type LPNMPGHOTITEM = *mut NMPGHOTITEM;
3323 pub const NFS_EDIT: ::DWORD = 0x0001;
3324 pub const NFS_STATIC: ::DWORD = 0x0002;
3325 pub const NFS_LISTCOMBO: ::DWORD = 0x0004;
3326 pub const NFS_BUTTON: ::DWORD = 0x0008;
3327 pub const NFS_ALL: ::DWORD = 0x0010;
3328 pub const NFS_USEFONTASSOC: ::DWORD = 0x0020;
3329 pub const BUTTON_IMAGELIST_ALIGN_LEFT: ::UINT = 0;
3330 pub const BUTTON_IMAGELIST_ALIGN_RIGHT: ::UINT = 1;
3331 pub const BUTTON_IMAGELIST_ALIGN_TOP: ::UINT = 2;
3332 pub const BUTTON_IMAGELIST_ALIGN_BOTTOM: ::UINT = 3;
3333 pub const BUTTON_IMAGELIST_ALIGN_CENTER: ::UINT = 4;
3334 STRUCT!{struct BUTTON_IMAGELIST {
3335     himl: HIMAGELIST,
3336     margin: ::RECT,
3337     uAlign: ::UINT,
3338 }}
3339 pub type PBUTTON_IMAGELIST = *mut BUTTON_IMAGELIST;
3340 pub const BCM_GETIDEALSIZE: ::UINT = BCM_FIRST + 0x0001;
3341 pub const BCM_SETIMAGELIST: ::UINT = BCM_FIRST + 0x0002;
3342 pub const BCM_GETIMAGELIST: ::UINT = BCM_FIRST + 0x0003;
3343 pub const BCM_SETTEXTMARGIN: ::UINT = BCM_FIRST + 0x0004;
3344 pub const BCM_GETTEXTMARGIN: ::UINT = BCM_FIRST + 0x0005;
3345 STRUCT!{struct NMBCHOTITEM {
3346     hdr: ::NMHDR,
3347     dwFlags: ::DWORD,
3348 }}
3349 pub type LPNMBCHOTITEM = *mut NMBCHOTITEM;
3350 pub const BCN_HOTITEMCHANGE: ::UINT = BCN_FIRST + 0x0001;
3351 pub const BS_SPLITBUTTON: ::UINT = 0x0000000C;
3352 pub const BS_DEFSPLITBUTTON: ::UINT = 0x0000000D;
3353 pub const BS_COMMANDLINK: ::UINT = 0x0000000E;
3354 pub const BS_DEFCOMMANDLINK: ::UINT = 0x0000000F;
3355 pub const BCSIF_GLYPH: ::UINT = 0x0001;
3356 pub const BCSIF_IMAGE: ::UINT = 0x0002;
3357 pub const BCSIF_STYLE: ::UINT = 0x0004;
3358 pub const BCSIF_SIZE: ::UINT = 0x0008;
3359 pub const BCSS_NOSPLIT: ::UINT = 0x0001;
3360 pub const BCSS_STRETCH: ::UINT = 0x0002;
3361 pub const BCSS_ALIGNLEFT: ::UINT = 0x0004;
3362 pub const BCSS_IMAGE: ::UINT = 0x0008;
3363 STRUCT!{struct BUTTON_SPLITINFO {
3364     mask: ::UINT,
3365     himlGlyph: HIMAGELIST,
3366     uSplitStyle: ::UINT,
3367     size: ::SIZE,
3368 }}
3369 pub type PBUTTON_SPLITINFO = *mut BUTTON_SPLITINFO;
3370 pub const BCM_SETDROPDOWNSTATE: ::UINT = BCM_FIRST + 0x0006;
3371 pub const BCM_SETSPLITINFO: ::UINT = BCM_FIRST + 0x0007;
3372 pub const BCM_GETSPLITINFO: ::UINT = BCM_FIRST + 0x0008;
3373 pub const BCM_SETNOTE: ::UINT = BCM_FIRST + 0x0009;
3374 pub const BCM_GETNOTE: ::UINT = BCM_FIRST + 0x000A;
3375 pub const BCM_GETNOTELENGTH: ::UINT = BCM_FIRST + 0x000B;
3376 pub const BCM_SETSHIELD: ::UINT = BCM_FIRST + 0x000C;
3377 pub const BCCL_NOGLYPH: HIMAGELIST = (0 - 1) as HIMAGELIST;
3378 STRUCT!{struct NMBCDROPDOWN {
3379     hdr: ::NMHDR,
3380     rcButton: ::RECT,
3381 }}
3382 pub type LPNMBCDROPDOWN = *mut NMBCDROPDOWN;
3383 pub const BCN_DROPDOWN: ::UINT = BCN_FIRST + 0x0002;
3384 pub const EM_SETCUEBANNER: ::UINT = ECM_FIRST + 1;
3385 pub const EM_GETCUEBANNER: ::UINT = ECM_FIRST + 2;
3386 pub const EM_SHOWBALLOONTIP: ::UINT = ECM_FIRST + 3;
3387 pub const EM_HIDEBALLOONTIP: ::UINT = ECM_FIRST + 4;
3388 pub const EM_SETHILITE: ::UINT = ECM_FIRST + 5;
3389 pub const EM_GETHILITE: ::UINT = ECM_FIRST + 6;
3390 pub const EM_NOSETFOCUS: ::UINT = ECM_FIRST + 7;
3391 pub const EM_TAKEFOCUS: ::UINT = ECM_FIRST + 8;
3392 STRUCT!{struct EDITBALLOONTIP {
3393     cbStruct: ::DWORD,
3394     pszTitle: ::LPCWSTR,
3395     pszText: ::LPCWSTR,
3396     ttiIcon: ::INT,
3397 }}
3398 pub type PEDITBALLOONTIP = *mut EDITBALLOONTIP;
3399 pub const CB_SETMINVISIBLE: ::UINT = CBM_FIRST + 1;
3400 pub const CB_GETMINVISIBLE: ::UINT = CBM_FIRST + 2;
3401 pub const CB_SETCUEBANNER: ::UINT = CBM_FIRST + 3;
3402 pub const CB_GETCUEBANNER: ::UINT = CBM_FIRST + 4;
3403 pub type PFTASKDIALOGCALLBACK = Option<unsafe extern "system" fn(
3404     hwnd: ::HWND, msg: ::UINT, wParam: ::WPARAM, lParam: ::LPARAM, lpRefData: ::LONG_PTR,
3405 ) -> ::HRESULT>;
3406 FLAGS!{enum TASKDIALOG_FLAGS {
3407     TDF_ENABLE_HYPERLINKS = 0x0001,
3408     TDF_USE_HICON_MAIN = 0x0002,
3409     TDF_USE_HICON_FOOTER = 0x0004,
3410     TDF_ALLOW_DIALOG_CANCELLATION = 0x0008,
3411     TDF_USE_COMMAND_LINKS = 0x0010,
3412     TDF_USE_COMMAND_LINKS_NO_ICON = 0x0020,
3413     TDF_EXPAND_FOOTER_AREA = 0x0040,
3414     TDF_EXPANDED_BY_DEFAULT = 0x0080,
3415     TDF_VERIFICATION_FLAG_CHECKED = 0x0100,
3416     TDF_SHOW_PROGRESS_BAR = 0x0200,
3417     TDF_SHOW_MARQUEE_PROGRESS_BAR = 0x0400,
3418     TDF_CALLBACK_TIMER = 0x0800,
3419     TDF_POSITION_RELATIVE_TO_WINDOW = 0x1000,
3420     TDF_RTL_LAYOUT = 0x2000,
3421     TDF_NO_DEFAULT_RADIO_BUTTON = 0x4000,
3422     TDF_CAN_BE_MINIMIZED = 0x8000,
3423     TDF_NO_SET_FOREGROUND = 0x00010000,
3424     TDF_SIZE_TO_CONTENT = 0x01000000,
3425 }}
3426 ENUM!{enum TASKDIALOG_MESSAGES {
3427     TDM_NAVIGATE_PAGE = ::WM_USER + 101,
3428     TDM_CLICK_BUTTON = ::WM_USER + 102,
3429     TDM_SET_MARQUEE_PROGRESS_BAR = ::WM_USER + 103,
3430     TDM_SET_PROGRESS_BAR_STATE = ::WM_USER + 104,
3431     TDM_SET_PROGRESS_BAR_RANGE = ::WM_USER + 105,
3432     TDM_SET_PROGRESS_BAR_POS = ::WM_USER + 106,
3433     TDM_SET_PROGRESS_BAR_MARQUEE = ::WM_USER + 107,
3434     TDM_SET_ELEMENT_TEXT = ::WM_USER + 108,
3435     TDM_CLICK_RADIO_BUTTON = ::WM_USER + 110,
3436     TDM_ENABLE_BUTTON = ::WM_USER + 111,
3437     TDM_ENABLE_RADIO_BUTTON = ::WM_USER + 112,
3438     TDM_CLICK_VERIFICATION = ::WM_USER + 113,
3439     TDM_UPDATE_ELEMENT_TEXT = ::WM_USER + 114,
3440     TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE = ::WM_USER + 115,
3441     TDM_UPDATE_ICON = ::WM_USER + 116,
3442 }}
3443 ENUM!{enum TASKDIALOG_NOTIFICATIONS {
3444     TDN_CREATED = 0,
3445     TDN_NAVIGATED = 1,
3446     TDN_BUTTON_CLICKED = 2,
3447     TDN_HYPERLINK_CLICKED = 3,
3448     TDN_TIMER = 4,
3449     TDN_DESTROYED = 5,
3450     TDN_RADIO_BUTTON_CLICKED = 6,
3451     TDN_DIALOG_CONSTRUCTED = 7,
3452     TDN_VERIFICATION_CLICKED = 8,
3453     TDN_HELP = 9,
3454     TDN_EXPANDO_BUTTON_CLICKED = 10,
3455 }}
3456 STRUCT!{struct TASKDIALOG_BUTTON {
3457     nButtonID: ::c_int,
3458     pszButtonText: ::PCWSTR,
3459 }}
3460 ENUM!{enum TASKDIALOG_ELEMENTS {
3461     TDE_CONTENT,
3462     TDE_EXPANDED_INFORMATION,
3463     TDE_FOOTER,
3464     TDE_MAIN_INSTRUCTION,
3465 }}
3466 ENUM!{enum TASKDIALOG_ICON_ELEMENTS {
3467     TDIE_ICON_MAIN,
3468     TDIE_ICON_FOOTER,
3469 }}
3470 FLAGS!{enum TASKDIALOG_COMMON_BUTTON_FLAGS {
3471     TDCBF_OK_BUTTON = 0x0001,
3472     TDCBF_YES_BUTTON = 0x0002,
3473     TDCBF_NO_BUTTON = 0x0004,
3474     TDCBF_CANCEL_BUTTON = 0x0008,
3475     TDCBF_RETRY_BUTTON = 0x0010,
3476     TDCBF_CLOSE_BUTTON = 0x0020,
3477 }}
3478 STRUCT!{nodebug struct TASKDIALOGCONFIG {
3479     cbSize: ::UINT,
3480     hwndParent: ::HWND,
3481     hInstance: ::HINSTANCE,
3482     dwFlags: TASKDIALOG_FLAGS,
3483     dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS,
3484     pszWindowTitle: ::PCWSTR,
3485     hMainIcon: ::HICON,
3486     pszMainInstruction: ::PCWSTR,
3487     pszContent: ::PCWSTR,
3488     cButtons: ::UINT,
3489     pButtons: *const TASKDIALOG_BUTTON,
3490     nDefaultButton: ::c_int,
3491     cRadioButtons: ::UINT,
3492     pRadioButtons: *const TASKDIALOG_BUTTON,
3493     nDefaultRadioButton: ::c_int,
3494     pszVerificationText: ::PCWSTR,
3495     pszExpandedInformation: ::PCWSTR,
3496     pszExpandedControlText: ::PCWSTR,
3497     pszCollapsedControlText: ::PCWSTR,
3498     hFooterIcon: ::HICON,
3499     pszFooter: ::PCWSTR,
3500     pfCallback: PFTASKDIALOGCALLBACK,
3501     lpCallbackData: ::LONG_PTR,
3502     cxWidth: ::UINT,
3503 }}
3504 UNION!(TASKDIALOGCONFIG, hMainIcon, pszMainIcon, pszMainIcon_mut, ::PCWSTR);
3505 UNION!(TASKDIALOGCONFIG, hFooterIcon, pszFooterIcon, pszFooterIcon_mut, ::PCWSTR);
3506 pub const DA_LAST: ::c_int = 0x7FFFFFFF;
3507 pub const DA_ERR: ::c_int = -1;
3508 pub type PFNDAENUMCALLBACK = Option<unsafe extern "system" fn(
3509     p: *mut ::c_void, pData: *mut ::c_void,
3510 ) -> ::c_int>;
3511 pub type PFNDAENUMCALLBACKCONST = Option<unsafe extern "system" fn(
3512     p: *const ::c_void, pData: *mut ::c_void,
3513 ) -> ::c_int>;
3514 pub type PFNDACOMPARE = Option<unsafe extern "system" fn(
3515     p1: *mut ::c_void, p2: *mut ::c_void, lParam: ::LPARAM,
3516 ) -> ::c_int>;
3517 pub type PFNDACOMPARECONST = Option<unsafe extern "system" fn(
3518     p1: *const ::c_void, p2: *const ::c_void, lParam: ::LPARAM,
3519 ) -> ::c_int>;
3520 pub enum DSA {}
3521 pub type HDSA = *mut DSA;
3522 pub const DSA_APPEND: ::c_int = DA_LAST;
3523 pub const DSA_ERR: ::c_int = DA_ERR;
3524 pub type PFNDSAENUMCALLBACK = PFNDAENUMCALLBACK;
3525 pub type PFNDSAENUMCALLBACKCONST = PFNDAENUMCALLBACKCONST;
3526 pub type PFNDSACOMPARE = PFNDACOMPARE;
3527 pub type PFNDSACOMPARECONST = PFNDACOMPARECONST;
3528 pub enum DPA {}
3529 pub type HDPA = *mut DPA;
3530 STRUCT!{struct DPASTREAMINFO {
3531     iPos: ::c_int,
3532     pvItem: *mut ::c_void,
3533 }}
3534 pub type PFNDPASTREAM = Option<unsafe extern "system" fn(
3535     pinfo: *mut DPASTREAMINFO, pstream: *mut ::IStream, pvInstData: *mut ::c_void,
3536 ) -> ::HRESULT>;
3537 pub const DPAM_SORTED: ::DWORD = 0x00000001;
3538 pub const DPAM_NORMAL: ::DWORD = 0x00000002;
3539 pub const DPAM_UNION: ::DWORD = 0x00000004;
3540 pub const DPAM_INTERSECT: ::DWORD = 0x00000008;
3541 pub type PFNDPAMERGE = Option<unsafe extern "system" fn(
3542     uMsg: ::UINT, pvDest: *mut ::c_void, pvSrc: *mut ::c_void, lParam: ::LPARAM,
3543 ) -> *mut ::c_void>;
3544 pub type PFNDPAMERGECONST = Option<unsafe extern "system" fn(
3545     uMsg: ::UINT, pvDest: *const ::c_void, pvSrc: *const ::c_void, lParam: ::LPARAM,
3546 ) -> *const ::c_void>;
3547 pub const DPAMM_MERGE: ::UINT = 1;
3548 pub const DPAMM_DELETE: ::UINT = 2;
3549 pub const DPAMM_INSERT: ::UINT = 3;
3550 pub const DPAS_SORTED: ::UINT = 0x0001;
3551 pub const DPAS_INSERTBEFORE: ::UINT = 0x0002;
3552 pub const DPAS_INSERTAFTER: ::UINT = 0x0004;
3553 pub const DPA_APPEND: ::c_int = DA_LAST;
3554 pub const DPA_ERR: ::c_int = DA_ERR;
3555 pub type PFNDPAENUMCALLBACK = PFNDAENUMCALLBACK;
3556 pub type PFNDPAENUMCALLBACKCONST = PFNDAENUMCALLBACKCONST;
3557 pub type PFNDPACOMPARE = PFNDACOMPARE;
3558 pub type PFNDPACOMPARECONST = PFNDACOMPARECONST;
3559 pub const WSB_PROP_CYVSCROLL: ::UINT = 0x00000001;
3560 pub const WSB_PROP_CXHSCROLL: ::UINT = 0x00000002;
3561 pub const WSB_PROP_CYHSCROLL: ::UINT = 0x00000004;
3562 pub const WSB_PROP_CXVSCROLL: ::UINT = 0x00000008;
3563 pub const WSB_PROP_CXHTHUMB: ::UINT = 0x00000010;
3564 pub const WSB_PROP_CYVTHUMB: ::UINT = 0x00000020;
3565 pub const WSB_PROP_VBKGCOLOR: ::UINT = 0x00000040;
3566 pub const WSB_PROP_HBKGCOLOR: ::UINT = 0x00000080;
3567 pub const WSB_PROP_VSTYLE: ::UINT = 0x00000100;
3568 pub const WSB_PROP_HSTYLE: ::UINT = 0x00000200;
3569 pub const WSB_PROP_WINSTYLE: ::UINT = 0x00000400;
3570 pub const WSB_PROP_PALETTE: ::UINT = 0x00000800;
3571 pub const WSB_PROP_MASK: ::UINT = 0x00000FFF;
3572 pub const FSB_FLAT_MODE: ::INT_PTR = 2;
3573 pub const FSB_ENCARTA_MODE: ::INT_PTR = 1;
3574 pub const FSB_REGULAR_MODE: ::INT_PTR = 0;
3575 pub type SUBCLASSPROC = Option<unsafe extern "system" fn(
3576     hWnd: ::HWND, uMsg: ::UINT, wParam: ::WPARAM, lParam: ::LPARAM, uIdSubclass: ::UINT_PTR,
3577     dwRefData: ::DWORD_PTR,
3578 ) -> ::LRESULT>;
3579