1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
use std::borrow::Cow;

pub fn win_msg_name(id: u32) -> Cow<'static, str> {
    match ID_TO_NAME.binary_search_by_key(&id, |&(id, _name)| id) {
        Ok(idx) => ID_TO_NAME[idx].1.into(),
        Err(_) => format!("WM_??? (0x{:04x})", id).into(),
    }
}

#[cfg(test)]
#[test]
fn test() {
    assert_eq!(win_msg_name(5), "WM_SIZE");
    assert_eq!(win_msg_name(0x9999), "WM_??? (0x9999)");
}

// generated by extract.py
const ID_TO_NAME: &[(u32, &str)] = &[
    (0x0000, "WM_NULL"),
    (0x0001, "WM_CREATE"),
    (0x0002, "WM_DESTROY"),
    (0x0003, "WM_MOVE"),
    (0x0005, "WM_SIZE"),
    (0x0006, "WM_ACTIVATE"),
    (0x0007, "WM_SETFOCUS"),
    (0x0008, "WM_KILLFOCUS"),
    (0x000a, "WM_ENABLE"),
    (0x000b, "WM_SETREDRAW"),
    (0x000c, "WM_SETTEXT"),
    (0x000d, "WM_GETTEXT"),
    (0x000e, "WM_GETTEXTLENGTH"),
    (0x000f, "WM_PAINT"),
    (0x0010, "WM_CLOSE"),
    (0x0011, "WM_QUERYENDSESSION"),
    (0x0012, "WM_QUIT"),
    (0x0013, "WM_QUERYOPEN"),
    (0x0014, "WM_ERASEBKGND"),
    (0x0015, "WM_SYSCOLORCHANGE"),
    (0x0016, "WM_ENDSESSION"),
    (0x0018, "WM_SHOWWINDOW"),
    (0x001a, "WM_WININICHANGE"),
    (0x001b, "WM_DEVMODECHANGE"),
    (0x001c, "WM_ACTIVATEAPP"),
    (0x001d, "WM_FONTCHANGE"),
    (0x001e, "WM_TIMECHANGE"),
    (0x001f, "WM_CANCELMODE"),
    (0x0020, "WM_SETCURSOR"),
    (0x0021, "WM_MOUSEACTIVATE"),
    (0x0022, "WM_CHILDACTIVATE"),
    (0x0023, "WM_QUEUESYNC"),
    (0x0024, "WM_GETMINMAXINFO"),
    (0x0026, "WM_PAINTICON"),
    (0x0027, "WM_ICONERASEBKGND"),
    (0x0028, "WM_NEXTDLGCTL"),
    (0x002a, "WM_SPOOLERSTATUS"),
    (0x002b, "WM_DRAWITEM"),
    (0x002c, "WM_MEASUREITEM"),
    (0x002d, "WM_DELETEITEM"),
    (0x002e, "WM_VKEYTOITEM"),
    (0x002f, "WM_CHARTOITEM"),
    (0x0030, "WM_SETFONT"),
    (0x0031, "WM_GETFONT"),
    (0x0032, "WM_SETHOTKEY"),
    (0x0033, "WM_GETHOTKEY"),
    (0x0037, "WM_QUERYDRAGICON"),
    (0x0039, "WM_COMPAREITEM"),
    (0x003d, "WM_GETOBJECT"),
    (0x0041, "WM_COMPACTING"),
    (0x0046, "WM_WINDOWPOSCHANGING"),
    (0x0047, "WM_WINDOWPOSCHANGED"),
    (0x0048, "WM_POWER"),
    (0x004a, "WM_COPYDATA"),
    (0x004b, "WM_CANCELJOURNAL"),
    (0x004e, "WM_NOTIFY"),
    (0x0050, "WM_INPUTLANGCHANGEREQUEST"),
    (0x0051, "WM_INPUTLANGCHANGE"),
    (0x0052, "WM_TCARD"),
    (0x0053, "WM_HELP"),
    (0x0054, "WM_USERCHANGED"),
    (0x0055, "WM_NOTIFYFORMAT"),
    (0x007b, "WM_CONTEXTMENU"),
    (0x007c, "WM_STYLECHANGING"),
    (0x007d, "WM_STYLECHANGED"),
    (0x007e, "WM_DISPLAYCHANGE"),
    (0x007f, "WM_GETICON"),
    (0x0080, "WM_SETICON"),
    (0x0081, "WM_NCCREATE"),
    (0x0082, "WM_NCDESTROY"),
    (0x0083, "WM_NCCALCSIZE"),
    (0x0084, "WM_NCHITTEST"),
    (0x0085, "WM_NCPAINT"),
    (0x0086, "WM_NCACTIVATE"),
    (0x0087, "WM_GETDLGCODE"),
    (0x0088, "WM_SYNCPAINT"),
    (0x00a0, "WM_NCMOUSEMOVE"),
    (0x00a1, "WM_NCLBUTTONDOWN"),
    (0x00a2, "WM_NCLBUTTONUP"),
    (0x00a3, "WM_NCLBUTTONDBLCLK"),
    (0x00a4, "WM_NCRBUTTONDOWN"),
    (0x00a5, "WM_NCRBUTTONUP"),
    (0x00a6, "WM_NCRBUTTONDBLCLK"),
    (0x00a7, "WM_NCMBUTTONDOWN"),
    (0x00a8, "WM_NCMBUTTONUP"),
    (0x00a9, "WM_NCMBUTTONDBLCLK"),
    (0x00ab, "WM_NCXBUTTONDOWN"),
    (0x00ac, "WM_NCXBUTTONUP"),
    (0x00ad, "WM_NCXBUTTONDBLCLK"),
    (0x00fe, "WM_INPUT_DEVICE_CHANGE"),
    (0x00ff, "WM_INPUT"),
    (0x0100, "WM_KEYDOWN"),
    (0x0101, "WM_KEYUP"),
    (0x0102, "WM_CHAR"),
    (0x0103, "WM_DEADCHAR"),
    (0x0104, "WM_SYSKEYDOWN"),
    (0x0105, "WM_SYSKEYUP"),
    (0x0106, "WM_SYSCHAR"),
    (0x0107, "WM_SYSDEADCHAR"),
    (0x0109, "WM_UNICHAR"),
    (0x010d, "WM_IME_STARTCOMPOSITION"),
    (0x010e, "WM_IME_ENDCOMPOSITION"),
    (0x010f, "WM_IME_COMPOSITION"),
    (0x0110, "WM_INITDIALOG"),
    (0x0111, "WM_COMMAND"),
    (0x0112, "WM_SYSCOMMAND"),
    (0x0113, "WM_TIMER"),
    (0x0114, "WM_HSCROLL"),
    (0x0115, "WM_VSCROLL"),
    (0x0116, "WM_INITMENU"),
    (0x0117, "WM_INITMENUPOPUP"),
    (0x0119, "WM_GESTURE"),
    (0x011a, "WM_GESTURENOTIFY"),
    (0x011f, "WM_MENUSELECT"),
    (0x0120, "WM_MENUCHAR"),
    (0x0121, "WM_ENTERIDLE"),
    (0x0122, "WM_MENURBUTTONUP"),
    (0x0123, "WM_MENUDRAG"),
    (0x0124, "WM_MENUGETOBJECT"),
    (0x0125, "WM_UNINITMENUPOPUP"),
    (0x0126, "WM_MENUCOMMAND"),
    (0x0127, "WM_CHANGEUISTATE"),
    (0x0128, "WM_UPDATEUISTATE"),
    (0x0129, "WM_QUERYUISTATE"),
    (0x0132, "WM_CTLCOLORMSGBOX"),
    (0x0133, "WM_CTLCOLOREDIT"),
    (0x0134, "WM_CTLCOLORLISTBOX"),
    (0x0135, "WM_CTLCOLORBTN"),
    (0x0136, "WM_CTLCOLORDLG"),
    (0x0137, "WM_CTLCOLORSCROLLBAR"),
    (0x0138, "WM_CTLCOLORSTATIC"),
    (0x0200, "WM_MOUSEMOVE"),
    (0x0201, "WM_LBUTTONDOWN"),
    (0x0202, "WM_LBUTTONUP"),
    (0x0203, "WM_LBUTTONDBLCLK"),
    (0x0204, "WM_RBUTTONDOWN"),
    (0x0205, "WM_RBUTTONUP"),
    (0x0206, "WM_RBUTTONDBLCLK"),
    (0x0207, "WM_MBUTTONDOWN"),
    (0x0208, "WM_MBUTTONUP"),
    (0x0209, "WM_MBUTTONDBLCLK"),
    (0x020a, "WM_MOUSEWHEEL"),
    (0x020b, "WM_XBUTTONDOWN"),
    (0x020c, "WM_XBUTTONUP"),
    (0x020d, "WM_XBUTTONDBLCLK"),
    (0x020e, "WM_MOUSEHWHEEL"),
    (0x0210, "WM_PARENTNOTIFY"),
    (0x0211, "WM_ENTERMENULOOP"),
    (0x0212, "WM_EXITMENULOOP"),
    (0x0213, "WM_NEXTMENU"),
    (0x0214, "WM_SIZING"),
    (0x0215, "WM_CAPTURECHANGED"),
    (0x0216, "WM_MOVING"),
    (0x0218, "WM_POWERBROADCAST"),
    (0x0219, "WM_DEVICECHANGE"),
    (0x0220, "WM_MDICREATE"),
    (0x0221, "WM_MDIDESTROY"),
    (0x0222, "WM_MDIACTIVATE"),
    (0x0223, "WM_MDIRESTORE"),
    (0x0224, "WM_MDINEXT"),
    (0x0225, "WM_MDIMAXIMIZE"),
    (0x0226, "WM_MDITILE"),
    (0x0227, "WM_MDICASCADE"),
    (0x0228, "WM_MDIICONARRANGE"),
    (0x0229, "WM_MDIGETACTIVE"),
    (0x0230, "WM_MDISETMENU"),
    (0x0231, "WM_ENTERSIZEMOVE"),
    (0x0232, "WM_EXITSIZEMOVE"),
    (0x0233, "WM_DROPFILES"),
    (0x0234, "WM_MDIREFRESHMENU"),
    (0x0238, "WM_POINTERDEVICECHANGE"),
    (0x0239, "WM_POINTERDEVICEINRANGE"),
    (0x023a, "WM_POINTERDEVICEOUTOFRANGE"),
    (0x0240, "WM_TOUCH"),
    (0x0241, "WM_NCPOINTERUPDATE"),
    (0x0242, "WM_NCPOINTERDOWN"),
    (0x0243, "WM_NCPOINTERUP"),
    (0x0245, "WM_POINTERUPDATE"),
    (0x0246, "WM_POINTERDOWN"),
    (0x0247, "WM_POINTERUP"),
    (0x0249, "WM_POINTERENTER"),
    (0x024a, "WM_POINTERLEAVE"),
    (0x024b, "WM_POINTERACTIVATE"),
    (0x024c, "WM_POINTERCAPTURECHANGED"),
    (0x024d, "WM_TOUCHHITTESTING"),
    (0x024e, "WM_POINTERWHEEL"),
    (0x024f, "WM_POINTERHWHEEL"),
    (0x0281, "WM_IME_SETCONTEXT"),
    (0x0282, "WM_IME_NOTIFY"),
    (0x0283, "WM_IME_CONTROL"),
    (0x0284, "WM_IME_COMPOSITIONFULL"),
    (0x0285, "WM_IME_SELECT"),
    (0x0286, "WM_IME_CHAR"),
    (0x0288, "WM_IME_REQUEST"),
    (0x0290, "WM_IME_KEYDOWN"),
    (0x0291, "WM_IME_KEYUP"),
    (0x02a0, "WM_NCMOUSEHOVER"),
    (0x02a1, "WM_MOUSEHOVER"),
    (0x02a2, "WM_NCMOUSELEAVE"),
    (0x02a3, "WM_MOUSELEAVE"),
    (0x02b1, "WM_WTSSESSION_CHANGE"),
    (0x02c0, "WM_TABLET_FIRST"),
    (0x02df, "WM_TABLET_LAST"),
    (0x02e0, "WM_DPICHANGED"),
    (0x0300, "WM_CUT"),
    (0x0301, "WM_COPY"),
    (0x0302, "WM_PASTE"),
    (0x0303, "WM_CLEAR"),
    (0x0304, "WM_UNDO"),
    (0x0305, "WM_RENDERFORMAT"),
    (0x0306, "WM_RENDERALLFORMATS"),
    (0x0307, "WM_DESTROYCLIPBOARD"),
    (0x0308, "WM_DRAWCLIPBOARD"),
    (0x0309, "WM_PAINTCLIPBOARD"),
    (0x030a, "WM_VSCROLLCLIPBOARD"),
    (0x030b, "WM_SIZECLIPBOARD"),
    (0x030c, "WM_ASKCBFORMATNAME"),
    (0x030d, "WM_CHANGECBCHAIN"),
    (0x030e, "WM_HSCROLLCLIPBOARD"),
    (0x030f, "WM_QUERYNEWPALETTE"),
    (0x0310, "WM_PALETTEISCHANGING"),
    (0x0311, "WM_PALETTECHANGED"),
    (0x0312, "WM_HOTKEY"),
    (0x0317, "WM_PRINT"),
    (0x0318, "WM_PRINTCLIENT"),
    (0x0319, "WM_APPCOMMAND"),
    (0x031a, "WM_THEMECHANGED"),
    (0x031d, "WM_CLIPBOARDUPDATE"),
    (0x031e, "WM_DWMCOMPOSITIONCHANGED"),
    (0x031f, "WM_DWMNCRENDERINGCHANGED"),
    (0x0320, "WM_DWMCOLORIZATIONCOLORCHANGED"),
    (0x0321, "WM_DWMWINDOWMAXIMIZEDCHANGE"),
    (0x0323, "WM_DWMSENDICONICTHUMBNAIL"),
    (0x0326, "WM_DWMSENDICONICLIVEPREVIEWBITMAP"),
    (0x033f, "WM_GETTITLEBARINFOEX"),
    (0x0358, "WM_HANDHELDFIRST"),
    (0x035f, "WM_HANDHELDLAST"),
    (0x0360, "WM_AFXFIRST"),
    (0x037f, "WM_AFXLAST"),
    (0x0380, "WM_PENWINFIRST"),
    (0x038f, "WM_PENWINLAST"),
    (0x0400, "WM_USER"),
    (0x8000, "WM_APP"),
];