xref: /reactos/sdk/include/reactos/msgdump.h (revision f04935d8)
1 /*
2  * PROJECT:     ReactOS header files
3  * LICENSE:     CC-BY-4.0 (https://spdx.org/licenses/CC-BY-4.0.html)
4  * PURPOSE:     Win32API message dumping
5  * COPYRIGHT:   Copyright 2018 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
6  */
7 #ifndef _INC_MSGDUMP
8 #define _INC_MSGDUMP
9 
10 /*
11  * NOTE: MD_msgdump function in this file provides Win32API message dump feature.
12  * NOTE: This header file takes time to compile.
13  *       You might indirectly use MD_msgdump function.
14  */
15 #pragma once
16 
17 #include "winxx.h"      /* An unofficial extension of <windowsx.h>. */
18 #include <strsafe.h>
19 
20 #ifndef MSGDUMP_TPRINTF
21     #error Please define MSGDUMP_TPRINTF macro before #include "msgdump.h".
22 #endif
23 
24 #ifndef MSGDUMP_API
25     #define MSGDUMP_API  WINAPI
26 #endif
27 
28 #ifndef MSGDUMP_PREFIX
29     #define MSGDUMP_PREFIX ""
30 #endif
31 
32 /* MD_msgdump function */
33 static __inline LRESULT MSGDUMP_API
34 MD_msgdump(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
35 
36 /* MD_msgresult function */
37 static __inline LRESULT MSGDUMP_API
38 MD_msgresult(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT lResult);
39 
40 /*---- The below codes are boring details of MD_msgdump and MD_msgresult implementation. ----*/
41 
42 #define MSGDUMP_MAX_RECT_TEXT   64
43 
44 static __inline const TCHAR * MSGDUMP_API
45 MD_rect_text(TCHAR *buf, size_t bufsize, const RECT *prc)
46 {
47     if (prc == NULL)
48     {
49         StringCbCopy(buf, bufsize, TEXT("(null)"));
50     }
51     else
52     {
53         StringCbPrintf(buf, bufsize, TEXT("(%ld, %ld, %ld, %ld)"),
54                        prc->left, prc->top, prc->right, prc->bottom);
55     }
56     return buf;
57 }
58 
59 static __inline LRESULT MSGDUMP_API
60 MD_OnUnknown(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
61 {
62     MSGDUMP_TPRINTF(TEXT("%sWM_%u(hwnd:%p, wParam:%p, lParam:%p)\n"),
63                     MSGDUMP_PREFIX, uMsg, (void *)hwnd, (void *)wParam, (void *)lParam);
64     return 0;
65 }
66 
67 static __inline LRESULT MSGDUMP_API
68 MD_OnUser(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
69 {
70     MSGDUMP_TPRINTF(TEXT("%sWM_USER+%u(hwnd:%p, wParam:%p, lParam:%p)\n"),
71                     MSGDUMP_PREFIX, uMsg - WM_USER, (void *)hwnd, (void *)wParam, (void *)lParam);
72     return 0;
73 }
74 
75 static __inline LRESULT MSGDUMP_API
76 MD_OnApp(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
77 {
78     MSGDUMP_TPRINTF(TEXT("%sWM_APP+%u(hwnd:%p, wParam:%p, lParam:%p)\n"),
79                     MSGDUMP_PREFIX, uMsg - WM_APP, (void *)hwnd, (void *)wParam, (void *)lParam);
80     return 0;
81 }
82 
83 static __inline LRESULT MSGDUMP_API
84 MD_OnNull(HWND hwnd)
85 {
86     MSGDUMP_TPRINTF(TEXT("%sWM_NULL(hwnd:%p)\n"),
87                     MSGDUMP_PREFIX, (void *)hwnd);
88     return 0;
89 }
90 
91 static __inline BOOL MSGDUMP_API
92 MD_OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct)
93 {
94     MSGDUMP_TPRINTF(TEXT("%sWM_CREATE(hwnd:%p, lpCreateStruct:%p)\n"),
95                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpCreateStruct);
96     return TRUE;
97 }
98 
99 static __inline void MSGDUMP_API
100 MD_OnDestroy(HWND hwnd)
101 {
102     MSGDUMP_TPRINTF(TEXT("%sWM_DESTROY(hwnd:%p)\n"),
103                     MSGDUMP_PREFIX, (void *)hwnd);
104 }
105 
106 static __inline void MSGDUMP_API
107 MD_OnMove(HWND hwnd, int x, int y)
108 {
109     MSGDUMP_TPRINTF(TEXT("%sWM_MOVE(hwnd:%p, x:%d, y:%d)\n"),
110                     MSGDUMP_PREFIX, (void *)hwnd, x, y);
111 }
112 
113 static __inline void MSGDUMP_API
114 MD_OnSize(HWND hwnd, UINT state, int cx, int cy)
115 {
116     MSGDUMP_TPRINTF(TEXT("%sWM_SIZE(hwnd:%p, state:%u, cx:%d, cy:%d)\n"),
117                     MSGDUMP_PREFIX, (void *)hwnd, state, cx, cy);
118 }
119 
120 static __inline void MSGDUMP_API
121 MD_OnActivate(HWND hwnd, UINT state, HWND hwndActDeact, BOOL fMinimized)
122 {
123     MSGDUMP_TPRINTF(TEXT("%sWM_ACTIVATE(hwnd:%p, state:%u, hwndActDeact:%p, fMinimized:%d)\n"),
124                     MSGDUMP_PREFIX, (void *)hwnd, state, (void *)hwndActDeact, fMinimized);
125 }
126 
127 static __inline void MSGDUMP_API
128 MD_OnSetFocus(HWND hwnd, HWND hwndOldFocus)
129 {
130     MSGDUMP_TPRINTF(TEXT("%sWM_SETFOCUS(hwnd:%p, hwndOldFocus:%p)\n"),
131                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndOldFocus);
132 }
133 
134 static __inline void MSGDUMP_API
135 MD_OnKillFocus(HWND hwnd, HWND hwndNewFocus)
136 {
137     MSGDUMP_TPRINTF(TEXT("%sWM_KILLFOCUS(hwnd:%p, hwndNewFocus:%p)\n"),
138                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndNewFocus);
139 }
140 
141 static __inline void MSGDUMP_API
142 MD_OnEnable(HWND hwnd, BOOL fEnable)
143 {
144     MSGDUMP_TPRINTF(TEXT("%sWM_ENABLE(hwnd:%p, fEnable:%d)\n"),
145                     MSGDUMP_PREFIX, (void *)hwnd, fEnable);
146 }
147 
148 static __inline void MSGDUMP_API
149 MD_OnSetRedraw(HWND hwnd, BOOL fRedraw)
150 {
151     MSGDUMP_TPRINTF(TEXT("%sWM_SETREDRAW(hwnd:%p, fRedraw:%d)\n"),
152                     MSGDUMP_PREFIX, (void *)hwnd, fRedraw);
153 }
154 
155 static __inline void MSGDUMP_API
156 MD_OnSetText(HWND hwnd, LPCTSTR lpszText)
157 {
158     if (IsWindowUnicode(hwnd))
159         MSGDUMP_TPRINTF(TEXT("%sWM_SETTEXT(hwnd:%p, lpszText:%ls)\n"),
160                         MSGDUMP_PREFIX, (void *)hwnd, (LPCWSTR)lpszText);
161     else
162         MSGDUMP_TPRINTF(TEXT("%sWM_SETTEXT(hwnd:%p, lpszText:%hs)\n"),
163                         MSGDUMP_PREFIX, (void *)hwnd, (LPCSTR)lpszText);
164 }
165 
166 static __inline INT MSGDUMP_API
167 MD_OnGetText(HWND hwnd, int cchTextMax, LPTSTR lpszText)
168 {
169     MSGDUMP_TPRINTF(TEXT("%sWM_GETTEXT(hwnd:%p, cchTextMax:%d, lpszText:%p)\n"),
170                     MSGDUMP_PREFIX, (void *)hwnd, cchTextMax, (void *)lpszText);
171     return 0;
172 }
173 
174 static __inline INT MSGDUMP_API
175 MD_OnGetTextLength(HWND hwnd)
176 {
177     MSGDUMP_TPRINTF(TEXT("%sWM_GETTEXTLENGTH(hwnd:%p)\n"),
178                     MSGDUMP_PREFIX, (void *)hwnd);
179     return 0;
180 }
181 
182 static __inline void MSGDUMP_API
183 MD_OnPaint(HWND hwnd)
184 {
185     MSGDUMP_TPRINTF(TEXT("%sWM_PAINT(hwnd:%p)\n"),
186                     MSGDUMP_PREFIX, (void *)hwnd);
187 }
188 
189 static __inline void MSGDUMP_API
190 MD_OnClose(HWND hwnd)
191 {
192     MSGDUMP_TPRINTF(TEXT("%sWM_CLOSE(hwnd:%p)\n"),
193                     MSGDUMP_PREFIX, (void *)hwnd);
194 }
195 
196 static __inline BOOL MSGDUMP_API
197 MD_OnQueryEndSession(HWND hwnd)
198 {
199     MSGDUMP_TPRINTF(TEXT("%sWM_QUERYENDSESSION(hwnd:%p)\n"),
200                     MSGDUMP_PREFIX, (void *)hwnd);
201     return FALSE;
202 }
203 
204 static __inline BOOL MSGDUMP_API
205 MD_OnQueryOpen(HWND hwnd)
206 {
207     MSGDUMP_TPRINTF(TEXT("%sWM_QUERYOPEN(hwnd:%p)\n"),
208                     MSGDUMP_PREFIX, (void *)hwnd);
209     return FALSE;
210 }
211 
212 static __inline void MSGDUMP_API
213 MD_OnEndSession(HWND hwnd, BOOL fEnding)
214 {
215     MSGDUMP_TPRINTF(TEXT("%sWM_ENDSESSION(hwnd:%p, fEnding:%d)\n"),
216                     MSGDUMP_PREFIX, (void *)hwnd, fEnding);
217 }
218 
219 static __inline void MSGDUMP_API
220 MD_OnQuit(HWND hwnd, int exitCode)
221 {
222     MSGDUMP_TPRINTF(TEXT("%sWM_QUIT(hwnd:%p, exitCode:%d)\n"),
223                     MSGDUMP_PREFIX, (void *)hwnd, exitCode);
224 }
225 
226 static __inline BOOL MSGDUMP_API
227 MD_OnEraseBkgnd(HWND hwnd, HDC hdc)
228 {
229     MSGDUMP_TPRINTF(TEXT("%sWM_ERASEBKGND(hwnd:%p, hdc:%p)\n"),
230                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hdc);
231     return FALSE;
232 }
233 
234 static __inline void MSGDUMP_API
235 MD_OnSysColorChange(HWND hwnd)
236 {
237     MSGDUMP_TPRINTF(TEXT("%sWM_SYSCOLORCHANGE(hwnd:%p)\n"),
238                     MSGDUMP_PREFIX, (void *)hwnd);
239 }
240 
241 static __inline void MSGDUMP_API
242 MD_OnShowWindow(HWND hwnd, BOOL fShow, UINT status)
243 {
244     MSGDUMP_TPRINTF(TEXT("%sWM_SHOWWINDOW(hwnd:%p, fShow:%d, status:%u)\n"),
245                     MSGDUMP_PREFIX, (void *)hwnd, fShow, status);
246 }
247 
248 static __inline void MSGDUMP_API
249 MD_OnWinIniChange(HWND hwnd, LPCTSTR lpszSectionName)
250 {
251     if (IsWindowUnicode(hwnd))
252         MSGDUMP_TPRINTF(TEXT("%sWM_WININICHANGE(hwnd:%p, lpszSectionName:%ls)\n"),
253                         MSGDUMP_PREFIX, (void *)hwnd, (LPCWSTR)lpszSectionName);
254     else
255         MSGDUMP_TPRINTF(TEXT("%sWM_WININICHANGE(hwnd:%p, lpszSectionName:%hs)\n"),
256                         MSGDUMP_PREFIX, (void *)hwnd, (LPCSTR)lpszSectionName);
257 }
258 
259 static __inline void MSGDUMP_API
260 MD_OnSettingChange(HWND hwnd, WPARAM wParam, LPARAM lParam)
261 {
262     MSGDUMP_TPRINTF(TEXT("%sWM_SETTINGCHANGE(hwnd:%p)\n"),
263                     MSGDUMP_PREFIX, (void *)hwnd);
264 }
265 
266 static __inline void MSGDUMP_API
267 MD_OnDevModeChange(HWND hwnd, LPCTSTR lpszDeviceName)
268 {
269     if (IsWindowUnicode(hwnd))
270         MSGDUMP_TPRINTF(TEXT("%sWM_DEVMODECHANGE(hwnd:%p, lpszDeviceName:%ls)\n"),
271                         MSGDUMP_PREFIX, (void *)hwnd, (LPCWSTR)lpszDeviceName);
272     else
273         MSGDUMP_TPRINTF(TEXT("%sWM_DEVMODECHANGE(hwnd:%p, lpszDeviceName:%hs)\n"),
274                         MSGDUMP_PREFIX, (void *)hwnd, (LPCSTR)lpszDeviceName);
275 }
276 
277 static __inline void MSGDUMP_API
278 MD_OnActivateApp(HWND hwnd, BOOL fActivate, DWORD dwThreadId)
279 {
280     MSGDUMP_TPRINTF(TEXT("%sWM_ACTIVATEAPP(hwnd:%p, fActivate:%d, dwThreadId:0x%08lX)\n"),
281                     MSGDUMP_PREFIX, (void *)hwnd, fActivate, dwThreadId);
282 }
283 
284 static __inline void MSGDUMP_API
285 MD_OnFontChange(HWND hwnd)
286 {
287     MSGDUMP_TPRINTF(TEXT("%sWM_FONTCHANGE(hwnd:%p)\n"),
288                     MSGDUMP_PREFIX, (void *)hwnd);
289 }
290 
291 static __inline void MSGDUMP_API
292 MD_OnTimeChange(HWND hwnd)
293 {
294     MSGDUMP_TPRINTF(TEXT("%sWM_TIMECHANGE(hwnd:%p)\n"),
295                     MSGDUMP_PREFIX, (void *)hwnd);
296 }
297 
298 static __inline void MSGDUMP_API
299 MD_OnCancelMode(HWND hwnd)
300 {
301     MSGDUMP_TPRINTF(TEXT("%sWM_CANCELMODE(hwnd:%p)\n"),
302                     MSGDUMP_PREFIX, (void *)hwnd);
303 }
304 
305 static __inline BOOL MSGDUMP_API
306 MD_OnSetCursor(HWND hwnd, HWND hwndCursor, UINT codeHitTest, UINT msg)
307 {
308     MSGDUMP_TPRINTF(TEXT("%sWM_SETCURSOR(hwnd:%p, hwndCursor:%p, codeHitTest:%u, msg:%u)\n"),
309                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndCursor, codeHitTest, msg);
310     return FALSE;
311 }
312 
313 static __inline int MSGDUMP_API
314 MD_OnMouseActivate(HWND hwnd, HWND hwndTopLevel, UINT codeHitTest, UINT msg)
315 {
316     MSGDUMP_TPRINTF(TEXT("%sWM_MOUSEACTIVATE(hwnd:%p, hwndTopLevel:%p, codeHitTest:%u, msg:%u)\n"),
317                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndTopLevel, codeHitTest, msg);
318     return 0;
319 }
320 
321 static __inline void MSGDUMP_API
322 MD_OnChildActivate(HWND hwnd)
323 {
324     MSGDUMP_TPRINTF(TEXT("%sWM_CHILDACTIVATE(hwnd:%p)\n"),
325                     MSGDUMP_PREFIX, (void *)hwnd);
326 }
327 
328 static __inline void MSGDUMP_API
329 MD_OnQueueSync(HWND hwnd)
330 {
331     MSGDUMP_TPRINTF(TEXT("%sWM_QUEUESYNC(hwnd:%p)\n"),
332                     MSGDUMP_PREFIX, (void *)hwnd);
333 }
334 
335 static __inline void MSGDUMP_API
336 MD_OnGetMinMaxInfo(HWND hwnd, LPMINMAXINFO lpMinMaxInfo)
337 {
338     MSGDUMP_TPRINTF(TEXT("%sWM_GETMINMAXINFO(hwnd:%p, lpMinMaxInfo:%p)\n"),
339                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpMinMaxInfo);
340 }
341 
342 static __inline BOOL MSGDUMP_API
343 MD_OnIconEraseBkgnd(HWND hwnd, HDC hdc)
344 {
345     MSGDUMP_TPRINTF(TEXT("%sWM_ICONERASEBKGND(hwnd:%p, hdc:%p)\n"),
346                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hdc);
347     return FALSE;
348 }
349 
350 static __inline HWND MSGDUMP_API
351 MD_OnNextDlgCtl(HWND hwnd, HWND hwndSetFocus, BOOL fNext)
352 {
353     MSGDUMP_TPRINTF(TEXT("%sWM_NEXTDLGCTL(hwnd:%p, hwndSetFocus:%p, fNext:%d)\n"),
354                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndSetFocus, fNext);
355     return NULL;
356 }
357 
358 static __inline void MSGDUMP_API
359 MD_OnSpoolerStatus(HWND hwnd, UINT status, int cJobInQueue)
360 {
361     MSGDUMP_TPRINTF(TEXT("%sWM_SPOOLERSTATUS(hwnd:%p, status:%u, cJobInQueue:%d)\n"),
362                     MSGDUMP_PREFIX, (void *)hwnd, status, cJobInQueue);
363 }
364 
365 static __inline void MSGDUMP_API
366 MD_OnDrawItem(HWND hwnd, const DRAWITEMSTRUCT * lpDrawItem)
367 {
368     MSGDUMP_TPRINTF(TEXT("%sWM_DRAWITEM(hwnd:%p, lpDrawItem:%p)\n"),
369                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpDrawItem);
370 }
371 
372 static __inline void MSGDUMP_API
373 MD_OnMeasureItem(HWND hwnd, MEASUREITEMSTRUCT * lpMeasureItem)
374 {
375     MSGDUMP_TPRINTF(TEXT("%sWM_MEASUREITEM(hwnd:%p, lpMeasureItem:%p)\n"),
376                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpMeasureItem);
377 }
378 
379 static __inline void MSGDUMP_API
380 MD_OnDeleteItem(HWND hwnd, const DELETEITEMSTRUCT * lpDeleteItem)
381 {
382     MSGDUMP_TPRINTF(TEXT("%sWM_DELETEITEM(hwnd:%p, lpDeleteItem:%p)\n"),
383                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpDeleteItem);
384 }
385 
386 static __inline int MSGDUMP_API
387 MD_OnVkeyToItem(HWND hwnd, UINT vk, HWND hwndListbox, int iCaret)
388 {
389     MSGDUMP_TPRINTF(TEXT("%sWM_VKEYTOITEM(hwnd:%p, vk:%u, hwndListbox:%p, iCaret:%d)\n"),
390                     MSGDUMP_PREFIX, (void *)hwnd, vk, (void *)hwndListbox, iCaret);
391     return 0;
392 }
393 
394 static __inline int MSGDUMP_API
395 MD_OnCharToItem(HWND hwnd, UINT ch, HWND hwndListbox, int iCaret)
396 {
397     MSGDUMP_TPRINTF(TEXT("%sWM_CHARTOITEM(hwnd:%p, ch:%u, hwndListbox:%p, iCaret:%d)\n"),
398                     MSGDUMP_PREFIX, (void *)hwnd, ch, (void *)hwndListbox, iCaret);
399     return 0;
400 }
401 
402 static __inline void MSGDUMP_API
403 MD_OnSetFont(HWND hwnd, HFONT hfont, BOOL fRedraw)
404 {
405     MSGDUMP_TPRINTF(TEXT("%sWM_SETFONT(hwnd:%p, hfont:%p, fRedraw:%d)\n"),
406                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hfont, fRedraw);
407 }
408 
409 static __inline HFONT MSGDUMP_API
410 MD_OnGetFont(HWND hwnd)
411 {
412     MSGDUMP_TPRINTF(TEXT("%sWM_GETFONT(hwnd:%p)\n"),
413                     MSGDUMP_PREFIX, (void *)hwnd);
414     return NULL;
415 }
416 
417 static __inline HICON MSGDUMP_API
418 MD_OnQueryDragIcon(HWND hwnd)
419 {
420     MSGDUMP_TPRINTF(TEXT("%sWM_QUERYDRAGICON(hwnd:%p)\n"),
421                     MSGDUMP_PREFIX, (void *)hwnd);
422     return NULL;
423 }
424 
425 static __inline int MSGDUMP_API
426 MD_OnCompareItem(HWND hwnd, const COMPAREITEMSTRUCT * lpCompareItem)
427 {
428     MSGDUMP_TPRINTF(TEXT("%sWM_COMPAREITEM(hwnd:%p, lpCompareItem:%p)\n"),
429                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpCompareItem);
430     return 0;
431 }
432 
433 static __inline void MSGDUMP_API
434 MD_OnCompacting(HWND hwnd, UINT compactRatio)
435 {
436     MSGDUMP_TPRINTF(TEXT("%sWM_COMPACTING(hwnd:%p, compactRatio:%u)\n"),
437                     MSGDUMP_PREFIX, (void *)hwnd, compactRatio);
438 }
439 
440 static __inline void MSGDUMP_API
441 MD_OnCommNotify(HWND hwnd, int cid, UINT flags)
442 {
443     MSGDUMP_TPRINTF(TEXT("%sWM_COMMNOTIFY(hwnd:%p, cid:%d, flags:%u)\n"),
444                     MSGDUMP_PREFIX, (void *)hwnd, cid, flags);
445 }
446 
447 static __inline BOOL MSGDUMP_API
448 MD_OnWindowPosChanging(HWND hwnd, LPWINDOWPOS lpwpos)
449 {
450     MSGDUMP_TPRINTF(TEXT("%sWM_WINDOWPOSCHANGING(hwnd:%p, lpwpos:%p)\n"),
451                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpwpos);
452     return FALSE;
453 }
454 
455 static __inline void MSGDUMP_API
456 MD_OnWindowPosChanged(HWND hwnd, const LPWINDOWPOS lpwpos)
457 {
458     MSGDUMP_TPRINTF(TEXT("%sWM_WINDOWPOSCHANGED(hwnd:%p, lpwpos:%p)\n"),
459                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpwpos);
460 }
461 
462 static __inline void MSGDUMP_API
463 MD_OnPower(HWND hwnd, int code)
464 {
465     MSGDUMP_TPRINTF(TEXT("%sWM_POWER(hwnd:%p, code:%d)\n"),
466                     MSGDUMP_PREFIX, (void *)hwnd, code);
467 }
468 
469 static __inline BOOL MSGDUMP_API
470 MD_OnCopyData(HWND hwnd, HWND hwndFrom, PCOPYDATASTRUCT pcds)
471 {
472     MSGDUMP_TPRINTF(TEXT("%sWM_COPYDATA(hwnd:%p, hwndFrom:%p, pcds:%p)\n"),
473                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndFrom, (void *)pcds);
474     return FALSE;
475 }
476 
477 static __inline LRESULT MSGDUMP_API
478 MD_OnNotify(HWND hwnd, int idFrom, LPNMHDR pnmhdr)
479 {
480     MSGDUMP_TPRINTF(TEXT("%sWM_NOTIFY(hwnd:%p, idFrom:%d, pnmhdr:%p)\n"),
481                     MSGDUMP_PREFIX, (void *)hwnd, idFrom, (void *)pnmhdr);
482     return 0;
483 }
484 
485 static __inline void MSGDUMP_API
486 MD_OnContextMenu(HWND hwnd, HWND hwndContext, UINT xPos, UINT yPos)
487 {
488     MSGDUMP_TPRINTF(TEXT("%sWM_CONTEXTMENU(hwnd:%p, hwndContext:%p, xPos:%u, yPos:%u)\n"),
489                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndContext, xPos, yPos);
490 }
491 
492 static __inline void MSGDUMP_API
493 MD_OnDisplayChange(HWND hwnd, UINT bitsPerPixel, UINT cxScreen, UINT cyScreen)
494 {
495     MSGDUMP_TPRINTF(TEXT("%sWM_DISPLAYCHANGE(hwnd:%p, bitsPerPixel:%u, cxScreen:%u, cyScreen:%u)\n"),
496                     MSGDUMP_PREFIX, (void *)hwnd, bitsPerPixel, cxScreen, cyScreen);
497 }
498 
499 static __inline BOOL MSGDUMP_API
500 MD_OnNCCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct)
501 {
502     MSGDUMP_TPRINTF(TEXT("%sWM_NCCREATE(hwnd:%p, lpCreateStruct:%p)\n"),
503                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpCreateStruct);
504     return FALSE;
505 }
506 
507 static __inline void MSGDUMP_API
508 MD_OnNCDestroy(HWND hwnd)
509 {
510     MSGDUMP_TPRINTF(TEXT("%sWM_NCDESTROY(hwnd:%p)\n"),
511                     MSGDUMP_PREFIX, (void *)hwnd);
512 }
513 
514 static __inline UINT MSGDUMP_API
515 MD_OnNCCalcSize(HWND hwnd, BOOL fCalcValidRects, NCCALCSIZE_PARAMS * lpcsp)
516 {
517     MSGDUMP_TPRINTF(TEXT("%sWM_NCCALCSIZE(hwnd:%p, fCalcValidRects:%d, lpcsp:%p)\n"),
518                     MSGDUMP_PREFIX, (void *)hwnd, fCalcValidRects, (void *)lpcsp);
519     return 0;
520 }
521 
522 static __inline UINT MSGDUMP_API
523 MD_OnNCHitTest(HWND hwnd, int x, int y)
524 {
525     MSGDUMP_TPRINTF(TEXT("%sWM_NCHITTEST(hwnd:%p, x:%d, y:%d)\n"),
526                     MSGDUMP_PREFIX, (void *)hwnd, x, y);
527     return 0;
528 }
529 
530 static __inline void MSGDUMP_API
531 MD_OnNCPaint(HWND hwnd, HRGN hrgn)
532 {
533     MSGDUMP_TPRINTF(TEXT("%sWM_NCPAINT(hwnd:%p, hrgn:%p)\n"),
534                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hrgn);
535 }
536 
537 static __inline BOOL MSGDUMP_API
538 MD_OnNCActivate(HWND hwnd, BOOL fActive, HWND hwndActDeact, BOOL fMinimized)
539 {
540     MSGDUMP_TPRINTF(TEXT("%sWM_NCACTIVATE(hwnd:%p, fActive:%d, hwndActDeact:%p, fMinimized:%d)\n"),
541                     MSGDUMP_PREFIX, (void *)hwnd, fActive, (void *)hwndActDeact, fMinimized);
542     return FALSE;
543 }
544 
545 static __inline UINT MSGDUMP_API
546 MD_OnGetDlgCode(HWND hwnd, LPMSG lpmsg)
547 {
548     MSGDUMP_TPRINTF(TEXT("%sWM_GETDLGCODE(hwnd:%p, lpmsg:%p)\n"),
549                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpmsg);
550     return 0;
551 }
552 
553 static __inline void MSGDUMP_API
554 MD_OnNCMouseMove(HWND hwnd, int x, int y, UINT codeHitTest)
555 {
556     MSGDUMP_TPRINTF(TEXT("%sWM_NCMOUSEMOVE(hwnd:%p, x:%d, y:%d, codeHitTest:%u)\n"),
557                     MSGDUMP_PREFIX, (void *)hwnd, x, y, codeHitTest);
558 }
559 
560 static __inline void MSGDUMP_API
561 MD_OnNCLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest)
562 {
563     if (fDoubleClick)
564     {
565         MSGDUMP_TPRINTF(TEXT("%sWM_NCLBUTTONDBLCLK(hwnd:%p, x:%d, y:%d, codeHitTest:%u)\n"),
566                        MSGDUMP_PREFIX, (void *)hwnd, x, y, codeHitTest);
567     }
568     else
569     {
570         MSGDUMP_TPRINTF(TEXT("%sWM_NCLBUTTONDOWN(hwnd:%p, x:%d, y:%d, codeHitTest:%u)\n"),
571                        MSGDUMP_PREFIX, (void *)hwnd, x, y, codeHitTest);
572     }
573 }
574 
575 static __inline void MSGDUMP_API
576 MD_OnNCLButtonUp(HWND hwnd, int x, int y, UINT codeHitTest)
577 {
578     MSGDUMP_TPRINTF(TEXT("%sWM_NCLBUTTONUP(hwnd:%p, x:%d, y:%d, codeHitTest:%u)\n"),
579                     MSGDUMP_PREFIX, (void *)hwnd, x, y, codeHitTest);
580 }
581 
582 static __inline void MSGDUMP_API
583 MD_OnNCRButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest)
584 {
585     if (fDoubleClick)
586     {
587         MSGDUMP_TPRINTF(TEXT("%sWM_NCRBUTTONDBLCLK(hwnd:%p, x:%d, y:%d, codeHitTest:%u)\n"),
588                        MSGDUMP_PREFIX, (void *)hwnd, x, y, codeHitTest);
589     }
590     else
591     {
592         MSGDUMP_TPRINTF(TEXT("%sWM_NCRBUTTONDOWN(hwnd:%p, x:%d, y:%d, codeHitTest:%u)\n"),
593                        MSGDUMP_PREFIX, (void *)hwnd, x, y, codeHitTest);
594     }
595 }
596 
597 static __inline void MSGDUMP_API
598 MD_OnNCRButtonUp(HWND hwnd, int x, int y, UINT codeHitTest)
599 {
600     MSGDUMP_TPRINTF(TEXT("%sWM_NCRBUTTONUP(hwnd:%p, x:%d, y:%d, codeHitTest:%u)\n"),
601                     MSGDUMP_PREFIX, (void *)hwnd, x, y, codeHitTest);
602 }
603 
604 static __inline void MSGDUMP_API
605 MD_OnNCMButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest)
606 {
607     if (fDoubleClick)
608     {
609         MSGDUMP_TPRINTF(TEXT("%sWM_NCMBUTTONDBLCLK(hwnd:%p, x:%d, y:%d, codeHitTest:%u)\n"),
610                        MSGDUMP_PREFIX, (void *)hwnd, x, y, codeHitTest);
611     }
612     else
613     {
614         MSGDUMP_TPRINTF(TEXT("%sWM_NCMBUTTONDOWN(hwnd:%p, x:%d, y:%d, codeHitTest:%u)\n"),
615                        MSGDUMP_PREFIX, (void *)hwnd, x, y, codeHitTest);
616     }
617 }
618 
619 static __inline void MSGDUMP_API
620 MD_OnNCMButtonUp(HWND hwnd, int x, int y, UINT codeHitTest)
621 {
622     MSGDUMP_TPRINTF(TEXT("%sWM_NCMBUTTONUP(hwnd:%p, x:%d, y:%d, codeHitTest:%u)\n"),
623                     MSGDUMP_PREFIX, (void *)hwnd, x, y, codeHitTest);
624 }
625 
626 static __inline void MSGDUMP_API
627 MD_OnKey(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags)
628 {
629     if (fDown)
630     {
631         MSGDUMP_TPRINTF(TEXT("%sWM_KEYDOWN(hwnd:%p, vk:%u, cRepeat:%d, flags:%u)\n"),
632                        MSGDUMP_PREFIX, (void *)hwnd, vk, cRepeat, flags);
633     }
634     else
635     {
636         MSGDUMP_TPRINTF(TEXT("%sWM_KEYUP(hwnd:%p, vk:%u, cRepeat:%d, flags:%u)\n"),
637                        MSGDUMP_PREFIX, (void *)hwnd, vk, cRepeat, flags);
638     }
639 }
640 
641 static __inline void MSGDUMP_API
642 MD_OnChar(HWND hwnd, TCHAR ch, int cRepeat)
643 {
644     MSGDUMP_TPRINTF(TEXT("%sWM_CHAR(hwnd:%p, ch:%u, cRepeat:%d)\n"),
645                     MSGDUMP_PREFIX, (void *)hwnd, ch, cRepeat);
646 }
647 
648 static __inline void MSGDUMP_API
649 MD_OnDeadChar(HWND hwnd, TCHAR ch, int cRepeat)
650 {
651     MSGDUMP_TPRINTF(TEXT("%sWM_DEADCHAR(hwnd:%p, ch:%u, cRepeat:%d)\n"),
652                     MSGDUMP_PREFIX, (void *)hwnd, ch, cRepeat);
653 }
654 
655 static __inline void MSGDUMP_API
656 MD_OnSysKey(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags)
657 {
658     if (fDown)
659     {
660         MSGDUMP_TPRINTF(TEXT("%sWM_SYSKEYDOWN(hwnd:%p, vk:%u, cRepeat:%d, flags:%u)\n"),
661                        MSGDUMP_PREFIX, (void *)hwnd, vk, cRepeat, flags);
662     }
663     else
664     {
665         MSGDUMP_TPRINTF(TEXT("%sWM_SYSKEYUP(hwnd:%p, vk:%u, cRepeat:%d, flags:%u)\n"),
666                        MSGDUMP_PREFIX, (void *)hwnd, vk, cRepeat, flags);
667     }
668 }
669 
670 static __inline void MSGDUMP_API
671 MD_OnSysChar(HWND hwnd, TCHAR ch, int cRepeat)
672 {
673     MSGDUMP_TPRINTF(TEXT("%sWM_SYSCHAR(hwnd:%p, ch:%u, cRepeat:%d)\n"),
674                     MSGDUMP_PREFIX, (void *)hwnd, ch, cRepeat);
675 }
676 
677 static __inline void MSGDUMP_API
678 MD_OnSysDeadChar(HWND hwnd, TCHAR ch, int cRepeat)
679 {
680     MSGDUMP_TPRINTF(TEXT("%sWM_SYSDEADCHAR(hwnd:%p, ch:%u, cRepeat:%d)\n"),
681                     MSGDUMP_PREFIX, (void *)hwnd, ch, cRepeat);
682 }
683 
684 static __inline BOOL MSGDUMP_API
685 MD_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
686 {
687     MSGDUMP_TPRINTF(TEXT("%sWM_INITDIALOG(hwnd:%p, hwndFocus:%p, lParam:%p)\n"),
688                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndFocus, (void *)lParam);
689     return FALSE;
690 }
691 
692 static __inline void MSGDUMP_API
693 MD_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
694 {
695     MSGDUMP_TPRINTF(TEXT("%sWM_COMMAND(hwnd:%p, id:%d, hwndCtl:%p, codeNotify:%u)\n"),
696                     MSGDUMP_PREFIX, (void *)hwnd, id, (void *)hwndCtl, codeNotify);
697 }
698 
699 static __inline void MSGDUMP_API
700 MD_OnSysCommand(HWND hwnd, UINT cmd, int x, int y)
701 {
702     MSGDUMP_TPRINTF(TEXT("%sWM_SYSCOMMAND(hwnd:%p, cmd:%u, x:%d, y:%d)\n"),
703                     MSGDUMP_PREFIX, (void *)hwnd, cmd, x, y);
704 }
705 
706 static __inline void MSGDUMP_API
707 MD_OnTimer(HWND hwnd, UINT id)
708 {
709     MSGDUMP_TPRINTF(TEXT("%sWM_TIMER(hwnd:%p, id:%u)\n"),
710                     MSGDUMP_PREFIX, (void *)hwnd, id);
711 }
712 
713 static __inline void MSGDUMP_API
714 MD_OnHScroll(HWND hwnd, HWND hwndCtl, UINT code, int pos)
715 {
716     MSGDUMP_TPRINTF(TEXT("%sWM_HSCROLL(hwnd:%p, hwndCtl:%p, code:%u, pos:%d)\n"),
717                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndCtl, code, pos);
718 }
719 
720 static __inline void MSGDUMP_API
721 MD_OnVScroll(HWND hwnd, HWND hwndCtl, UINT code, int pos)
722 {
723     MSGDUMP_TPRINTF(TEXT("%sWM_VSCROLL(hwnd:%p, hwndCtl:%p, code:%u, pos:%d)\n"),
724                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndCtl, code, pos);
725 }
726 
727 static __inline void MSGDUMP_API
728 MD_OnInitMenu(HWND hwnd, HMENU hMenu)
729 {
730     MSGDUMP_TPRINTF(TEXT("%sWM_INITMENU(hwnd:%p, hMenu:%p)\n"),
731                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hMenu);
732 }
733 
734 static __inline void MSGDUMP_API
735 MD_OnInitMenuPopup(HWND hwnd, HMENU hMenu, UINT item, BOOL fSystemMenu)
736 {
737     MSGDUMP_TPRINTF(TEXT("%sWM_INITMENUPOPUP(hwnd:%p, hMenu:%p, item:%u, fSystemMenu:%d)\n"),
738                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hMenu, item, fSystemMenu);
739 }
740 
741 static __inline void MSGDUMP_API
742 MD_OnMenuSelect(HWND hwnd, HMENU hmenu, int item, HMENU hmenuPopup, UINT flags)
743 {
744     MSGDUMP_TPRINTF(TEXT("%sWM_MENUSELECT(hwnd:%p, hmenu:%p, item:%d, hmenuPopup:%p, flags:%u)\n"),
745                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hmenu, item, (void *)hmenuPopup, flags);
746 }
747 
748 static __inline DWORD MSGDUMP_API
749 MD_OnMenuChar(HWND hwnd, UINT ch, UINT flags, HMENU hmenu)
750 {
751     MSGDUMP_TPRINTF(TEXT("%sWM_MENUCHAR(hwnd:%p, ch:%u, flags:%u, hmenu:%p)\n"),
752                     MSGDUMP_PREFIX, (void *)hwnd, ch, flags, (void *)hmenu);
753     return 0;
754 }
755 
756 static __inline void MSGDUMP_API
757 MD_OnEnterIdle(HWND hwnd, UINT source, HWND hwndSource)
758 {
759     MSGDUMP_TPRINTF(TEXT("%sWM_ENTERIDLE(hwnd:%p, source:%u, hwndSource:%p)\n"),
760                     MSGDUMP_PREFIX, (void *)hwnd, source, (void *)hwndSource);
761 }
762 
763 static __inline HBRUSH MSGDUMP_API
764 MD_OnCtlColor(HWND hwnd, HDC hdc, HWND hwndChild, int type)
765 {
766     MSGDUMP_TPRINTF(TEXT("%sWM_CTLCOLOR(hwnd:%p, hdc:%p, hwndChild:%p, type:%d)\n"),
767                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hdc, (void *)hwndChild, type);
768     return NULL;
769 }
770 
771 static __inline void MSGDUMP_API
772 MD_OnMouseMove(HWND hwnd, int x, int y, UINT keyFlags)
773 {
774     MSGDUMP_TPRINTF(TEXT("%sWM_MOUSEMOVE(hwnd:%p, x:%d, y:%d, keyFlags:%u)\n"),
775                     MSGDUMP_PREFIX, (void *)hwnd, x, y, keyFlags);
776 }
777 
778 static __inline void MSGDUMP_API
779 MD_OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags)
780 {
781     if (fDoubleClick)
782     {
783         MSGDUMP_TPRINTF(TEXT("%sWM_LBUTTONDBLCLK(hwnd:%p, x:%d, y:%d, keyFlags:%u)\n"),
784                        MSGDUMP_PREFIX, (void *)hwnd, x, y, keyFlags);
785     }
786     else
787     {
788         MSGDUMP_TPRINTF(TEXT("%sWM_LBUTTONDOWN(hwnd:%p, x:%d, y:%d, keyFlags:%u)\n"),
789                        MSGDUMP_PREFIX, (void *)hwnd, x, y, keyFlags);
790     }
791 }
792 
793 static __inline void MSGDUMP_API
794 MD_OnLButtonUp(HWND hwnd, int x, int y, UINT keyFlags)
795 {
796     MSGDUMP_TPRINTF(TEXT("%sWM_LBUTTONUP(hwnd:%p, x:%d, y:%d, keyFlags:%u)\n"),
797                     MSGDUMP_PREFIX, (void *)hwnd, x, y, keyFlags);
798 }
799 
800 static __inline void MSGDUMP_API
801 MD_OnRButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags)
802 {
803     if (fDoubleClick)
804     {
805         MSGDUMP_TPRINTF(TEXT("%sWM_RBUTTONDBLCLK(hwnd:%p, x:%d, y:%d, keyFlags:%u)\n"),
806                        MSGDUMP_PREFIX, (void *)hwnd, x, y, keyFlags);
807     }
808     else
809     {
810         MSGDUMP_TPRINTF(TEXT("%sWM_RBUTTONDOWN(hwnd:%p, x:%d, y:%d, keyFlags:%u)\n"),
811                        MSGDUMP_PREFIX, (void *)hwnd, x, y, keyFlags);
812     }
813 }
814 
815 static __inline void MSGDUMP_API
816 MD_OnRButtonUp(HWND hwnd, int x, int y, UINT flags)
817 {
818     MSGDUMP_TPRINTF(TEXT("%sWM_RBUTTONUP(hwnd:%p, x:%d, y:%d, flags:%u)\n"),
819                     MSGDUMP_PREFIX, (void *)hwnd, x, y, flags);
820 }
821 
822 static __inline void MSGDUMP_API
823 MD_OnMButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags)
824 {
825     if (fDoubleClick)
826     {
827         MSGDUMP_TPRINTF(TEXT("%sWM_MBUTTONDBLCLK(hwnd:%p, x:%d, y:%d, keyFlags:%u)\n"),
828                        MSGDUMP_PREFIX, (void *)hwnd, x, y, keyFlags);
829     }
830     else
831     {
832         MSGDUMP_TPRINTF(TEXT("%sWM_MBUTTONDOWN(hwnd:%p, x:%d, y:%d, keyFlags:%u)\n"),
833                        MSGDUMP_PREFIX, (void *)hwnd, x, y, keyFlags);
834     }
835 }
836 
837 static __inline void MSGDUMP_API
838 MD_OnMButtonUp(HWND hwnd, int x, int y, UINT flags)
839 {
840     MSGDUMP_TPRINTF(TEXT("%sWM_MBUTTONUP(hwnd:%p, x:%d, y:%d, flags:%u)\n"),
841                     MSGDUMP_PREFIX, (void *)hwnd, x, y, flags);
842 }
843 
844 static __inline void MSGDUMP_API
845 MD_OnMouseWheel(HWND hwnd, int xPos, int yPos, int zDelta, UINT fwKeys)
846 {
847     MSGDUMP_TPRINTF(TEXT("%sWM_MOUSEWHEEL(hwnd:%p, xPos:%d, yPos:%d, zDelta:%d, fwKeys:%u)\n"),
848                     MSGDUMP_PREFIX, (void *)hwnd, xPos, yPos, zDelta, fwKeys);
849 }
850 
851 static __inline void MSGDUMP_API
852 MD_OnParentNotify(HWND hwnd, UINT msg, HWND hwndChild, int idChild)
853 {
854     MSGDUMP_TPRINTF(TEXT("%sWM_PARENTNOTIFY(hwnd:%p, msg:%u, hwndChild:%p, idChild:%d)\n"),
855                     MSGDUMP_PREFIX, (void *)hwnd, msg, (void *)hwndChild, idChild);
856 }
857 
858 static __inline BOOL MSGDUMP_API
859 MD_OnDeviceChange(HWND hwnd, UINT uEvent, DWORD dwEventData)
860 {
861     MSGDUMP_TPRINTF(TEXT("%sWM_DEVICECHANGE(hwnd:%p, uEvent:%u, dwEventData:0x%08lX)\n"),
862                     MSGDUMP_PREFIX, (void *)hwnd, uEvent, dwEventData);
863     return FALSE;
864 }
865 
866 static __inline HWND MSGDUMP_API
867 MD_MDICreate(HWND hwnd, const LPMDICREATESTRUCT lpmcs)
868 {
869     MSGDUMP_TPRINTF(TEXT("%sWM_MDICREATE(hwnd:%p, lpmcs:%p)\n"),
870                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpmcs);
871     return NULL;
872 }
873 
874 static __inline void MSGDUMP_API
875 MD_MDIDestroy(HWND hwnd, HWND hwndDestroy)
876 {
877     MSGDUMP_TPRINTF(TEXT("%sWM_MDIDESTROY(hwnd:%p, hwndDestroy:%p)\n"),
878                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndDestroy);
879 }
880 
881 static __inline void MSGDUMP_API
882 MD_MDIActivate(HWND hwnd, BOOL fActive, HWND hwndActivate, HWND hwndDeactivate)
883 {
884     MSGDUMP_TPRINTF(TEXT("%sWM_MDIACTIVATE(hwnd:%p, fActive:%d, hwndActivate:%p, hwndDeactivate:%p)\n"),
885                     MSGDUMP_PREFIX, (void *)hwnd, fActive, (void *)hwndActivate, (void *)hwndDeactivate);
886 }
887 
888 static __inline void MSGDUMP_API
889 MD_MDIRestore(HWND hwnd, HWND hwndRestore)
890 {
891     MSGDUMP_TPRINTF(TEXT("%sWM_MDIRESTORE(hwnd:%p, hwndRestore:%p)\n"),
892                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndRestore);
893 }
894 
895 static __inline HWND MSGDUMP_API
896 MD_MDINext(HWND hwnd, HWND hwndCur, BOOL fPrev)
897 {
898     MSGDUMP_TPRINTF(TEXT("%sWM_MDINEXT(hwnd:%p, hwndCur:%p, fPrev:%d)\n"),
899                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndCur, fPrev);
900     return NULL;
901 }
902 
903 static __inline void MSGDUMP_API
904 MD_MDIMaximize(HWND hwnd, HWND hwndMaximize)
905 {
906     MSGDUMP_TPRINTF(TEXT("%sWM_MDIMAXIMIZE(hwnd:%p, hwndMaximize:%p)\n"),
907                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndMaximize);
908 }
909 
910 static __inline BOOL MSGDUMP_API
911 MD_MDITile(HWND hwnd, UINT cmd)
912 {
913     MSGDUMP_TPRINTF(TEXT("%sWM_MDITILE(hwnd:%p, cmd:%u)\n"),
914                     MSGDUMP_PREFIX, (void *)hwnd, cmd);
915     return FALSE;
916 }
917 
918 static __inline BOOL MSGDUMP_API
919 MD_MDICascade(HWND hwnd, UINT cmd)
920 {
921     MSGDUMP_TPRINTF(TEXT("%sWM_MDICASCADE(hwnd:%p, cmd:%u)\n"),
922                     MSGDUMP_PREFIX, (void *)hwnd, cmd);
923     return FALSE;
924 }
925 
926 static __inline void MSGDUMP_API
927 MD_MDIIconArrange(HWND hwnd)
928 {
929     MSGDUMP_TPRINTF(TEXT("%sWM_MDIICONARRANGE(hwnd:%p)\n"),
930                     MSGDUMP_PREFIX, (void *)hwnd);
931 }
932 
933 static __inline HWND MSGDUMP_API
934 MD_MDIGetActive(HWND hwnd)
935 {
936     MSGDUMP_TPRINTF(TEXT("%sWM_MDIGETACTIVE(hwnd:%p)\n"),
937                     MSGDUMP_PREFIX, (void *)hwnd);
938     return NULL;
939 }
940 
941 static __inline HMENU MSGDUMP_API
942 MD_MDISetMenu(HWND hwnd, BOOL fRefresh, HMENU hmenuFrame, HMENU hmenuWindow)
943 {
944     MSGDUMP_TPRINTF(TEXT("%sWM_MDISETMENU(hwnd:%p, fRefresh:%d, hmenuFrame:%p, hmenuWindow:%p)\n"),
945                     MSGDUMP_PREFIX, (void *)hwnd, fRefresh, (void *)hmenuFrame, (void *)hmenuWindow);
946     return NULL;
947 }
948 
949 static __inline void MSGDUMP_API
950 MD_OnDropFiles(HWND hwnd, HDROP hdrop)
951 {
952     MSGDUMP_TPRINTF(TEXT("%sWM_DROPFILES(hwnd:%p, hdrop:%p)\n"),
953                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hdrop);
954 }
955 
956 static __inline void MSGDUMP_API
957 MD_OnCut(HWND hwnd)
958 {
959     MSGDUMP_TPRINTF(TEXT("%sWM_CUT(hwnd:%p)\n"),
960                     MSGDUMP_PREFIX, (void *)hwnd);
961 }
962 
963 static __inline void MSGDUMP_API
964 MD_OnCopy(HWND hwnd)
965 {
966     MSGDUMP_TPRINTF(TEXT("%sWM_COPY(hwnd:%p)\n"),
967                     MSGDUMP_PREFIX, (void *)hwnd);
968 }
969 
970 static __inline void MSGDUMP_API
971 MD_OnPaste(HWND hwnd)
972 {
973     MSGDUMP_TPRINTF(TEXT("%sWM_PASTE(hwnd:%p)\n"),
974                     MSGDUMP_PREFIX, (void *)hwnd);
975 }
976 
977 static __inline void MSGDUMP_API
978 MD_OnClear(HWND hwnd)
979 {
980     MSGDUMP_TPRINTF(TEXT("%sWM_CLEAR(hwnd:%p)\n"),
981                     MSGDUMP_PREFIX, (void *)hwnd);
982 }
983 
984 static __inline void MSGDUMP_API
985 MD_OnUndo(HWND hwnd)
986 {
987     MSGDUMP_TPRINTF(TEXT("%sWM_UNDO(hwnd:%p)\n"),
988                     MSGDUMP_PREFIX, (void *)hwnd);
989 }
990 
991 static __inline HANDLE MSGDUMP_API
992 MD_OnRenderFormat(HWND hwnd, UINT fmt)
993 {
994     MSGDUMP_TPRINTF(TEXT("%sWM_RENDERFORMAT(hwnd:%p, fmt:%u)\n"),
995                     MSGDUMP_PREFIX, (void *)hwnd, fmt);
996     return NULL;
997 }
998 
999 static __inline void MSGDUMP_API
1000 MD_OnRenderAllFormats(HWND hwnd)
1001 {
1002     MSGDUMP_TPRINTF(TEXT("%sWM_RENDERALLFORMATS(hwnd:%p)\n"),
1003                     MSGDUMP_PREFIX, (void *)hwnd);
1004 }
1005 
1006 static __inline void MSGDUMP_API
1007 MD_OnDestroyClipboard(HWND hwnd)
1008 {
1009     MSGDUMP_TPRINTF(TEXT("%sWM_DESTROYCLIPBOARD(hwnd:%p)\n"),
1010                     MSGDUMP_PREFIX, (void *)hwnd);
1011 }
1012 
1013 static __inline void MSGDUMP_API
1014 MD_OnDrawClipboard(HWND hwnd)
1015 {
1016     MSGDUMP_TPRINTF(TEXT("%sWM_DRAWCLIPBOARD(hwnd:%p)\n"),
1017                     MSGDUMP_PREFIX, (void *)hwnd);
1018 }
1019 
1020 static __inline void MSGDUMP_API
1021 MD_OnPaintClipboard(HWND hwnd, HWND hwndCBViewer, const LPPAINTSTRUCT lpPaintStruct)
1022 {
1023     MSGDUMP_TPRINTF(TEXT("%sWM_PAINTCLIPBOARD(hwnd:%p, hwndCBViewer:%p, lpPaintStruct:%p)\n"),
1024                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndCBViewer, (void *)lpPaintStruct);
1025 }
1026 
1027 static __inline void MSGDUMP_API
1028 MD_OnVScrollClipboard(HWND hwnd, HWND hwndCBViewer, UINT code, int pos)
1029 {
1030     MSGDUMP_TPRINTF(TEXT("%sWM_VSCROLLCLIPBOARD(hwnd:%p, hwndCBViewer:%p, code:%u, pos:%d)\n"),
1031                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndCBViewer, code, pos);
1032 }
1033 
1034 static __inline void MSGDUMP_API
1035 MD_OnSizeClipboard(HWND hwnd, HWND hwndCBViewer, const LPRECT lprc)
1036 {
1037     TCHAR buf[MSGDUMP_MAX_RECT_TEXT];
1038     MSGDUMP_TPRINTF(TEXT("%sWM_SIZECLIPBOARD(hwnd:%p, hwndCBViewer:%p, lprc:%s)\n"),
1039                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndCBViewer,
1040                     MD_rect_text(buf, sizeof(buf), lprc));
1041 }
1042 
1043 static __inline void MSGDUMP_API
1044 MD_OnAskCBFormatName(HWND hwnd, int cchMax, LPTSTR rgchName)
1045 {
1046     MSGDUMP_TPRINTF(TEXT("%sWM_ASKCBFORMATNAME(hwnd:%p, cchMax:%d, rgchName:%p)\n"),
1047                     MSGDUMP_PREFIX, (void *)hwnd, cchMax, (void *)rgchName);
1048 }
1049 
1050 static __inline void MSGDUMP_API
1051 MD_OnChangeCBChain(HWND hwnd, HWND hwndRemove, HWND hwndNext)
1052 {
1053     MSGDUMP_TPRINTF(TEXT("%sWM_CHANGECBCHAIN(hwnd:%p, hwndRemove:%p, hwndNext:%p)\n"),
1054                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndRemove, (void *)hwndNext);
1055 }
1056 
1057 static __inline void MSGDUMP_API
1058 MD_OnHScrollClipboard(HWND hwnd, HWND hwndCBViewer, UINT code, int pos)
1059 {
1060     MSGDUMP_TPRINTF(TEXT("%sWM_HSCROLLCLIPBOARD(hwnd:%p, hwndCBViewer:%p, code:%u, pos:%d)\n"),
1061                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndCBViewer, code, pos);
1062 }
1063 
1064 static __inline BOOL MSGDUMP_API
1065 MD_OnQueryNewPalette(HWND hwnd)
1066 {
1067     MSGDUMP_TPRINTF(TEXT("%sWM_QUERYNEWPALETTE(hwnd:%p)\n"),
1068                     MSGDUMP_PREFIX, (void *)hwnd);
1069     return FALSE;
1070 }
1071 
1072 static __inline void MSGDUMP_API
1073 MD_OnPaletteIsChanging(HWND hwnd, HWND hwndPaletteChange)
1074 {
1075     MSGDUMP_TPRINTF(TEXT("%sWM_PALETTEISCHANGING(hwnd:%p, hwndPaletteChange:%p)\n"),
1076                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndPaletteChange);
1077 }
1078 
1079 static __inline void MSGDUMP_API
1080 MD_OnPaletteChanged(HWND hwnd, HWND hwndPaletteChange)
1081 {
1082     MSGDUMP_TPRINTF(TEXT("%sWM_PALETTECHANGED(hwnd:%p, hwndPaletteChange:%p)\n"),
1083                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndPaletteChange);
1084 }
1085 
1086 static __inline void MSGDUMP_API
1087 MD_OnHotKey(HWND hwnd, int idHotKey, UINT fuModifiers, UINT vk)
1088 {
1089     MSGDUMP_TPRINTF(TEXT("%sWM_HOTKEY(hwnd:%p, idHotKey:%d, fuModifiers:%u, vk:%u)\n"),
1090                     MSGDUMP_PREFIX, (void *)hwnd, idHotKey, fuModifiers, vk);
1091 }
1092 
1093 static __inline INT MSGDUMP_API
1094 MD_OnSetHotKey(HWND hwnd, INT nCode, UINT nOptions)
1095 {
1096     MSGDUMP_TPRINTF(TEXT("%sWM_SETHOTKEY(hwnd:%p, nCode:%d, nOptions:%u)\n"),
1097                     MSGDUMP_PREFIX, (void *)hwnd, nCode, nOptions);
1098     return 0;
1099 }
1100 
1101 static __inline INT MSGDUMP_API
1102 MD_OnGetHotKey(HWND hwnd)
1103 {
1104     MSGDUMP_TPRINTF(TEXT("%sWM_GETHOTKEY(hwnd:%p)\n"),
1105                     MSGDUMP_PREFIX, (void *)hwnd);
1106     return 0;
1107 }
1108 
1109 static __inline void MSGDUMP_API
1110 MD_OnPaintIcon(HWND hwnd)
1111 {
1112     MSGDUMP_TPRINTF(TEXT("%sWM_PAINTICON(hwnd:%p)\n"),
1113                     MSGDUMP_PREFIX, (void *)hwnd);
1114 }
1115 
1116 static __inline LRESULT MSGDUMP_API
1117 MD_OnGetObject(HWND hwnd, WPARAM wParam, DWORD dwObjId)
1118 {
1119     MSGDUMP_TPRINTF(TEXT("%sWM_GETOBJECT(hwnd:%p, wParam:%p, dwObjId:0x%08lX)\n"),
1120                     MSGDUMP_PREFIX, (void *)hwnd, (void *)wParam, dwObjId);
1121     return 0;
1122 }
1123 
1124 static __inline void MSGDUMP_API
1125 MD_OnCancelJournal(HWND hwnd)
1126 {
1127     MSGDUMP_TPRINTF(TEXT("%sWM_CANCELJOURNAL(hwnd:%p)\n"),
1128                     MSGDUMP_PREFIX, (void *)hwnd);
1129 }
1130 
1131 static __inline void MSGDUMP_API
1132 MD_OnInputLangChangeRequest(HWND hwnd, BOOL bFlag, HKL hKL)
1133 {
1134     MSGDUMP_TPRINTF(TEXT("%sWM_INPUTLANGCHANGEREQUEST(hwnd:%p, bFlag:%d, hKL:%p)\n"),
1135                     MSGDUMP_PREFIX, (void *)hwnd, bFlag, (void *)hKL);
1136 }
1137 
1138 static __inline void MSGDUMP_API
1139 MD_OnInputLangChange(HWND hwnd, DWORD dwCharSet, HKL hKL)
1140 {
1141     MSGDUMP_TPRINTF(TEXT("%sWM_INPUTLANGCHANGE(hwnd:%p, dwCharSet:0x%08lX, hKL:%p)\n"),
1142                     MSGDUMP_PREFIX, (void *)hwnd, dwCharSet, (void *)hKL);
1143 }
1144 
1145 static __inline void MSGDUMP_API
1146 MD_OnTCard(HWND hwnd, UINT idAction, DWORD dwActionData)
1147 {
1148     MSGDUMP_TPRINTF(TEXT("%sWM_TCARD(hwnd:%p, idAction:%u, dwActionData:0x%08lX)\n"),
1149                     MSGDUMP_PREFIX, (void *)hwnd, idAction, dwActionData);
1150 }
1151 
1152 static __inline void MSGDUMP_API
1153 MD_OnHelp(HWND hwnd, LPHELPINFO lpHelpInfo)
1154 {
1155     MSGDUMP_TPRINTF(TEXT("%sWM_HELP(hwnd:%p, lpHelpInfo:%p)\n"),
1156                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpHelpInfo);
1157 }
1158 
1159 static __inline void MSGDUMP_API
1160 MD_OnUserChanged(HWND hwnd)
1161 {
1162     MSGDUMP_TPRINTF(TEXT("%sWM_USERCHANGED(hwnd:%p)\n"),
1163                     MSGDUMP_PREFIX, (void *)hwnd);
1164 }
1165 
1166 static __inline INT MSGDUMP_API
1167 MD_OnNotifyFormat(HWND hwnd, HWND hwndTarget, INT nCommand)
1168 {
1169     MSGDUMP_TPRINTF(TEXT("%sWM_NOTIFYFORMAT(hwnd:%p, hwndTarget:%p, nCommand:%d)\n"),
1170                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndTarget, nCommand);
1171     return 0;
1172 }
1173 
1174 static __inline void MSGDUMP_API
1175 MD_OnStyleChanging(HWND hwnd, UINT nStyleType, LPSTYLESTRUCT lpStyleStruct)
1176 {
1177     MSGDUMP_TPRINTF(TEXT("%sWM_STYLECHANGING(hwnd:%p, nStyleType:%u, lpStyleStruct:%p)\n"),
1178                     MSGDUMP_PREFIX, (void *)hwnd, nStyleType, (void *)lpStyleStruct);
1179 }
1180 
1181 static __inline void MSGDUMP_API
1182 MD_OnStyleChanged(HWND hwnd, UINT nStyleType, const STYLESTRUCT *lpStyleStruct)
1183 {
1184     MSGDUMP_TPRINTF(TEXT("%sWM_STYLECHANGED(hwnd:%p, nStyleType:%u, lpStyleStruct:%p)\n"),
1185                     MSGDUMP_PREFIX, (void *)hwnd, nStyleType, (void *)lpStyleStruct);
1186 }
1187 
1188 static __inline HICON MSGDUMP_API
1189 MD_OnGetIcon(HWND hwnd, UINT nType, LPARAM dpi)
1190 {
1191     MSGDUMP_TPRINTF(TEXT("%sWM_GETICON(hwnd:%p, nType:%u, dpi:%p)\n"),
1192                     MSGDUMP_PREFIX, (void *)hwnd, nType, (void *)dpi);
1193     return NULL;
1194 }
1195 
1196 static __inline HICON MSGDUMP_API
1197 MD_OnSetIcon(HWND hwnd, UINT nType, HICON hIcon)
1198 {
1199     MSGDUMP_TPRINTF(TEXT("%sWM_SETICON(hwnd:%p, nType:%u, hIcon:%p)\n"),
1200                     MSGDUMP_PREFIX, (void *)hwnd, nType, (void *)hIcon);
1201     return NULL;
1202 }
1203 
1204 static __inline void MSGDUMP_API
1205 MD_OnSyncPaint(HWND hwnd)
1206 {
1207     MSGDUMP_TPRINTF(TEXT("%sWM_SYNCPAINT(hwnd:%p)\n"),
1208                     MSGDUMP_PREFIX, (void *)hwnd);
1209 }
1210 
1211 static __inline void MSGDUMP_API
1212 MD_OnNCXButtonDown(HWND hwnd, BOOL fDoubleClick, UINT nHitTest, WORD fwButton,
1213                    INT xPos, INT yPos)
1214 {
1215     if (fDoubleClick)
1216     {
1217         MSGDUMP_TPRINTF(TEXT("%sWM_NCXBUTTONDBLCLK(hwnd:%p, nHitTest:%u, fwButton:%u, xPos:%d, yPos:%d)\n"),
1218                        MSGDUMP_PREFIX, (void *)hwnd, nHitTest, fwButton, xPos, yPos);
1219     }
1220     else
1221     {
1222         MSGDUMP_TPRINTF(TEXT("%sWM_NCXBUTTONDOWN(hwnd:%p, nHitTest:%u, fwButton:%u, xPos:%d, yPos:%d)\n"),
1223                        MSGDUMP_PREFIX, (void *)hwnd, nHitTest, fwButton, xPos, yPos);
1224     }
1225 }
1226 
1227 static __inline void MSGDUMP_API
1228 MD_OnNCXButtonUp(HWND hwnd, UINT nHitTest, WORD fwButton, INT xPos, INT yPos)
1229 {
1230     MSGDUMP_TPRINTF(TEXT("%sWM_NCXBUTTONUP(hwnd:%p, nHitTest:%u, fwButton:%u, xPos:%d, yPos:%d)\n"),
1231                     MSGDUMP_PREFIX, (void *)hwnd, nHitTest, fwButton, xPos, yPos);
1232 }
1233 
1234 static __inline void MSGDUMP_API
1235 MD_OnImeStartComposition(HWND hwnd)
1236 {
1237     MSGDUMP_TPRINTF(TEXT("%sWM_IME_STARTCOMPOSITION(hwnd:%p)\n"),
1238                     MSGDUMP_PREFIX, (void *)hwnd);
1239 }
1240 
1241 static __inline void MSGDUMP_API
1242 MD_OnImeEndComposition(HWND hwnd)
1243 {
1244     MSGDUMP_TPRINTF(TEXT("%sWM_IME_ENDCOMPOSITION(hwnd:%p)\n"),
1245                     MSGDUMP_PREFIX, (void *)hwnd);
1246 }
1247 
1248 static __inline void MSGDUMP_API
1249 MD_OnImeComposition(HWND hwnd, WORD wChar, DWORD lAttribute)
1250 {
1251     MSGDUMP_TPRINTF(TEXT("%sWM_IME_COMPOSITION(hwnd:%p, wChar:%u, lAttribute:0x%08lX)\n"),
1252                     MSGDUMP_PREFIX, (void *)hwnd, wChar, lAttribute);
1253 }
1254 
1255 static __inline void MSGDUMP_API
1256 MD_OnMenuRButtonUp(HWND hwnd, UINT nPos, HMENU hMenu)
1257 {
1258     MSGDUMP_TPRINTF(TEXT("%sWM_MENURBUTTONUP(hwnd:%p, nPos:%u, hMenu:%p)\n"),
1259                     MSGDUMP_PREFIX, (void *)hwnd, nPos, (void *)hMenu);
1260 }
1261 
1262 static __inline UINT MSGDUMP_API
1263 MD_OnMenuDrag(HWND hwnd, UINT nPos, HMENU hMenu)
1264 {
1265     MSGDUMP_TPRINTF(TEXT("%sWM_MENUDRAG(hwnd:%p, nPos:%u, hMenu:%p)\n"),
1266                     MSGDUMP_PREFIX, (void *)hwnd, nPos, (void *)hMenu);
1267     return 0;
1268 }
1269 
1270 static __inline UINT MSGDUMP_API
1271 MD_OnMenuGetObject(HWND hwnd, MENUGETOBJECTINFO *pmgoi)
1272 {
1273     MSGDUMP_TPRINTF(TEXT("%sWM_MENUGETOBJECT(hwnd:%p, pmgoi:%p)\n"),
1274                     MSGDUMP_PREFIX, (void *)hwnd, (void *)pmgoi);
1275     return 0;
1276 }
1277 
1278 static __inline void MSGDUMP_API
1279 MD_OnUninitMenuPopup(HWND hwnd, HMENU hMenu, UINT nFlags)
1280 {
1281     MSGDUMP_TPRINTF(TEXT("%sWM_UNINITMENUPOPUP(hwnd:%p, hMenu:%p, nFlags:%u)\n"),
1282                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hMenu, nFlags);
1283 }
1284 
1285 static __inline void MSGDUMP_API
1286 MD_OnMenuCommand(HWND hwnd, UINT nPos, HMENU hMenu)
1287 {
1288     MSGDUMP_TPRINTF(TEXT("%sWM_MENUCOMMAND(hwnd:%p, nPos:%u, hMenu:%p)\n"),
1289                     MSGDUMP_PREFIX, (void *)hwnd, nPos, (void *)hMenu);
1290 }
1291 
1292 static __inline void MSGDUMP_API
1293 MD_OnChangeUIState(HWND hwnd, UINT nAction, UINT nUIElement)
1294 {
1295     MSGDUMP_TPRINTF(TEXT("%sWM_CHANGEUISTATE(hwnd:%p, nAction:%u, nUIElement:%u)\n"),
1296                     MSGDUMP_PREFIX, (void *)hwnd, nAction, nUIElement);
1297 }
1298 
1299 static __inline void MSGDUMP_API
1300 MD_OnUpdateUIState(HWND hwnd, UINT nAction, UINT nUIElement)
1301 {
1302     MSGDUMP_TPRINTF(TEXT("%sWM_UPDATEUISTATE(hwnd:%p, nAction:%u, nUIElement:%u)\n"),
1303                     MSGDUMP_PREFIX, (void *)hwnd, nAction, nUIElement);
1304 }
1305 
1306 static __inline UINT MSGDUMP_API
1307 MD_OnQueryUIState(HWND hwnd)
1308 {
1309     MSGDUMP_TPRINTF(TEXT("%sWM_QUERYUISTATE(hwnd:%p)\n"),
1310                     MSGDUMP_PREFIX, (void *)hwnd);
1311     return 0;
1312 }
1313 
1314 static __inline void MSGDUMP_API
1315 MD_OnXButtonDown(HWND hwnd, BOOL fDoubleClick, WORD fwKeys, WORD fwButton, INT xPos, INT yPos)
1316 {
1317     if (fDoubleClick)
1318     {
1319         MSGDUMP_TPRINTF(TEXT("%sWM_XBUTTONDBLCLK(hwnd:%p, fwKeys:%u, fwButton:%u, xPos:%d, yPos:%d)\n"),
1320                        MSGDUMP_PREFIX, (void *)hwnd, fwKeys, fwButton, xPos, yPos);
1321     }
1322     else
1323     {
1324         MSGDUMP_TPRINTF(TEXT("%sWM_XBUTTONDOWN(hwnd:%p, fwKeys:%u, fwButton:%u, xPos:%d, yPos:%d)\n"),
1325                        MSGDUMP_PREFIX, (void *)hwnd, fwKeys, fwButton, xPos, yPos);
1326     }
1327 }
1328 
1329 static __inline void MSGDUMP_API
1330 MD_OnXButtonUp(HWND hwnd, WORD fwKeys, WORD fwButton, INT xPos, INT yPos)
1331 {
1332     MSGDUMP_TPRINTF(TEXT("%sWM_XBUTTONUP(hwnd:%p, fwKeys:%u, fwButton:%u, xPos:%d, yPos:%d)\n"),
1333                     MSGDUMP_PREFIX, (void *)hwnd, fwKeys, fwButton, xPos, yPos);
1334 }
1335 
1336 static __inline void MSGDUMP_API
1337 MD_OnEnterMenuLoop(HWND hwnd, BOOL bIsTrackPopupMenu)
1338 {
1339     MSGDUMP_TPRINTF(TEXT("%sWM_ENTERMENULOOP(hwnd:%p, bIsTrackPopupMenu:%d)\n"),
1340                     MSGDUMP_PREFIX, (void *)hwnd, bIsTrackPopupMenu);
1341 }
1342 
1343 static __inline void MSGDUMP_API
1344 MD_OnExitMenuLoop(HWND hwnd, BOOL bIsTrackPopupMenu)
1345 {
1346     MSGDUMP_TPRINTF(TEXT("%sWM_EXITMENULOOP(hwnd:%p, bIsTrackPopupMenu:%d)\n"),
1347                     MSGDUMP_PREFIX, (void *)hwnd, bIsTrackPopupMenu);
1348 }
1349 
1350 static __inline void MSGDUMP_API
1351 MD_OnNextMenu(HWND hwnd, INT nCode, LPMDINEXTMENU lpMDINextMenu)
1352 {
1353     MSGDUMP_TPRINTF(TEXT("%sWM_NEXTMENU(hwnd:%p, nCode:%d, lpMDINextMenu:%p)\n"),
1354                     MSGDUMP_PREFIX, (void *)hwnd, nCode, (void *)lpMDINextMenu);
1355 }
1356 
1357 static __inline void MSGDUMP_API
1358 MD_OnSizing(HWND hwnd, UINT nSide, LPRECT lpRect)
1359 {
1360     TCHAR buf[MSGDUMP_MAX_RECT_TEXT];
1361     MSGDUMP_TPRINTF(TEXT("%sWM_SIZING(hwnd:%p, nSide:%u, lpRect:%s)\n"),
1362                     MSGDUMP_PREFIX, (void *)hwnd, nSide, MD_rect_text(buf, sizeof(buf), lpRect));
1363 }
1364 
1365 static __inline void MSGDUMP_API
1366 MD_OnCaptureChanged(HWND hwnd, HWND hwndNewCapture)
1367 {
1368     MSGDUMP_TPRINTF(TEXT("%sWM_CAPTURECHANGED(hwnd:%p, hwndNewCapture:%p)\n"),
1369                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndNewCapture);
1370 }
1371 
1372 static __inline void MSGDUMP_API
1373 MD_OnMoving(HWND hwnd, UINT nSide, LPRECT lpRect)
1374 {
1375     TCHAR buf[MSGDUMP_MAX_RECT_TEXT];
1376     MSGDUMP_TPRINTF(TEXT("%sWM_MOVING(hwnd:%p, nSide:%u, lpRect:%s)\n"),
1377                     MSGDUMP_PREFIX, (void *)hwnd, nSide, MD_rect_text(buf, sizeof(buf), lpRect));
1378 }
1379 
1380 static __inline LRESULT MSGDUMP_API
1381 MD_OnPowerBroadcast(HWND hwnd, UINT nPowerEvent, UINT nEventData)
1382 {
1383     MSGDUMP_TPRINTF(TEXT("%sWM_POWERBROADCAST(hwnd:%p, nPowerEvent:%u, nEventData:%u)\n"),
1384                     MSGDUMP_PREFIX, (void *)hwnd, nPowerEvent, nEventData);
1385     return 0;
1386 }
1387 
1388 static __inline void MSGDUMP_API
1389 MD_OnEnterSizeMove(HWND hwnd)
1390 {
1391     MSGDUMP_TPRINTF(TEXT("%sWM_ENTERSIZEMOVE(hwnd:%p)\n"),
1392                     MSGDUMP_PREFIX, (void *)hwnd);
1393 }
1394 
1395 static __inline void MSGDUMP_API
1396 MD_OnExitSizeMove(HWND hwnd)
1397 {
1398     MSGDUMP_TPRINTF(TEXT("%sWM_EXITSIZEMOVE(hwnd:%p)\n"),
1399                     MSGDUMP_PREFIX, (void *)hwnd);
1400 }
1401 
1402 static __inline HMENU MSGDUMP_API
1403 MD_MDIRefreshMenu(HWND hwnd)
1404 {
1405     MSGDUMP_TPRINTF(TEXT("%sWM_MDIREFRESHMENU(hwnd:%p)\n"),
1406                     MSGDUMP_PREFIX, (void *)hwnd);
1407     return NULL;
1408 }
1409 
1410 static __inline BOOL MSGDUMP_API
1411 MD_OnImeSetContext(HWND hwnd, BOOL fActive, DWORD dwShow)
1412 {
1413     MSGDUMP_TPRINTF(TEXT("%sWM_IME_SETCONTEXT(hwnd:%p, fActive:%d, dwShow:0x%08lX)\n"),
1414                     MSGDUMP_PREFIX, (void *)hwnd, fActive, dwShow);
1415     return FALSE;
1416 }
1417 
1418 static __inline LRESULT MSGDUMP_API
1419 MD_OnImeNotify(HWND hwnd, WPARAM wSubMessage, LPARAM lParam)
1420 {
1421     MSGDUMP_TPRINTF(TEXT("%sWM_IME_NOTIFY(hwnd:%p, wSubMessage:%p, lParam:%p)\n"),
1422                     MSGDUMP_PREFIX, (void *)hwnd, (void *)wSubMessage, (void *)lParam);
1423     return 0;
1424 }
1425 
1426 static __inline LRESULT MSGDUMP_API
1427 MD_OnImeControl(HWND hwnd, WPARAM wSubMessage, LPVOID lpData)
1428 {
1429     MSGDUMP_TPRINTF(TEXT("%sWM_IME_CONTROL(hwnd:%p, wSubMessage:%p, lpData:%p)\n"),
1430                     MSGDUMP_PREFIX, (void *)hwnd, (void *)wSubMessage, (void *)lpData);
1431     return 0;
1432 }
1433 
1434 static __inline void MSGDUMP_API
1435 MD_OnImeCompositionFull(HWND hwnd)
1436 {
1437     MSGDUMP_TPRINTF(TEXT("%sWM_IME_COMPOSITIONFULL(hwnd:%p)\n"),
1438                     MSGDUMP_PREFIX, (void *)hwnd);
1439 }
1440 
1441 static __inline void MSGDUMP_API
1442 MD_OnImeSelect(HWND hwnd, BOOL fSelect, HKL hKL)
1443 {
1444     MSGDUMP_TPRINTF(TEXT("%sWM_IME_SELECT(hwnd:%p, fSelect:%d, hKL:%p)\n"),
1445                     MSGDUMP_PREFIX, (void *)hwnd, fSelect, (void *)hKL);
1446 }
1447 
1448 static __inline void MSGDUMP_API
1449 MD_OnImeChar(HWND hwnd, WORD wCharCode, LONG lKeyData)
1450 {
1451     MSGDUMP_TPRINTF(TEXT("%sWM_IME_CHAR(hwnd:%p, wCharCode:%u, lKeyData:%ld)\n"),
1452                     MSGDUMP_PREFIX, (void *)hwnd, wCharCode, lKeyData);
1453 }
1454 
1455 static __inline LRESULT MSGDUMP_API
1456 MD_OnImeRequest(HWND hwnd, WPARAM wParam, LPARAM lParam)
1457 {
1458     MSGDUMP_TPRINTF(TEXT("%sWM_IME_REQUEST(hwnd:%p, wParam:%p, lParam:%p)\n"),
1459                     MSGDUMP_PREFIX, (void *)hwnd, (void *)wParam, (void *)lParam);
1460     return 0;
1461 }
1462 
1463 static __inline void MSGDUMP_API
1464 MD_OnImeKey(HWND hwnd, BOOL fDown, UINT nVirtKey, LONG lKeyData)
1465 {
1466     if (fDown)
1467     {
1468         MSGDUMP_TPRINTF(TEXT("%sWM_IME_KEYDOWN(hwnd:%p, nVirtKey:%u, lKeyData:%ld)\n"),
1469                        MSGDUMP_PREFIX, (void *)hwnd, nVirtKey, lKeyData);
1470     }
1471     else
1472     {
1473         MSGDUMP_TPRINTF(TEXT("%sWM_IME_KEYUP(hwnd:%p, nVirtKey:%u, lKeyData:%ld)\n"),
1474                        MSGDUMP_PREFIX, (void *)hwnd, nVirtKey, lKeyData);
1475     }
1476 }
1477 
1478 static __inline void MSGDUMP_API
1479 MD_OnMouseHover(HWND hwnd, UINT nFlags, INT xPos, INT yPos)
1480 {
1481     MSGDUMP_TPRINTF(TEXT("%sWM_MOUSEHOVER(hwnd:%p, nFlags:%u, xPos:%d, yPos:%d)\n"),
1482                     MSGDUMP_PREFIX, (void *)hwnd, nFlags, xPos, yPos);
1483 }
1484 
1485 static __inline void MSGDUMP_API
1486 MD_OnMouseLeave(HWND hwnd)
1487 {
1488     MSGDUMP_TPRINTF(TEXT("%sWM_MOUSELEAVE(hwnd:%p)\n"),
1489                     MSGDUMP_PREFIX, (void *)hwnd);
1490 }
1491 
1492 static __inline void MSGDUMP_API
1493 MD_OnNCMouseHover(HWND hwnd, UINT nHitTest, INT xPos, INT yPos)
1494 {
1495     MSGDUMP_TPRINTF(TEXT("%sWM_NCMOUSEHOVER(hwnd:%p, nHitTest:%u, xPos:%d, yPos:%d)\n"),
1496                     MSGDUMP_PREFIX, (void *)hwnd, nHitTest, xPos, yPos);
1497 }
1498 
1499 static __inline void MSGDUMP_API
1500 MD_OnNCMouseLeave(HWND hwnd)
1501 {
1502     MSGDUMP_TPRINTF(TEXT("%sWM_NCMOUSELEAVE(hwnd:%p)\n"),
1503                     MSGDUMP_PREFIX, (void *)hwnd);
1504 }
1505 
1506 static __inline void MSGDUMP_API
1507 MD_OnPrint(HWND hwnd, HDC hDC, UINT uFlags)
1508 {
1509     MSGDUMP_TPRINTF(TEXT("%sWM_PRINT(hwnd:%p, hDC:%p, uFlags:%u)\n"),
1510                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hDC, uFlags);
1511 }
1512 
1513 static __inline void MSGDUMP_API
1514 MD_OnPrintClient(HWND hwnd, HDC hDC, UINT uFlags)
1515 {
1516     MSGDUMP_TPRINTF(TEXT("%sWM_PRINTCLIENT(hwnd:%p, hDC:%p, uFlags:%u)\n"),
1517                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hDC, uFlags);
1518 }
1519 
1520 static __inline BOOL MSGDUMP_API
1521 MD_OnAppCommand(HWND hwnd, HWND hwndTarget, UINT cmd, UINT nDevice, UINT nKey)
1522 {
1523     MSGDUMP_TPRINTF(TEXT("%sWM_APPCOMMAND(hwnd:%p, hwndTarget:%p, cmd:%u, nDevice:%u, nKey:%u)\n"),
1524                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndTarget, cmd, nDevice, nKey);
1525     return FALSE;
1526 }
1527 
1528 static __inline LONG MSGDUMP_API
1529 MD_Edit_OnGetSel(HWND hwnd, LPDWORD lpdwStart, LPDWORD lpdwEnd)
1530 {
1531     MSGDUMP_TPRINTF(TEXT("%sEM_GETSEL(hwnd:%p, lpdwStart:%p, lpdwEnd:%p)\n"),
1532                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpdwStart, (void *)lpdwEnd);
1533     return 0;
1534 }
1535 
1536 static __inline void MSGDUMP_API
1537 MD_Edit_OnSetSel(HWND hwnd, INT nStart, INT nEnd)
1538 {
1539     MSGDUMP_TPRINTF(TEXT("%sEM_SETSEL(hwnd:%p, nStart:%d, nEnd:%d)\n"),
1540                     MSGDUMP_PREFIX, (void *)hwnd, nStart, nEnd);
1541 }
1542 
1543 static __inline void MSGDUMP_API
1544 MD_Edit_OnGetRect(HWND hwnd, LPRECT prc)
1545 {
1546     MSGDUMP_TPRINTF(TEXT("%sEM_GETRECT(hwnd:%p, prc:%p)\n"),
1547                     MSGDUMP_PREFIX, (void *)hwnd, (void *)prc);
1548 }
1549 
1550 static __inline void MSGDUMP_API
1551 MD_Edit_OnSetRect(HWND hwnd, LPCRECT prc)
1552 {
1553     TCHAR buf[MSGDUMP_MAX_RECT_TEXT];
1554     MSGDUMP_TPRINTF(TEXT("%sEM_SETRECT(hwnd:%p, prc:%s)\n"),
1555                     MSGDUMP_PREFIX, (void *)hwnd, MD_rect_text(buf, sizeof(buf), prc));
1556 }
1557 
1558 static __inline void MSGDUMP_API
1559 MD_Edit_OnSetRectNP(HWND hwnd, LPCRECT prc)
1560 {
1561     TCHAR buf[MSGDUMP_MAX_RECT_TEXT];
1562     MSGDUMP_TPRINTF(TEXT("%sEM_SETRECTNP(hwnd:%p, prc:%s)\n"),
1563                     MSGDUMP_PREFIX, (void *)hwnd, MD_rect_text(buf, sizeof(buf), prc));
1564 }
1565 
1566 static __inline DWORD MSGDUMP_API
1567 MD_Edit_OnScroll(HWND hwnd, INT nScroll)
1568 {
1569     MSGDUMP_TPRINTF(TEXT("%sEM_SCROLL(hwnd:%p, nScroll:%d)\n"),
1570                     MSGDUMP_PREFIX, (void *)hwnd, nScroll);
1571 }
1572 
1573 static __inline BOOL MSGDUMP_API
1574 MD_Edit_OnLineScroll(HWND hwnd, INT cxScroll, INT cyScroll)
1575 {
1576     MSGDUMP_TPRINTF(TEXT("%sEM_LINESCROLL(hwnd:%p, cxScroll:%d, cyScroll:%d)\n"),
1577                     MSGDUMP_PREFIX, (void *)hwnd, cxScroll, cyScroll);
1578     return FALSE;
1579 }
1580 
1581 static __inline BOOL MSGDUMP_API
1582 MD_Edit_OnScrollCaret(HWND hwnd)
1583 {
1584     MSGDUMP_TPRINTF(TEXT("%sEM_SCROLLCARET(hwnd:%p)\n"),
1585                     MSGDUMP_PREFIX, (void *)hwnd);
1586     return FALSE;
1587 }
1588 
1589 static __inline BOOL MSGDUMP_API
1590 MD_Edit_OnGetModify(HWND hwnd)
1591 {
1592     MSGDUMP_TPRINTF(TEXT("%sEM_GETMODIFY(hwnd:%p)\n"),
1593                     MSGDUMP_PREFIX, (void *)hwnd);
1594     return FALSE;
1595 }
1596 
1597 static __inline void MSGDUMP_API
1598 MD_Edit_OnSetModify(HWND hwnd, BOOL fModified)
1599 {
1600     MSGDUMP_TPRINTF(TEXT("%sEM_SETMODIFY(hwnd:%p, fModified:%d)\n"),
1601                     MSGDUMP_PREFIX, (void *)hwnd, fModified);
1602 }
1603 
1604 static __inline INT MSGDUMP_API
1605 MD_Edit_OnGetLineCount(HWND hwnd)
1606 {
1607     MSGDUMP_TPRINTF(TEXT("%sEM_GETLINECOUNT(hwnd:%p)\n"),
1608                     MSGDUMP_PREFIX, (void *)hwnd);
1609     return 0;
1610 }
1611 
1612 static __inline INT MSGDUMP_API
1613 MD_Edit_OnLineIndex(HWND hwnd, INT line)
1614 {
1615     MSGDUMP_TPRINTF(TEXT("%sEM_LINEINDEX(hwnd:%p, line:%d)\n"),
1616                     MSGDUMP_PREFIX, (void *)hwnd, line);
1617     return 0;
1618 }
1619 
1620 static __inline void MSGDUMP_API
1621 MD_Edit_OnSetHandle(HWND hwnd, HLOCAL hloc)
1622 {
1623     MSGDUMP_TPRINTF(TEXT("%sEM_SETHANDLE(hwnd:%p, hloc:%p)\n"),
1624                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hloc);
1625 }
1626 
1627 static __inline HLOCAL MSGDUMP_API
1628 MD_Edit_OnGetHandle(HWND hwnd)
1629 {
1630     MSGDUMP_TPRINTF(TEXT("%sEM_GETHANDLE(hwnd:%p)\n"),
1631                     MSGDUMP_PREFIX, (void *)hwnd);
1632     return NULL;
1633 }
1634 
1635 static __inline INT MSGDUMP_API
1636 MD_Edit_OnGetThumb(HWND hwnd)
1637 {
1638     MSGDUMP_TPRINTF(TEXT("%sEM_GETTHUMB(hwnd:%p)\n"),
1639                     MSGDUMP_PREFIX, (void *)hwnd);
1640 }
1641 
1642 static __inline INT MSGDUMP_API
1643 MD_Edit_OnLineLength(HWND hwnd, INT ich)
1644 {
1645     MSGDUMP_TPRINTF(TEXT("%sEM_LINELENGTH(hwnd:%p, ich:%d)\n"),
1646                     MSGDUMP_PREFIX, (void *)hwnd, ich);
1647     return 0;
1648 }
1649 
1650 static __inline void MSGDUMP_API
1651 MD_Edit_OnReplaceSel(HWND hwnd, BOOL fCanUndo, LPCTSTR lpszReplace)
1652 {
1653     if (IsWindowUnicode(hwnd))
1654         MSGDUMP_TPRINTF(TEXT("%sEM_REPLACESEL(hwnd:%p, fCanUndo:%d, %ls)\n"),
1655                         MSGDUMP_PREFIX, (void *)hwnd, fCanUndo, (LPCWSTR)lpszReplace);
1656     else
1657         MSGDUMP_TPRINTF(TEXT("%sEM_REPLACESEL(hwnd:%p, fCanUndo:%d, %hs)\n"),
1658                         MSGDUMP_PREFIX, (void *)hwnd, fCanUndo, (LPCSTR)lpszReplace);
1659 }
1660 
1661 static __inline INT MSGDUMP_API
1662 MD_Edit_OnGetLine(HWND hwnd, INT line, LPCTSTR lpch)
1663 {
1664     if (IsWindowUnicode(hwnd))
1665         MSGDUMP_TPRINTF(TEXT("%sEM_GETLINE(hwnd:%p, line:%d, lpch:%ls)\n"),
1666                         MSGDUMP_PREFIX, (void *)hwnd, line, (LPCWSTR)lpch);
1667     else
1668         MSGDUMP_TPRINTF(TEXT("%sEM_GETLINE(hwnd:%p, line:%d, lpch:%hs)\n"),
1669                         MSGDUMP_PREFIX, (void *)hwnd, line, (LPCSTR)lpch);
1670     return 0;
1671 }
1672 
1673 static __inline BOOL MSGDUMP_API
1674 MD_Edit_OnCanUndo(HWND hwnd)
1675 {
1676     MSGDUMP_TPRINTF(TEXT("%sEM_CANUNDO(hwnd:%p)\n"),
1677                     MSGDUMP_PREFIX, (void *)hwnd);
1678     return FALSE;
1679 }
1680 
1681 static __inline BOOL MSGDUMP_API
1682 MD_Edit_OnUndo(HWND hwnd)
1683 {
1684     MSGDUMP_TPRINTF(TEXT("%sEM_UNDO(hwnd:%p)\n"),
1685                     MSGDUMP_PREFIX, (void *)hwnd);
1686     return FALSE;
1687 }
1688 
1689 static __inline BOOL MSGDUMP_API
1690 MD_Edit_OnFmtLines(HWND hwnd, BOOL fAddEOL)
1691 {
1692     MSGDUMP_TPRINTF(TEXT("%sEM_UNDO(hwnd:%p, fAddEOL:%d)\n"),
1693                     MSGDUMP_PREFIX, (void *)hwnd, fAddEOL);
1694     return FALSE;
1695 }
1696 
1697 static __inline INT MSGDUMP_API
1698 MD_Edit_OnLineFromChar(HWND hwnd, INT ich)
1699 {
1700     MSGDUMP_TPRINTF(TEXT("%sEM_LINEFROMCHAR(hwnd:%p, ich:%d)\n"),
1701                     MSGDUMP_PREFIX, (void *)hwnd, ich);
1702     return 0;
1703 }
1704 
1705 static __inline BOOL MSGDUMP_API
1706 MD_Edit_OnSetTabStops(HWND hwnd, INT cTabs, LPDWORD lpdwTabs)
1707 {
1708     MSGDUMP_TPRINTF(TEXT("%sEM_SETTABSTOPS(hwnd:%p, cTabs:%d, lpdwTabs:%p)\n"),
1709                     MSGDUMP_PREFIX, (void *)hwnd, cTabs, (void *)lpdwTabs);
1710     return FALSE;
1711 }
1712 
1713 static __inline void MSGDUMP_API
1714 MD_Edit_OnSetPasswordChar(HWND hwnd, UINT ch)
1715 {
1716     MSGDUMP_TPRINTF(TEXT("%sEM_SETPASSWORDCHAR(hwnd:%p, ch:%u)\n"),
1717                     MSGDUMP_PREFIX, (void *)hwnd, ch);
1718 }
1719 
1720 static __inline void MSGDUMP_API
1721 MD_Edit_OnEmptyUndoBuffer(HWND hwnd)
1722 {
1723     MSGDUMP_TPRINTF(TEXT("%sEM_EMPTYUNDOBUFFER(hwnd:%p)\n"),
1724                     MSGDUMP_PREFIX, (void *)hwnd);
1725 }
1726 
1727 static __inline INT MSGDUMP_API
1728 MD_Edit_OnGetFirstVisibleLine(HWND hwnd)
1729 {
1730     MSGDUMP_TPRINTF(TEXT("%sEM_GETFIRSTVISIBLELINE(hwnd:%p)\n"),
1731                     MSGDUMP_PREFIX, (void *)hwnd);
1732     return 0;
1733 }
1734 
1735 static __inline BOOL MSGDUMP_API
1736 MD_Edit_OnSetReadOnly(HWND hwnd, BOOL fReadOnly)
1737 {
1738     MSGDUMP_TPRINTF(TEXT("%sEM_SETREADONLY(hwnd:%p, fReadOnly:%d)\n"),
1739                     MSGDUMP_PREFIX, (void *)hwnd, fReadOnly);
1740 }
1741 
1742 static __inline void MSGDUMP_API
1743 MD_Edit_OnSetWordBreakProc(HWND hwnd, EDITWORDBREAKPROC ewbprc)
1744 {
1745     MSGDUMP_TPRINTF(TEXT("%sEM_SETWORDBREAKPROC(hwnd:%p, ewbprc:%p)\n"),
1746                     MSGDUMP_PREFIX, (void *)hwnd, (void *)ewbprc);
1747 }
1748 
1749 static __inline EDITWORDBREAKPROC MSGDUMP_API
1750 MD_Edit_OnGetWordBreakProc(HWND hwnd)
1751 {
1752     MSGDUMP_TPRINTF(TEXT("%sEM_GETWORDBREAKPROC(hwnd:%p)\n"),
1753                     MSGDUMP_PREFIX, (void *)hwnd);
1754     return NULL;
1755 }
1756 
1757 static __inline UINT MSGDUMP_API
1758 MD_Edit_OnGetPasswordChar(HWND hwnd)
1759 {
1760     MSGDUMP_TPRINTF(TEXT("%sEM_GETPASSWORDCHAR(hwnd:%p)\n"),
1761                     MSGDUMP_PREFIX, (void *)hwnd);
1762     return 0;
1763 }
1764 
1765 static __inline void MSGDUMP_API
1766 MD_Edit_OnSetMargins(HWND hwnd, UINT fwMargin, WORD wLeft, WORD wRight)
1767 {
1768     MSGDUMP_TPRINTF(TEXT("%sEM_SETMARGINS(hwnd:%p, fwMargin:%u, wLeft:%d, wRight:%d)\n"),
1769                     MSGDUMP_PREFIX, (void *)hwnd, fwMargin, wLeft, wRight);
1770 }
1771 
1772 static __inline DWORD MSGDUMP_API
1773 MD_Edit_OnGetMargins(HWND hwnd)
1774 {
1775     MSGDUMP_TPRINTF(TEXT("%sEM_GETMARGINS(hwnd:%p)\n"),
1776                     MSGDUMP_PREFIX, (void *)hwnd);
1777     return 0;
1778 }
1779 
1780 static __inline void MSGDUMP_API
1781 MD_Edit_OnSetLimitText(HWND hwnd, DWORD cbMax)
1782 {
1783     MSGDUMP_TPRINTF(TEXT("%sEM_SETLIMITTEXT(hwnd:%p, cbMax:%ld)\n"),
1784                     MSGDUMP_PREFIX, (void *)hwnd, cbMax);
1785 }
1786 
1787 static __inline DWORD MSGDUMP_API
1788 MD_Edit_OnGetLimitText(HWND hwnd)
1789 {
1790     MSGDUMP_TPRINTF(TEXT("%sEM_GETLIMITTEXT(hwnd:%p)\n"),
1791                     MSGDUMP_PREFIX, (void *)hwnd);
1792     return 0;
1793 }
1794 
1795 static __inline void MSGDUMP_API
1796 MD_Edit_OnPosFromChar(HWND hwnd, LPPOINT lpPoint, UINT wCharIndex)
1797 {
1798     MSGDUMP_TPRINTF(TEXT("%sEM_POSFROMCHAR(hwnd:%p, lpPoint:%p, wCharIndex:%u)\n"),
1799                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpPoint, wCharIndex);
1800 }
1801 
1802 static __inline LONG MSGDUMP_API
1803 MD_Edit_OnCharFromPos(HWND hwnd, INT x, INT y)
1804 {
1805     MSGDUMP_TPRINTF(TEXT("%sEM_CHARFROMPOS(hwnd:%p, x:%d, y:%d)\n"),
1806                     MSGDUMP_PREFIX, (void *)hwnd, x, y);
1807     return 0;
1808 }
1809 
1810 static __inline DWORD MSGDUMP_API
1811 MD_Edit_OnSetIMEStatus(HWND hwnd, UINT uType, DWORD dwFlags)
1812 {
1813     MSGDUMP_TPRINTF(TEXT("%sEM_SETIMESTATUS(hwnd:%p, uType:%u, dwFlags:0x%08lX)\n"),
1814                     MSGDUMP_PREFIX, (void *)hwnd, uType, dwFlags);
1815     return 0;
1816 }
1817 
1818 static __inline DWORD MSGDUMP_API
1819 MD_Edit_OnGetIMEStatus(HWND hwnd, UINT uType)
1820 {
1821     MSGDUMP_TPRINTF(TEXT("%sEM_SETIMESTATUS(hwnd:%p, uType:%u)\n"),
1822                     MSGDUMP_PREFIX, (void *)hwnd, uType);
1823     return 0;
1824 }
1825 
1826 static __inline HICON MSGDUMP_API
1827 MD_Static_OnSetIcon(HWND hwnd, HICON hIcon)
1828 {
1829     MSGDUMP_TPRINTF(TEXT("%sSTM_SETICON(hwnd:%p, hIcon:%p)\n"),
1830                     MSGDUMP_PREFIX, (void *)hwnd, (void *)hIcon);
1831     return NULL;
1832 }
1833 
1834 static __inline HICON MSGDUMP_API
1835 MD_Static_OnGetIcon(HWND hwnd)
1836 {
1837 
1838     MSGDUMP_TPRINTF(TEXT("%sSTM_SETICON(hwnd:%p)\n"),
1839                     MSGDUMP_PREFIX, (void *)hwnd);
1840     return NULL;
1841 }
1842 
1843 static __inline HANDLE MSGDUMP_API
1844 MD_Static_OnSetImage(HWND hwnd, UINT fImageType, HANDLE hImage)
1845 {
1846     MSGDUMP_TPRINTF(TEXT("%sSTM_SETIMAGE(hwnd:%p, fImageType:%u, hImage:%p)\n"),
1847                     MSGDUMP_PREFIX, (void *)hwnd, fImageType, (void *)hImage);
1848     return NULL;
1849 }
1850 
1851 static __inline HANDLE MSGDUMP_API
1852 MD_Static_OnGetImage(HWND hwnd, UINT fImageType)
1853 {
1854     MSGDUMP_TPRINTF(TEXT("%sSTM_GETIMAGE(hwnd:%p, fImageType:%u)\n"),
1855                     MSGDUMP_PREFIX, (void *)hwnd, fImageType);
1856     return NULL;
1857 }
1858 
1859 static __inline INT MSGDUMP_API
1860 MD_ListBox_OnAddString(HWND hwnd, LPCTSTR lpsz)
1861 {
1862     if (IsWindowUnicode(hwnd))
1863         MSGDUMP_TPRINTF(TEXT("%sLB_ADDSTRING(hwnd:%p, lpsz:%ls)\n"),
1864                         MSGDUMP_PREFIX, (void *)hwnd, (LPCWSTR)lpsz);
1865     else
1866         MSGDUMP_TPRINTF(TEXT("%sLB_ADDSTRING(hwnd:%p, lpsz:%hs)\n"),
1867                         MSGDUMP_PREFIX, (void *)hwnd, (LPCSTR)lpsz);
1868     return 0;
1869 }
1870 
1871 static __inline INT MSGDUMP_API
1872 MD_ListBox_OnInsertString(HWND hwnd, INT index, LPCTSTR lpsz)
1873 {
1874     if (IsWindowUnicode(hwnd))
1875         MSGDUMP_TPRINTF(TEXT("%sLB_INSERTSTRING(hwnd:%p, index:%d, lpsz:%ls)\n"),
1876                         MSGDUMP_PREFIX, (void *)hwnd, index, (LPCWSTR)lpsz);
1877     else
1878         MSGDUMP_TPRINTF(TEXT("%sLB_INSERTSTRING(hwnd:%p, index:%d, lpsz:%hs)\n"),
1879                         MSGDUMP_PREFIX, (void *)hwnd, index, (LPCSTR)lpsz);
1880     return 0;
1881 }
1882 
1883 static __inline INT MSGDUMP_API
1884 MD_ListBox_OnDeleteString(HWND hwnd, INT index)
1885 {
1886     MSGDUMP_TPRINTF(TEXT("%sLB_DELETESTRING(hwnd:%p, index:%d)\n"),
1887                     MSGDUMP_PREFIX, (void *)hwnd, index);
1888     return 0;
1889 }
1890 
1891 static __inline INT MSGDUMP_API
1892 MD_ListBox_OnSelItemRangeEx(HWND hwnd, UINT wFirst, UINT wLast)
1893 {
1894     MSGDUMP_TPRINTF(TEXT("%sLB_SELITEMRANGEEX(hwnd:%p, wFirst:%u, wLast:%u)\n"),
1895                     MSGDUMP_PREFIX, (void *)hwnd, wFirst, wLast);
1896     return 0;
1897 }
1898 
1899 static __inline void MSGDUMP_API
1900 MD_ListBox_OnResetContent(HWND hwnd)
1901 {
1902     MSGDUMP_TPRINTF(TEXT("%sLB_RESETCONTENT(hwnd:%p)\n"),
1903                     MSGDUMP_PREFIX, (void *)hwnd);
1904 }
1905 
1906 static __inline INT MSGDUMP_API
1907 MD_ListBox_OnSetSel(HWND hwnd, BOOL fSelect, UINT index)
1908 {
1909     MSGDUMP_TPRINTF(TEXT("%sLB_SETSEL(hwnd:%p, fSelect:%d, index:%u)\n"),
1910                     MSGDUMP_PREFIX, (void *)hwnd, fSelect, index);
1911     return 0;
1912 }
1913 
1914 static __inline INT MSGDUMP_API
1915 MD_ListBox_OnSetCurSel(HWND hwnd, INT index)
1916 {
1917     MSGDUMP_TPRINTF(TEXT("%sLB_SETCURSEL(hwnd:%p, index:%d)\n"),
1918                     MSGDUMP_PREFIX, (void *)hwnd, index);
1919     return 0;
1920 }
1921 
1922 static __inline INT MSGDUMP_API
1923 MD_ListBox_OnGetSel(HWND hwnd, INT index)
1924 {
1925     MSGDUMP_TPRINTF(TEXT("%sLB_GETSEL(hwnd:%p, index:%d)\n"),
1926                     MSGDUMP_PREFIX, (void *)hwnd, index);
1927     return 0;
1928 }
1929 
1930 static __inline INT MSGDUMP_API
1931 MD_ListBox_OnGetCurSel(HWND hwnd)
1932 {
1933     MSGDUMP_TPRINTF(TEXT("%sLB_GETCURSEL(hwnd:%p)\n"),
1934                     MSGDUMP_PREFIX, (void *)hwnd);
1935     return 0;
1936 }
1937 
1938 static __inline INT MSGDUMP_API
1939 MD_ListBox_OnGetText(HWND hwnd, INT index, LPTSTR lpszBuffer)
1940 {
1941     MSGDUMP_TPRINTF(TEXT("%sLB_GETTEXT(hwnd:%p, lpszBuffer:%p)\n"),
1942                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpszBuffer);
1943     return 0;
1944 }
1945 
1946 static __inline INT MSGDUMP_API
1947 MD_ListBox_OnGetTextLen(HWND hwnd, INT index)
1948 {
1949     MSGDUMP_TPRINTF(TEXT("%sLB_GETTEXTLEN(hwnd:%p, index:%d)\n"),
1950                     MSGDUMP_PREFIX, (void *)hwnd, index);
1951     return 0;
1952 }
1953 
1954 static __inline INT MSGDUMP_API
1955 MD_ListBox_OnGetCount(HWND hwnd)
1956 {
1957     MSGDUMP_TPRINTF(TEXT("%sLB_GETCOUNT(hwnd:%p)\n"),
1958                     MSGDUMP_PREFIX, (void *)hwnd);
1959     return 0;
1960 }
1961 
1962 static __inline INT MSGDUMP_API
1963 MD_ListBox_OnSelectString(HWND hwnd, INT indexStart, LPCTSTR lpszFind)
1964 {
1965     if (IsWindowUnicode(hwnd))
1966         MSGDUMP_TPRINTF(TEXT("%sLB_SELECTSTRING(hwnd:%p, indexStart:%d, lpszFind:%ls)\n"),
1967                         MSGDUMP_PREFIX, (void *)hwnd, indexStart, (LPCWSTR)lpszFind);
1968     else
1969         MSGDUMP_TPRINTF(TEXT("%sLB_SELECTSTRING(hwnd:%p, indexStart:%d, lpszFind:%hs)\n"),
1970                         MSGDUMP_PREFIX, (void *)hwnd, indexStart, (LPCSTR)lpszFind);
1971     return 0;
1972 }
1973 
1974 static __inline INT MSGDUMP_API
1975 MD_ListBox_OnDir(HWND hwnd, UINT uAttrs, LPCTSTR lpszFileSpec)
1976 {
1977     if (IsWindowUnicode(hwnd))
1978         MSGDUMP_TPRINTF(TEXT("%sLB_DIR(hwnd:%p, uAttrs:%u, lpszFileSpec:%ls)\n"),
1979                         MSGDUMP_PREFIX, (void *)hwnd, uAttrs, (LPCWSTR)lpszFileSpec);
1980     else
1981         MSGDUMP_TPRINTF(TEXT("%sLB_DIR(hwnd:%p, uAttrs:%u, lpszFileSpec:%hs)\n"),
1982                         MSGDUMP_PREFIX, (void *)hwnd, uAttrs, (LPCSTR)lpszFileSpec);
1983     return 0;
1984 }
1985 
1986 static __inline INT MSGDUMP_API
1987 MD_ListBox_OnGetTopIndex(HWND hwnd)
1988 {
1989     MSGDUMP_TPRINTF(TEXT("%sLB_DIR(hwnd:%p)\n"),
1990                     MSGDUMP_PREFIX, (void *)hwnd);
1991     return 0;
1992 }
1993 
1994 static __inline INT MSGDUMP_API
1995 MD_ListBox_OnFindString(HWND hwnd, INT indexStart, LPCTSTR lpszFind)
1996 {
1997     if (IsWindowUnicode(hwnd))
1998         MSGDUMP_TPRINTF(TEXT("%sLB_FINDSTRING(hwnd:%p, indexStart:%d, lpszFind:%ls)\n"),
1999                         MSGDUMP_PREFIX, (void *)hwnd, indexStart, (LPCWSTR)lpszFind);
2000     else
2001         MSGDUMP_TPRINTF(TEXT("%sLB_FINDSTRING(hwnd:%p, indexStart:%d, lpszFind:%ls)\n"),
2002                         MSGDUMP_PREFIX, (void *)hwnd, indexStart, (LPCSTR)lpszFind);
2003     return 0;
2004 }
2005 
2006 static __inline INT MSGDUMP_API
2007 MD_ListBox_OnGetSelCount(HWND hwnd)
2008 {
2009     MSGDUMP_TPRINTF(TEXT("%sLB_GETSELCOUNT(hwnd:%p)\n"),
2010                     MSGDUMP_PREFIX, (void *)hwnd);
2011     return 0;
2012 }
2013 
2014 static __inline INT MSGDUMP_API
2015 MD_ListBox_OnGetSelItems(HWND hwnd, UINT cItems, LPINT lpnItems)
2016 {
2017     MSGDUMP_TPRINTF(TEXT("%sLB_GETSELITEMS(hwnd:%p, cItems:%u, lpnItems:%p)\n"),
2018                     MSGDUMP_PREFIX, (void *)hwnd, cItems, (void *)lpnItems);
2019     return 0;
2020 }
2021 
2022 static __inline BOOL MSGDUMP_API
2023 MD_ListBox_OnSetTabStops(HWND hwnd, UINT cTabs, LPINT lpnTabs)
2024 {
2025     MSGDUMP_TPRINTF(TEXT("%sLB_SETTABSTOPS(hwnd:%p, cTabs:%u, lpnTabs:%p)\n"),
2026                     MSGDUMP_PREFIX, (void *)hwnd, cTabs, (void *)lpnTabs);
2027     return FALSE;
2028 }
2029 
2030 static __inline INT MSGDUMP_API
2031 MD_ListBox_OnGetHorizontalExtent(HWND hwnd)
2032 {
2033     MSGDUMP_TPRINTF(TEXT("%sLB_GETHORIZONTALEXTENT(hwnd:%p)\n"),
2034                     MSGDUMP_PREFIX, (void *)hwnd);
2035     return 0;
2036 }
2037 
2038 static __inline void MSGDUMP_API
2039 MD_ListBox_OnSetHorizontalExtent(HWND hwnd, INT cxExtent)
2040 {
2041     MSGDUMP_TPRINTF(TEXT("%sLB_SETHORIZONTALEXTENT(hwnd:%p, cxExtent:%d)\n"),
2042                     MSGDUMP_PREFIX, (void *)hwnd, cxExtent);
2043 }
2044 
2045 static __inline void MSGDUMP_API
2046 MD_ListBox_OnSetColumnWidth(HWND hwnd, INT cxColumn)
2047 {
2048     MSGDUMP_TPRINTF(TEXT("%sLB_SETCOLUMNWIDTH(hwnd:%p, cxColumn:%d)\n"),
2049                     MSGDUMP_PREFIX, (void *)hwnd, cxColumn);
2050 }
2051 
2052 static __inline INT MSGDUMP_API
2053 MD_ListBox_OnAddFile(HWND hwnd, LPCTSTR lpszFilename)
2054 {
2055     if (IsWindowUnicode(hwnd))
2056         MSGDUMP_TPRINTF(TEXT("%sLB_ADDFILE(hwnd:%p, lpszFilename:%ls)\n"),
2057                         MSGDUMP_PREFIX, (void *)hwnd, (LPCWSTR)lpszFilename);
2058     else
2059         MSGDUMP_TPRINTF(TEXT("%sLB_ADDFILE(hwnd:%p, lpszFilename:%ls)\n"),
2060                         MSGDUMP_PREFIX, (void *)hwnd, (LPCSTR)lpszFilename);
2061     return 0;
2062 }
2063 
2064 static __inline INT MSGDUMP_API
2065 MD_ListBox_OnSetTopIndex(HWND hwnd, INT index)
2066 {
2067     MSGDUMP_TPRINTF(TEXT("%sLB_SETTOPINDEX(hwnd:%p, index:%d)\n"),
2068                     MSGDUMP_PREFIX, (void *)hwnd, index);
2069     return 0;
2070 }
2071 
2072 static __inline INT MSGDUMP_API
2073 MD_ListBox_OnGetItemRect(HWND hwnd, INT index, RECT FAR *lprc)
2074 {
2075     MSGDUMP_TPRINTF(TEXT("%sLB_GETITEMRECT(hwnd:%p, index:%d, lprc:%p)\n"),
2076                     MSGDUMP_PREFIX, (void *)hwnd, index, (void *)lprc);
2077     return 0;
2078 }
2079 
2080 static __inline INT_PTR MSGDUMP_API
2081 MD_ListBox_OnGetItemData(HWND hwnd, INT index)
2082 {
2083     MSGDUMP_TPRINTF(TEXT("%sLB_GETITEMDATA(hwnd:%p, index:%d)\n"),
2084                     MSGDUMP_PREFIX, (void *)hwnd, index);
2085     return 0;
2086 }
2087 
2088 static __inline INT_PTR MSGDUMP_API
2089 MD_ListBox_OnSetItemData(HWND hwnd, INT index, LPARAM dwData)
2090 {
2091     MSGDUMP_TPRINTF(TEXT("%sLB_SETITEMDATA(hwnd:%p, index:%d, dwData:%p)\n"),
2092                     MSGDUMP_PREFIX, (void *)hwnd, index, (void *)dwData);
2093     return 0;
2094 }
2095 
2096 static __inline INT MSGDUMP_API
2097 MD_ListBox_OnSelItemRange(HWND hwnd, BOOL fSelect, UINT wFirst, UINT wLast)
2098 {
2099     MSGDUMP_TPRINTF(TEXT("%sLB_SELITEMRANGE(hwnd:%p, fSelect:%d, wFirst:%u, wLast:%u)\n"),
2100                     MSGDUMP_PREFIX, (void *)hwnd, fSelect, wFirst, wLast);
2101     return 0;
2102 }
2103 
2104 static __inline INT MSGDUMP_API
2105 MD_ListBox_OnSetAnchorIndex(HWND hwnd, INT index)
2106 {
2107     MSGDUMP_TPRINTF(TEXT("%sLB_SETANCHORINDEX(hwnd:%p, index:%d)\n"),
2108                     MSGDUMP_PREFIX, (void *)hwnd, index);
2109     return 0;
2110 }
2111 
2112 static __inline INT MSGDUMP_API
2113 MD_ListBox_OnGetAnchorIndex(HWND hwnd)
2114 {
2115     MSGDUMP_TPRINTF(TEXT("%sLB_GETANCHORINDEX(hwnd:%p)\n"),
2116                     MSGDUMP_PREFIX, (void *)hwnd);
2117     return 0;
2118 }
2119 
2120 static __inline INT MSGDUMP_API
2121 MD_ListBox_OnSetCaretIndex(HWND hwnd, INT index, BOOL fScroll)
2122 {
2123     MSGDUMP_TPRINTF(TEXT("%sLB_SETCARETINDEX(hwnd:%p, index:%d, fScroll:%d)\n"),
2124                     MSGDUMP_PREFIX, (void *)hwnd, index, fScroll);
2125     return 0;
2126 }
2127 
2128 static __inline INT MSGDUMP_API
2129 MD_ListBox_OnGetCaretIndex(HWND hwnd)
2130 {
2131     MSGDUMP_TPRINTF(TEXT("%sLB_GETCARETINDEX(hwnd:%p)\n"),
2132                     MSGDUMP_PREFIX, (void *)hwnd);
2133     return 0;
2134 }
2135 
2136 static __inline INT MSGDUMP_API
2137 MD_ListBox_OnSetItemHeight(HWND hwnd, INT index, INT cyItem)
2138 {
2139     MSGDUMP_TPRINTF(TEXT("%sLB_SETITEMHEIGHT(hwnd:%p, index:%d, cyItem:%d)\n"),
2140                     MSGDUMP_PREFIX, (void *)hwnd, index, cyItem);
2141     return 0;
2142 }
2143 
2144 static __inline INT MSGDUMP_API
2145 MD_ListBox_OnGetItemHeight(HWND hwnd, INT index)
2146 {
2147     MSGDUMP_TPRINTF(TEXT("%sLB_GETITEMHEIGHT(hwnd:%p, index:%d)\n"),
2148                     MSGDUMP_PREFIX, (void *)hwnd, index);
2149     return 0;
2150 }
2151 
2152 static __inline INT MSGDUMP_API
2153 MD_ListBox_OnFindStringExact(HWND hwnd, INT indexStart, LPCTSTR lpszFind)
2154 {
2155     if (IsWindowUnicode(hwnd))
2156         MSGDUMP_TPRINTF(TEXT("%sLB_FINDSTRINGEXACT(hwnd:%p, indexStart:%d, lpszFind:%ls)\n"),
2157                         MSGDUMP_PREFIX, (void *)hwnd, indexStart, (LPCWSTR)lpszFind);
2158     else
2159         MSGDUMP_TPRINTF(TEXT("%sLB_FINDSTRINGEXACT(hwnd:%p, indexStart:%d, lpszFind:%hs)\n"),
2160                         MSGDUMP_PREFIX, (void *)hwnd, indexStart, (LPCSTR)lpszFind);
2161     return 0;
2162 }
2163 
2164 static __inline LCID MSGDUMP_API
2165 MD_ListBox_OnSetLocale(HWND hwnd, LCID wLocaleID)
2166 {
2167     MSGDUMP_TPRINTF(TEXT("%sLB_SETLOCALE(hwnd:%p, wLocaleID:0x%08X)\n"),
2168                     MSGDUMP_PREFIX, (void *)hwnd, wLocaleID);
2169     return 0;
2170 }
2171 
2172 static __inline LCID MSGDUMP_API
2173 MD_ListBox_OnGetLocale(HWND hwnd)
2174 {
2175     MSGDUMP_TPRINTF(TEXT("%sLB_GETLOCALE(hwnd:%p)\n"),
2176                     MSGDUMP_PREFIX, (void *)hwnd);
2177     return 0;
2178 }
2179 
2180 static __inline INT MSGDUMP_API
2181 MD_ListBox_OnSetCount(HWND hwnd, INT cItems)
2182 {
2183     MSGDUMP_TPRINTF(TEXT("%sLB_SETCOUNT(hwnd:%p, cItems:%d)\n"),
2184                     MSGDUMP_PREFIX, (void *)hwnd, cItems);
2185     return 0;
2186 }
2187 
2188 static __inline DWORD MSGDUMP_API
2189 MD_ListBox_OnInitStorage(HWND hwnd, UINT cItems, DWORD cb)
2190 {
2191     MSGDUMP_TPRINTF(TEXT("%sLB_INITSTORAGE(hwnd:%p, cItems:%d, cb:%lu)\n"),
2192                     MSGDUMP_PREFIX, (void *)hwnd, cItems, cb);
2193     return 0;
2194 }
2195 
2196 static __inline DWORD MSGDUMP_API
2197 MD_ListBox_OnItemFromPoint(HWND hwnd, INT xPos, INT yPos)
2198 {
2199     MSGDUMP_TPRINTF(TEXT("%sLB_ITEMFROMPOINT(hwnd:%p, xPos:%d, yPos:%d)\n"),
2200                     MSGDUMP_PREFIX, (void *)hwnd, xPos, yPos);
2201     return 0;
2202 }
2203 
2204 static __inline DWORD MSGDUMP_API
2205 MD_ComboBox_OnGetEditSel(HWND hwnd, LPDWORD lpdwStart, LPDWORD lpdwEnd)
2206 {
2207     MSGDUMP_TPRINTF(TEXT("%sCB_GETEDITSEL(hwnd:%p, lpdwStart:%p, lpdwEnd:%p)\n"),
2208                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpdwStart, (void *)lpdwEnd);
2209     return 0;
2210 }
2211 
2212 static __inline void MSGDUMP_API
2213 MD_ComboBox_OnLimitText(HWND hwnd, UINT cchLimit)
2214 {
2215     MSGDUMP_TPRINTF(TEXT("%sCB_LIMITTEXT(hwnd:%p, cchLimit:%u)\n"),
2216                     MSGDUMP_PREFIX, (void *)hwnd, cchLimit);
2217 }
2218 
2219 static __inline INT MSGDUMP_API
2220 MD_ComboBox_OnSetEditSel(HWND hwnd, INT ichStart, INT ichEnd)
2221 {
2222     MSGDUMP_TPRINTF(TEXT("%sCB_SETEDITSEL(hwnd:%p, ichStart:%d, ichEnd:%d)\n"),
2223                     MSGDUMP_PREFIX, (void *)hwnd, ichStart, ichEnd);
2224     return 0;
2225 }
2226 
2227 static __inline INT MSGDUMP_API
2228 MD_ComboBox_OnAddString(HWND hwnd, LPCTSTR lpsz)
2229 {
2230     if (IsWindowUnicode(hwnd))
2231         MSGDUMP_TPRINTF(TEXT("%sCB_ADDSTRING(hwnd:%p, lpsz:%ls)\n"),
2232                         MSGDUMP_PREFIX, (void *)hwnd, (LPCWSTR)lpsz);
2233     else
2234         MSGDUMP_TPRINTF(TEXT("%sCB_ADDSTRING(hwnd:%p, lpsz:%hs)\n"),
2235                         MSGDUMP_PREFIX, (void *)hwnd, (LPCSTR)lpsz);
2236     return 0;
2237 }
2238 
2239 static __inline INT MSGDUMP_API
2240 MD_ComboBox_OnDeleteString(HWND hwnd, INT index)
2241 {
2242     MSGDUMP_TPRINTF(TEXT("%sCB_DELETESTRING(hwnd:%p, index:%d)\n"),
2243                     MSGDUMP_PREFIX, (void *)hwnd, index);
2244     return 0;
2245 }
2246 
2247 static __inline INT MSGDUMP_API
2248 MD_ComboBox_OnDir(HWND hwnd, UINT uAttrs, LPCTSTR lpszFileSpec)
2249 {
2250     if (IsWindowUnicode(hwnd))
2251         MSGDUMP_TPRINTF(TEXT("%sCB_DIR(hwnd:%p, uAttrs:%u, lpszFileSpec:%ls)\n"),
2252                         MSGDUMP_PREFIX, (void *)hwnd, uAttrs, (LPCWSTR)lpszFileSpec);
2253     else
2254         MSGDUMP_TPRINTF(TEXT("%sCB_DIR(hwnd:%p, uAttrs:%u, lpszFileSpec:%ls)\n"),
2255                         MSGDUMP_PREFIX, (void *)hwnd, uAttrs, (LPCSTR)lpszFileSpec);
2256     return 0;
2257 }
2258 
2259 static __inline INT MSGDUMP_API
2260 MD_ComboBox_OnGetCount(HWND hwnd)
2261 {
2262     MSGDUMP_TPRINTF(TEXT("%sCB_GETCOUNT(hwnd:%p)\n"),
2263                     MSGDUMP_PREFIX, (void *)hwnd);
2264     return 0;
2265 }
2266 
2267 static __inline INT MSGDUMP_API
2268 MD_ComboBox_GetCurSel(HWND hwnd)
2269 {
2270     MSGDUMP_TPRINTF(TEXT("%sCB_GETCURSEL(hwnd:%p)\n"),
2271                     MSGDUMP_PREFIX, (void *)hwnd);
2272     return 0;
2273 }
2274 
2275 static __inline INT MSGDUMP_API
2276 MD_ComboBox_GetLBText(HWND hwnd, INT index, LPTSTR lpszBuffer)
2277 {
2278     MSGDUMP_TPRINTF(TEXT("%sCB_GETLBTEXT(hwnd:%p, index:%d, lpszBuffer:%p)\n"),
2279                     MSGDUMP_PREFIX, (void *)hwnd, index, (void *)lpszBuffer);
2280     return 0;
2281 }
2282 
2283 static __inline INT MSGDUMP_API
2284 MD_ComboBox_OnGetLBTextLen(HWND hwnd, INT index)
2285 {
2286     MSGDUMP_TPRINTF(TEXT("%sCB_GETLBTEXTLEN(hwnd:%p, index:%d)\n"),
2287                     MSGDUMP_PREFIX, (void *)hwnd, index);
2288     return 0;
2289 }
2290 
2291 static __inline INT MSGDUMP_API
2292 MD_ComboBox_OnInsertString(HWND hwnd, INT index, LPCTSTR lpsz)
2293 {
2294     if (IsWindowUnicode(hwnd))
2295         MSGDUMP_TPRINTF(TEXT("%sCB_INSERTSTRING(hwnd:%p, index:%d, lpsz:%ls)\n"),
2296                         MSGDUMP_PREFIX, (void *)hwnd, index, (LPCWSTR)lpsz);
2297     else
2298         MSGDUMP_TPRINTF(TEXT("%sCB_INSERTSTRING(hwnd:%p, index:%d, lpsz:%hs)\n"),
2299                         MSGDUMP_PREFIX, (void *)hwnd, index, (LPCSTR)lpsz);
2300 }
2301 
2302 static __inline void MSGDUMP_API
2303 MD_ComboBox_OnResetContent(HWND hwnd)
2304 {
2305     MSGDUMP_TPRINTF(TEXT("%sCB_RESETCONTENT(hwnd:%p)\n"),
2306                     MSGDUMP_PREFIX, (void *)hwnd);
2307 }
2308 
2309 static __inline INT MSGDUMP_API
2310 MD_ComboBox_OnFindString(HWND hwnd, INT indexStart, LPCTSTR lpszFind)
2311 {
2312     if (IsWindowUnicode(hwnd))
2313         MSGDUMP_TPRINTF(TEXT("%sCB_FINDSTRING(hwnd:%p, indexStart:%d, lpszFind:%ls)\n"),
2314                         MSGDUMP_PREFIX, (void *)hwnd, indexStart, (LPCWSTR)lpszFind);
2315     else
2316         MSGDUMP_TPRINTF(TEXT("%sCB_FINDSTRING(hwnd:%p, indexStart:%d, lpszFind:%hs)\n"),
2317                         MSGDUMP_PREFIX, (void *)hwnd, indexStart, (LPCSTR)lpszFind);
2318     return 0;
2319 }
2320 
2321 static __inline INT MSGDUMP_API
2322 MD_ComboBox_OnSelectString(HWND hwnd, INT indexStart, LPCTSTR lpszSelect)
2323 {
2324     if (IsWindowUnicode(hwnd))
2325         MSGDUMP_TPRINTF(TEXT("%sCB_SELECTSTRING(hwnd:%p, indexStart:%d, lpszSelect:%ls)\n"),
2326                         MSGDUMP_PREFIX, (void *)hwnd, indexStart, (LPCWSTR)lpszSelect);
2327     else
2328         MSGDUMP_TPRINTF(TEXT("%sCB_SELECTSTRING(hwnd:%p, indexStart:%d, lpszSelect:%hs)\n"),
2329                         MSGDUMP_PREFIX, (void *)hwnd, indexStart, (LPCSTR)lpszSelect);
2330     return 0;
2331 }
2332 
2333 static __inline INT MSGDUMP_API
2334 MD_ComboBox_OnSetCurSel(HWND hwnd, INT index)
2335 {
2336     MSGDUMP_TPRINTF(TEXT("%sCB_SETCURSEL(hwnd:%p, index:%d)\n"),
2337                     MSGDUMP_PREFIX, (void *)hwnd, index);
2338     return 0;
2339 }
2340 
2341 static __inline BOOL MSGDUMP_API
2342 MD_ComboBox_OnShowDropDown(HWND hwnd, BOOL fShow)
2343 {
2344     MSGDUMP_TPRINTF(TEXT("%sCB_SHOWDROPDOWN(hwnd:%p, fShow:%d)\n"),
2345                     MSGDUMP_PREFIX, (void *)hwnd, fShow);
2346     return 0;
2347 }
2348 
2349 static __inline INT_PTR MSGDUMP_API
2350 MD_ComboBox_OnGetItemData(HWND hwnd, INT index)
2351 {
2352     MSGDUMP_TPRINTF(TEXT("%sCB_GETITEMDATA(hwnd:%p, index:%d)\n"),
2353                     MSGDUMP_PREFIX, (void *)hwnd, index);
2354     return 0;
2355 }
2356 
2357 static __inline INT_PTR MSGDUMP_API
2358 MD_ComboBox_OnSetItemData(HWND hwnd, INT index, DWORD_PTR dwData)
2359 {
2360     MSGDUMP_TPRINTF(TEXT("%sCB_SETITEMDATA(hwnd:%p, index:%d, dwData:%p)\n"),
2361                     MSGDUMP_PREFIX, (void *)hwnd, index, (void *)dwData);
2362     return 0;
2363 }
2364 
2365 static __inline void MSGDUMP_API
2366 MD_ComboBox_OnGetDroppedControlRect(HWND hwnd, RECT FAR *lprc)
2367 {
2368     MSGDUMP_TPRINTF(TEXT("%sCB_GETDROPPEDCONTROLRECT(hwnd:%p, lprc:%p)\n"),
2369                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lprc);
2370 }
2371 
2372 static __inline INT MSGDUMP_API
2373 MD_ComboBox_OnSetItemHeight(HWND hwnd, INT index, INT height)
2374 {
2375     MSGDUMP_TPRINTF(TEXT("%sCB_SETITEMHEIGHT(hwnd:%p, index:%d, height:%d)\n"),
2376                     MSGDUMP_PREFIX, (void *)hwnd, index, height);
2377     return 0;
2378 }
2379 
2380 static __inline INT MSGDUMP_API
2381 MD_ComboBox_OnGetItemHeight(HWND hwnd, INT index)
2382 {
2383     MSGDUMP_TPRINTF(TEXT("%sCB_SETITEMHEIGHT(hwnd:%p, index:%d)\n"),
2384                     MSGDUMP_PREFIX, (void *)hwnd, index);
2385     return 0;
2386 }
2387 
2388 static __inline INT MSGDUMP_API
2389 MD_ComboBox_OnSetExtendedUI(HWND hwnd, BOOL fExtended)
2390 {
2391     MSGDUMP_TPRINTF(TEXT("%sCB_SETEXTENDEDUI(hwnd:%p, fExtended:%d)\n"),
2392                     MSGDUMP_PREFIX, (void *)hwnd, fExtended);
2393     return 0;
2394 }
2395 
2396 static __inline BOOL MSGDUMP_API
2397 MD_ComboBox_OnGetExtendedUI(HWND hwnd)
2398 {
2399     MSGDUMP_TPRINTF(TEXT("%sCB_SETEXTENDEDUI(hwnd:%p)\n"),
2400                     MSGDUMP_PREFIX, (void *)hwnd);
2401     return FALSE;
2402 }
2403 
2404 static __inline BOOL MSGDUMP_API
2405 MD_ComboBox_OnGetDroppedState(HWND hwnd)
2406 {
2407     MSGDUMP_TPRINTF(TEXT("%sCB_GETDROPPEDSTATE(hwnd:%p)\n"),
2408                     MSGDUMP_PREFIX, (void *)hwnd);
2409     return FALSE;
2410 }
2411 
2412 static __inline INT MSGDUMP_API
2413 MD_ComboBox_OnFindStringExact(HWND hwnd, INT indexStart, LPCTSTR lpszFind)
2414 {
2415     if (IsWindowUnicode(hwnd))
2416         MSGDUMP_TPRINTF(TEXT("%sCB_FINDSTRINGEXACT(hwnd:%p, indexStart:%d, lpszFind:%ls)\n"),
2417                         MSGDUMP_PREFIX, (void *)hwnd, indexStart, (LPCWSTR)lpszFind);
2418     else
2419         MSGDUMP_TPRINTF(TEXT("%sCB_FINDSTRINGEXACT(hwnd:%p, indexStart:%d, lpszFind:%hs)\n"),
2420                         MSGDUMP_PREFIX, (void *)hwnd, indexStart, (LPCSTR)lpszFind);
2421     return 0;
2422 }
2423 
2424 static __inline LCID MSGDUMP_API
2425 MD_ComboBox_OnSetLocale(HWND hwnd, LCID wLocaleID)
2426 {
2427     MSGDUMP_TPRINTF(TEXT("%sCB_SETLOCALE(hwnd:%p, wLocaleID:0x%08lX)\n"),
2428                     MSGDUMP_PREFIX, (void *)hwnd, wLocaleID);
2429     return 0;
2430 }
2431 
2432 static __inline LCID MSGDUMP_API
2433 MD_ComboBox_OnGetLocale(HWND hwnd)
2434 {
2435     MSGDUMP_TPRINTF(TEXT("%sCB_GETLOCALE(hwnd:%p, wLocaleID:0x%08lX)\n"),
2436                     MSGDUMP_PREFIX, (void *)hwnd);
2437     return 0;
2438 }
2439 
2440 static __inline INT MSGDUMP_API
2441 MD_ComboBox_OnGetTopIndex(HWND hwnd)
2442 {
2443     MSGDUMP_TPRINTF(TEXT("%sCB_GETTOPINDEX(hwnd:%p)\n"),
2444                     MSGDUMP_PREFIX, (void *)hwnd);
2445     return 0;
2446 }
2447 
2448 static __inline INT MSGDUMP_API
2449 MD_ComboBox_OnSetTopIndex(HWND hwnd, INT index)
2450 {
2451     MSGDUMP_TPRINTF(TEXT("%sCB_SETTOPINDEX(hwnd:%p, index:%d)\n"),
2452                     MSGDUMP_PREFIX, (void *)hwnd, index);
2453     return 0;
2454 }
2455 
2456 static __inline INT MSGDUMP_API
2457 MD_ComboBox_OnGetHorizontalExtent(HWND hwnd)
2458 {
2459     MSGDUMP_TPRINTF(TEXT("%sCB_GETHORIZONTALEXTENT(hwnd:%p)\n"),
2460                     MSGDUMP_PREFIX, (void *)hwnd);
2461     return 0;
2462 }
2463 
2464 static __inline void MSGDUMP_API
2465 MD_ComboBox_OnSetHorizontalExtent(HWND hwnd, INT cxExtent)
2466 {
2467     MSGDUMP_TPRINTF(TEXT("%sCB_SETHORIZONTALEXTENT(hwnd:%p, cxExtent:%d)\n"),
2468                     MSGDUMP_PREFIX, (void *)hwnd, cxExtent);
2469 }
2470 
2471 static __inline INT MSGDUMP_API
2472 MD_ComboBox_OnGetDroppedWidth(HWND hwnd)
2473 {
2474     MSGDUMP_TPRINTF(TEXT("%sCB_GETDROPPEDWIDTH(hwnd:%p)\n"),
2475                     MSGDUMP_PREFIX, (void *)hwnd);
2476     return 0;
2477 }
2478 
2479 static __inline INT MSGDUMP_API
2480 MD_ComboBox_OnSetDroppedWidth(HWND hwnd, INT wWidth)
2481 {
2482     MSGDUMP_TPRINTF(TEXT("%sCB_SETDROPPEDWIDTH(hwnd:%p, wWidth:%d)\n"),
2483                     MSGDUMP_PREFIX, (void *)hwnd, wWidth);
2484     return 0;
2485 }
2486 
2487 static __inline INT MSGDUMP_API
2488 MD_ComboBox_OnInitStorage(HWND hwnd, INT cItems, DWORD cb)
2489 {
2490     MSGDUMP_TPRINTF(TEXT("%sCB_INITSTORAGE(hwnd:%p, cItems:%d, cb:%lu)\n"),
2491                     MSGDUMP_PREFIX, (void *)hwnd, cItems, cb);
2492     return 0;
2493 }
2494 
2495 static __inline INT MSGDUMP_API
2496 MD_ScrollBar_OnSetPos(HWND hwnd, INT nPos, BOOL fRedraw)
2497 {
2498     MSGDUMP_TPRINTF(TEXT("%sSBM_SETPOS(hwnd:%p, nPos:%d, fRedraw:%d)\n"),
2499                     MSGDUMP_PREFIX, (void *)hwnd, nPos, fRedraw);
2500     return 0;
2501 }
2502 
2503 static __inline INT MSGDUMP_API
2504 MD_ScrollBar_OnGetPos(HWND hwnd)
2505 {
2506     MSGDUMP_TPRINTF(TEXT("%sSBM_GETPOS(hwnd:%p)\n"),
2507                     MSGDUMP_PREFIX, (void *)hwnd);
2508     return 0;
2509 }
2510 
2511 static __inline INT MSGDUMP_API
2512 MD_ScrollBar_OnSetRange(HWND hwnd, INT nMinPos, INT nMaxPos)
2513 {
2514     MSGDUMP_TPRINTF(TEXT("%sSBM_SETRANGE(hwnd:%p, nMinPos:%d, nMaxPos:%d)\n"),
2515                     MSGDUMP_PREFIX, (void *)hwnd, nMinPos, nMaxPos);
2516     return 0;
2517 }
2518 
2519 static __inline INT MSGDUMP_API
2520 MD_ScrollBar_OnSetRangeRedraw(HWND hwnd, INT nMinPos, INT nMaxPos)
2521 {
2522     MSGDUMP_TPRINTF(TEXT("%sSBM_SETRANGEREDRAW(hwnd:%p, nMinPos:%d, nMaxPos:%d)\n"),
2523                     MSGDUMP_PREFIX, (void *)hwnd, nMinPos, nMaxPos);
2524     return 0;
2525 }
2526 
2527 static __inline void MSGDUMP_API
2528 MD_ScrollBar_OnGetRange(HWND hwnd, LPINT lpnMinPos, LPINT lpnMaxPos)
2529 {
2530     MSGDUMP_TPRINTF(TEXT("%sSBM_SETRANGEREDRAW(hwnd:%p, lpnMinPos:%p, lpnMaxPos:%p)\n"),
2531                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpnMinPos, (void *)lpnMaxPos);
2532 }
2533 
2534 static __inline BOOL MSGDUMP_API
2535 MD_ScrollBar_OnEnableArrows(HWND hwnd, UINT fuArrowFlags)
2536 {
2537     MSGDUMP_TPRINTF(TEXT("%sSBM_ENABLE_ARROWS(hwnd:%p, fuArrowFlags:%u)\n"),
2538                     MSGDUMP_PREFIX, (void *)hwnd, fuArrowFlags);
2539     return FALSE;
2540 }
2541 
2542 static __inline INT MSGDUMP_API
2543 MD_ScrollBar_OnSetScrollInfo(HWND hwnd, BOOL fRedraw, LPSCROLLINFO lpsi)
2544 {
2545     MSGDUMP_TPRINTF(TEXT("%sSBM_SETSCROLLINFO(hwnd:%p, fRedraw:%d, lpsi:%p)\n"),
2546                     MSGDUMP_PREFIX, (void *)hwnd, fRedraw, (void *)lpsi);
2547     return 0;
2548 }
2549 
2550 static __inline BOOL MSGDUMP_API
2551 MD_ScrollBar_OnGetScrollInfo(HWND hwnd, LPSCROLLINFO lpsi)
2552 {
2553     MSGDUMP_TPRINTF(TEXT("%sSBM_GETSCROLLINFO(hwnd:%p, lpsi:%p)\n"),
2554                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpsi);
2555     return 0;
2556 }
2557 
2558 static __inline BOOL MSGDUMP_API
2559 MD_ScrollBar_OnGetScrollBarInfo(HWND hwnd, LPSCROLLBARINFO lpsbi)
2560 {
2561     MSGDUMP_TPRINTF(TEXT("%sSBM_GETSCROLLBARINFO(hwnd:%p, lpsbi:%p)\n"),
2562                     MSGDUMP_PREFIX, (void *)hwnd, (void *)lpsbi);
2563     return 0;
2564 }
2565 
2566 static __inline LRESULT MSGDUMP_API
2567 MD_msgdump(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
2568 {
2569     TCHAR szClass[32];
2570     szClass[0] = 0;
2571     GetClassName(hwnd, szClass, ARRAYSIZE(szClass));
2572     if (lstrcmpi(szClass, TEXT("EDIT")) == 0)
2573     {
2574         switch (uMsg)
2575         {
2576             HANDLE_MSG(hwnd, EM_GETSEL, MD_Edit_OnGetSel);
2577             HANDLE_MSG(hwnd, EM_SETSEL, MD_Edit_OnSetSel);
2578             HANDLE_MSG(hwnd, EM_GETRECT, MD_Edit_OnGetRect);
2579             HANDLE_MSG(hwnd, EM_SETRECT, MD_Edit_OnSetRect);
2580             HANDLE_MSG(hwnd, EM_SETRECTNP, MD_Edit_OnSetRectNP);
2581             HANDLE_MSG(hwnd, EM_SCROLL, MD_Edit_OnScroll);
2582             HANDLE_MSG(hwnd, EM_LINESCROLL, MD_Edit_OnLineScroll);
2583             HANDLE_MSG(hwnd, EM_SCROLLCARET, MD_Edit_OnScrollCaret);
2584             HANDLE_MSG(hwnd, EM_GETMODIFY, MD_Edit_OnGetModify);
2585             HANDLE_MSG(hwnd, EM_SETMODIFY, MD_Edit_OnSetModify);
2586             HANDLE_MSG(hwnd, EM_GETLINECOUNT, MD_Edit_OnGetLineCount);
2587             HANDLE_MSG(hwnd, EM_LINEINDEX, MD_Edit_OnLineIndex);
2588             HANDLE_MSG(hwnd, EM_SETHANDLE, MD_Edit_OnSetHandle);
2589             HANDLE_MSG(hwnd, EM_GETHANDLE, MD_Edit_OnGetHandle);
2590             HANDLE_MSG(hwnd, EM_GETTHUMB, MD_Edit_OnGetThumb);
2591             HANDLE_MSG(hwnd, EM_LINELENGTH, MD_Edit_OnLineLength);
2592             HANDLE_MSG(hwnd, EM_REPLACESEL, MD_Edit_OnReplaceSel);
2593             HANDLE_MSG(hwnd, EM_GETLINE, MD_Edit_OnGetLine);
2594             HANDLE_MSG(hwnd, EM_CANUNDO, MD_Edit_OnCanUndo);
2595             HANDLE_MSG(hwnd, EM_UNDO, MD_Edit_OnUndo);
2596             HANDLE_MSG(hwnd, EM_FMTLINES, MD_Edit_OnFmtLines);
2597             HANDLE_MSG(hwnd, EM_LINEFROMCHAR, MD_Edit_OnLineFromChar);
2598             HANDLE_MSG(hwnd, EM_SETTABSTOPS, MD_Edit_OnSetTabStops);
2599             HANDLE_MSG(hwnd, EM_SETPASSWORDCHAR, MD_Edit_OnSetPasswordChar);
2600             HANDLE_MSG(hwnd, EM_EMPTYUNDOBUFFER, MD_Edit_OnEmptyUndoBuffer);
2601             HANDLE_MSG(hwnd, EM_GETFIRSTVISIBLELINE, MD_Edit_OnGetFirstVisibleLine);
2602             HANDLE_MSG(hwnd, EM_SETREADONLY, MD_Edit_OnSetReadOnly);
2603             HANDLE_MSG(hwnd, EM_SETWORDBREAKPROC, MD_Edit_OnSetWordBreakProc);
2604             HANDLE_MSG(hwnd, EM_GETWORDBREAKPROC, MD_Edit_OnGetWordBreakProc);
2605             HANDLE_MSG(hwnd, EM_GETPASSWORDCHAR, MD_Edit_OnGetPasswordChar);
2606             HANDLE_MSG(hwnd, EM_SETMARGINS, MD_Edit_OnSetMargins);
2607             HANDLE_MSG(hwnd, EM_GETMARGINS, MD_Edit_OnGetMargins);
2608             HANDLE_MSG(hwnd, EM_SETLIMITTEXT, MD_Edit_OnSetLimitText);
2609             HANDLE_MSG(hwnd, EM_GETLIMITTEXT, MD_Edit_OnGetLimitText);
2610             HANDLE_MSG(hwnd, EM_POSFROMCHAR, MD_Edit_OnPosFromChar);
2611             HANDLE_MSG(hwnd, EM_CHARFROMPOS, MD_Edit_OnCharFromPos);
2612             HANDLE_MSG(hwnd, EM_SETIMESTATUS, MD_Edit_OnSetIMEStatus);
2613             HANDLE_MSG(hwnd, EM_GETIMESTATUS, MD_Edit_OnGetIMEStatus);
2614         }
2615     }
2616     else if (lstrcmpi(szClass, TEXT("STATIC")) == 0)
2617     {
2618         switch (uMsg)
2619         {
2620             HANDLE_MSG(hwnd, STM_SETICON, MD_Static_OnSetIcon);
2621             HANDLE_MSG(hwnd, STM_GETICON, MD_Static_OnGetIcon);
2622             HANDLE_MSG(hwnd, STM_SETIMAGE, MD_Static_OnSetImage);
2623             HANDLE_MSG(hwnd, STM_GETIMAGE, MD_Static_OnGetImage);
2624         }
2625     }
2626     else if (lstrcmpi(szClass, TEXT("LISTBOX")) == 0)
2627     {
2628         switch (uMsg)
2629         {
2630             HANDLE_MSG(hwnd, LB_ADDSTRING, MD_ListBox_OnAddString);
2631             HANDLE_MSG(hwnd, LB_INSERTSTRING, MD_ListBox_OnInsertString);
2632             HANDLE_MSG(hwnd, LB_DELETESTRING, MD_ListBox_OnDeleteString);
2633             HANDLE_MSG(hwnd, LB_SELITEMRANGEEX, MD_ListBox_OnSelItemRangeEx);
2634             HANDLE_MSG(hwnd, LB_RESETCONTENT, MD_ListBox_OnResetContent);
2635             HANDLE_MSG(hwnd, LB_SETSEL, MD_ListBox_OnSetSel);
2636             HANDLE_MSG(hwnd, LB_SETCURSEL, MD_ListBox_OnSetCurSel);
2637             HANDLE_MSG(hwnd, LB_GETSEL, MD_ListBox_OnGetSel);
2638             HANDLE_MSG(hwnd, LB_GETCURSEL, MD_ListBox_OnGetCurSel);
2639             HANDLE_MSG(hwnd, LB_GETTEXT, MD_ListBox_OnGetText);
2640             HANDLE_MSG(hwnd, LB_GETTEXTLEN, MD_ListBox_OnGetTextLen);
2641             HANDLE_MSG(hwnd, LB_GETCOUNT, MD_ListBox_OnGetCount);
2642             HANDLE_MSG(hwnd, LB_SELECTSTRING, MD_ListBox_OnSelectString);
2643             HANDLE_MSG(hwnd, LB_DIR, MD_ListBox_OnDir);
2644             HANDLE_MSG(hwnd, LB_GETTOPINDEX, MD_ListBox_OnGetTopIndex);
2645             HANDLE_MSG(hwnd, LB_FINDSTRING, MD_ListBox_OnFindString);
2646             HANDLE_MSG(hwnd, LB_GETSELCOUNT, MD_ListBox_OnGetSelCount);
2647             HANDLE_MSG(hwnd, LB_GETSELITEMS, MD_ListBox_OnGetSelItems);
2648             HANDLE_MSG(hwnd, LB_SETTABSTOPS, MD_ListBox_OnSetTabStops);
2649             HANDLE_MSG(hwnd, LB_GETHORIZONTALEXTENT, MD_ListBox_OnGetHorizontalExtent);
2650             HANDLE_MSG(hwnd, LB_SETHORIZONTALEXTENT, MD_ListBox_OnSetHorizontalExtent);
2651             HANDLE_MSG(hwnd, LB_SETCOLUMNWIDTH, MD_ListBox_OnSetColumnWidth);
2652             HANDLE_MSG(hwnd, LB_ADDFILE, MD_ListBox_OnAddFile);
2653             HANDLE_MSG(hwnd, LB_SETTOPINDEX, MD_ListBox_OnSetTopIndex);
2654             HANDLE_MSG(hwnd, LB_GETITEMRECT, MD_ListBox_OnGetItemRect);
2655             HANDLE_MSG(hwnd, LB_GETITEMDATA, MD_ListBox_OnGetItemData);
2656             HANDLE_MSG(hwnd, LB_SETITEMDATA, MD_ListBox_OnSetItemData);
2657             HANDLE_MSG(hwnd, LB_SELITEMRANGE, MD_ListBox_OnSelItemRange);
2658             HANDLE_MSG(hwnd, LB_SETANCHORINDEX, MD_ListBox_OnSetAnchorIndex);
2659             HANDLE_MSG(hwnd, LB_GETANCHORINDEX, MD_ListBox_OnGetAnchorIndex);
2660             HANDLE_MSG(hwnd, LB_SETCARETINDEX, MD_ListBox_OnSetCaretIndex);
2661             HANDLE_MSG(hwnd, LB_GETCARETINDEX, MD_ListBox_OnGetCaretIndex);
2662             HANDLE_MSG(hwnd, LB_SETITEMHEIGHT, MD_ListBox_OnSetItemHeight);
2663             HANDLE_MSG(hwnd, LB_GETITEMHEIGHT, MD_ListBox_OnGetItemHeight);
2664             HANDLE_MSG(hwnd, LB_FINDSTRINGEXACT, MD_ListBox_OnFindStringExact);
2665             HANDLE_MSG(hwnd, LB_SETLOCALE, MD_ListBox_OnSetLocale);
2666             HANDLE_MSG(hwnd, LB_GETLOCALE, MD_ListBox_OnGetLocale);
2667             HANDLE_MSG(hwnd, LB_SETCOUNT, MD_ListBox_OnSetCount);
2668             HANDLE_MSG(hwnd, LB_INITSTORAGE, MD_ListBox_OnInitStorage);
2669             HANDLE_MSG(hwnd, LB_ITEMFROMPOINT, MD_ListBox_OnItemFromPoint);
2670         }
2671     }
2672     else if (lstrcmpi(szClass, TEXT("COMBOBOX")) == 0)
2673     {
2674         switch (uMsg)
2675         {
2676             HANDLE_MSG(hwnd, CB_GETEDITSEL, MD_ComboBox_OnGetEditSel);
2677             HANDLE_MSG(hwnd, CB_LIMITTEXT, MD_ComboBox_OnLimitText);
2678             HANDLE_MSG(hwnd, CB_SETEDITSEL, MD_ComboBox_OnSetEditSel);
2679             HANDLE_MSG(hwnd, CB_ADDSTRING, MD_ComboBox_OnAddString);
2680             HANDLE_MSG(hwnd, CB_DELETESTRING, MD_ComboBox_OnDeleteString);
2681             HANDLE_MSG(hwnd, CB_DIR, MD_ComboBox_OnDir);
2682             HANDLE_MSG(hwnd, CB_GETCOUNT, MD_ComboBox_OnGetCount);
2683             HANDLE_MSG(hwnd, CB_GETCURSEL, MD_ComboBox_GetCurSel);
2684             HANDLE_MSG(hwnd, CB_GETLBTEXT, MD_ComboBox_GetLBText);
2685             HANDLE_MSG(hwnd, CB_GETLBTEXTLEN, MD_ComboBox_OnGetLBTextLen);
2686             HANDLE_MSG(hwnd, CB_INSERTSTRING, MD_ComboBox_OnInsertString);
2687             HANDLE_MSG(hwnd, CB_RESETCONTENT, MD_ComboBox_OnResetContent);
2688             HANDLE_MSG(hwnd, CB_FINDSTRING, MD_ComboBox_OnFindString);
2689             HANDLE_MSG(hwnd, CB_SELECTSTRING, MD_ComboBox_OnSelectString);
2690             HANDLE_MSG(hwnd, CB_SETCURSEL, MD_ComboBox_OnSetCurSel);
2691             HANDLE_MSG(hwnd, CB_SHOWDROPDOWN, MD_ComboBox_OnShowDropDown);
2692             HANDLE_MSG(hwnd, CB_GETITEMDATA, MD_ComboBox_OnGetItemData);
2693             HANDLE_MSG(hwnd, CB_SETITEMDATA, MD_ComboBox_OnSetItemData);
2694             HANDLE_MSG(hwnd, CB_GETDROPPEDCONTROLRECT, MD_ComboBox_OnGetDroppedControlRect);
2695             HANDLE_MSG(hwnd, CB_SETITEMHEIGHT, MD_ComboBox_OnSetItemHeight);
2696             HANDLE_MSG(hwnd, CB_GETITEMHEIGHT, MD_ComboBox_OnGetItemHeight);
2697             HANDLE_MSG(hwnd, CB_SETEXTENDEDUI, MD_ComboBox_OnSetExtendedUI);
2698             HANDLE_MSG(hwnd, CB_GETEXTENDEDUI, MD_ComboBox_OnGetExtendedUI);
2699             HANDLE_MSG(hwnd, CB_GETDROPPEDSTATE, MD_ComboBox_OnGetDroppedState);
2700             HANDLE_MSG(hwnd, CB_FINDSTRINGEXACT, MD_ComboBox_OnFindStringExact);
2701             HANDLE_MSG(hwnd, CB_SETLOCALE, MD_ComboBox_OnSetLocale);
2702             HANDLE_MSG(hwnd, CB_GETLOCALE, MD_ComboBox_OnGetLocale);
2703             HANDLE_MSG(hwnd, CB_GETTOPINDEX, MD_ComboBox_OnGetTopIndex);
2704             HANDLE_MSG(hwnd, CB_SETTOPINDEX, MD_ComboBox_OnSetTopIndex);
2705             HANDLE_MSG(hwnd, CB_GETHORIZONTALEXTENT, MD_ComboBox_OnGetHorizontalExtent);
2706             HANDLE_MSG(hwnd, CB_SETHORIZONTALEXTENT, MD_ComboBox_OnSetHorizontalExtent);
2707             HANDLE_MSG(hwnd, CB_GETDROPPEDWIDTH, MD_ComboBox_OnGetDroppedWidth);
2708             HANDLE_MSG(hwnd, CB_SETDROPPEDWIDTH, MD_ComboBox_OnSetDroppedWidth);
2709             HANDLE_MSG(hwnd, CB_INITSTORAGE, MD_ComboBox_OnInitStorage);
2710         }
2711     }
2712     else if (lstrcmpi(szClass, TEXT("SCROLLBAR")) == 0)
2713     {
2714         switch (uMsg)
2715         {
2716             HANDLE_MSG(hwnd, SBM_SETPOS, MD_ScrollBar_OnSetPos);
2717             HANDLE_MSG(hwnd, SBM_GETPOS, MD_ScrollBar_OnGetPos);
2718             HANDLE_MSG(hwnd, SBM_SETRANGE, MD_ScrollBar_OnSetRange);
2719             HANDLE_MSG(hwnd, SBM_SETRANGEREDRAW, MD_ScrollBar_OnSetRangeRedraw);
2720             HANDLE_MSG(hwnd, SBM_GETRANGE, MD_ScrollBar_OnGetRange);
2721             HANDLE_MSG(hwnd, SBM_ENABLE_ARROWS, MD_ScrollBar_OnEnableArrows);
2722             HANDLE_MSG(hwnd, SBM_SETSCROLLINFO, MD_ScrollBar_OnSetScrollInfo);
2723             HANDLE_MSG(hwnd, SBM_GETSCROLLINFO, MD_ScrollBar_OnGetScrollInfo);
2724             HANDLE_MSG(hwnd, SBM_GETSCROLLBARINFO, MD_ScrollBar_OnGetScrollBarInfo);
2725         }
2726     }
2727     switch (uMsg)
2728     {
2729         HANDLE_MSG(hwnd, WM_NULL, MD_OnNull);
2730         HANDLE_MSG(hwnd, WM_CREATE, MD_OnCreate);
2731         HANDLE_MSG(hwnd, WM_DESTROY, MD_OnDestroy);
2732         HANDLE_MSG(hwnd, WM_MOVE, MD_OnMove);
2733         HANDLE_MSG(hwnd, WM_SIZE, MD_OnSize);
2734         HANDLE_MSG(hwnd, WM_ACTIVATE, MD_OnActivate);
2735         HANDLE_MSG(hwnd, WM_SETFOCUS, MD_OnSetFocus);
2736         HANDLE_MSG(hwnd, WM_KILLFOCUS, MD_OnKillFocus);
2737         HANDLE_MSG(hwnd, WM_ENABLE, MD_OnEnable);
2738         HANDLE_MSG(hwnd, WM_SETREDRAW, MD_OnSetRedraw);
2739         HANDLE_MSG(hwnd, WM_SETTEXT, MD_OnSetText);
2740         HANDLE_MSG(hwnd, WM_GETTEXT, MD_OnGetText);
2741         HANDLE_MSG(hwnd, WM_GETTEXTLENGTH, MD_OnGetTextLength);
2742         HANDLE_MSG(hwnd, WM_PAINT, MD_OnPaint);
2743         HANDLE_MSG(hwnd, WM_CLOSE, MD_OnClose);
2744 #ifndef _WIN32_WCE
2745         HANDLE_MSG(hwnd, WM_QUERYENDSESSION, MD_OnQueryEndSession);
2746         HANDLE_MSG(hwnd, WM_QUERYOPEN, MD_OnQueryOpen);
2747         HANDLE_MSG(hwnd, WM_ENDSESSION, MD_OnEndSession);
2748 #endif
2749         HANDLE_MSG(hwnd, WM_QUIT, MD_OnQuit);
2750         HANDLE_MSG(hwnd, WM_ERASEBKGND, MD_OnEraseBkgnd);
2751         HANDLE_MSG(hwnd, WM_SYSCOLORCHANGE, MD_OnSysColorChange);
2752         HANDLE_MSG(hwnd, WM_SHOWWINDOW, MD_OnShowWindow);
2753         HANDLE_MSG(hwnd, WM_WININICHANGE, MD_OnWinIniChange);
2754         /*HANDLE_MSG(hwnd, WM_SETTINGCHANGE, MD_OnSettingChange);*/
2755             /* WM_SETTINGCHANGE duplicates WM_WININICHANGE */
2756         HANDLE_MSG(hwnd, WM_DEVMODECHANGE, MD_OnDevModeChange);
2757         HANDLE_MSG(hwnd, WM_ACTIVATEAPP, MD_OnActivateApp);
2758         HANDLE_MSG(hwnd, WM_FONTCHANGE, MD_OnFontChange);
2759         HANDLE_MSG(hwnd, WM_TIMECHANGE, MD_OnTimeChange);
2760         HANDLE_MSG(hwnd, WM_CANCELMODE, MD_OnCancelMode);
2761         HANDLE_MSG(hwnd, WM_SETCURSOR, MD_OnSetCursor);
2762         HANDLE_MSG(hwnd, WM_MOUSEACTIVATE, MD_OnMouseActivate);
2763         HANDLE_MSG(hwnd, WM_CHILDACTIVATE, MD_OnChildActivate);
2764         HANDLE_MSG(hwnd, WM_QUEUESYNC, MD_OnQueueSync);
2765         HANDLE_MSG(hwnd, WM_GETMINMAXINFO, MD_OnGetMinMaxInfo);
2766         HANDLE_MSG(hwnd, WM_PAINTICON, MD_OnPaintIcon);
2767         HANDLE_MSG(hwnd, WM_ICONERASEBKGND, MD_OnIconEraseBkgnd);
2768         HANDLE_MSG(hwnd, WM_NEXTDLGCTL, MD_OnNextDlgCtl);
2769         HANDLE_MSG(hwnd, WM_SPOOLERSTATUS, MD_OnSpoolerStatus);
2770         HANDLE_MSG(hwnd, WM_DRAWITEM, MD_OnDrawItem);
2771         HANDLE_MSG(hwnd, WM_MEASUREITEM, MD_OnMeasureItem);
2772         HANDLE_MSG(hwnd, WM_DELETEITEM, MD_OnDeleteItem);
2773         HANDLE_MSG(hwnd, WM_VKEYTOITEM, MD_OnVkeyToItem);
2774         HANDLE_MSG(hwnd, WM_CHARTOITEM, MD_OnCharToItem);
2775         HANDLE_MSG(hwnd, WM_SETFONT, MD_OnSetFont);
2776         HANDLE_MSG(hwnd, WM_GETFONT, MD_OnGetFont);
2777         HANDLE_MSG(hwnd, WM_SETHOTKEY, MD_OnSetHotKey);
2778         HANDLE_MSG(hwnd, WM_GETHOTKEY, MD_OnGetHotKey);
2779         HANDLE_MSG(hwnd, WM_QUERYDRAGICON, MD_OnQueryDragIcon);
2780         HANDLE_MSG(hwnd, WM_COMPAREITEM, MD_OnCompareItem);
2781 #if WINVER >= 0x0500
2782 # ifndef _WIN32_WCE
2783         HANDLE_MSG(hwnd, WM_GETOBJECT, MD_OnGetObject);
2784 # endif
2785 #endif
2786         HANDLE_MSG(hwnd, WM_COMPACTING, MD_OnCompacting);
2787         HANDLE_MSG(hwnd, WM_COMMNOTIFY, MD_OnCommNotify);
2788         HANDLE_MSG(hwnd, WM_WINDOWPOSCHANGING, MD_OnWindowPosChanging);
2789         HANDLE_MSG(hwnd, WM_WINDOWPOSCHANGED, MD_OnWindowPosChanged);
2790         HANDLE_MSG(hwnd, WM_POWER, MD_OnPower);
2791         HANDLE_MSG(hwnd, WM_COPYDATA, MD_OnCopyData);
2792         HANDLE_MSG(hwnd, WM_CANCELJOURNAL, MD_OnCancelJournal);
2793 #if WINVER >= 0x0400
2794         HANDLE_MSG(hwnd, WM_NOTIFY, MD_OnNotify);
2795         HANDLE_MSG(hwnd, WM_INPUTLANGCHANGEREQUEST, MD_OnInputLangChangeRequest);
2796         HANDLE_MSG(hwnd, WM_INPUTLANGCHANGE, MD_OnInputLangChange);
2797         HANDLE_MSG(hwnd, WM_TCARD, MD_OnTCard);
2798         HANDLE_MSG(hwnd, WM_HELP, MD_OnHelp);
2799         HANDLE_MSG(hwnd, WM_USERCHANGED, MD_OnUserChanged);
2800         HANDLE_MSG(hwnd, WM_NOTIFYFORMAT, MD_OnNotifyFormat);
2801         HANDLE_MSG(hwnd, WM_CONTEXTMENU, MD_OnContextMenu);
2802         HANDLE_MSG(hwnd, WM_STYLECHANGING, MD_OnStyleChanging);
2803         HANDLE_MSG(hwnd, WM_STYLECHANGED, MD_OnStyleChanged);
2804         HANDLE_MSG(hwnd, WM_DISPLAYCHANGE, MD_OnDisplayChange);
2805         HANDLE_MSG(hwnd, WM_GETICON, MD_OnGetIcon);
2806         HANDLE_MSG(hwnd, WM_SETICON, MD_OnSetIcon);
2807 #endif
2808         HANDLE_MSG(hwnd, WM_NCCREATE, MD_OnNCCreate);
2809         HANDLE_MSG(hwnd, WM_NCDESTROY, MD_OnNCDestroy);
2810         HANDLE_MSG(hwnd, WM_NCCALCSIZE, MD_OnNCCalcSize);
2811         HANDLE_MSG(hwnd, WM_NCHITTEST, MD_OnNCHitTest);
2812         HANDLE_MSG(hwnd, WM_NCPAINT, MD_OnNCPaint);
2813         HANDLE_MSG(hwnd, WM_NCACTIVATE, MD_OnNCActivate);
2814         HANDLE_MSG(hwnd, WM_GETDLGCODE, MD_OnGetDlgCode);
2815 #ifndef _WIN32_WCE
2816         HANDLE_MSG(hwnd, WM_SYNCPAINT, MD_OnSyncPaint);
2817 #endif
2818         HANDLE_MSG(hwnd, WM_NCMOUSEMOVE, MD_OnNCMouseMove);
2819         HANDLE_MSG(hwnd, WM_NCLBUTTONDOWN, MD_OnNCLButtonDown);
2820         HANDLE_MSG(hwnd, WM_NCLBUTTONUP, MD_OnNCLButtonUp);
2821         HANDLE_MSG(hwnd, WM_NCLBUTTONDBLCLK, MD_OnNCLButtonDown);
2822         HANDLE_MSG(hwnd, WM_NCRBUTTONDOWN, MD_OnNCRButtonDown);
2823         HANDLE_MSG(hwnd, WM_NCRBUTTONUP, MD_OnNCRButtonUp);
2824         HANDLE_MSG(hwnd, WM_NCRBUTTONDBLCLK, MD_OnNCRButtonDown);
2825         HANDLE_MSG(hwnd, WM_NCMBUTTONDOWN, MD_OnNCMButtonDown);
2826         HANDLE_MSG(hwnd, WM_NCMBUTTONUP, MD_OnNCMButtonUp);
2827         HANDLE_MSG(hwnd, WM_NCMBUTTONDBLCLK, MD_OnNCMButtonDown);
2828 #if _WIN32_WINNT >= 0x0500
2829         HANDLE_MSG(hwnd, WM_NCXBUTTONDOWN, MD_OnNCXButtonDown);
2830         HANDLE_MSG(hwnd, WM_NCXBUTTONUP, MD_OnNCXButtonUp);
2831         HANDLE_MSG(hwnd, WM_NCXBUTTONDBLCLK, MD_OnNCXButtonDown);
2832 #endif
2833         HANDLE_MSG(hwnd, WM_KEYDOWN, MD_OnKey);
2834         HANDLE_MSG(hwnd, WM_KEYUP, MD_OnKey);
2835         HANDLE_MSG(hwnd, WM_CHAR, MD_OnChar);
2836         HANDLE_MSG(hwnd, WM_DEADCHAR, MD_OnDeadChar);
2837         HANDLE_MSG(hwnd, WM_SYSKEYDOWN, MD_OnSysKey);
2838         HANDLE_MSG(hwnd, WM_SYSKEYUP, MD_OnSysKey);
2839         HANDLE_MSG(hwnd, WM_SYSCHAR, MD_OnSysChar);
2840         HANDLE_MSG(hwnd, WM_SYSDEADCHAR, MD_OnSysDeadChar);
2841 #if WINVER >= 0x0400
2842         HANDLE_MSG(hwnd, WM_IME_STARTCOMPOSITION, MD_OnImeStartComposition);
2843         HANDLE_MSG(hwnd, WM_IME_ENDCOMPOSITION, MD_OnImeEndComposition);
2844         HANDLE_MSG(hwnd, WM_IME_COMPOSITION, MD_OnImeComposition);
2845 #endif
2846         HANDLE_MSG(hwnd, WM_INITDIALOG, MD_OnInitDialog);
2847         HANDLE_MSG(hwnd, WM_COMMAND, MD_OnCommand);
2848         HANDLE_MSG(hwnd, WM_SYSCOMMAND, MD_OnSysCommand);
2849         HANDLE_MSG(hwnd, WM_TIMER, MD_OnTimer);
2850         HANDLE_MSG(hwnd, WM_HSCROLL, MD_OnHScroll);
2851         HANDLE_MSG(hwnd, WM_VSCROLL, MD_OnVScroll);
2852         HANDLE_MSG(hwnd, WM_INITMENU, MD_OnInitMenu);
2853         HANDLE_MSG(hwnd, WM_INITMENUPOPUP, MD_OnInitMenuPopup);
2854         HANDLE_MSG(hwnd, WM_MENUSELECT, MD_OnMenuSelect);
2855         HANDLE_MSG(hwnd, WM_MENUCHAR, MD_OnMenuChar);
2856         HANDLE_MSG(hwnd, WM_ENTERIDLE, MD_OnEnterIdle);
2857 #if WINVER >= 0x0500
2858 # ifndef _WIN32_WCE
2859         HANDLE_MSG(hwnd, WM_MENURBUTTONUP, MD_OnMenuRButtonUp);
2860         HANDLE_MSG(hwnd, WM_MENUDRAG, MD_OnMenuDrag);
2861         HANDLE_MSG(hwnd, WM_MENUGETOBJECT, MD_OnMenuGetObject);
2862         HANDLE_MSG(hwnd, WM_UNINITMENUPOPUP, MD_OnUninitMenuPopup);
2863         HANDLE_MSG(hwnd, WM_MENUCOMMAND, MD_OnMenuCommand);
2864 #  ifndef _WIN32_WCE
2865 #   if _WIN32_WINNT >= 0x0500
2866         HANDLE_MSG(hwnd, WM_CHANGEUISTATE, MD_OnChangeUIState);
2867         HANDLE_MSG(hwnd, WM_UPDATEUISTATE, MD_OnUpdateUIState);
2868         HANDLE_MSG(hwnd, WM_QUERYUISTATE, MD_OnQueryUIState);
2869 #   endif
2870 #  endif
2871 # endif
2872 #endif
2873         HANDLE_MSG(hwnd, WM_CTLCOLORMSGBOX, MD_OnCtlColor);
2874         HANDLE_MSG(hwnd, WM_CTLCOLOREDIT, MD_OnCtlColor);
2875         HANDLE_MSG(hwnd, WM_CTLCOLORLISTBOX, MD_OnCtlColor);
2876         HANDLE_MSG(hwnd, WM_CTLCOLORBTN, MD_OnCtlColor);
2877         HANDLE_MSG(hwnd, WM_CTLCOLORDLG, MD_OnCtlColor);
2878         HANDLE_MSG(hwnd, WM_CTLCOLORSCROLLBAR, MD_OnCtlColor);
2879         HANDLE_MSG(hwnd, WM_CTLCOLORSTATIC, MD_OnCtlColor);
2880         HANDLE_MSG(hwnd, WM_MOUSEMOVE, MD_OnMouseMove);
2881         HANDLE_MSG(hwnd, WM_LBUTTONDOWN, MD_OnLButtonDown);
2882         HANDLE_MSG(hwnd, WM_LBUTTONUP, MD_OnLButtonUp);
2883         HANDLE_MSG(hwnd, WM_LBUTTONDBLCLK, MD_OnLButtonDown);
2884         HANDLE_MSG(hwnd, WM_RBUTTONDOWN, MD_OnRButtonDown);
2885         HANDLE_MSG(hwnd, WM_RBUTTONUP, MD_OnRButtonUp);
2886         HANDLE_MSG(hwnd, WM_RBUTTONDBLCLK, MD_OnRButtonDown);
2887         HANDLE_MSG(hwnd, WM_MBUTTONDOWN, MD_OnMButtonDown);
2888         HANDLE_MSG(hwnd, WM_MBUTTONUP, MD_OnMButtonUp);
2889         HANDLE_MSG(hwnd, WM_MBUTTONDBLCLK, MD_OnMButtonDown);
2890 #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
2891         HANDLE_MSG(hwnd, WM_MOUSEWHEEL, MD_OnMouseWheel);
2892 #endif
2893 #if _WIN32_WINNT >= 0x0500
2894         HANDLE_MSG(hwnd, WM_XBUTTONDOWN, MD_OnXButtonDown);
2895         HANDLE_MSG(hwnd, WM_XBUTTONUP, MD_OnXButtonUp);
2896         HANDLE_MSG(hwnd, WM_XBUTTONDBLCLK, MD_OnXButtonDown);
2897 #endif
2898         HANDLE_MSG(hwnd, WM_PARENTNOTIFY, MD_OnParentNotify);
2899         HANDLE_MSG(hwnd, WM_ENTERMENULOOP, MD_OnEnterMenuLoop);
2900         HANDLE_MSG(hwnd, WM_EXITMENULOOP, MD_OnExitMenuLoop);
2901 #if WINVER >= 0x0400
2902         HANDLE_MSG(hwnd, WM_NEXTMENU, MD_OnNextMenu);
2903         HANDLE_MSG(hwnd, WM_SIZING, MD_OnSizing);
2904         HANDLE_MSG(hwnd, WM_CAPTURECHANGED, MD_OnCaptureChanged);
2905         HANDLE_MSG(hwnd, WM_MOVING, MD_OnMoving);
2906         HANDLE_MSG(hwnd, WM_POWERBROADCAST, MD_OnPowerBroadcast);
2907         HANDLE_MSG(hwnd, WM_DEVICECHANGE, MD_OnDeviceChange);
2908 #endif
2909         HANDLE_MSG(hwnd, WM_MDICREATE, MD_MDICreate);
2910         HANDLE_MSG(hwnd, WM_MDIDESTROY, MD_MDIDestroy);
2911         HANDLE_MSG(hwnd, WM_MDIACTIVATE, MD_MDIActivate);
2912         HANDLE_MSG(hwnd, WM_MDIRESTORE, MD_MDIRestore);
2913         HANDLE_MSG(hwnd, WM_MDINEXT, MD_MDINext);
2914         HANDLE_MSG(hwnd, WM_MDIMAXIMIZE, MD_MDIMaximize);
2915         HANDLE_MSG(hwnd, WM_MDITILE, MD_MDITile);
2916         HANDLE_MSG(hwnd, WM_MDICASCADE, MD_MDICascade);
2917         HANDLE_MSG(hwnd, WM_MDIICONARRANGE, MD_MDIIconArrange);
2918         HANDLE_MSG(hwnd, WM_MDIGETACTIVE, MD_MDIGetActive);
2919         HANDLE_MSG(hwnd, WM_MDISETMENU, MD_MDISetMenu);
2920         HANDLE_MSG(hwnd, WM_ENTERSIZEMOVE, MD_OnEnterSizeMove);
2921         HANDLE_MSG(hwnd, WM_EXITSIZEMOVE, MD_OnExitSizeMove);
2922         HANDLE_MSG(hwnd, WM_DROPFILES, MD_OnDropFiles);
2923         HANDLE_MSG(hwnd, WM_MDIREFRESHMENU, MD_MDIRefreshMenu);
2924 #if WINVER >= 0x0400
2925         HANDLE_MSG(hwnd, WM_IME_SETCONTEXT, MD_OnImeSetContext);
2926         HANDLE_MSG(hwnd, WM_IME_NOTIFY, MD_OnImeNotify);
2927         HANDLE_MSG(hwnd, WM_IME_CONTROL, MD_OnImeControl);
2928         HANDLE_MSG(hwnd, WM_IME_COMPOSITIONFULL, MD_OnImeCompositionFull);
2929         HANDLE_MSG(hwnd, WM_IME_SELECT, MD_OnImeSelect);
2930         HANDLE_MSG(hwnd, WM_IME_CHAR, MD_OnImeChar);
2931 #endif
2932 #if WINVER >= 0x0500
2933         HANDLE_MSG(hwnd, WM_IME_REQUEST, MD_OnImeRequest);
2934 #endif
2935 #if WINVER >= 0x0400
2936         HANDLE_MSG(hwnd, WM_IME_KEYDOWN, MD_OnImeKey);
2937         HANDLE_MSG(hwnd, WM_IME_KEYUP, MD_OnImeKey);
2938 #endif
2939 #if (_WIN32_WINNT >= 0x0400) || (WINVER >= 0x0500)
2940         HANDLE_MSG(hwnd, WM_MOUSEHOVER, MD_OnMouseHover);
2941         HANDLE_MSG(hwnd, WM_MOUSELEAVE, MD_OnMouseLeave);
2942 #endif
2943 #if WINVER >= 0x0500
2944         HANDLE_MSG(hwnd, WM_NCMOUSEHOVER, MD_OnNCMouseHover);
2945         HANDLE_MSG(hwnd, WM_NCMOUSELEAVE, MD_OnNCMouseLeave);
2946 #endif
2947         HANDLE_MSG(hwnd, WM_CUT, MD_OnCut);
2948         HANDLE_MSG(hwnd, WM_COPY, MD_OnCopy);
2949         HANDLE_MSG(hwnd, WM_PASTE, MD_OnPaste);
2950         HANDLE_MSG(hwnd, WM_CLEAR, MD_OnClear);
2951         HANDLE_MSG(hwnd, WM_UNDO, MD_OnUndo);
2952         HANDLE_MSG(hwnd, WM_RENDERFORMAT, MD_OnRenderFormat);
2953         HANDLE_MSG(hwnd, WM_RENDERALLFORMATS, MD_OnRenderAllFormats);
2954         HANDLE_MSG(hwnd, WM_DESTROYCLIPBOARD, MD_OnDestroyClipboard);
2955         HANDLE_MSG(hwnd, WM_DRAWCLIPBOARD, MD_OnDrawClipboard);
2956         HANDLE_MSG(hwnd, WM_PAINTCLIPBOARD, MD_OnPaintClipboard);
2957         HANDLE_MSG(hwnd, WM_VSCROLLCLIPBOARD, MD_OnVScrollClipboard);
2958         HANDLE_MSG(hwnd, WM_SIZECLIPBOARD, MD_OnSizeClipboard);
2959         HANDLE_MSG(hwnd, WM_ASKCBFORMATNAME, MD_OnAskCBFormatName);
2960         HANDLE_MSG(hwnd, WM_CHANGECBCHAIN, MD_OnChangeCBChain);
2961         HANDLE_MSG(hwnd, WM_HSCROLLCLIPBOARD, MD_OnHScrollClipboard);
2962         HANDLE_MSG(hwnd, WM_QUERYNEWPALETTE, MD_OnQueryNewPalette);
2963         HANDLE_MSG(hwnd, WM_PALETTEISCHANGING, MD_OnPaletteIsChanging);
2964         HANDLE_MSG(hwnd, WM_PALETTECHANGED, MD_OnPaletteChanged);
2965         HANDLE_MSG(hwnd, WM_HOTKEY, MD_OnHotKey);
2966 #if WINVER >= 0x0400
2967         HANDLE_MSG(hwnd, WM_PRINT, MD_OnPrint);
2968         HANDLE_MSG(hwnd, WM_PRINTCLIENT, MD_OnPrintClient);
2969 #endif
2970 #if _WIN32_WINNT >= 0x0500
2971         HANDLE_MSG(hwnd, WM_APPCOMMAND, MD_OnAppCommand);
2972 #endif
2973         default:
2974         {
2975             if (WM_USER <= uMsg && uMsg <= 0x7FFF)
2976             {
2977                 return MD_OnUser(hwnd, uMsg, wParam, lParam);
2978             }
2979             if (WM_APP <= uMsg && uMsg <= 0xBFFF)
2980             {
2981                 return MD_OnApp(hwnd, uMsg, wParam, lParam);
2982             }
2983             return MD_OnUnknown(hwnd, uMsg, wParam, lParam);
2984         }
2985     }
2986     return 0;
2987 }
2988 
2989 static __inline LRESULT MSGDUMP_API
2990 MD_msgresult(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT lResult)
2991 {
2992 #define DEFINE_RESULT(WM_) case WM_: MSGDUMP_TPRINTF(TEXT("%s") TEXT(#WM_) TEXT(": hwnd:%p, lResult:%p\n"), \
2993                                                      MSGDUMP_PREFIX, (void *)hwnd, lResult); break
2994     TCHAR szClass[32];
2995     szClass[0] = 0;
2996     GetClassName(hwnd, szClass, ARRAYSIZE(szClass));
2997     if (lstrcmpi(szClass, TEXT("EDIT")) == 0)
2998     {
2999         switch (uMsg)
3000         {
3001             DEFINE_RESULT(EM_GETSEL);
3002             DEFINE_RESULT(EM_SETSEL);
3003             DEFINE_RESULT(EM_GETRECT);
3004             DEFINE_RESULT(EM_SETRECT);
3005             DEFINE_RESULT(EM_SETRECTNP);
3006             DEFINE_RESULT(EM_SCROLL);
3007             DEFINE_RESULT(EM_LINESCROLL);
3008             DEFINE_RESULT(EM_SCROLLCARET );
3009             DEFINE_RESULT(EM_GETMODIFY);
3010             DEFINE_RESULT(EM_SETMODIFY);
3011             DEFINE_RESULT(EM_GETLINECOUNT);
3012             DEFINE_RESULT(EM_LINEINDEX);
3013             DEFINE_RESULT(EM_SETHANDLE);
3014             DEFINE_RESULT(EM_GETHANDLE);
3015             DEFINE_RESULT(EM_GETTHUMB);
3016             DEFINE_RESULT(EM_LINELENGTH);
3017             DEFINE_RESULT(EM_REPLACESEL);
3018             DEFINE_RESULT(EM_GETLINE);
3019             DEFINE_RESULT(EM_CANUNDO);
3020             DEFINE_RESULT(EM_UNDO);
3021             DEFINE_RESULT(EM_FMTLINES);
3022             DEFINE_RESULT(EM_LINEFROMCHAR);
3023             DEFINE_RESULT(EM_SETTABSTOPS);
3024             DEFINE_RESULT(EM_SETPASSWORDCHAR);
3025             DEFINE_RESULT(EM_EMPTYUNDOBUFFER);
3026             DEFINE_RESULT(EM_GETFIRSTVISIBLELINE);
3027             DEFINE_RESULT(EM_SETREADONLY);
3028             DEFINE_RESULT(EM_SETWORDBREAKPROC);
3029             DEFINE_RESULT(EM_GETWORDBREAKPROC);
3030             DEFINE_RESULT(EM_GETPASSWORDCHAR);
3031             DEFINE_RESULT(EM_SETMARGINS);
3032             DEFINE_RESULT(EM_GETMARGINS);
3033             DEFINE_RESULT(EM_SETLIMITTEXT);
3034             DEFINE_RESULT(EM_GETLIMITTEXT);
3035             DEFINE_RESULT(EM_POSFROMCHAR);
3036             DEFINE_RESULT(EM_CHARFROMPOS);
3037             DEFINE_RESULT(EM_SETIMESTATUS);
3038             DEFINE_RESULT(EM_GETIMESTATUS);
3039         }
3040     }
3041     else if (lstrcmpi(szClass, TEXT("STATIC")) == 0)
3042     {
3043         switch (uMsg)
3044         {
3045             DEFINE_RESULT(STM_SETICON);
3046             DEFINE_RESULT(STM_GETICON);
3047             DEFINE_RESULT(STM_SETIMAGE);
3048             DEFINE_RESULT(STM_GETIMAGE);
3049         }
3050     }
3051     else if (lstrcmpi(szClass, TEXT("LISTBOX")) == 0)
3052     {
3053         switch (uMsg)
3054         {
3055             DEFINE_RESULT(LB_ADDSTRING);
3056             DEFINE_RESULT(LB_INSERTSTRING);
3057             DEFINE_RESULT(LB_DELETESTRING);
3058             DEFINE_RESULT(LB_SELITEMRANGEEX);
3059             DEFINE_RESULT(LB_RESETCONTENT);
3060             DEFINE_RESULT(LB_SETSEL);
3061             DEFINE_RESULT(LB_SETCURSEL);
3062             DEFINE_RESULT(LB_GETSEL);
3063             DEFINE_RESULT(LB_GETCURSEL);
3064             DEFINE_RESULT(LB_GETTEXT);
3065             DEFINE_RESULT(LB_GETTEXTLEN);
3066             DEFINE_RESULT(LB_GETCOUNT);
3067             DEFINE_RESULT(LB_SELECTSTRING);
3068             DEFINE_RESULT(LB_DIR);
3069             DEFINE_RESULT(LB_GETTOPINDEX);
3070             DEFINE_RESULT(LB_FINDSTRING);
3071             DEFINE_RESULT(LB_GETSELCOUNT);
3072             DEFINE_RESULT(LB_GETSELITEMS);
3073             DEFINE_RESULT(LB_SETTABSTOPS);
3074             DEFINE_RESULT(LB_GETHORIZONTALEXTENT);
3075             DEFINE_RESULT(LB_SETHORIZONTALEXTENT);
3076             DEFINE_RESULT(LB_SETCOLUMNWIDTH);
3077             DEFINE_RESULT(LB_ADDFILE);
3078             DEFINE_RESULT(LB_SETTOPINDEX);
3079             DEFINE_RESULT(LB_GETITEMRECT);
3080             DEFINE_RESULT(LB_GETITEMDATA);
3081             DEFINE_RESULT(LB_SETITEMDATA);
3082             DEFINE_RESULT(LB_SELITEMRANGE);
3083             DEFINE_RESULT(LB_SETANCHORINDEX);
3084             DEFINE_RESULT(LB_GETANCHORINDEX);
3085             DEFINE_RESULT(LB_SETCARETINDEX);
3086             DEFINE_RESULT(LB_GETCARETINDEX);
3087             DEFINE_RESULT(LB_SETITEMHEIGHT);
3088             DEFINE_RESULT(LB_GETITEMHEIGHT);
3089             DEFINE_RESULT(LB_FINDSTRINGEXACT);
3090             DEFINE_RESULT(LB_SETLOCALE);
3091             DEFINE_RESULT(LB_GETLOCALE);
3092             DEFINE_RESULT(LB_SETCOUNT);
3093             DEFINE_RESULT(LB_INITSTORAGE);
3094             DEFINE_RESULT(LB_ITEMFROMPOINT);
3095         }
3096     }
3097     else if (lstrcmpi(szClass, TEXT("COMBOBOX")) == 0)
3098     {
3099         switch (uMsg)
3100         {
3101             DEFINE_RESULT(CB_GETEDITSEL);
3102             DEFINE_RESULT(CB_LIMITTEXT);
3103             DEFINE_RESULT(CB_SETEDITSEL);
3104             DEFINE_RESULT(CB_ADDSTRING);
3105             DEFINE_RESULT(CB_DELETESTRING);
3106             DEFINE_RESULT(CB_DIR);
3107             DEFINE_RESULT(CB_GETCOUNT);
3108             DEFINE_RESULT(CB_GETCURSEL);
3109             DEFINE_RESULT(CB_GETLBTEXT);
3110             DEFINE_RESULT(CB_GETLBTEXTLEN);
3111             DEFINE_RESULT(CB_INSERTSTRING);
3112             DEFINE_RESULT(CB_RESETCONTENT);
3113             DEFINE_RESULT(CB_FINDSTRING);
3114             DEFINE_RESULT(CB_SELECTSTRING);
3115             DEFINE_RESULT(CB_SETCURSEL);
3116             DEFINE_RESULT(CB_SHOWDROPDOWN);
3117             DEFINE_RESULT(CB_GETITEMDATA);
3118             DEFINE_RESULT(CB_SETITEMDATA);
3119             DEFINE_RESULT(CB_GETDROPPEDCONTROLRECT);
3120             DEFINE_RESULT(CB_SETITEMHEIGHT);
3121             DEFINE_RESULT(CB_GETITEMHEIGHT);
3122             DEFINE_RESULT(CB_SETEXTENDEDUI);
3123             DEFINE_RESULT(CB_GETEXTENDEDUI);
3124             DEFINE_RESULT(CB_GETDROPPEDSTATE);
3125             DEFINE_RESULT(CB_FINDSTRINGEXACT);
3126             DEFINE_RESULT(CB_SETLOCALE);
3127             DEFINE_RESULT(CB_GETLOCALE);
3128             DEFINE_RESULT(CB_GETTOPINDEX);
3129             DEFINE_RESULT(CB_SETTOPINDEX);
3130             DEFINE_RESULT(CB_GETHORIZONTALEXTENT);
3131             DEFINE_RESULT(CB_SETHORIZONTALEXTENT);
3132             DEFINE_RESULT(CB_GETDROPPEDWIDTH);
3133             DEFINE_RESULT(CB_SETDROPPEDWIDTH);
3134             DEFINE_RESULT(CB_INITSTORAGE);
3135         }
3136     }
3137     else if (lstrcmpi(szClass, TEXT("SCROLLBAR")) == 0)
3138     {
3139         switch (uMsg)
3140         {
3141             DEFINE_RESULT(SBM_SETPOS);
3142             DEFINE_RESULT(SBM_GETPOS);
3143             DEFINE_RESULT(SBM_SETRANGE);
3144             DEFINE_RESULT(SBM_SETRANGEREDRAW);
3145             DEFINE_RESULT(SBM_GETRANGE);
3146             DEFINE_RESULT(SBM_ENABLE_ARROWS);
3147             DEFINE_RESULT(SBM_SETSCROLLINFO);
3148             DEFINE_RESULT(SBM_GETSCROLLINFO);
3149             DEFINE_RESULT(SBM_GETSCROLLBARINFO);
3150         }
3151     }
3152     switch (uMsg)
3153     {
3154     DEFINE_RESULT(WM_NULL);
3155     DEFINE_RESULT(WM_CREATE);
3156     DEFINE_RESULT(WM_DESTROY);
3157     DEFINE_RESULT(WM_MOVE);
3158     DEFINE_RESULT(WM_SIZE);
3159     DEFINE_RESULT(WM_ACTIVATE);
3160     DEFINE_RESULT(WM_SETFOCUS);
3161     DEFINE_RESULT(WM_KILLFOCUS);
3162     DEFINE_RESULT(WM_ENABLE);
3163     DEFINE_RESULT(WM_SETREDRAW);
3164     DEFINE_RESULT(WM_SETTEXT);
3165     DEFINE_RESULT(WM_GETTEXT);
3166     DEFINE_RESULT(WM_GETTEXTLENGTH);
3167     DEFINE_RESULT(WM_PAINT);
3168     DEFINE_RESULT(WM_CLOSE);
3169 #ifndef _WIN32_WCE
3170     DEFINE_RESULT(WM_QUERYENDSESSION);
3171     DEFINE_RESULT(WM_QUERYOPEN);
3172     DEFINE_RESULT(WM_ENDSESSION);
3173 #endif
3174     DEFINE_RESULT(WM_QUIT);
3175     DEFINE_RESULT(WM_ERASEBKGND);
3176     DEFINE_RESULT(WM_SYSCOLORCHANGE);
3177     DEFINE_RESULT(WM_SHOWWINDOW);
3178     DEFINE_RESULT(WM_WININICHANGE);
3179     //DEFINE_RESULT(WM_SETTINGCHANGE);    // same as WM_WININICHANGE
3180     DEFINE_RESULT(WM_DEVMODECHANGE);
3181     DEFINE_RESULT(WM_ACTIVATEAPP);
3182     DEFINE_RESULT(WM_FONTCHANGE);
3183     DEFINE_RESULT(WM_TIMECHANGE);
3184     DEFINE_RESULT(WM_CANCELMODE);
3185     DEFINE_RESULT(WM_SETCURSOR);
3186     DEFINE_RESULT(WM_MOUSEACTIVATE);
3187     DEFINE_RESULT(WM_CHILDACTIVATE);
3188     DEFINE_RESULT(WM_QUEUESYNC);
3189     DEFINE_RESULT(WM_GETMINMAXINFO);
3190     DEFINE_RESULT(WM_PAINTICON);
3191     DEFINE_RESULT(WM_ICONERASEBKGND);
3192     DEFINE_RESULT(WM_NEXTDLGCTL);
3193     DEFINE_RESULT(WM_SPOOLERSTATUS);
3194     DEFINE_RESULT(WM_DRAWITEM);
3195     DEFINE_RESULT(WM_MEASUREITEM);
3196     DEFINE_RESULT(WM_DELETEITEM);
3197     DEFINE_RESULT(WM_VKEYTOITEM);
3198     DEFINE_RESULT(WM_CHARTOITEM);
3199     DEFINE_RESULT(WM_SETFONT);
3200     DEFINE_RESULT(WM_GETFONT);
3201     DEFINE_RESULT(WM_SETHOTKEY);
3202     DEFINE_RESULT(WM_GETHOTKEY);
3203     DEFINE_RESULT(WM_QUERYDRAGICON);
3204     DEFINE_RESULT(WM_COMPAREITEM);
3205 #ifndef _WIN32_WCE
3206     DEFINE_RESULT(WM_GETOBJECT);
3207 #endif
3208     DEFINE_RESULT(WM_COMPACTING);
3209     DEFINE_RESULT(WM_COMMNOTIFY);
3210     DEFINE_RESULT(WM_WINDOWPOSCHANGING);
3211     DEFINE_RESULT(WM_WINDOWPOSCHANGED);
3212     DEFINE_RESULT(WM_POWER);
3213     DEFINE_RESULT(WM_COPYDATA);
3214     DEFINE_RESULT(WM_CANCELJOURNAL);
3215     DEFINE_RESULT(WM_NOTIFY);
3216     DEFINE_RESULT(WM_INPUTLANGCHANGEREQUEST);
3217     DEFINE_RESULT(WM_INPUTLANGCHANGE);
3218     DEFINE_RESULT(WM_TCARD);
3219     DEFINE_RESULT(WM_HELP);
3220     DEFINE_RESULT(WM_USERCHANGED);
3221     DEFINE_RESULT(WM_NOTIFYFORMAT);
3222     DEFINE_RESULT(WM_CONTEXTMENU);
3223     DEFINE_RESULT(WM_STYLECHANGING);
3224     DEFINE_RESULT(WM_STYLECHANGED);
3225     DEFINE_RESULT(WM_DISPLAYCHANGE);
3226     DEFINE_RESULT(WM_GETICON);
3227     DEFINE_RESULT(WM_SETICON);
3228     DEFINE_RESULT(WM_NCCREATE);
3229     DEFINE_RESULT(WM_NCDESTROY);
3230     DEFINE_RESULT(WM_NCCALCSIZE);
3231     DEFINE_RESULT(WM_NCHITTEST);
3232     DEFINE_RESULT(WM_NCPAINT);
3233     DEFINE_RESULT(WM_NCACTIVATE);
3234     DEFINE_RESULT(WM_GETDLGCODE);
3235 #ifndef _WIN32_WCE
3236     DEFINE_RESULT(WM_SYNCPAINT);
3237 #endif
3238     DEFINE_RESULT(WM_NCMOUSEMOVE);
3239     DEFINE_RESULT(WM_NCLBUTTONDOWN);
3240     DEFINE_RESULT(WM_NCLBUTTONUP);
3241     DEFINE_RESULT(WM_NCLBUTTONDBLCLK);
3242     DEFINE_RESULT(WM_NCRBUTTONDOWN);
3243     DEFINE_RESULT(WM_NCRBUTTONUP);
3244     DEFINE_RESULT(WM_NCRBUTTONDBLCLK);
3245     DEFINE_RESULT(WM_NCMBUTTONDOWN);
3246     DEFINE_RESULT(WM_NCMBUTTONUP);
3247     DEFINE_RESULT(WM_NCMBUTTONDBLCLK);
3248     DEFINE_RESULT(WM_NCXBUTTONDOWN);
3249     DEFINE_RESULT(WM_NCXBUTTONUP);
3250     DEFINE_RESULT(WM_NCXBUTTONDBLCLK);
3251     DEFINE_RESULT(WM_INPUT_DEVICE_CHANGE);
3252     DEFINE_RESULT(WM_INPUT);
3253     DEFINE_RESULT(WM_KEYDOWN);
3254     DEFINE_RESULT(WM_KEYUP);
3255     DEFINE_RESULT(WM_CHAR);
3256     DEFINE_RESULT(WM_DEADCHAR);
3257     DEFINE_RESULT(WM_SYSKEYDOWN);
3258     DEFINE_RESULT(WM_SYSKEYUP);
3259     DEFINE_RESULT(WM_SYSCHAR);
3260     DEFINE_RESULT(WM_SYSDEADCHAR);
3261     DEFINE_RESULT(WM_UNICHAR);
3262     DEFINE_RESULT(WM_IME_STARTCOMPOSITION);
3263     DEFINE_RESULT(WM_IME_ENDCOMPOSITION);
3264     DEFINE_RESULT(WM_IME_COMPOSITION);
3265     DEFINE_RESULT(WM_INITDIALOG);
3266     DEFINE_RESULT(WM_COMMAND);
3267     DEFINE_RESULT(WM_SYSCOMMAND);
3268     DEFINE_RESULT(WM_TIMER);
3269     DEFINE_RESULT(WM_HSCROLL);
3270     DEFINE_RESULT(WM_VSCROLL);
3271     DEFINE_RESULT(WM_INITMENU);
3272     DEFINE_RESULT(WM_INITMENUPOPUP);
3273     DEFINE_RESULT(WM_MENUSELECT);
3274 #if _WIN32_WINNT >= 0x0601
3275     DEFINE_RESULT(WM_GESTURE);
3276     DEFINE_RESULT(WM_GESTURENOTIFY);
3277 #endif
3278     DEFINE_RESULT(WM_MENUCHAR);
3279     DEFINE_RESULT(WM_ENTERIDLE);
3280 #ifndef _WIN32_WCE
3281     DEFINE_RESULT(WM_MENURBUTTONUP);
3282     DEFINE_RESULT(WM_MENUDRAG);
3283     DEFINE_RESULT(WM_MENUGETOBJECT);
3284     DEFINE_RESULT(WM_UNINITMENUPOPUP);
3285     DEFINE_RESULT(WM_MENUCOMMAND);
3286     DEFINE_RESULT(WM_CHANGEUISTATE);
3287     DEFINE_RESULT(WM_UPDATEUISTATE);
3288     DEFINE_RESULT(WM_QUERYUISTATE);
3289 #endif
3290     DEFINE_RESULT(WM_CTLCOLORMSGBOX);
3291     DEFINE_RESULT(WM_CTLCOLOREDIT);
3292     DEFINE_RESULT(WM_CTLCOLORLISTBOX);
3293     DEFINE_RESULT(WM_CTLCOLORBTN);
3294     DEFINE_RESULT(WM_CTLCOLORDLG);
3295     DEFINE_RESULT(WM_CTLCOLORSCROLLBAR);
3296     DEFINE_RESULT(WM_CTLCOLORSTATIC);
3297     DEFINE_RESULT(WM_MOUSEMOVE);
3298     DEFINE_RESULT(WM_LBUTTONDOWN);
3299     DEFINE_RESULT(WM_LBUTTONUP);
3300     DEFINE_RESULT(WM_LBUTTONDBLCLK);
3301     DEFINE_RESULT(WM_RBUTTONDOWN);
3302     DEFINE_RESULT(WM_RBUTTONUP);
3303     DEFINE_RESULT(WM_RBUTTONDBLCLK);
3304     DEFINE_RESULT(WM_MBUTTONDOWN);
3305     DEFINE_RESULT(WM_MBUTTONUP);
3306     DEFINE_RESULT(WM_MBUTTONDBLCLK);
3307     DEFINE_RESULT(WM_MOUSEWHEEL);
3308     DEFINE_RESULT(WM_XBUTTONDOWN);
3309     DEFINE_RESULT(WM_XBUTTONUP);
3310     DEFINE_RESULT(WM_XBUTTONDBLCLK);
3311 #if _WIN32_WINNT >= 0x0600
3312     DEFINE_RESULT(WM_MOUSEHWHEEL);
3313 #endif
3314     DEFINE_RESULT(WM_PARENTNOTIFY);
3315     DEFINE_RESULT(WM_ENTERMENULOOP);
3316     DEFINE_RESULT(WM_EXITMENULOOP);
3317     DEFINE_RESULT(WM_NEXTMENU);
3318     DEFINE_RESULT(WM_SIZING);
3319     DEFINE_RESULT(WM_CAPTURECHANGED);
3320     DEFINE_RESULT(WM_MOVING);
3321     DEFINE_RESULT(WM_POWERBROADCAST);
3322     DEFINE_RESULT(WM_DEVICECHANGE);
3323     DEFINE_RESULT(WM_MDICREATE);
3324     DEFINE_RESULT(WM_MDIDESTROY);
3325     DEFINE_RESULT(WM_MDIACTIVATE);
3326     DEFINE_RESULT(WM_MDIRESTORE);
3327     DEFINE_RESULT(WM_MDINEXT);
3328     DEFINE_RESULT(WM_MDIMAXIMIZE);
3329     DEFINE_RESULT(WM_MDITILE);
3330     DEFINE_RESULT(WM_MDICASCADE);
3331     DEFINE_RESULT(WM_MDIICONARRANGE);
3332     DEFINE_RESULT(WM_MDIGETACTIVE);
3333     DEFINE_RESULT(WM_MDISETMENU);
3334     DEFINE_RESULT(WM_ENTERSIZEMOVE);
3335     DEFINE_RESULT(WM_EXITSIZEMOVE);
3336     DEFINE_RESULT(WM_DROPFILES);
3337     DEFINE_RESULT(WM_MDIREFRESHMENU);
3338 #if WINVER >= 0x0602
3339     DEFINE_RESULT(WM_POINTERDEVICECHANGE);
3340     DEFINE_RESULT(WM_POINTERDEVICEINRANGE);
3341     DEFINE_RESULT(WM_POINTERDEVICEOUTOFRANGE);
3342 #endif
3343 #if WINVER >= 0x0601
3344     DEFINE_RESULT(WM_TOUCH);
3345 #endif
3346 #if WINVER >= 0x0602
3347     DEFINE_RESULT(WM_NCPOINTERUPDATE);
3348     DEFINE_RESULT(WM_NCPOINTERDOWN);
3349     DEFINE_RESULT(WM_NCPOINTERUP);
3350     DEFINE_RESULT(WM_POINTERUPDATE);
3351     DEFINE_RESULT(WM_POINTERDOWN);
3352     DEFINE_RESULT(WM_POINTERUP);
3353     DEFINE_RESULT(WM_POINTERENTER);
3354     DEFINE_RESULT(WM_POINTERLEAVE);
3355     DEFINE_RESULT(WM_POINTERACTIVATE);
3356     DEFINE_RESULT(WM_POINTERCAPTURECHANGED);
3357     DEFINE_RESULT(WM_TOUCHHITTESTING);
3358     DEFINE_RESULT(WM_POINTERWHEEL);
3359     DEFINE_RESULT(WM_POINTERHWHEEL);
3360 #endif
3361     DEFINE_RESULT(WM_IME_SETCONTEXT);
3362     DEFINE_RESULT(WM_IME_NOTIFY);
3363     DEFINE_RESULT(WM_IME_CONTROL);
3364     DEFINE_RESULT(WM_IME_COMPOSITIONFULL);
3365     DEFINE_RESULT(WM_IME_SELECT);
3366     DEFINE_RESULT(WM_IME_CHAR);
3367     DEFINE_RESULT(WM_IME_REQUEST);
3368     DEFINE_RESULT(WM_IME_KEYDOWN);
3369     DEFINE_RESULT(WM_IME_KEYUP);
3370     DEFINE_RESULT(WM_MOUSEHOVER);
3371     DEFINE_RESULT(WM_MOUSELEAVE);
3372     DEFINE_RESULT(WM_NCMOUSEHOVER);
3373     DEFINE_RESULT(WM_NCMOUSELEAVE);
3374     DEFINE_RESULT(WM_WTSSESSION_CHANGE);
3375 #if WINVER >= 0x0601
3376     DEFINE_RESULT(WM_DPICHANGED);
3377 #endif
3378     DEFINE_RESULT(WM_CUT);
3379     DEFINE_RESULT(WM_COPY);
3380     DEFINE_RESULT(WM_PASTE);
3381     DEFINE_RESULT(WM_CLEAR);
3382     DEFINE_RESULT(WM_UNDO);
3383     DEFINE_RESULT(WM_RENDERFORMAT);
3384     DEFINE_RESULT(WM_RENDERALLFORMATS);
3385     DEFINE_RESULT(WM_DESTROYCLIPBOARD);
3386     DEFINE_RESULT(WM_DRAWCLIPBOARD);
3387     DEFINE_RESULT(WM_PAINTCLIPBOARD);
3388     DEFINE_RESULT(WM_VSCROLLCLIPBOARD);
3389     DEFINE_RESULT(WM_SIZECLIPBOARD);
3390     DEFINE_RESULT(WM_ASKCBFORMATNAME);
3391     DEFINE_RESULT(WM_CHANGECBCHAIN);
3392     DEFINE_RESULT(WM_HSCROLLCLIPBOARD);
3393     DEFINE_RESULT(WM_QUERYNEWPALETTE);
3394     DEFINE_RESULT(WM_PALETTEISCHANGING);
3395     DEFINE_RESULT(WM_PALETTECHANGED);
3396     DEFINE_RESULT(WM_HOTKEY);
3397     DEFINE_RESULT(WM_PRINT);
3398     DEFINE_RESULT(WM_PRINTCLIENT);
3399     DEFINE_RESULT(WM_APPCOMMAND);
3400     DEFINE_RESULT(WM_THEMECHANGED);
3401     DEFINE_RESULT(WM_CLIPBOARDUPDATE);
3402 #if _WIN32_WINNT >= 0x0600
3403     DEFINE_RESULT(WM_DWMCOMPOSITIONCHANGED);
3404     DEFINE_RESULT(WM_DWMNCRENDERINGCHANGED);
3405     DEFINE_RESULT(WM_DWMCOLORIZATIONCOLORCHANGED);
3406     DEFINE_RESULT(WM_DWMWINDOWMAXIMIZEDCHANGE);
3407 #endif
3408 #if _WIN32_WINNT >= 0x0601
3409     DEFINE_RESULT(WM_DWMSENDICONICTHUMBNAIL);
3410     DEFINE_RESULT(WM_DWMSENDICONICLIVEPREVIEWBITMAP);
3411 #endif
3412 #if WINVER >= 0x0600
3413     DEFINE_RESULT(WM_GETTITLEBARINFOEX);
3414 #endif
3415     default:
3416         if (WM_USER <= uMsg && uMsg <= 0x7FFF)
3417         {
3418             MSGDUMP_TPRINTF(TEXT("%sWM_USER+%u(hwnd:%p, lResult:%p)\n"),
3419                             MSGDUMP_PREFIX, uMsg - WM_USER, (void *)hwnd, (void *)lResult);
3420         }
3421         else if (WM_APP <= uMsg && uMsg <= 0xBFFF)
3422         {
3423             MSGDUMP_TPRINTF(TEXT("%sWM_APP+%u(hwnd:%p, lResult:%p)\n"),
3424                             MSGDUMP_PREFIX, uMsg - WM_APP, (void *)hwnd, (void *)lResult);
3425         }
3426         else
3427         {
3428             MSGDUMP_TPRINTF(TEXT("%sWM_%u(hwnd:%p, lResult:%p)\n"),
3429                             MSGDUMP_PREFIX, uMsg, (void *)hwnd, (void *)lResult);
3430         }
3431 #undef DEFINE_RESULT
3432     }
3433     return 0;
3434 }
3435 
3436 #endif
3437