winsafe\comctl/
co.rs

1#![allow(non_camel_case_types, non_upper_case_globals)]
2
3use crate::co::*;
4use crate::comctl::privs::*;
5
6const_ordinary! { ADRF: u32;
7	/// [`NMTVASYNCDRAW`](crate::NMTVASYNCDRAW) `dwRetFlags` (`u32`).
8	///
9	/// Don't seem to be defined anywhere; unconfirmed values.
10	=>
11	DRAWSYNC 0
12	DRAWNOTHING 1
13	DRAWFALLBACK 2
14	DRAWIMAGE 3
15}
16
17const_wm! { BCM;
18	/// Button control
19	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-button-control-reference-messages)
20	/// (`u32`) from comctl.
21	=>
22	GETIDEALSIZE BCM_FIRST + 0x0001
23	SETIMAGELIST BCM_FIRST + 0x0002
24	GETIMAGELIST BCM_FIRST + 0x0003
25	SETTEXTMARGIN BCM_FIRST + 0x0004
26	GETTEXTMARGIN BCM_FIRST + 0x0005
27	SETDROPDOWNSTATE BCM_FIRST + 0x0006
28	SETSPLITINFO BCM_FIRST + 0x0007
29	GETSPLITINFO BCM_FIRST + 0x0008
30	SETNOTE BCM_FIRST + 0x0009
31	GETNOTE BCM_FIRST + 0x000a
32	GETNOTELENGTH BCM_FIRST + 0x000b
33	SETSHIELD BCM_FIRST + 0x000c
34}
35
36const_nm! { BCN;
37	/// Button control `WM_NOTIFY`
38	/// [notifications](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-button-control-reference-notifications)
39	/// (`i32`).
40	=>
41	HOTITEMCHANGE BCN_FIRST + 0x0001
42	DROPDOWN BCN_FIRST + 0x0002
43}
44
45const_bitflag! { BCSIF: u32;
46	/// [`BUTTON_SPLITINFO`](crate::BUTTON_SPLITINFO) `mask` (`u32`).
47	=>
48	GLYPH 0x0001
49	IMAGE 0x0002
50	STYLE 0x0004
51	SIZE 0x0008
52}
53
54const_bitflag! { BCSS: u32;
55	/// [`BUTTON_SPLITINFO`](crate::BUTTON_SPLITINFO) `uSplitStyle` (`u32`).
56	=>
57	NOSPLIT 0x0001
58	STRETCH 0x0002
59	ALIGNLEFT 0x0004
60	IMAGE 0x0008
61}
62
63const_ordinary! { BIA: u32;
64	/// [`BUTTON_IMAGELIST`](crate::BUTTON_IMAGELIST) `uAlign` (`u32`).
65	///
66	/// Originally has `BUTTON_IMAGELIST_ALIGN_` prefix.
67	=>
68	LEFT 0
69	RIGHT 1
70	TOP 2
71	BOTTOM 3
72	CENTER 4
73}
74
75const_ws! { BTNS: u8;
76	/// Toolbar control
77	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/toolbar-control-and-button-styles)
78	/// (`u8`).
79	=>
80	/// None of the actual values (zero).
81	NoValue 0
82	BUTTON 0x00
83	SEP 0x01
84	CHECK 0x02
85	GROUP 0x04
86	CHECKGROUP Self::GROUP.0 | Self::CHECK.0
87	DROPDOWN 0x08
88	AUTOSIZE 0x10
89	NOPREFIX 0x20
90	SHOWTEXT 0x40
91	WHOLEDROPDOWN 0x80
92}
93
94const_ordinary! { CAL: u32;
95	/// [`MCM_GETCALID`](https://learn.microsoft.com/en-us/windows/win32/controls/mcm-getcalid)
96	/// return type calendar IDs (`u32`).
97	=>
98	/// Gregorian (localized) calendar.
99	GREGORIAN 1
100	/// Gregorian (U.S.) calendar.
101	GREGORIAN_US 2
102	/// Japanese Emperor Era calendar.
103	JAPAN 3
104	/// Taiwan calendar.
105	TAIWAN 4
106	/// Korean Tangun Era calendar.
107	KOREA 5
108	/// Hijri (Arabic Lunar) calendar.
109	HIJRI 6
110	/// Thai calendar.
111	THAI 7
112	/// Hebrew (Lunar) calendar.
113	HEBREW 8
114	/// Gregorian Middle East French calendar.
115	GREGORIAN_ME_FRENCH 9
116	/// Gregorian Arabic calendar.
117	GREGORIAN_ARABIC 10
118	/// Gregorian Transliterated English calendar
119	GREGORIAN_XLIT_ENGLISH 11
120	/// Gregorian Transliterated French calendar.
121	GREGORIAN_XLIT_FRENCH 12
122	/// Persian (Solar Hijri) calendar.
123	PERSIAN 22
124	/// UmAlQura Hijri (Arabic Lunar) calendar.
125	UMALQURA 23
126}
127
128const_values_pub! { CB;
129	SETMINVISIBLE CB_FIRST + 1
130	GETMINVISIBLE CB_FIRST + 2
131	SETCUEBANNER CB_FIRST + 3
132	GETCUEBANNER CB_FIRST + 4
133}
134
135const_wm! { CBEM;
136	/// ComboBoxEx control
137	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-comboboxex-control-reference-messages)
138	/// (`u32`).
139	=>
140	SETIMAGELIST WM::USER.raw() + 2
141	GETIMAGELIST WM::USER.raw() + 3
142	DELETEITEM CB::DELETESTRING.raw()
143	GETCOMBOCONTROL WM::USER.raw() + 6
144	GETEDITCONTROL WM::USER.raw() + 7
145	SETEXTENDEDSTYLE WM::USER.raw() + 14
146	GETEXTENDEDSTYLE WM::USER.raw() + 9
147	SETUNICODEFORMAT CCM::SETUNICODEFORMAT.0
148	GETUNICODEFORMAT CCM::GETUNICODEFORMAT.0
149	HASEDITCHANGED WM::USER.raw() + 10
150	INSERTITEM WM::USER.raw() + 11
151	SETITEM WM::USER.raw() + 12
152	GETITEM WM::USER.raw() + 13
153}
154
155const_wsex! { CBES_EX;
156	/// Extended combo box
157	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/comboboxex-control-extended-styles)
158	/// (`u32`).
159	=>
160	/// None of the actual values (zero).
161	NoValue 0
162	NOEDITIMAGE 0x0000_0001
163	NOEDITIMAGEINDENT 0x0000_0002
164	PATHWORDBREAKPROC 0x0000_0004
165	NOSIZELIMIT 0x0000_0008
166	CASESENSITIVE 0x0000_0010
167	TEXTENDELLIPSIS 0x0000_0020
168}
169
170const_wm! { CCM;
171	/// Generic common controls
172	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/common-controls-intro)
173	/// (`u32`).
174	=>
175	SETBKCOLOR CCM_FIRST + 1
176	SETCOLORSCHEME CCM_FIRST + 2
177	GETCOLORSCHEME CCM_FIRST + 3
178	GETDROPTARGET CCM_FIRST + 4
179	SETUNICODEFORMAT CCM_FIRST + 5
180	GETUNICODEFORMAT CCM_FIRST + 6
181	SETVERSION CCM_FIRST + 0x7
182	GETVERSION CCM_FIRST + 0x8
183	SETNOTIFYWINDOW CCM_FIRST + 0x9
184	SETWINDOWTHEME CCM_FIRST + 0xb
185	DPISCALE CCM_FIRST + 0xc
186}
187
188const_bitflag! { CDDS: u32;
189	/// [`NMCUSTOMDRAW`](crate::NMCUSTOMDRAW) `dwDrawStage` (`u32`).
190	=>
191	PREPAINT 0x0000_0001
192	POSTPAINT 0x0000_0002
193	PREERASE 0x0000_0003
194	POSTERASE 0x0000_0004
195	ITEM 0x0001_0000
196	ITEMPREPAINT Self::ITEM.0 | Self::PREPAINT.0
197	ITEMPOSTPAINT Self::ITEM.0 | Self::POSTPAINT.0
198	ITEMPREERASE Self::ITEM.0 | Self::PREERASE.0
199	ITEMPOSTERASE Self::ITEM.0 | Self::POSTERASE.0
200	SUBITEM 0x0002_0000
201}
202
203const_bitflag! { CDIS: u32;
204	/// [`NMCUSTOMDRAW`](crate::NMCUSTOMDRAW) `uItemState` (`u32`).
205	=>
206	SELECTED 0x0001
207	GRAYED 0x0002
208	DISABLED 0x0004
209	CHECKED 0x0008
210	FOCUS 0x0010
211	DEFAULT 0x0020
212	HOT 0x0040
213	MARKED 0x0080
214	INDETERMINATE 0x0100
215	SHOWKEYBOARDCUES 0x0200
216	NEARHOT 0x0400
217	OTHERSIDEHOT 0x0800
218	DROPHILITED 0x1000
219}
220
221const_ordinary! { CDRF: u32;
222	/// [`NM_CUSTOMDRAW`](https://learn.microsoft.com/en-us/windows/win32/controls/nm-customdraw)
223	/// return value (`u32`).
224	=>
225	DODEFAULT 0x0000_0000
226	NEWFONT 0x0000_0002
227	SKIPDEFAULT 0x0000_0004
228	DOERASE 0x0000_0008
229	SKIPPOSTPAINT 0x0000_0100
230	NOTIFYPOSTPAINT 0x0000_0010
231	NOTIFYITEMDRAW 0x0000_0020
232	NOTIFYSUBITEMDRAW 0x0000_0020
233	NOTIFYPOSTERASE 0x0000_0040
234}
235
236const_wm! { DTM;
237	/// Date and time picker control
238	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-date-and-time-picker-control-reference-messages)
239	/// (`u32`).
240	=>
241	GETSYSTEMTIME DTM_FIRST + 1
242	SETSYSTEMTIME DTM_FIRST + 2
243	GETRANGE DTM_FIRST + 3
244	SETRANGE DTM_FIRST + 4
245	SETFORMAT DTM_FIRST + 50
246	SETMCCOLOR DTM_FIRST + 6
247	GETMCCOLOR DTM_FIRST + 7
248	GETMONTHCAL DTM_FIRST + 8
249	SETMCFONT DTM_FIRST + 9
250	GETMCFONT DTM_FIRST + 10
251	SETMCSTYLE DTM_FIRST + 11
252	GETMCSTYLE DTM_FIRST + 12
253	CLOSEMONTHCAL DTM_FIRST + 13
254	GETDATETIMEPICKERINFO DTM_FIRST + 14
255	GETIDEALSIZE DTM_FIRST + 15
256}
257
258const_nm! { DTN;
259	/// Date and time picker control `WM_NOTIFY`
260	/// [notifications](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-date-and-time-picker-control-reference-notifications)
261	/// (`i32`).
262	=>
263	CLOSEUP DTN_FIRST2
264	DATETIMECHANGE DTN_FIRST2 - 6
265	DROPDOWN DTN_FIRST2 - 1
266	FORMAT DTN_FIRST - 3
267	FORMATQUERY DTN_FIRST - 2
268	USERSTRING DTN_FIRST - 5
269	WMKEYDOWN DTN_FIRST - 4
270}
271
272const_ws! { DTS: u32;
273	/// Date and time picker control
274	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/date-and-time-picker-control-styles)
275	/// (`u32`).
276	=>
277	/// None of the actual values (zero).
278	NoValue 0
279	UPDOWN 0x0001
280	SHOWNONE 0x0002
281	SHORTDATEFORMAT 0x0000
282	LONGDATEFORMAT 0x0004
283	SHORTDATECENTURYFORMAT 0x000c
284	TIMEFORMAT 0x0009
285	APPCANPARSE 0x0010
286	RIGHTALIGN 0x0020
287}
288
289const_values_pub! { EM;
290	SETCUEBANNER EM_FIRST + 1
291	GETCUEBANNER EM_FIRST + 2
292	SHOWBALLOONTIP EM_FIRST + 3
293	HIDEBALLOONTIP EM_FIRST + 4
294	SETHILITE EM_FIRST + 5
295	GETHILITE EM_FIRST + 6
296	NOSETFOCUS EM_FIRST + 7
297	TAKEFOCUS EM_FIRST + 8
298	SETEXTENDEDSTYLE EM_FIRST + 10
299	GETEXTENDEDSTYLE EM_FIRST + 11
300	SETENDOFLINE EM_FIRST + 12
301	GETENDOFLINE EM_FIRST + 13
302	ENABLESEARCHWEB EM_FIRST + 14
303	SEARCHWEB EM_FIRST + 15
304	SETCARETINDEX EM_FIRST + 17
305	GETCARETINDEX EM_FIRST + 18
306	GETZOOM WM::USER.raw() + 224
307	SETZOOM WM::USER.raw() + 225
308	FILELINEFROMCHAR EM_FIRST + 19
309	FILELINEINDEX EM_FIRST + 20
310	FILELINELENGTH EM_FIRST + 21
311	GETFILELINE EM_FIRST + 22
312	GETFILELINECOUNT EM_FIRST + 23
313}
314
315const_bitflag! { EMF: u32;
316	/// [`NMLVEMPTYMARKUP`](crate::NMLVEMPTYMARKUP) `dwFlags` (`u32`).
317	=>
318	LEFT 0x0000_0000
319	CENTERED 0x0000_0001
320}
321
322const_bitflag! { GDT: u32;
323	/// [`NMDATETIMECHANGE`](crate::NMDATETIMECHANGE) and
324	/// [`NMDATETIMESTRING`](crate::NMDATETIMESTRING) `dwFlags` (`u32`).
325	=>
326	VALID 0
327	NONE 1
328}
329
330const_ordinary! { GDTR: u32;
331	/// [`dtm::GetRange`](crate::msg::dtm::GetRange) return value (`u32`).
332	=>
333	MIN 0x0001
334	MAX 0x0002
335}
336
337const_ordinary! { GMR: u32;
338	=>
339	VISIBLE 0
340	DAYSTATE 1
341}
342
343const_bitflag! { HICF: u32;
344	/// [NMBCHOTITEM](crate::NMBCHOTITEM) `dwFlags` (`u32`).
345	=>
346	OTHER 0x0000_0000
347	ARROWKEYS 0x0000_0002
348	ACCELERATOR 0x0000_0004
349	DUPACCEL 0x0000_0008
350	ENTERING 0x0000_0010
351	LEAVING 0x0000_0020
352	RESELECT 0x0000_0040
353	LMOUSE 0x0000_0080
354	TOGGLEDROPDOWN 0x0000_0100
355}
356
357const_bitflag! { HDF: i32;
358	/// [`HDITEM`](crate::HDITEM) `fmt` (`i32`).
359	=>
360	/// None of the actual values (zero).
361	NoValue 0
362
363	LEFT 0x0000
364	RIGHT 0x0001
365	CENTER 0x0002
366	JUSTIFYMASK 0x0003
367	RTLREADING 0x0004
368
369	BITMAP 0x2000
370	STRING 0x4000
371	OWNERDRAW 0x8000
372	IMAGE 0x0800
373	BITMAP_ON_RIGHT 0x1000
374
375	SORTUP 0x0400
376	SORTDOWN 0x0200
377
378	CHECKBOX 0x0040
379	CHECKED 0x0080
380	FIXEDWIDTH 0x0100
381	SPLITBUTTON 0x100_0000
382}
383
384const_ordinary! { HDFT: u32;
385	/// [`HDITEM`](crate::HDITEM) `typeFilter` (`i32`).
386	=>
387	ISSTRING 0x0000
388	ISNUMBER 0x0001
389	ISDATE 0x0002
390	HASNOVALUE 0x8000
391}
392
393const_bitflag! { HDI: i32;
394	/// [`HDITEM`](crate::HDITEM) and [`NMHDDISPINFO`](crate::NMHDDISPINFO)
395	/// `mask` (`i32`).
396	=>
397	WIDTH 0x0001
398	HEIGHT Self::WIDTH.0
399	TEXT 0x0002
400	FORMAT 0x0004
401	LPARAM 0x0008
402	BITMAP 0x0010
403	IMAGE 0x0020
404	DI_SETITEM 0x0040
405	ORDER 0x0080
406	FILTER 0x0100
407	STATE 0x0200
408}
409
410const_ordinary! { HDIS: u32;
411	/// [`HDITEM`](crate::HDITEM) `state` (`i32`).
412	=>
413	/// None of the actual values (zero).
414	NoValue 0
415	FOCUSED 0x0000_0001
416}
417
418const_wm! { HDM;
419	/// Header control
420	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-header-control-reference-messages)
421	/// (`u32`).
422	=>
423	GETITEMCOUNT HDM_FIRST + 0
424	INSERTITEM HDM_FIRST + 10
425	DELETEITEM HDM_FIRST + 11
426	GETITEM HDM_FIRST + 11
427	SETITEM HDM_FIRST + 12
428	LAYOUT HDM_FIRST + 5
429	HITTEST HDM_FIRST + 6
430	GETITEMRECT HDM_FIRST + 7
431	SETIMAGELIST HDM_FIRST + 8
432	GETIMAGELIST HDM_FIRST + 9
433	ORDERTOINDEX HDM_FIRST + 15
434	CREATEDRAGIMAGE HDM_FIRST + 16
435	GETORDERARRAY HDM_FIRST + 17
436	SETORDERARRAY HDM_FIRST + 18
437	SETHOTDIVIDER HDM_FIRST + 19
438	SETBITMAPMARGIN HDM_FIRST + 20
439	GETBITMAPMARGIN HDM_FIRST + 21
440	SETUNICODEFORMAT CCM::SETUNICODEFORMAT.0
441	GETUNICODEFORMAT CCM::GETUNICODEFORMAT.0
442	SETFILTERCHANGETIMEOUT HDM_FIRST + 22
443	EDITFILTER HDM_FIRST + 23
444	CLEARFILTER HDM_FIRST + 24
445	GETITEMDROPDOWNRECT HDM_FIRST + 25
446	GETOVERFLOWRECT HDM_FIRST + 26
447	GETFOCUSEDITEM HDM_FIRST + 27
448	SETFOCUSEDITEM HDM_FIRST + 28
449}
450
451const_nm! { HDN;
452	/// Header control `WM_NOTIFY`
453	/// [notifications](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-header-control-reference-notifications)
454	/// (`i32`).
455	=>
456	GETDISPINFO HDN_FIRST - 29
457	TRACK HDN_FIRST - 28
458	ENDTRACK HDN_FIRST - 27
459	BEGINTRACK HDN_FIRST - 26
460	DIVIDERDBLCLICK HDN_FIRST - 25
461	ITEMDBLCLICK HDN_FIRST - 23
462	ITEMCLICK HDN_FIRST - 22
463	ITEMCHANGED HDN_FIRST - 21
464	ITEMCHANGING HDN_FIRST - 20
465	OVERFLOWCLICK HDN_FIRST - 19
466	DROPDOWN HDN_FIRST - 18
467	ITEMKEYDOWN HDN_FIRST - 17
468	ITEMSTATEICONCLICK HDN_FIRST - 16
469	ENDFILTEREDIT HDN_FIRST - 15
470	BEGINFILTEREDIT HDN_FIRST - 14
471	FILTERBTNCLICK HDN_FIRST - 13
472	FILTERCHANGE HDN_FIRST - 12
473	ENDDRAG HDN_FIRST - 11
474	BEGINDRAG HDN_FIRST - 10
475}
476
477const_ws! { HDS: u32;
478	/// Header control
479	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/header-control-styles)
480	/// (`u32`).
481	=>
482	/// None of the actual values (zero).
483	NoValue 0
484	HORZ 0x0000
485	BUTTONS 0x0002
486	HOTTRACK 0x0004
487	HIDDEN 0x0008
488	DRAGDROP 0x0040
489	FULLDRAG 0x0080
490	FILTERBAR 0x0100
491	FLAT 0x0200
492	CHECKBOXES 0x0400
493	NOSIZING 0x0800
494	OVERFLOW 0x1000
495}
496
497const_ordinary! { HDSIL: u8;
498	/// [`hdm::GetImageList`](crate::msg::hdm::GetImageList) and
499	/// [`hdm::SetImageList`](crate::msg::hdm::SetImageList) `which` (`u8`).
500	=>
501	NORMAL 0
502	STATE 1
503}
504
505const_bitflag! { HHT: u32;
506	/// [`HDHITTESTINFO`](crate::HDHITTESTINFO) `flags` (`u32`).
507	=>
508	NOWHERE 0x0001
509	ONHEADER 0x0002
510	ONDIVIDER 0x0004
511	ONDIVOPEN 0x0008
512	ONFILTER 0x0010
513	ONFILTERBUTTON 0x0020
514	ABOVE 0x0100
515	BELOW 0x0200
516	TORIGHT 0x0400
517	TOLEFT 0x0800
518	ONITEMSTATEICON 0x1000
519	ONDROPDOWN 0x2000
520	ONOVERFLOW 0x4000
521}
522
523const_bitflag! { ICC: u32;
524	/// [`INITCOMMONCONTROLSEX`](crate::INITCOMMONCONTROLSEX) `icc` (`u32`).
525	=>
526	/// Load animate control class.
527	ANIMATE_CLASS 0x0000_0080
528	/// Load toolbar, status bar, trackbar, and tooltip control classes.
529	BAR_CLASSES 0x0000_0004
530	/// Load rebar control class.
531	COOL_CLASSES 0x0000_0400
532	/// Load date and time picker control class.
533	DATE_CLASSES 0x0000_0100
534	/// Load hot key control class.
535	HOTKEY_CLASS 0x0000_0040
536	/// Load IP address class.
537	INTERNET_CLASSES 0x0000_0800
538	/// Load a hyperlink control class.
539	LINK_CLASS 0x0000_8000
540	/// Load list-view and header control classes.
541	LISTVIEW_CLASSES 0x0000_0001
542	/// Load a native font control class.
543	NATIVEFNTCTL_CLASS 0x0000_2000
544	/// Load pager control class.
545	PAGESCROLLER_CLASS 0x0000_1000
546	/// Load progress bar control class.
547	PROGRESS_CLASS 0x0000_0020
548	/// Load one of the intrinsic User32 control classes. The user controls
549	/// include button, edit, static, listbox, combobox, and scroll bar.
550	STANDARD_CLASSES 0x0000_4000
551	/// Load tab and tooltip control classes.
552	TAB_CLASSES 0x0000_0008
553	/// Load tree-view and tooltip control classes.
554	TREEVIEW_CLASSES 0x0000_0002
555	/// Load up-down control class.
556	UPDOWN_CLASS 0x0000_0010
557	/// Load ComboBoxEx class.
558	USEREX_CLASSES 0x0000_0200
559	/// Load animate control, header, hot key, list-view, progress bar, status
560	/// bar, tab, tooltip, toolbar, trackbar, tree-view, and up-down control
561	/// classes.
562	WIN95_CLASSES 0x0000_00ff
563}
564
565const_ordinary! { IDB: usize;
566	/// [`TBADDBITMAP`](crate::TBADDBITMAP) `nID` (`usize`).
567	=>
568	STD_SMALL_COLOR 0
569	STD_LARGE_COLOR 1
570	VIEW_SMALL_COLOR 4
571	VIEW_LARGE_COLOR 5
572	HIST_SMALL_COLOR 8
573	HIST_LARGE_COLOR 9
574	HIST_NORMAL 12
575	HIST_HOT 13
576	HIST_DISABLED 14
577	HIST_PRESSED 15
578}
579
580const_bitflag! { ILC: u32;
581	/// [`HIMAGELIST::Create`](crate::HIMAGELIST::Create) `flags` (`u32`).
582	=>
583	/// Use a mask. The image list contains two bitmaps one of which is a
584	/// monochrome bitmap used as a mask. If this value is not included the
585	/// image list contains only one bitmap.
586	MASK 0x0000_0001
587	/// Use the default behavior if none of the other `ILC::COLORx` flags is
588	/// specified. Typically the default is `ILC::COLOR4` but for older
589	/// display drivers the default is `ILC::COLORDDB`.
590	COLOR 0x0000_0000
591	/// Use a device-dependent bitmap.
592	COLORDDB 0x0000_00fe
593	/// Use a 4-bit (16-color) device-independent bitmap (DIB) section as the
594	/// bitmap for the image list.
595	COLOR4 0x0000_0004
596	/// Use an 8-bit DIB section. The colors used for the color table are the
597	/// same colors as the halftone palette.
598	COLOR8 0x0000_0008
599	/// Use a 16-bit (32/64k-color) DIB section.
600	COLOR16 0x0000_0010
601	/// Use a 24-bit DIB section.
602	COLOR24 0x0000_0018
603	/// Use a 32-bit DIB section.
604	COLOR32 0x0000_0020
605	/// Mirror the icons contained if the process is mirrored.
606	MIRROR 0x0000_2000
607	/// Causes the mirroring code to mirror each item when inserting a set of
608	/// images versus the whole strip.
609	PERITEMMIRROR 0x0000_8000
610	/// Windows Vista and later. Imagelist should accept smaller than set images
611	/// and apply original size based on image added.
612	ORIGINALSIZE 0x0001_0000
613}
614
615const_bitflag! { ILD: u32;
616	/// [`IMAGELISTDRAWFLAGS`](https://learn.microsoft.com/en-us/windows/win32/controls/imagelistdrawflags)
617	/// enumeration (`u32`).
618	=>
619	NORMAL 0x0000_0000
620	TRANSPARENT 0x0000_0001
621	MASK 0x0000_0010
622	IMAGE 0x0000_0020
623	ROP 0x0000_0040
624	BLEND25 0x0000_0002
625	BLEND50 0x0000_0004
626	OVERLAYMASK 0x0000_0f00
627	PRESERVEALPHA 0x0000_1000
628	SCALE 0x0000_2000
629	DPISCALE 0x0000_4000
630	ASYNC 0x0000_8000
631	SELECTED Self::BLEND50.0
632	FOCUS Self::BLEND25.0
633	BLEND Self::BLEND50.0
634}
635
636const_bitflag! { ILS: u32;
637	/// [`IMAGELISTSTATEFLAGS`](https://learn.microsoft.com/en-us/windows/win32/controls/imageliststateflags)
638	/// enumeration (`u32`).
639	=>
640	NORMAL 0x0000_0000
641	GLOW 0x0000_0001
642	SHADOW 0x0000_0002
643	SATURATE 0x0000_0004
644	ALPHA 0x0000_0008
645}
646
647const_wm! { IPM;
648	/// IP address control
649	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-ip-address-control-reference-messages)
650	/// (`u32`).
651	=>
652	CLEARADDRESS WM::USER.raw() + 100
653	SETADDRESS WM::USER.raw() + 101
654	GETADDRESS WM::USER.raw() + 102
655	SETRANGE WM::USER.raw() + 103
656	SETFOCUS WM::USER.raw() + 104
657	ISBLANK WM::USER.raw() + 105
658}
659
660const_nm! { IPN;
661	/// IP address control `WM_NOTIFY`
662	/// [notifications](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-ip-address-control-reference-notifications)
663	/// (`i32`).
664	=>
665	FIELDCHANGED IPN_FIRST - 0
666}
667
668const_bitflag! { LIF: u32;
669	/// [`LITEM`](crate::LITEM) `mask` (`u32`).
670	=>
671	ITEMINDEX 0x0000_0001
672	STATE 0x0000_0002
673	ITEMID 0x0000_0004
674	URL 0x0000_0008
675}
676
677const_bitflag! { LIS: u32;
678	/// [`LITEM`](crate::LITEM) `state` (`u32`).
679	=>
680	FOCUSED 0x0000_0001
681	ENABLED 0x0000_0002
682	VISITED 0x0000_0004
683	HOTTRACK 0x0000_0008
684	DEFAULTCOLORS 0x0000_0010
685}
686
687const_wm! { LM;
688	/// SysLink control
689	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-syslink-control-reference-messages)
690	/// (`u32`).
691	=>
692	HITTEST WM::USER.raw() + 0x300
693	GETIDEALHEIGHT WM::USER.raw() + 0x301
694	SETITEM WM::USER.raw() + 0x302
695	GETITEM WM::USER.raw() + 0x303
696	GETIDEALSIZE Self::GETIDEALHEIGHT.0
697}
698
699const_bitflag! { LVKF: u32;
700	/// [`NMITEMACTIVATE`](crate::NMITEMACTIVATE) `uKeyFlags` (`u32`).
701	=>
702	ALT 0x0001
703	CONTROL 0x0002
704	SHIFT 0x0004
705}
706
707const_ordinary! { LV_VIEW: u32;
708	/// ListView
709	/// [views](https://learn.microsoft.com/en-us/windows/win32/controls/list-view-controls-overview)
710	/// (`u32`).
711	=>
712	ICON 0x0000
713	DETAILS 0x0001
714	SMALLICON 0x0002
715	LIST 0x0003
716	TILE 0x0004
717}
718
719const_ordinary! { LVA: u16;
720	/// [`lvm::Arrange`](crate::msg::lvm::Arrange) arrangement (`u16`).
721	=>
722	DEFAULT 0x0000
723	SNAPTOGRID 0x0005
724}
725
726const_bitflag! { LVBKIF: u32;
727	/// [`LVBKIMAGE`](crate::LVBKIMAGE) `uFlags` (`u32`).
728	=>
729	SOURCE_NONE 0x0000_0000
730	SOURCE_HBITMAP 0x0000_0001
731	SOURCE_URL 0x0000_0002
732	SOURCE_MASK 0x0000_0003
733	STYLE_NORMAL 0x0000_0000
734	STYLE_TILE 0x0000_0010
735	STYLE_MASK 0x0000_0010
736	FLAG_TILEOFFSET 0x0000_0100
737	TYPE_WATERMARK 0x1000_0000
738	FLAG_ALPHABLEND 0x2000_0000
739}
740
741const_ordinary! { LVCDI: u32;
742	/// [`NMLVCUSTOMDRAW`](crate::NMLVCUSTOMDRAW) `dwItemType` (`u32`).
743	=>
744	ITEM 0x0000_0000
745	GROUP 0x0000_0001
746	ITEMSLIST 0x0000_0002
747}
748
749const_bitflag! { LVCF: u32;
750	/// [`LVCOLUMN`](crate::LVCOLUMN) `mask` (`u32`).
751	=>
752	DEFAULTWIDTH 0x0080
753	FMT 0x0001
754	IDEALWIDTH 0x0100
755	IMAGE 0x0010
756	MINWIDTH 0x0040
757	ORDER 0x0020
758	SUBITEM 0x0008
759	TEXT 0x0004
760	WIDTH 0x0002
761}
762
763const_bitflag! { LVCFMT_C: i32;
764	/// [`LVCOLUMN`](crate::LVCOLUMN) `mask` (`i32`).
765	=>
766	LEFT 0x0000
767	RIGHT 0x0001
768	CENTER 0x0002
769	JUSTIFYMASK 0x0003
770	IMAGE 0x0800
771	BITMAP_ON_RIGHT 0x1000
772	COL_HAS_IMAGES 0x8000
773	FIXED_WIDTH 0x0_0100
774	NO_DPI_SCALE 0x4_0000
775	FIXED_RATIO 0x8_0000
776	SPLITBUTTON 0x100_0000
777}
778
779const_bitflag! { LVCFMT_I: i32;
780	/// [`LVITEM`](crate::LVITEM) `piColFmt` (`i32`).
781	=>
782	LINE_BREAK 0x10_0000
783	FILL 0x20_0000
784	WRAP 0x40_0000
785	NO_TITLE 0x80_0000
786	TILE_PLACEMENTMASK Self::LINE_BREAK.0 | Self::FILL.0
787}
788
789const_ordinary! { LVFF: u32;
790	/// [`LVFOOTERINFO`](crate::LVFOOTERINFO) `mask` (`u32`).
791	=>
792	/// None of the actual values (zero).
793	NoValue 0
794	ITEMCOUNT 0x0001
795}
796
797const_bitflag! { LVFI: u32;
798	/// [`LVFINDINFO`](crate::LVFINDINFO) `flags` (`u32`).
799	=>
800	PARAM 0x0001
801	STRING 0x0002
802	SUBSTRING 0x0004
803	PARTIAL 0x0008
804	WRAP 0x0020
805	NEARESTXY 0x0040
806}
807
808const_ordinary! { LVFIF: u32;
809	/// [`LVFOOTERITEM`](crate::LVFOOTERITEM) `mask` (`u32`).
810	=>
811	TEXT 0x0001
812	STATE 0x0002
813}
814
815const_ordinary! { LVFIS: u32;
816	/// [`LVFOOTERITEM`](crate::LVFOOTERITEM) `state` (`u32`).
817	=>
818	/// None of the actual values (zero).
819	NoValue 0
820	FOCUSED 0x0001
821}
822
823const_bitflag! { LVGA_FH: u32;
824	/// [`LVGROUP`](crate::LVGROUP) `uAlign` (`u32`).
825	///
826	/// These constants are composed of both
827	/// [`LVGA_HEADER`](crate::co::LVGA_HEADER) and `LVGA_FOOTER`.
828	=>
829	FOOTER_LEFT 0x0000_0008
830	FOOTER_CENTER 0x0000_0010
831	FOOTER_RIGHT 0x0000_0020
832	HEADER_LEFT LVGA_HEADER::LEFT.0
833	HEADER_CENTER LVGA_HEADER::CENTER.0
834	HEADER_RIGHT LVGA_HEADER::RIGHT.0
835}
836
837const_ordinary! { LVGA_HEADER: u32;
838	/// [`NMLVCUSTOMDRAW`](crate::NMLVCUSTOMDRAW) `uAlign` (`u32`).
839	=>
840	LEFT 0x0000_0001
841	CENTER 0x0000_0002
842	RIGHT 0x0000_0004
843}
844
845const_bitflag! { LVGF: u32;
846	/// [`LVGROUP`](crate::LVGROUP) `mask` (`u32`).
847	=>
848	NONE 0x0000_0000
849	HEADER 0x0000_0001
850	FOOTER 0x0000_0002
851	STATE 0x0000_0004
852	ALIGN 0x0000_0008
853	GROUPID 0x0000_0010
854	SUBTITLE 0x0000_0100
855	TASK 0x0000_0200
856	DESCRIPTIONTOP 0x0000_0400
857	DESCRIPTIONBOTTOM 0x0000_0800
858	TITLEIMAGE 0x0000_1000
859	EXTENDEDIMAGE 0x0000_2000
860	ITEMS 0x0000_4000
861	SUBSET 0x0000_8000
862	SUBSETITEMS 0x0001_0000
863}
864
865const_ordinary! { LVGGR: i32;
866	/// [`lvm::GetGroupRect`](crate::msg::lvm::GetGroupRect) `flags` (`i32`).
867	=>
868	GROUP 0
869	HEADER 1
870	LABEL 2
871	SUBSETLINK 3
872}
873
874const_ordinary! { LVGIT: u32;
875	/// [`NMLVGETINFOTIP`](crate::NMLVGETINFOTIP) `dwFlags` (`u32`).
876	=>
877	FOLDED 0x0000
878	UNFOLDED 0x0001
879}
880
881const_bitflag! { LVGMF: u32;
882	/// [`LVGROUPMETRICS`](crate::LVGROUPMETRICS) `mask` (`u32`).
883	=>
884	NONE 0x0000_0000
885	BORDERSIZE 0x0000_0001
886	BORDERCOLOR 0x0000_0002
887	TEXTCOLOR 0x0000_0004
888}
889
890const_bitflag! { LVGS: u32;
891	/// [`LVGROUP`](crate::LVGROUP) `state` (`u32`).
892	=>
893	NORMAL 0x0000_0000
894	COLLAPSED 0x0000_0001
895	HIDDEN 0x0000_0002
896	NOHEADER 0x0000_0004
897	COLLAPSIBLE 0x0000_0008
898	FOCUSED 0x0000_0010
899	SELECTED 0x0000_0020
900	SUBSETED 0x0000_0040
901	SUBSETLINKFOCUSED 0x0000_0080
902}
903
904const_bitflag! { LVHT: u32;
905	/// [`LVHITTESTINFO`](crate::LVHITTESTINFO) `flags` (`u32`).
906	=>
907	NOWHERE 0x0000_0001
908	ONITEMICON 0x0000_0002
909	ONITEMLABEL 0x0000_0004
910	ONITEMSTATEICON 0x0000_0008
911	ONITEM Self::ONITEMICON.0 | Self::ONITEMLABEL.0 | Self::ONITEMSTATEICON.0
912	ABOVE 0x0000_0008
913	BELOW 0x0000_0010
914	TORIGHT 0x0000_0020
915	TOLEFT 0x0000_0040
916
917	EX_GROUP_HEADER 0x1000_0000
918	EX_GROUP_FOOTER 0x2000_0000
919	EX_GROUP_COLLAPSE 0x4000_0000
920	EX_GROUP_BACKGROUND 0x8000_0000
921	EX_GROUP_STATEICON 0x0100_0000
922	EX_GROUP_SUBSETLINK 0x0200_0000
923	EX_GROUP Self::EX_GROUP_BACKGROUND.0 | Self::EX_GROUP_COLLAPSE.0 | Self::EX_GROUP_FOOTER.0 | Self::EX_GROUP_HEADER.0 | Self::EX_GROUP_STATEICON.0 | Self::EX_GROUP_SUBSETLINK.0
924	EX_ONCONTENTS 0x0400_0000
925	EX_FOOTER 0x0800_0000
926}
927
928const_ordinary! { LVI_GROUPID: i32;
929	/// [`LVITEM`](crate::LVITEM) `iGroupId` (`i32`).
930	=>
931	I_GROUPIDCALLBACK -1
932	I_GROUPIDNONE -2
933}
934
935const_bitflag! { LVIF: u32;
936	/// [`LVITEM`](crate::LVITEM) `mask` (`u32`).
937	=>
938	COLFMT 0x0001_0000
939	COLUMNS 0x0000_0200
940	GROUPID 0x0000_0100
941	IMAGE 0x0000_0002
942	INDENT 0x0000_0010
943	NORECOMPUTE 0x0000_0800
944	PARAM 0x0000_0004
945	STATE 0x0000_0008
946	TEXT 0x0000_0001
947}
948
949const_ordinary! { LVIM: u32;
950	/// [`LVINSERTMARK`](crate::LVINSERTMARK) `dwFlags` (`u32`).
951	=>
952	/// None of the actual values (zero).
953	NoValue 0
954	AFTER 0x0000_0001
955}
956
957const_ordinary! { LVIR: u8;
958	/// [`lvm::GetItemRect`](crate::msg::lvm::GetItemRect) `portion` (`u8`).
959	=>
960	BOUNDS 0
961	ICON 1
962	LABEL 2
963	SELECTBOUNDS 3
964}
965
966const_bitflag! { LVIS: u32;
967	/// ListView item
968	/// [states](https://learn.microsoft.com/en-us/windows/win32/controls/list-view-item-states)
969	/// (`u32`).
970	=>
971	/// None of the actual values (zero).
972	NoValue 0
973	FOCUSED 0x0001
974	SELECTED 0x0002
975	CUT 0x0004
976	DROPHILITED 0x0008
977	GLOW 0x0010
978	ACTIVATING 0x0020
979	OVERLAYMASK 0x0f00
980	STATEIMAGEMASK 0xf000
981}
982
983const_ordinary! { LVSIL: u8;
984	/// [`lvm::GetImageList`](crate::msg::lvm::GetImageList) `kind` (`u8`).
985	=>
986	NORMAL 0
987	SMALL 1
988	STATE 2
989	GROUPHEADER 3
990}
991
992const_wm! { LVM;
993	/// List view control
994	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-list-view-control-reference-messages)
995	/// (`u32`).
996	=>
997	SETUNICODEFORMAT CCM::SETUNICODEFORMAT.0
998	GETUNICODEFORMAT CCM::GETUNICODEFORMAT.0
999	GETBKCOLOR LVM_FIRST + 0
1000	SETBKCOLOR LVM_FIRST + 1
1001	GETIMAGELIST LVM_FIRST + 2
1002	SETIMAGELIST LVM_FIRST + 3
1003	GETITEMCOUNT LVM_FIRST + 4
1004	DELETEITEM LVM_FIRST + 8
1005	DELETEALLITEMS LVM_FIRST + 9
1006	GETCALLBACKMASK LVM_FIRST + 10
1007	SETCALLBACKMASK LVM_FIRST + 11
1008	GETNEXTITEM LVM_FIRST + 12
1009	GETITEMRECT LVM_FIRST + 14
1010	SETITEMPOSITION LVM_FIRST + 15
1011	GETITEMPOSITION LVM_FIRST + 16
1012	HITTEST LVM_FIRST + 18
1013	ENSUREVISIBLE LVM_FIRST + 19
1014	SCROLL LVM_FIRST + 20
1015	REDRAWITEMS LVM_FIRST + 21
1016	ARRANGE LVM_FIRST + 22
1017	GETEDITCONTROL LVM_FIRST + 24
1018	DELETECOLUMN LVM_FIRST + 28
1019	GETCOLUMNWIDTH LVM_FIRST + 29
1020	SETCOLUMNWIDTH LVM_FIRST + 30
1021	GETHEADER LVM_FIRST + 31
1022	CREATEDRAGIMAGE LVM_FIRST + 33
1023	GETVIEWRECT LVM_FIRST + 34
1024	GETTEXTCOLOR LVM_FIRST + 35
1025	SETTEXTCOLOR LVM_FIRST + 36
1026	GETTEXTBKCOLOR LVM_FIRST + 37
1027	SETTEXTBKCOLOR LVM_FIRST + 38
1028	GETTOPINDEX LVM_FIRST + 39
1029	GETCOUNTPERPAGE LVM_FIRST + 40
1030	GETORIGIN LVM_FIRST + 41
1031	UPDATE LVM_FIRST + 42
1032	SETITEMSTATE LVM_FIRST + 43
1033	GETITEMSTATE LVM_FIRST + 44
1034	SETITEMCOUNT LVM_FIRST + 47
1035	SORTITEMS LVM_FIRST + 48
1036	SETITEMPOSITION32 LVM_FIRST + 49
1037	GETSELECTEDCOUNT LVM_FIRST + 50
1038	GETITEMSPACING LVM_FIRST + 51
1039	SETICONSPACING LVM_FIRST + 53
1040	SETEXTENDEDLISTVIEWSTYLE LVM_FIRST + 54
1041	GETEXTENDEDLISTVIEWSTYLE LVM_FIRST + 55
1042	GETSUBITEMRECT LVM_FIRST + 56
1043	SUBITEMHITTEST LVM_FIRST + 57
1044	SETCOLUMNORDERARRAY LVM_FIRST + 58
1045	GETCOLUMNORDERARRAY LVM_FIRST + 59
1046	SETHOTITEM LVM_FIRST + 60
1047	GETHOTITEM LVM_FIRST + 61
1048	SETHOTCURSOR LVM_FIRST + 62
1049	GETHOTCURSOR LVM_FIRST + 63
1050	APPROXIMATEVIEWRECT LVM_FIRST + 64
1051	SETWORKAREAS LVM_FIRST + 65
1052	GETSELECTIONMARK LVM_FIRST + 66
1053	SETSELECTIONMARK LVM_FIRST + 67
1054	GETWORKAREAS LVM_FIRST + 70
1055	SETHOVERTIME LVM_FIRST + 71
1056	GETHOVERTIME LVM_FIRST + 72
1057	GETNUMBEROFWORKAREAS LVM_FIRST + 73
1058	SETTOOLTIPS LVM_FIRST + 74
1059	GETITEM LVM_FIRST + 75
1060	SETITEM LVM_FIRST + 76
1061	INSERTITEM LVM_FIRST + 77
1062	GETTOOLTIPS LVM_FIRST + 78
1063	SORTITEMSEX LVM_FIRST + 81
1064	FINDITEM LVM_FIRST + 83
1065	GETSTRINGWIDTH LVM_FIRST + 87
1066	GETGROUPSTATE LVM_FIRST + 92
1067	GETFOCUSEDGROUP LVM_FIRST + 93
1068	GETCOLUMN LVM_FIRST + 95
1069	SETCOLUMN LVM_FIRST + 96
1070	INSERTCOLUMN LVM_FIRST + 97
1071	GETGROUPRECT LVM_FIRST + 98
1072	GETITEMTEXT LVM_FIRST + 115
1073	SETITEMTEXT LVM_FIRST + 116
1074	GETISEARCHSTRING LVM_FIRST + 117
1075	EDITLABEL LVM_FIRST + 118
1076	SETBKIMAGE LVM_FIRST + 138
1077	GETBKIMAGE LVM_FIRST + 139
1078	SETSELECTEDCOLUMN LVM_FIRST + 140
1079	SETVIEW LVM_FIRST + 142
1080	GETVIEW LVM_FIRST + 143
1081	INSERTGROUP LVM_FIRST + 145
1082	SETGROUPINFO LVM_FIRST + 147
1083	GETGROUPINFO LVM_FIRST + 149
1084	REMOVEGROUP LVM_FIRST + 150
1085	MOVEGROUP LVM_FIRST + 151
1086	GETGROUPCOUNT LVM_FIRST + 152
1087	GETGROUPINFOBYINDEX LVM_FIRST + 153
1088	MOVEITEMTOGROUP LVM_FIRST + 154
1089	SETGROUPMETRICS LVM_FIRST + 155
1090	GETGROUPMETRICS LVM_FIRST + 156
1091	ENABLEGROUPVIEW LVM_FIRST + 157
1092	SORTGROUPS LVM_FIRST + 158
1093	INSERTGROUPSORTED LVM_FIRST + 159
1094	REMOVEALLGROUPS LVM_FIRST + 160
1095	HASGROUP LVM_FIRST + 161
1096	SETTILEVIEWINFO LVM_FIRST + 162
1097	GETTILEVIEWINFO LVM_FIRST + 163
1098	SETTILEINFO LVM_FIRST + 164
1099	GETTILEINFO LVM_FIRST + 165
1100	SETINSERTMARK LVM_FIRST + 166
1101	GETINSERTMARK LVM_FIRST + 167
1102	INSERTMARKHITTEST LVM_FIRST + 168
1103	GETINSERTMARKRECT LVM_FIRST + 169
1104	SETINSERTMARKCOLOR LVM_FIRST + 170
1105	GETINSERTMARKCOLOR LVM_FIRST + 171
1106	SETINFOTIP LVM_FIRST + 173
1107	GETSELECTEDCOLUMN LVM_FIRST + 174
1108	ISGROUPVIEWENABLED LVM_FIRST + 175
1109	GETOUTLINECOLOR LVM_FIRST + 176
1110	SETOUTLINECOLOR LVM_FIRST + 177
1111	CANCELEDITLABEL LVM_FIRST + 179
1112	MAPINDEXTOID LVM_FIRST + 180
1113	MAPIDTOINDEX LVM_FIRST + 181
1114	ISITEMVISIBLE LVM_FIRST + 182
1115	GETEMPTYTEXT LVM_FIRST + 204
1116	GETFOOTERRECT LVM_FIRST + 205
1117	GETFOOTERINFO LVM_FIRST + 206
1118	GETFOOTERITEMRECT LVM_FIRST + 207
1119	GETFOOTERITEM LVM_FIRST + 208
1120	GETITEMINDEXRECT LVM_FIRST + 209
1121	SETITEMINDEXSTATE LVM_FIRST + 210
1122	GETNEXTITEMINDEX LVM_FIRST + 211
1123}
1124
1125const_nm! { LVN;
1126	/// List view control `WM_NOTIFY`
1127	/// [notifications](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-list-view-control-reference-notifications)
1128	/// (`i32`).
1129	=>
1130	ITEMCHANGING LVN_FIRST - 0
1131	ITEMCHANGED LVN_FIRST - 1
1132	INSERTITEM LVN_FIRST - 2
1133	DELETEITEM LVN_FIRST - 3
1134	DELETEALLITEMS LVN_FIRST - 4
1135	BEGINLABELEDIT LVN_FIRST - 75
1136	ENDLABELEDIT LVN_FIRST - 76
1137	COLUMNCLICK LVN_FIRST - 8
1138	BEGINDRAG LVN_FIRST - 9
1139	BEGINRDRAG LVN_FIRST - 11
1140	ODCACHEHINT LVN_FIRST - 13
1141	ODFINDITEM LVN_FIRST - 79
1142	ITEMACTIVATE LVN_FIRST - 14
1143	ODSTATECHANGED LVN_FIRST - 15
1144	HOTTRACK LVN_FIRST - 21
1145	GETDISPINFO LVN_FIRST - 77
1146	SETDISPINFO LVN_FIRST - 78
1147	KEYDOWN LVN_FIRST - 55
1148	MARQUEEBEGIN LVN_FIRST - 56
1149	GETINFOTIP LVN_FIRST - 58
1150	INCREMENTALSEARCH LVN_FIRST - 63
1151	COLUMNDROPDOWN LVN_FIRST - 64
1152	COLUMNOVERFLOWCLICK LVN_FIRST - 66
1153	BEGINSCROLL LVN_FIRST - 80
1154	ENDSCROLL LVN_FIRST - 81
1155	LINKCLICK LVN_FIRST - 84
1156	GETEMPTYMARKUP LVN_FIRST - 87
1157}
1158
1159const_bitflag! { LVNI: u32;
1160	/// [`lvm::GetNextItem`](crate::msg::lvm::GetNextItem) relationship (`u32`).
1161	=>
1162	ALL 0x0000
1163	FOCUSED 0x0001
1164	SELECTED 0x0002
1165	CUT 0x0004
1166	DROPHILITED 0x0008
1167	STATEMASK Self::FOCUSED.0 | Self::SELECTED.0 | Self::CUT.0 | Self::DROPHILITED.0
1168	VISIBLEORDER 0x0010
1169	PREVIOUS 0x0020
1170	VISIBLEONLY 0x0040
1171	SAMEGROUPONLY 0x0080
1172	ABOVE 0x0100
1173	BELOW 0x0200
1174	TOLEFT 0x0400
1175	TORIGHT 0x0800
1176	DIRECTIONMASK Self::ABOVE.0 | Self::BELOW.0 | Self::TOLEFT.0 | Self::TORIGHT.0
1177}
1178
1179const_ws! { LVS: u32;
1180	/// List view control
1181	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/list-view-window-styles)
1182	/// (`u32`).
1183	=>
1184	/// None of the actual values (zero).
1185	NoValue 0
1186	ICON 0x0000
1187	REPORT 0x0001
1188	SMALLICON 0x0002
1189	LIST 0x0003
1190	TYPEMASK 0x0003
1191	SINGLESEL 0x0004
1192	SHOWSELALWAYS 0x0008
1193	SORTASCENDING 0x0010
1194	SORTDESCENDING 0x0020
1195	SHAREIMAGELISTS 0x0040
1196	NOLABELWRAP 0x0080
1197	AUTOARRANGE 0x0100
1198	EDITLABELS 0x0200
1199	OWNERDATA 0x1000
1200	NOSCROLL 0x2000
1201	TYPESTYLEMASK 0xfc00
1202	ALIGNTOP 0x0000
1203	ALIGNLEFT 0x0800
1204	ALIGNMASK 0x0c00
1205	OWNERDRAWFIXED 0x0400
1206	NOCOLUMNHEADER 0x4000
1207	NOSORTHEADER 0x8000
1208}
1209
1210const_wsex! { LVS_EX;
1211	/// Extended list view control
1212	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/extended-list-view-styles)
1213	/// (`u32`).
1214	=>
1215	/// None of the actual values (zero).
1216	NoValue 0
1217	AUTOAUTOARRANGE 0x0100_0000
1218	AUTOCHECKSELECT 0x0800_0000
1219	AUTOSIZECOLUMNS 0x1000_0000
1220	BORDERSELECT 0x0000_8000
1221	CHECKBOXES 0x0000_0004
1222	COLUMNOVERFLOW 0x8000_0000
1223	COLUMNSNAPPOINTS 0x4000_0000
1224	DOUBLEBUFFER 0x0001_0000
1225	FLATSB 0x0000_0100
1226	FULLROWSELECT 0x0000_0020
1227	GRIDLINES 0x0000_0001
1228	HEADERDRAGDROP 0x0000_0010
1229	HEADERINALLVIEWS 0x0200_0000
1230	HIDELABELS 0x0002_0000
1231	INFOTIP 0x0000_0400
1232	JUSTIFYCOLUMNS 0x0020_0000
1233	LABELTIP 0x0000_4000
1234	MULTIWORKAREAS 0x0000_2000
1235	ONECLICKACTIVATE 0x0000_0040
1236	REGIONAL 0x0000_0200
1237	SIMPLESELECT 0x0010_0000
1238	SINGLEROW 0x0004_0000
1239	SNAPTOGRID 0x0008_0000
1240	SUBITEMIMAGES 0x0000_0002
1241	TRACKSELECT 0x0000_0008
1242	TRANSPARENTBKGND 0x0040_0000
1243	TRANSPARENTSHADOWTEXT 0x0080_0000
1244	TWOCLICKACTIVATE 0x0000_0080
1245	UNDERLINECOLD 0x000_01000
1246	UNDERLINEHOT 0x0000_0800
1247}
1248
1249const_bitflag! { LVSICF: u32;
1250	/// [`lvm::SetItemCount`](crate::msg::lvm::SetItemCount) `behavior` (`u32`).
1251	=>
1252	NOINVALIDATEALL 0x0000_0001
1253	NOSCROLL 0x0000_0002
1254}
1255
1256const_bitflag! { LVTVIF: u32;
1257	/// [`LVTILEVIEWINFO`](crate::LVTILEVIEWINFO) `dwFlags` (`u32`).
1258	=>
1259	AUTOSIZE 0x0000_0000
1260	FIXEDWIDTH 0x0000_0001
1261	FIXEDHEIGHT 0x0000_0002
1262	FIXEDSIZE 0x0000_0003
1263	EXTENDED 0x0000_0004
1264}
1265
1266const_bitflag! { LVTVIM: u32;
1267	/// [`LVTILEVIEWINFO`](crate::LVTILEVIEWINFO) `dwMask` (`u32`).
1268	=>
1269	TILESIZE 0x0000_0001
1270	COLUMNS 0x0000_0002
1271	LABELMARGIN 0x0000_0004
1272}
1273
1274const_ws! { LWS: u32;
1275	/// SysLink control
1276	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/syslink-control-styles)
1277	/// (`u32`).
1278	=>
1279	/// None of the actual values (zero).
1280	NoValue 0
1281	/// The background mix mode is transparent.
1282	TRANSPARENT 0x0001
1283	/// When the link has keyboard focus and the user presses Enter the
1284	/// keystroke is ignored by the control and passed to the host dialog box.
1285	IGNORERETURN 0x0002
1286	/// If the text contains an ampersand it is treated as a literal character
1287	/// rather than the prefix to a shortcut key.
1288	NOPREFIX 0x0004
1289	/// The link is displayed in the current visual style.
1290	USEVISUALSTYLE 0x0008
1291	/// An `NM_CUSTOMTEXT` notification is sent when the control is drawn so
1292	/// that the application can supply text dynamically.
1293	USECUSTOMTEXT 0x0010
1294	/// The text is right-justified.
1295	RIGHT 0x0020
1296}
1297
1298const_bitflag! { MCGIF: u32;
1299	=>
1300	DATE 0x0000_0001
1301	RECT 0x0000_0002
1302	NAME 0x0000_0004
1303}
1304
1305const_ordinary! { MCGIP: u32;
1306	/// [`MCGRIDINFO`](https://learn.microsoft.com/en-us/windows/win32/api/commctrl/ns-commctrl-mcgridinfo)
1307	/// `dwPart` (`u32`).
1308	=>
1309	CALENDARCONTROL 0
1310	NEXT 1
1311	PREV 2
1312	FOOTER 3
1313	CALENDAR 4
1314	CALENDARHEADER 5
1315	CALENDARBODY 6
1316	CALENDARROW 7
1317	CALENDARCELL 8
1318}
1319
1320const_bitflag! { MCHT: u32;
1321	/// [`MCHITTESTINFO`](crate::MCHITTESTINFO) `uHit` (`u32`).
1322	=>
1323	TITLE 0x0001_0000
1324	CALENDAR 0x0002_0000
1325	TODAYLINK 0x0003_0000
1326	CALENDARCONTROL 0x0010_0000
1327	NEXT 0x0100_0000
1328	PREV 0x0200_0000
1329	NOWHERE 0x0000_0000
1330	TITLEBK MCHT::TITLE.0
1331	TITLEMONTH MCHT::TITLE.0 | 0x0001
1332	TITLEYEAR MCHT::TITLE.0 | 0x0002
1333	TITLEBTNNEXT MCHT::TITLE.0 | MCHT::NEXT.0 | 0x0003
1334	TITLEBTNPREV MCHT::TITLE.0 | MCHT::PREV.0 | 0x0003
1335	CALENDARBK MCHT::CALENDAR.0
1336	CALENDARDATE MCHT::CALENDAR.0 | 0x0001
1337	CALENDARDATENEXT MCHT::CALENDARDATE.0 | MCHT::NEXT.0
1338	CALENDARDATEPREV MCHT::CALENDARDATE.0 | MCHT::PREV.0
1339	CALENDARDAY MCHT::CALENDAR.0 | 0x0002
1340	CALENDARWEEKNUM MCHT::CALENDAR.0 | 0x0003
1341	CALENDARDATEMIN MCHT::CALENDAR.0 | 0x0004
1342	CALENDARDATEMAX MCHT::CALENDAR.0 | 0x0005
1343}
1344
1345const_wm! { MCM;
1346	/// Month calendar control
1347	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-month-calendar-control-reference-messages)
1348	/// (`u32`).
1349	=>
1350	GETCURSEL MCM_FIRST + 1
1351	SETCURSEL MCM_FIRST + 2
1352	GETMAXSELCOUNT MCM_FIRST + 3
1353	SETMAXSELCOUNT MCM_FIRST + 4
1354	GETSELRANGE MCM_FIRST + 5
1355	SETSELRANGE MCM_FIRST + 6
1356	GETMONTHRANGE MCM_FIRST + 7
1357	SETDAYSTATE MCM_FIRST + 8
1358	GETMINREQRECT MCM_FIRST + 9
1359	SETCOLOR MCM_FIRST + 10
1360	GETCOLOR MCM_FIRST + 11
1361	SETTODAY MCM_FIRST + 12
1362	GETTODAY MCM_FIRST + 13
1363	HITTEST MCM_FIRST + 14
1364	SETFIRSTDAYOFWEEK MCM_FIRST + 15
1365	GETFIRSTDAYOFWEEK MCM_FIRST + 16
1366	GETRANGE MCM_FIRST + 17
1367	SETRANGE MCM_FIRST + 18
1368	GETMONTHDELTA MCM_FIRST + 19
1369	SETMONTHDELTA MCM_FIRST + 20
1370	GETMAXTODAYWIDTH MCM_FIRST + 21
1371	SETUNICODEFORMAT CCM::SETUNICODEFORMAT.0
1372	GETUNICODEFORMAT CCM::GETUNICODEFORMAT.0
1373	GETCURRENTVIEW MCM_FIRST + 22
1374	GETCALENDARCOUNT MCM_FIRST + 23
1375	GETCALENDARGRIDINFO MCM_FIRST + 24
1376	GETCALID MCM_FIRST + 27
1377	SETCALID MCM_FIRST + 28
1378	SIZERECTTOMIN MCM_FIRST + 29
1379	SETCALENDARBORDER MCM_FIRST + 30
1380	GETCALENDARBORDER MCM_FIRST + 31
1381	SETCURRENTVIEW MCM_FIRST + 32
1382}
1383
1384const_ordinary! { MCMV: u32;
1385	/// [`NMVIEWCHANGE`](crate::NMVIEWCHANGE) `dwOldView` and `dwNewView` (`u32`).
1386	=>
1387	MONTH 0
1388	YEAR 1
1389	DECADE 2
1390	CENTURY 3
1391}
1392
1393const_nm! { MCN;
1394	/// Month calendar control `WM_NOTIFY`
1395	/// [notifications](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-month-calendar-control-reference-notifications)
1396	/// (`i32`).
1397	=>
1398	SELECT MCN_FIRST
1399	GETDAYSTATE MCN_FIRST - 1
1400	SELCHANGE MCN_FIRST - 3
1401	VIEWCHANGE MCN_FIRST - 4
1402}
1403
1404const_ws! { MCS: u32;
1405	/// Month calendar control
1406	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/month-calendar-control-styles)
1407	/// (`u32`).
1408	=>
1409	/// None of the actual values (zero).
1410	NoValue 0
1411	DAYSTATE 0x0001
1412	MULTISELECT 0x0002
1413	WEEKNUMBERS 0x0004
1414	NOTODAYCIRCLE 0x0008
1415	NOTODAY 0x0010
1416	NOTRAILINGDATES 0x0040
1417	SHORTDAYSOFWEEK 0x0080
1418	NOSELCHANGEONNAV 0x0100
1419}
1420
1421const_ordinary! { MCSC: u8;
1422	/// [`dtm::GetMcColor`](crate::msg::dtm::GetMcColor) color (`u8`).
1423	=>
1424	BACKGROUND 0
1425	TEXT 1
1426	TITLEBK 2
1427	TITLETEXT 3
1428	MONTHBK 4
1429	TRAILINGTEXT 5
1430}
1431
1432const_nm! { NM;
1433	/// [Notification codes](https://learn.microsoft.com/en-us/windows/win32/controls/common-control-reference#notifications)
1434	/// shared among controls (`i32`).
1435	=>
1436	OUTOFMEMORY NM_FIRST - 1
1437	CLICK NM_FIRST - 2
1438	DBLCLK NM_FIRST - 3
1439	RETURN NM_FIRST - 4
1440	RCLICK NM_FIRST - 5
1441	RDBLCLK NM_FIRST - 6
1442	SETFOCUS NM_FIRST - 7
1443	KILLFOCUS NM_FIRST - 8
1444	CUSTOMDRAW NM_FIRST - 12
1445	HOVER NM_FIRST - 13
1446	NCHITTEST NM_FIRST - 14
1447	KEYDOWN NM_FIRST - 15
1448	RELEASEDCAPTURE NM_FIRST - 16
1449	SETCURSOR NM_FIRST - 17
1450	CHAR NM_FIRST - 18
1451	TOOLTIPSCREATED NM_FIRST - 19
1452	LDOWN NM_FIRST - 20
1453	RDOWN NM_FIRST - 21
1454	THEMECHANGED NM_FIRST - 22
1455}
1456
1457const_ws! { PBS: u32;
1458	/// Progress bar control
1459	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/progress-bar-control-styles)
1460	/// (`u32`).
1461	=>
1462	/// None of the actual values (zero).
1463	NoValue 0
1464	SMOOTH 0x01
1465	VERTICAL 0x04
1466	MARQUEE 0x08
1467	SMOOTHREVERSE 0x10
1468}
1469
1470const_wm! { PBM;
1471	/// Progress bar control
1472	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-progress-bar-control-reference-messages)
1473	/// (`u32`).
1474	=>
1475	SETRANGE WM::USER.raw() + 1
1476	SETPOS WM::USER.raw() + 2
1477	DELTAPOS WM::USER.raw() + 3
1478	SETSTEP WM::USER.raw() + 4
1479	STEPIT WM::USER.raw() + 5
1480	SETRANGE32 WM::USER.raw() + 6
1481	GETRANGE WM::USER.raw() + 7
1482	GETPOS WM::USER.raw() + 8
1483	SETBARCOLOR WM::USER.raw() + 9
1484	SETBKCOLOR CCM::SETBKCOLOR.0
1485	SETMARQUEE WM::USER.raw() + 10
1486	GETSTEP WM::USER.raw() + 13
1487	GETBKCOLOR WM::USER.raw() + 14
1488	GETBARCOLOR WM::USER.raw() + 15
1489	SETSTATE WM::USER.raw() + 16
1490	GETSTATE WM::USER.raw() + 17
1491}
1492
1493const_ordinary! { PBST: u32;
1494	/// Progress bar
1495	/// [states](https://learn.microsoft.com/en-us/windows/win32/controls/pbm-setstate)
1496	/// (`u32`).
1497	=>
1498	/// None of the actual values (zero).
1499	NoValue 0
1500	NORMAL 0x0001
1501	ERROR 0x0002
1502	PAUSED 0x0003
1503}
1504
1505const_bitflag! { PSH: u32;
1506	/// [`PROPSHEETHEADER`](crate::PROPSHEETHEADER) `dwFlags` (`u32`).
1507	=>
1508	DEFAULT 0x0000_0000
1509	PROPTITLE 0x0000_0001
1510	USEHICON 0x0000_0002
1511	USEICONID 0x0000_0004
1512	PROPSHEETPAGE 0x0000_0008
1513	WIZARDHASFINISH 0x0000_0010
1514	WIZARD 0x0000_0020
1515	USEPSTARTPAGE 0x0000_0040
1516	NOAPPLYNOW 0x0000_0080
1517	USECALLBACK 0x0000_0100
1518	HASHELP 0x0000_0200
1519	MODELESS 0x0000_0400
1520	RTLREADING 0x0000_0800
1521	WIZARDCONTEXTHELP 0x0000_1000
1522	WIZARD97 0x0100_0000
1523	WATERMARK 0x0000_8000
1524	USEHBMWATERMARK 0x0001_0000
1525	USEHPLWATERMARK 0x0002_0000
1526	STRETCHWATERMARK 0x0004_0000
1527	HEADER 0x0008_0000
1528	USEHBMHEADER 0x0010_0000
1529	USEPAGELANG 0x0020_0000
1530	WIZARD_LITE 0x0040_0000
1531	NOCONTEXTHELP 0x0200_0000
1532	AEROWIZARD 0x0000_4000
1533	RESIZABLE 0x0400_0000
1534	HEADERBITMAP 0x0800_0000
1535	NOMARGIN 0x1000_0000
1536}
1537
1538const_bitflag! { PSP: u32;
1539	/// [`PROPSHEETPAGE`](crate::PROPSHEETPAGE) `dwFlags` (`u32`).
1540	=>
1541	DEFAULT 0x0000_0000
1542	DLGINDIRECT 0x0000_0001
1543	USEHICON 0x0000_0002
1544	USEICONID 0x0000_0004
1545	USETITLE 0x0000_0008
1546	RTLREADING 0x0000_0010
1547	HASHELP 0x0000_0020
1548	USEREFPARENT 0x0000_0040
1549	USECALLBACK 0x0000_0080
1550	PREMATURE 0x0000_0400
1551	HIDEHEADER 0x0000_0800
1552	USEHEADERTITLE 0x0000_1000
1553	USEHEADERSUBTITLE 0x0000_2000
1554	USEFUSIONCONTEXT 0x0000_4000
1555}
1556
1557const_wm! { RB;
1558	/// Rebar control
1559	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-rebar-control-reference-messages)
1560	/// (`u32`).
1561	=>
1562	DELETEBAND WM::USER.raw() + 2
1563	GETBARINFO WM::USER.raw() + 3
1564	SETBARINFO WM::USER.raw() + 4
1565	SETPARENT WM::USER.raw() + 7
1566	HITTEST WM::USER.raw() + 8
1567	GETRECT WM::USER.raw() + 9
1568	INSERTBAND WM::USER.raw() + 10
1569	SETBANDINFO WM::USER.raw() + 11
1570	GETBANDCOUNT WM::USER.raw() + 12
1571	GETROWCOUNT WM::USER.raw() + 13
1572	GETROWHEIGHT WM::USER.raw() + 14
1573	IDTOINDEX WM::USER.raw() + 16
1574	GETTOOLTIPS WM::USER.raw() + 17
1575	SETTOOLTIPS WM::USER.raw() + 18
1576	SETBKCOLOR WM::USER.raw() + 19
1577	GETBKCOLOR WM::USER.raw() + 20
1578	SETTEXTCOLOR WM::USER.raw() + 21
1579	GETTEXTCOLOR WM::USER.raw() + 22
1580	SIZETORECT WM::USER.raw() + 23
1581	SETCOLORSCHEME CCM::SETCOLORSCHEME.0
1582	GETCOLORSCHEME CCM::GETCOLORSCHEME.0
1583	BEGINDRAG WM::USER.raw() + 24
1584	ENDDRAG WM::USER.raw() + 25
1585	DRAGMOVE WM::USER.raw() + 26
1586	GETBARHEIGHT WM::USER.raw() + 27
1587	GETBANDINFO WM::USER.raw() + 28
1588	MINIMIZEBAND WM::USER.raw() + 30
1589	MAXIMIZEBAND WM::USER.raw() + 31
1590	GETDROPTARGET CCM::GETDROPTARGET.0
1591	GETBANDBORDERS WM::USER.raw() + 34
1592	SHOWBAND WM::USER.raw() + 35
1593	SETPALETTE WM::USER.raw() + 37
1594	GETPALETTE WM::USER.raw() + 38
1595	MOVEBAND WM::USER.raw() + 39
1596	SETUNICODEFORMAT CCM::SETUNICODEFORMAT.0
1597	GETUNICODEFORMAT CCM::GETUNICODEFORMAT.0
1598	GETBANDMARGINS WM::USER.raw() + 40
1599	SETWINDOWTHEME CCM::SETWINDOWTHEME.0
1600	SETEXTENDEDSTYLE WM::USER.raw() + 41
1601	GETEXTENDEDSTYLE WM::USER.raw() + 42
1602	PUSHCHEVRON WM::USER.raw() + 43
1603	SETBANDWIDTH WM::USER.raw() + 44
1604}
1605
1606const_nm! { RBN;
1607	/// Rebar control `WM_NOTIFY`
1608	/// [notifications](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-rebar-control-reference-notifications)
1609	/// (`i32`).
1610	=>
1611	HEIGHTCHANGE RBN_FIRST - 0
1612	GETOBJECT RBN_FIRST - 1
1613	LAYOUTCHANGED RBN_FIRST - 2
1614	AUTOSIZE RBN_FIRST - 3
1615	BEGINDRAG RBN_FIRST - 4
1616	ENDDRAG RBN_FIRST - 5
1617	DELETINGBAND RBN_FIRST - 6
1618	DELETEDBAND RBN_FIRST - 7
1619	CHILDSIZE RBN_FIRST - 8
1620	CHEVRONPUSHED RBN_FIRST - 10
1621	SPLITTERDRAG RBN_FIRST - 11
1622	MINMAX RBN_FIRST - 21
1623	AUTOBREAK RBN_FIRST - 22
1624}
1625
1626const_ws! { RBS: u32;
1627	/// Rebar control
1628	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/rebar-control-styles)
1629	/// (`u32`).
1630	=>
1631	/// None of the actual values (zero).
1632	NoValue 0
1633	TOOLTIPS 0x0000_0100
1634	VARHEIGHT 0x0000_0200
1635	BANDBORDERS 0x0000_0400
1636	FIXEDORDER 0x0000_0800
1637	REGISTERDROP 0x000_01000
1638	AUTOSIZE 0x0000_2000
1639	VERTICALGRIPPER 0x0000_4000
1640	DBLCLKTOGGLE 0x0000_8000
1641}
1642
1643const_wm! { SB;
1644	/// Status bar control
1645	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-status-bars-reference-messages)
1646	/// (`u32`).
1647	=>
1648	SETTEXT WM::USER.raw() + 11
1649	GETTEXT WM::USER.raw() + 13
1650	GETTEXTLENGTH WM::USER.raw() + 12
1651	SETPARTS WM::USER.raw() + 4
1652	GETPARTS WM::USER.raw() + 6
1653	GETBORDERS WM::USER.raw() + 7
1654	SETMINHEIGHT WM::USER.raw() + 8
1655	SIMPLE WM::USER.raw() + 9
1656	GETRECT WM::USER.raw() + 10
1657	ISSIMPLE WM::USER.raw() + 14
1658	SETICON WM::USER.raw() + 15
1659	SETTIPTEXT WM::USER.raw() + 17
1660	GETTIPTEXT WM::USER.raw() + 19
1661	GETICON WM::USER.raw() + 20
1662	SETUNICODEFORMAT CCM::SETUNICODEFORMAT.0
1663	GETUNICODEFORMAT CCM::GETUNICODEFORMAT.0
1664	SETBKCOLOR CCM::SETBKCOLOR.0
1665}
1666
1667const_ws! { SBARS: u32;
1668	/// Status bar control
1669	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/status-bar-styles)
1670	/// (`u32`).
1671	=>
1672	/// None of the actual values (zero).
1673	NoValue 0
1674	SIZEGRIP 0x0100
1675	TOOLTIPS 0x0800
1676}
1677
1678const_nm! { SBN;
1679	/// Status bar control `WM_NOTIFY`
1680	/// [notifications](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-status-bars-reference-notifications)
1681	/// (`i32`).
1682	=>
1683	SIMPLEMODECHANGE SBN_FIRST - 0
1684}
1685
1686const_ordinary! { SBT: u16;
1687	/// [`sb::GetText`](crate::msg::sb::GetText),
1688	/// [`sb::GetTextLength`](crate::msg::sb::GetTextLength) and
1689	/// [`sb::SetText`](crate::msg::sb::SetText) drawing operation (`u16`).
1690	=>
1691	BORDER 0
1692	OWNERDRAW 0x1000
1693	NOBORDERS 0x0100
1694	POPOUT 0x0200
1695	RTLREADING 0x0400
1696	NOTABPARSING 0x0800
1697}
1698
1699const_wm! { STM;
1700	/// Static control
1701	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-static-control-reference-messages)
1702	/// (`u32`).
1703	=>
1704	SETICON 0x0170
1705	GETICON 0x0171
1706	SETIMAGE 0x0172
1707	GETIMAGE 0x0173
1708}
1709
1710const_ordinary! { TB: i32;
1711	/// [`NMTRBTHUMBPOSCHANGING`](crate::NMTRBTHUMBPOSCHANGING) `nReason`
1712	/// (`i32`).
1713	=>
1714	LINEUP 0
1715	LINEDOWN 1
1716	PAGEUP 2
1717	PAGEDOWN 3
1718	THUMBPOSITION 4
1719	THUMBTRACK 5
1720	TOP 6
1721	BOTTOM 7
1722	ENDTRACK 8
1723}
1724
1725const_bitflag! { TBBF: u32;
1726	/// [`tbm::GetBitmapFlags`](crate::msg::tbm::GetBitmapFlags) return value
1727	/// (`u32`).
1728	=>
1729	LARGE 0x0001
1730}
1731
1732const_bitflag! { TBIF: u32;
1733	/// [`TBBUTTONINFO`](crate::TBBUTTONINFO) `dwFlags` (`u32`).
1734	=>
1735	IMAGE 0x0000_0001
1736	TEXT 0x0000_0002
1737	STATE 0x0000_0004
1738	STYLE 0x0000_0008
1739	LPARAM 0x0000_0010
1740	COMMAND 0x0000_0020
1741	SIZE 0x0000_0040
1742	BYINDEX 0x8000_0000
1743}
1744
1745const_ordinary! { TBIMHT: u32;
1746	/// [`TBINSERTMARK`](crate::TBINSERTMARK) `dwFlags` (`u32`).
1747	=>
1748	/// Originally just a zero, no actual flag definition.
1749	BEFORE 0x0000_0000
1750	AFTER 0x0000_0001
1751	BACKGROUND 0x0000_0002
1752}
1753
1754const_wm! { TBM;
1755	/// Toolbar control
1756	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-toolbar-control-reference-messages)
1757	/// (`u32`).
1758	///
1759	/// Originally has `TB` prefix.
1760	=>
1761	ADDBITMAP WM::USER.raw() + 19
1762	ADDBUTTONS WM::USER.raw() + 68
1763	ADDSTRING WM::USER.raw() + 77
1764	AUTOSIZE WM::USER.raw() + 33
1765	BUTTONCOUNT WM::USER.raw() + 24
1766	BUTTONSTRUCTSIZE WM::USER.raw() + 30
1767	CHANGEBITMAP WM::USER.raw() + 43
1768	CHECKBUTTON WM::USER.raw() + 2
1769	COMMANDTOINDEX WM::USER.raw() + 25
1770	CUSTOMIZE WM::USER.raw() + 27
1771	DELETEBUTTON WM::USER.raw() + 22
1772	ENABLEBUTTON WM::USER.raw() + 1
1773	GETANCHORHIGHLIGHT WM::USER.raw() + 74
1774	GETBITMAP WM::USER.raw() + 44
1775	GETBITMAPFLAGS WM::USER.raw() + 41
1776	GETBUTTON WM::USER.raw() + 23
1777	GETBUTTONINFO WM::USER.raw() + 63
1778	GETBUTTONSIZE WM::USER.raw() + 58
1779	GETBUTTONTEXT WM::USER.raw() + 75
1780	GETCOLORSCHEME CCM::GETCOLORSCHEME.0
1781	GETDISABLEDIMAGELIST WM::USER.raw() + 55
1782	GETEXTENDEDSTYLE WM::USER.raw() + 85
1783	GETHOTIMAGELIST WM::USER.raw() + 53
1784	GETHOTITEM WM::USER.raw() + 71
1785	GETIDEALSIZE WM::USER.raw() + 99
1786	GETIMAGELIST WM::USER.raw() + 49
1787	GETIMAGELISTCOUNT WM::USER.raw() + 98
1788	GETINSERTMARK WM::USER.raw() + 79
1789	GETINSERTMARKCOLOR WM::USER.raw() + 89
1790	GETITEMDROPDOWNRECT WM::USER.raw() + 103
1791	GETITEMRECT WM::USER.raw() + 29
1792	GETMAXSIZE WM::USER.raw() + 83
1793	GETMETRICS WM::USER.raw() + 101
1794	GETOBJECT WM::USER.raw() + 62
1795	GETPADDING WM::USER.raw() + 86
1796	GETPRESSEDIMAGELIST WM::USER.raw() + 105
1797	GETRECT WM::USER.raw() + 51
1798	GETROWS WM::USER.raw() + 40
1799	GETSTATE WM::USER.raw() + 18
1800	GETSTRING WM::USER.raw() + 91
1801	GETSTYLE WM::USER.raw() + 57
1802	GETTEXTROWS WM::USER.raw() + 61
1803	GETTOOLTIPS WM::USER.raw() + 35
1804	GETUNICODEFORMAT CCM::GETUNICODEFORMAT.0
1805	HASACCELERATOR WM::USER.raw() + 95
1806	HIDEBUTTON WM::USER.raw() + 4
1807	HITTEST WM::USER.raw() + 69
1808	INDETERMINATE WM::USER.raw() + 5
1809	INSERTBUTTON WM::USER.raw() + 67
1810	INSERTMARKHITTEST WM::USER.raw() + 81
1811	ISBUTTONCHECKED WM::USER.raw() + 10
1812	ISBUTTONENABLED WM::USER.raw() + 9
1813	ISBUTTONHIDDEN WM::USER.raw() + 12
1814	ISBUTTONHIGHLIGHTED WM::USER.raw() + 14
1815	ISBUTTONINDETERMINATE WM::USER.raw() + 13
1816	ISBUTTONPRESSED WM::USER.raw() + 11
1817	LOADIMAGES WM::USER.raw() + 50
1818	MAPACCELERATOR WM::USER.raw() + 90
1819	MARKBUTTON WM::USER.raw() + 6
1820	MOVEBUTTON WM::USER.raw() + 82
1821	PRESSBUTTON WM::USER.raw() + 3
1822	REPLACEBITMAP WM::USER.raw() + 46
1823	SAVERESTORE WM::USER.raw() + 76
1824	SETANCHORHIGHLIGHT WM::USER.raw() + 73
1825	SETBITMAPSIZE WM::USER.raw() + 32
1826	SETBOUNDINGSIZE WM::USER.raw() + 93
1827	SETBUTTONINFO WM::USER.raw() + 64
1828	SETBUTTONSIZE WM::USER.raw() + 31
1829	SETBUTTONWIDTH WM::USER.raw() + 59
1830	SETCMDID WM::USER.raw() + 42
1831	SETCOLORSCHEME CCM::SETCOLORSCHEME.0
1832	SETDISABLEDIMAGELIST WM::USER.raw() + 54
1833	SETDRAWTEXTFLAGS WM::USER.raw() + 70
1834	SETEXTENDEDSTYLE WM::USER.raw() + 84
1835	SETHOTIMAGELIST WM::USER.raw() + 52
1836	SETHOTITEM WM::USER.raw() + 72
1837	SETHOTITEM2 WM::USER.raw() + 94
1838	SETIMAGELIST WM::USER.raw() + 48
1839	SETINDENT WM::USER.raw() + 47
1840	SETINSERTMARK WM::USER.raw() + 80
1841	SETINSERTMARKCOLOR WM::USER.raw() + 88
1842	SETLISTGAP WM::USER.raw() + 96
1843	SETMAXTEXTROWS WM::USER.raw() + 60
1844	SETMETRICS WM::USER.raw() + 102
1845	SETPADDING WM::USER.raw() + 87
1846	SETPARENT WM::USER.raw() + 37
1847	SETPRESSEDIMAGELIST WM::USER.raw() + 104
1848	SETREDRAWTEXTFLAGS WM::USER.raw() + 70
1849	SETROWS WM::USER.raw() + 39
1850	SETSTATE WM::USER.raw() + 17
1851	SETSTYLE WM::USER.raw() + 56
1852	SETTOOLTIPS WM::USER.raw() + 36
1853	SETUNICODEFORMAT CCM::SETUNICODEFORMAT.0
1854	SETWINDOWTHEME CCM::SETWINDOWTHEME.0
1855}
1856
1857const_bitflag! { TBMF: u32;
1858	/// [`TBMETRICS`](crate::TBMETRICS) `dwMask` (`u32`).
1859	=>
1860	PAD 0x0000_0001
1861	BARPAD 0x0000_0002
1862	BUTTONSPACING 0x0000_0004
1863}
1864
1865const_nm! { TBN;
1866	/// Toolbar control `WM_NOTIFY`
1867	/// [notifications](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-toolbar-control-reference-notifications)
1868	/// (`i32`).
1869	=>
1870	BEGINADJUST TBN_FIRST - 3
1871	BEGINDRAG TBN_FIRST - 1
1872	CUSTHELP TBN_FIRST - 9
1873	DELETINGBUTTON TBN_FIRST - 15
1874	DRAGOUT TBN_FIRST - 14
1875	DRAGOVER TBN_FIRST - 27
1876	DROPDOWN TBN_FIRST - 10
1877	DUPACCELERATOR TBN_FIRST - 25
1878	ENDADJUST TBN_FIRST - 4
1879	ENDDRAG TBN_FIRST - 2
1880	GETBUTTONINFO TBN_FIRST - 20
1881	GETDISPINFO TBN_FIRST - 17
1882	GETINFOTIP TBN_FIRST - 19
1883	GETOBJECT TBN_FIRST - 12
1884	HOTITEMCHANGE TBN_FIRST - 13
1885	INITCUSTOMIZE TBN_FIRST - 23
1886	MAPACCELERATOR TBN_FIRST - 28
1887	QUERYDELETE TBN_FIRST - 7
1888	QUERYINSERT TBN_FIRST - 6
1889	RESET TBN_FIRST - 5
1890	RESTORE TBN_FIRST - 21
1891	SAVE TBN_FIRST - 22
1892	TOOLBARCHANGE TBN_FIRST - 8
1893	WRAPACCELERATOR TBN_FIRST - 26
1894	WRAPHOTITEM TBN_FIRST - 24
1895}
1896
1897const_ws! { TBS: u32;
1898	/// Trackbar control
1899	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/trackbar-control-styles)
1900	/// (`u32`).
1901	=>
1902	/// None of the actual values (zero).
1903	NoValue 0
1904	AUTOTICKS 0x0001
1905	VERT 0x0002
1906	HORZ 0x0000
1907	TOP 0x0004
1908	BOTTOM 0x0000
1909	LEFT 0x0004
1910	RIGHT 0x0000
1911	BOTH 0x0008
1912	NOTICKS 0x0010
1913	ENABLESELRANGE 0x0020
1914	FIXEDLENGTH 0x0040
1915	NOTHUMB 0x0080
1916	TOOLTIPS 0x0100
1917	REVERSED 0x0200
1918	DOWNISLEFT 0x0400
1919	NOTIFYBEFOREMOVE 0x0800
1920	TRANSPARENTBKGND 0x1000
1921}
1922
1923const_bitflag! { TBSTATE: u8;
1924	/// Toolbar button
1925	/// [states](https://learn.microsoft.com/en-us/windows/win32/controls/toolbar-button-states)
1926	/// (`u8`).
1927	=>
1928	/// None of the actual values (zero).
1929	NoValue 0
1930	CHECKED 0x01
1931	PRESSED 0x02
1932	ENABLED 0x04
1933	HIDDEN 0x08
1934	INDETERMINATE 0x10
1935	WRAP 0x20
1936	ELLIPSES 0x40
1937	MARKED 0x80
1938}
1939
1940const_wsex! { TBSTYLE_EX;
1941	/// Extended toolbar control
1942	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/toolbar-extended-styles)
1943	/// (`u32`).
1944	=>
1945	/// None of the actual values (zero).
1946	NoValue 0
1947	DRAWDDARROWS 0x0000_0001
1948	MIXEDBUTTONS 0x0000_0008
1949	HIDECLIPPEDBUTTONS 0x0000_0010
1950	MULTICOLUMN 0x0000_0002
1951	VERTICAL 0x0000_0004
1952	DOUBLEBUFFER 0x0000_0080
1953}
1954
1955const_ordinary! { TBTS: u8;
1956	/// [`trbm::SetTipSide`](crate::msg::trbm::SetTipSide) `location` (`u8`).
1957	=>
1958	TOP 0
1959	LEFT 1
1960	BOTTOM 2
1961	RIGHT 3
1962}
1963
1964const_ordinary! { TCHT: u32;
1965	/// [`TCHITTESTINFO`](crate::TCHITTESTINFO) `flags` (`u32`).
1966	=>
1967	NOWHERE 0x0001
1968	ONITEMICON 0x0002
1969	ONITEMLABEL 0x0004
1970	ONITEM TCHT::ONITEMICON.0 | TCHT::ONITEMLABEL.0
1971}
1972
1973const_bitflag! { TCIF: u32;
1974	/// [`TCITEM`](crate::TCITEM) `mask` (`u32`).
1975	=>
1976	TEXT 0x0001
1977	IMAGE 0x0002
1978	RTLREADING 0x0004
1979	PARAM 0x0008
1980	STATE 0x0010
1981}
1982
1983const_bitflag! { TCIS: u32;
1984	/// Tab control item
1985	/// [states](https://learn.microsoft.com/en-us/windows/win32/controls/tab-control-item-states)
1986	/// (`u32`).
1987	=>
1988	/// None of the actual values (zero).
1989	NoValue 0
1990	BUTTONPRESSED 0x0001
1991	HIGHLIGHTED 0x0002
1992}
1993
1994const_wm! { TCM;
1995	/// Tab control
1996	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-tab-control-reference-messages)
1997	/// (`u32`).
1998	=>
1999	GETIMAGELIST TCM_FIRST + 2
2000	SETIMAGELIST TCM_FIRST + 3
2001	GETITEMCOUNT TCM_FIRST + 4
2002	GETITEM TCM_FIRST + 60
2003	SETITEM TCM_FIRST + 61
2004	INSERTITEM TCM_FIRST + 62
2005	DELETEITEM TCM_FIRST + 8
2006	DELETEALLITEMS TCM_FIRST + 9
2007	GETITEMRECT TCM_FIRST + 10
2008	GETCURSEL TCM_FIRST + 11
2009	SETCURSEL TCM_FIRST + 12
2010	HITTEST TCM_FIRST + 13
2011	SETITEMEXTRA TCM_FIRST + 14
2012	ADJUSTRECT TCM_FIRST + 40
2013	SETITEMSIZE TCM_FIRST + 41
2014	REMOVEIMAGE TCM_FIRST + 42
2015	SETPADDING TCM_FIRST + 43
2016	GETROWCOUNT TCM_FIRST + 44
2017	GETTOOLTIPS TCM_FIRST + 45
2018	SETTOOLTIPS TCM_FIRST + 46
2019	GETCURFOCUS TCM_FIRST + 47
2020	SETCURFOCUS TCM_FIRST + 48
2021	SETMINTABWIDTH TCM_FIRST + 49
2022	DESELECTALL TCM_FIRST + 50
2023	HIGHLIGHTITEM TCM_FIRST + 51
2024	SETEXTENDEDSTYLE TCM_FIRST + 52
2025	GETEXTENDEDSTYLE TCM_FIRST + 53
2026	SETUNICODEFORMAT CCM::SETUNICODEFORMAT.0
2027	GETUNICODEFORMAT CCM::GETUNICODEFORMAT.0
2028}
2029
2030const_nm! { TCN;
2031	/// Tab control `WM_NOTIFY`
2032	/// [notifications](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-tab-control-reference-notifications)
2033	/// (`i32`).
2034	=>
2035	FOCUSCHANGE TCN_FIRST - 4
2036	GETOBJECT TCN_FIRST - 3
2037	KEYDOWN TCN_FIRST - 0
2038	SELCHANGE TCN_FIRST - 1
2039	SELCHANGING TCN_FIRST - 2
2040}
2041
2042const_ws! { TCS: u32;
2043	/// Tab control
2044	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/tab-control-styles)
2045	/// (`u32`).
2046	=>
2047	/// None of the actual values (zero).
2048	NoValue 0
2049	SCROLLOPPOSITE 0x0001
2050	BOTTOM 0x0002
2051	RIGHT 0x0002
2052	MULTISELECT 0x0004
2053	FLATBUTTONS 0x0008
2054	FORCEICONLEFT 0x0010
2055	FORCELABELLEFT 0x0020
2056	HOTTRACK 0x0040
2057	VERTICAL 0x0080
2058	TABS 0x0000
2059	BUTTONS 0x0100
2060	SINGLELINE 0x0000
2061	MULTILINE 0x0200
2062	RIGHTJUSTIFY 0x0000
2063	FIXEDWIDTH 0x0400
2064	RAGGEDRIGHT 0x0800
2065	FOCUSONBUTTONDOWN 0x1000
2066	OWNERDRAWFIXED 0x2000
2067	TOOLTIPS 0x4000
2068	FOCUSNEVER 0x8000
2069}
2070
2071const_wsex! { TCS_EX;
2072	/// Extended tab control
2073	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/tab-control-extended-styles)
2074	/// (`u32`).
2075	=>
2076	/// None of the actual values (zero).
2077	NoValue 0
2078	FLATSEPARATORS 0x0000_0001
2079	REGISTERDROP 0x0000_0002
2080}
2081
2082const_ordinary! { TD_ICON: u16;
2083	/// [`HWND::TaskDialog`](crate::HWND::TaskDialog) `pszIcon` and
2084	/// [`IconIdTd`](crate::IconIdTd) `Td` (`u16`).
2085	///
2086	/// Originally has `TD` prefix and `ICON` suffix.
2087	=>
2088	/// An exclamation-point icon appears in the task dialog.
2089	WARNING 0xffff
2090	/// A stop-sign icon appears in the task dialog.
2091	ERROR 0xfffe
2092	/// An icon consisting of a lowercase letter i in a circle appears in the
2093	/// task dialog.
2094	INFORMATION 0xfffd
2095	/// A security shield icon appears in the task dialog.
2096	SHIELD 0xfffc
2097}
2098
2099const_bitflag! { TDCBF: i32;
2100	/// [`HWND::TaskDialog`](crate::HWND::TaskDialog) and
2101	/// [`TASKDIALOGCONFIG`](crate::TASKDIALOGCONFIG) `dwCommonButtons` (`i32`).
2102	///
2103	/// Originally has `TDCBF` prefix and `BUTTON` suffix.
2104	=>
2105	OK 0x0001
2106	YES 0x0002
2107	NO 0x0004
2108	CANCEL 0x0008
2109	RETRY 0x0010
2110	CLOSE 0x0020
2111}
2112
2113const_bitflag! { TDF: i32;
2114	/// [`TASKDIALOGCONFIG`](crate::TASKDIALOGCONFIG) `dwFlags` (`i32`).
2115	///
2116	/// Some constants are set internally, not being publicly available.
2117	=>
2118	ENABLE_HYPERLINKS 0x0001
2119	ALLOW_DIALOG_CANCELLATION 0x0008
2120	USE_COMMAND_LINKS 0x0010
2121	USE_COMMAND_LINKS_NO_ICON 0x0020
2122	EXPAND_FOOTER_AREA 0x0040
2123	EXPANDED_BY_DEFAULT 0x0080
2124	VERIFICATION_FLAG_CHECKED 0x0100
2125	SHOW_PROGRESS_BAR 0x0200
2126	SHOW_MARQUEE_PROGRESS_BAR 0x0400
2127	CALLBACK_TIMER 0x0800
2128	POSITION_RELATIVE_TO_WINDOW 0x1000
2129	RTL_LAYOUT 0x2000
2130	NO_DEFAULT_RADIO_BUTTON 0x4000
2131	CAN_BE_MINIMIZED 0x8000
2132	NO_SET_FOREGROUND 0x0001_0000
2133	SIZE_TO_CONTENT 0x0100_0000
2134}
2135
2136const_ordinary! { TDN: u32;
2137	/// [`PFTASKDIALOGCALLBACK`](crate::PFTASKDIALOGCALLBACK) `msg` (`u32`).
2138	=>
2139	CREATED 0
2140	NAVIGATED 1
2141	BUTTON_CLICKED 2
2142	HYPERLINK_CLICKED 3
2143	TIMER 4
2144	DESTROYED 5
2145	RADIO_BUTTON_CLICKED 6
2146	DIALOG_CONSTRUCTED 7
2147	VERIFICATION_CLICKED 8
2148	HELP 9
2149	EXPANDO_BUTTON_CLICKED 10
2150}
2151
2152const_wm! { TRBM;
2153	/// Trackbar control
2154	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-trackbar-control-reference-messages)
2155	/// (`u32`).
2156	///
2157	/// Originally has `TBM` prefix.
2158	=>
2159	GETPOS WM::USER.raw()
2160	GETRANGEMIN WM::USER.raw() + 1
2161	GETRANGEMAX WM::USER.raw() + 2
2162	GETTIC WM::USER.raw() + 3
2163	SETTIC WM::USER.raw() + 4
2164	SETPOS WM::USER.raw() + 5
2165	SETRANGE WM::USER.raw() + 6
2166	SETRANGEMIN WM::USER.raw() + 7
2167	SETRANGEMAX WM::USER.raw() + 8
2168	CLEARTICS WM::USER.raw() + 9
2169	SETSEL WM::USER.raw() + 10
2170	SETSELSTART WM::USER.raw() + 11
2171	SETSELEND WM::USER.raw() + 12
2172	GETPTICS WM::USER.raw() + 14
2173	GETTICPOS WM::USER.raw() + 15
2174	GETNUMTICS WM::USER.raw() + 16
2175	GETSELSTART WM::USER.raw() + 17
2176	GETSELEND WM::USER.raw() + 18
2177	CLEARSEL WM::USER.raw() + 19
2178	SETTICFREQ WM::USER.raw() + 20
2179	SETPAGESIZE WM::USER.raw() + 21
2180	GETPAGESIZE WM::USER.raw() + 22
2181	SETLINESIZE WM::USER.raw() + 23
2182	GETLINESIZE WM::USER.raw() + 24
2183	GETTHUMBRECT WM::USER.raw() + 25
2184	GETCHANNELRECT WM::USER.raw() + 26
2185	SETTHUMBLENGTH WM::USER.raw() + 27
2186	GETTHUMBLENGTH WM::USER.raw() + 28
2187	SETTOOLTIPS WM::USER.raw() + 29
2188	GETTOOLTIPS WM::USER.raw() + 30
2189	SETTIPSIDE WM::USER.raw() + 31
2190	SETBUDDY WM::USER.raw() + 32
2191	GETBUDDY WM::USER.raw() + 33
2192	SETPOSNOTIFY WM::USER.raw() + 34
2193	SETUNICODEFORMAT CCM::SETUNICODEFORMAT.0
2194	GETUNICODEFORMAT CCM::GETUNICODEFORMAT.0
2195}
2196
2197const_nm! { TRBN;
2198	/// Trackbar control `WM_NOTIFY`
2199	/// [notifications](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-trackbar-control-reference-notifications)
2200	/// (`i32`).
2201	=>
2202	THUMBPOSCHANGING TRBN_FIRST - 1
2203}
2204
2205const_ordinary! { TTI: i32;
2206	/// [`EDITBALLOONTIP`](crate::EDITBALLOONTIP) ttiIcon (`i32`).
2207	=>
2208	ERROR 3
2209	INFO 1
2210	NONE 0
2211	WARNING 2
2212	INFO_LARGE 4
2213	WARNING_LARGE 5
2214	ERROR_LARGE 6
2215}
2216
2217const_ordinary! { TVC: u32;
2218	/// [`NMTREEVIEW`](crate::NMTREEVIEW) `action` (`u32`).
2219	=>
2220	UNKNOWN 0x0000
2221	BYMOUSE 0x0001
2222	BYKEYBOARD 0x0002
2223}
2224
2225const_ordinary! { TVE: u32;
2226	/// [`tvm::Expand`](crate::msg::tvm::Expand) `action` (`u32`).
2227	=>
2228	COLLAPSE 0x0001
2229	EXPAND 0x0002
2230	TOGGLE 0x0003
2231	EXPANDPARTIAL 0x4000
2232	COLLAPSERESET 0x8000
2233}
2234
2235const_ordinary! { TVGN: u32;
2236	/// [`tvm::GetNextItem`](crate::msg::tvm::GetNextItem) `which` (`u32`).
2237	=>
2238	ROOT 0x0000
2239	NEXT 0x0001
2240	PREVIOUS 0x0002
2241	PARENT 0x0003
2242	CHILD 0x0004
2243	FIRSTVISIBLE 0x0005
2244	NEXTVISIBLE 0x0006
2245	PREVIOUSVISIBLE 0x0007
2246	DROPHILITE 0x0008
2247	CARET 0x0009
2248	LASTVISIBLE 0x000a
2249	NEXTSELECTED 0x000b
2250	/// Originally has no `TVGN` prefix.
2251	TVSI_NOSINGLEEXPAND 0x8000
2252}
2253
2254const_bitflag! { TVHT: u32;
2255	/// [`TVHITTESTINFO`](crate::TVHITTESTINFO) `flags` (`u32`).
2256	=>
2257	NOWHERE 0x0001
2258	ONITEMICON 0x0002
2259	ONITEMLABEL 0x0004
2260	ONITEM TVHT::ONITEMICON.0 | TVHT::ONITEMLABEL.0 | TVHT::ONITEMSTATEICON.0
2261	ONITEMINDENT 0x0008
2262	ONITEMBUTTON 0x0010
2263	ONITEMRIGHT 0x0020
2264	ONITEMSTATEICON 0x0040
2265	ABOVE 0x0100
2266	BELOW 0x0200
2267	TORIGHT 0x0400
2268	TOLEFT 0x0800
2269}
2270
2271const_ordinary! { TVI: isize;
2272	/// [`TVINSERTSTRUCT`](crate::TVINSERTSTRUCT) `hInsertAfter` (`isize`).
2273	=>
2274	ROOT -0x10000
2275	FIRST -0x0ffff
2276	LAST -0x0fffe
2277	SORT -0x0fffd
2278}
2279
2280const_bitflag! { TVIF: u32;
2281	/// [`TVITEM`](crate::TVITEM) `mask` (`u32`).
2282	=>
2283	TEXT 0x0001
2284	IMAGE 0x0002
2285	PARAM 0x0004
2286	STATE 0x0008
2287	HANDLE 0x0010
2288	SELECTEDIMAGE 0x0020
2289	CHILDREN 0x0040
2290	INTEGRAL 0x0080
2291	STATEEX 0x0100
2292	EXPANDEDIMAGE 0x0200
2293}
2294
2295const_bitflag! { TVIS: u32;
2296	/// Tree view item
2297	/// [states](https://learn.microsoft.com/en-us/windows/win32/controls/tree-view-control-item-states)
2298	/// (`u32`)
2299	=>
2300	/// None of the actual values (zero).
2301	NoValue 0
2302	SELECTED 0x0002
2303	CUT 0x0004
2304	DROPHILITED 0x0008
2305	BOLD 0x0010
2306	EXPANDED 0x0020
2307	EXPANDEDONCE 0x0040
2308	EXPANDPARTIAL 0x0080
2309	OVERLAYMASK 0x0f00
2310	STATEIMAGEMASK 0xf000
2311	USERMASK 0xf000
2312}
2313
2314const_bitflag! { TVIS_EX: u32;
2315	/// [`TVITEMEX`](crate::TVITEMEX) `uStateEx` (`u32`).
2316	=>
2317	/// None of the actual values (zero).
2318	NoValue 0
2319	DISABLED 0x0002
2320	FLAT 0x0001
2321	/// This value is not declared in any header, it may not be accurate.
2322	HWND 0x0000
2323}
2324
2325const_bitflag! { TVSBF: u32;
2326	/// [`tvm::SetBorder`](crate::msg::tvm::SetBorder) `action` (`u32`).
2327	=>
2328	XBORDER 0x0000_0001
2329	YBORDER 0x0000_0002
2330}
2331
2332const_wm! { TVM;
2333	/// Tree view control
2334	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-tree-view-control-reference-messages)
2335	/// (`u32`).
2336	=>
2337	INSERTITEM TVM_FIRST + 50
2338	DELETEITEM TVM_FIRST + 1
2339	EXPAND TVM_FIRST + 2
2340	GETITEMRECT TVM_FIRST + 4
2341	GETCOUNT TVM_FIRST + 5
2342	GETINDENT TVM_FIRST + 6
2343	SETINDENT TVM_FIRST + 7
2344	GETIMAGELIST TVM_FIRST + 8
2345	SETIMAGELIST TVM_FIRST + 9
2346	GETNEXTITEM TVM_FIRST + 10
2347	SELECTITEM TVM_FIRST + 11
2348	GETITEM TVM_FIRST + 62
2349	SETITEM TVM_FIRST + 63
2350	EDITLABEL TVM_FIRST + 65
2351	GETEDITCONTROL TVM_FIRST + 15
2352	GETVISIBLECOUNT TVM_FIRST + 16
2353	HITTEST TVM_FIRST + 17
2354	CREATEDRAGIMAGE TVM_FIRST + 18
2355	SORTCHILDREN TVM_FIRST + 19
2356	ENSUREVISIBLE TVM_FIRST + 20
2357	SORTCHILDRENCB TVM_FIRST + 21
2358	ENDEDITLABELNOW TVM_FIRST + 22
2359	GETISEARCHSTRING TVM_FIRST + 64
2360	SETTOOLTIPS TVM_FIRST + 24
2361	GETTOOLTIPS TVM_FIRST + 25
2362	SETINSERTMARK TVM_FIRST + 26
2363	SETUNICODEFORMAT CCM::SETUNICODEFORMAT.0
2364	GETUNICODEFORMAT CCM::GETUNICODEFORMAT.0
2365	SETITEMHEIGHT TVM_FIRST + 27
2366	GETITEMHEIGHT TVM_FIRST + 28
2367	SETBKCOLOR TVM_FIRST + 29
2368	SETTEXTCOLOR TVM_FIRST + 30
2369	GETBKCOLOR TVM_FIRST + 31
2370	GETTEXTCOLOR TVM_FIRST + 32
2371	SETSCROLLTIME TVM_FIRST + 33
2372	GETSCROLLTIME TVM_FIRST + 34
2373	SETINSERTMARKCOLOR TVM_FIRST + 37
2374	GETINSERTMARKCOLOR TVM_FIRST + 38
2375	SETBORDER TVM_FIRST + 35
2376	GETITEMSTATE TVM_FIRST + 39
2377	SETLINECOLOR TVM_FIRST + 40
2378	GETLINECOLOR TVM_FIRST + 41
2379	MAPACCIDTOHTREEITEM TVM_FIRST + 42
2380	MAPHTREEITEMTOACCID TVM_FIRST + 43
2381	SETEXTENDEDSTYLE TVM_FIRST + 44
2382	GETEXTENDEDSTYLE TVM_FIRST + 45
2383	SETAUTOSCROLLINFO TVM_FIRST + 59
2384	SETHOT TVM_FIRST + 58
2385	GETSELECTEDCOUNT TVM_FIRST + 70
2386	SHOWINFOTIP TVM_FIRST + 71
2387	GETITEMPARTRECT TVM_FIRST + 72
2388}
2389
2390const_nm! { TVN;
2391	/// Tree view control `WM_NOTIFY`
2392	/// [notifications](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-tree-view-control-reference-notifications)
2393	/// (`i32`).
2394	=>
2395	SELCHANGING TVN_FIRST - 50
2396	SELCHANGED TVN_FIRST - 51
2397	GETDISPINFO TVN_FIRST - 52
2398	SETDISPINFO TVN_FIRST - 53
2399	ITEMEXPANDING TVN_FIRST - 54
2400	ITEMEXPANDED TVN_FIRST - 55
2401	BEGINDRAG TVN_FIRST - 56
2402	BEGINRDRAG TVN_FIRST - 57
2403	DELETEITEM TVN_FIRST - 58
2404	BEGINLABELEDIT TVN_FIRST - 59
2405	ENDLABELEDIT TVN_FIRST - 60
2406	KEYDOWN TVN_FIRST - 12
2407	GETINFOTIP TVN_FIRST - 14
2408	SINGLEEXPAND TVN_FIRST - 15
2409	ITEMCHANGING TVN_FIRST - 17
2410	ITEMCHANGED TVN_FIRST - 19
2411	ASYNCDRAW TVN_FIRST - 20
2412}
2413
2414const_ws! { TVS: u32;
2415	/// Tree view control
2416	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/tree-view-control-window-styles)
2417	/// (`u32`).
2418	=>
2419	/// None of the actual values (zero).
2420	NoValue 0
2421	HASBUTTONS 0x0001
2422	HASLINES 0x0002
2423	LINESATROOT 0x0004
2424	EDITLABELS 0x0008
2425	DISABLEDRAGDROP 0x0010
2426	SHOWSELALWAYS 0x0020
2427	RTLREADING 0x0040
2428	NOTOOLTIPS 0x0080
2429	CHECKBOXES 0x0100
2430	TRACKSELECT 0x0200
2431	SINGLEEXPAND 0x0400
2432	INFOTIP 0x0800
2433	FULLROWSELECT 0x1000
2434	NOSCROLL 0x2000
2435	NONEVENHEIGHT 0x4000
2436	NOHSCROLL 0x8000
2437}
2438
2439const_wsex! { TVS_EX;
2440	/// Extended tree view control
2441	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/tree-view-control-window-extended-styles)
2442	/// (`u32`).
2443	=>
2444	/// None of the actual values (zero).
2445	NoValue 0
2446	NOSINGLECOLLAPSE 0x0001
2447	MULTISELECT 0x0002
2448	DOUBLEBUFFER 0x0004
2449	NOINDENTSTATE 0x0008
2450	RICHTOOLTIP 0x0010
2451	AUTOHSCROLL 0x0020
2452	FADEINOUTEXPANDOS 0x0040
2453	PARTIALCHECKBOXES 0x0080
2454	EXCLUSIONCHECKBOXES 0x0100
2455	DIMMEDCHECKBOXES 0x0200
2456	DRAWIMAGEASYNC 0x0400
2457}
2458
2459const_ordinary! { TVSIL: u8;
2460	/// [`tvm::GetImageList`](crate::msg::tvm::GetImageList) and
2461	/// [`tvm::SetImageList`](crate::msg::tvm::SetImageList) `kind`.
2462	=>
2463	NORMAL 0
2464	STATE 2
2465}
2466
2467const_wm! { UDM;
2468	/// Up-down control
2469	/// [messages](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-up-down-control-reference-messages)
2470	/// (`u32`).
2471	=>
2472	SETRANGE WM::USER.raw() + 101
2473	GETRANGE WM::USER.raw() + 102
2474	SETPOS WM::USER.raw() + 103
2475	GETPOS WM::USER.raw() + 104
2476	SETBUDDY WM::USER.raw() + 105
2477	GETBUDDY WM::USER.raw() + 106
2478	SETACCEL WM::USER.raw() + 107
2479	GETACCEL WM::USER.raw() + 108
2480	SETBASE WM::USER.raw() + 109
2481	GETBASE WM::USER.raw() + 110
2482	SETRANGE32 WM::USER.raw() + 111
2483	GETRANGE32 WM::USER.raw() + 112
2484	SETUNICODEFORMAT CCM::SETUNICODEFORMAT.0
2485	GETUNICODEFORMAT CCM::GETUNICODEFORMAT.0
2486	SETPOS32 WM::USER.raw() + 113
2487	GETPOS32 WM::USER.raw() + 114
2488}
2489
2490const_nm! { UDN;
2491	/// Up-down control `WM_NOTIFY`
2492	/// [notifications](https://learn.microsoft.com/en-us/windows/win32/controls/bumper-up-down-control-reference-notifications)
2493	/// (`i32`).
2494	=>
2495	DELTAPOS UDN_FIRST - 1
2496}
2497
2498const_ws! { UDS: u32;
2499	/// Up-down control
2500	/// [styles](https://learn.microsoft.com/en-us/windows/win32/controls/up-down-control-styles)
2501	/// (`u32`).
2502	=>
2503	/// None of the actual values (zero).
2504	NoValue 0
2505	/// Causes the position to "wrap" if it is incremented or decremented beyond
2506	/// the ending or beginning of the range.
2507	WRAP 0x0001
2508	/// Causes the up-down control to set the text of the buddy window (using
2509	/// the [`WM_SETTEXT`](crate::msg::wm::SetText) message) when the position
2510	/// changes. The text consists of the position formatted as a decimal or
2511	/// hexadecimal string.
2512	SETBUDDYINT 0x0002
2513	/// Positions the up-down control next to the right edge of the buddy
2514	/// window. The width of the buddy window is decreased to accommodate the
2515	/// width of the up-down control.
2516	ALIGNRIGHT 0x0004
2517	/// Positions the up-down control next to the left edge of the buddy window.
2518	/// The buddy window is moved to the right, and its width is decreased to
2519	/// accommodate the width of the up-down control.
2520	ALIGNLEFT 0x0008
2521	/// Automatically selects the previous window in the z-order as the up-down
2522	/// control's buddy window.
2523	AUTOBUDDY 0x0010
2524	/// Causes the up-down control to increment and decrement the position when
2525	/// the UP ARROW and DOWN ARROW keys are pressed.
2526	ARROWKEYS 0x0020
2527	/// Causes the up-down control's arrows to point left and right instead of
2528	/// up and down.
2529	HORZ 0x0040
2530	/// Does not insert a thousands separator between every three decimal
2531	/// digits.
2532	NOTHOUSANDS 0x0080
2533	/// Causes the control to exhibit "hot tracking" behavior. That is, it
2534	/// highlights the UP ARROW and DOWN ARROW on the control as the pointer
2535	/// passes over them.
2536	HOTTRACK 0x0100
2537}
2538
2539const_ordinary! { VK_DIR: u16;
2540	/// [`LVFINDINFO`](crate::LVFINDINFO) `vkDirection` (`u16`).
2541	=>
2542	PRIOR 0x21
2543	NEXT 0x22
2544	END 0x23
2545	HOME 0x24
2546	LEFT 0x25
2547	UP 0x26
2548	RIGHT 0x27
2549	DOWN 0x28
2550}