[SDK][INCLUDE] Update msgdump.h and winxx.h (TreeView and ListView support)
authorKatayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Mon, 17 Jun 2019 11:29:03 +0000 (20:29 +0900)
committerKatayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Mon, 17 Jun 2019 11:29:03 +0000 (20:29 +0900)
sdk/include/reactos/msgdump.h
sdk/include/reactos/winxx.h

index c81763b..7934148 100644 (file)
@@ -5,7 +5,7 @@
  * COPYRIGHT:   Copyright 2018-2019 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
  */
 #ifndef _INC_MSGDUMP
-#define _INC_MSGDUMP    6   /* Version 6 */
+#define _INC_MSGDUMP    10   /* Version 10 */
 
 /*
  * NOTE: MD_msgdump function in this file provides Win32API message dump feature.
@@ -1809,7 +1809,7 @@ static __inline void MSGDUMP_API
 MD_Edit_OnSetWordBreakProc(HWND hwnd, EDITWORDBREAKPROC ewbprc)
 {
     MSGDUMP_TPRINTF(TEXT("%sEM_SETWORDBREAKPROC(hwnd:%p, ewbprc:%p)\n"),
-                    MSGDUMP_PREFIX, (void *)hwnd, (void *)ewbprc);
+                    MSGDUMP_PREFIX, (void *)hwnd, *(void **)&ewbprc);
 }
 
 static __inline EDITWORDBREAKPROC MSGDUMP_API
@@ -2630,13 +2630,1565 @@ MD_ScrollBar_OnGetScrollBarInfo(HWND hwnd, LPSCROLLBARINFO lpsbi)
     return FALSE;
 }
 
+static __inline COLORREF MSGDUMP_API
+MD_ListView_OnGetBkColor(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETBKCOLOR(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetBkColor(HWND hwnd, COLORREF clrBk)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETBKCOLOR(hwnd:%p, clrBk:0x%08lX)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, clrBk);
+    return FALSE;
+}
+
+static __inline HIMAGELIST MSGDUMP_API
+MD_ListView_OnGetImageList(HWND hwnd, INT iImageList)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETIMAGELIST(hwnd:%p, iImageList:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iImageList);
+    return NULL;
+}
+
+static __inline HIMAGELIST MSGDUMP_API
+MD_ListView_OnSetImageList(HWND hwnd, INT iImageList, HIMAGELIST himl)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETIMAGELIST(hwnd:%p, iImageList:%d, himl:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iImageList, (void *)himl);
+    return NULL;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnGetItemCount(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETITEMCOUNT(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnGetItemA(HWND hwnd, LV_ITEMA *pitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETITEMA(hwnd:%p, pitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)pitem);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetItemA(HWND hwnd, const LV_ITEMA *pitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETITEMA(hwnd:%p, pitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)pitem);
+    return FALSE;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnInsertItemA(HWND hwnd, const LV_ITEMA *pitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_INSERTITEMA(hwnd:%p, pitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)pitem);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnDeleteItem(HWND hwnd, INT i)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_DELETEITEM(hwnd:%p, i:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnDeleteAllItems(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_DELETEALLITEMS(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnGetCallbackMask(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETCALLBACKMASK(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetCallbackMask(HWND hwnd, UINT mask)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETCALLBACKMASK(hwnd:%p, mask:%u)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, mask);
+    return FALSE;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnGetNextItem(HWND hwnd, INT i, UINT flags)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETNEXTITEM(hwnd:%p, i:%d, flags:%u)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i, flags);
+    return 0;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnFindItemA(HWND hwnd, INT iStart, const LV_FINDINFOA *plvfi)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_FINDITEMA(hwnd:%p, iStart:%d, plvfi:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iStart, (void *)plvfi);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnGetItemRect(HWND hwnd, INT i, RECT *prc)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETITEMRECT(hwnd:%p, i:%d, prc:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i, (void *)prc);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetItemPosition(HWND hwnd, INT i, INT x, INT y)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETITEMPOSITION(hwnd:%p, i:%d, x:%d, y:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i, x, y);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnGetItemPosition(HWND hwnd, INT i, POINT *ppt)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETITEMPOSITION(hwnd:%p, i:%d, ppt:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i, (void *)ppt);
+    return FALSE;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnGetStringWidthA(HWND hwnd, LPCSTR psz)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETSTRINGWIDTHA(hwnd:%p, psz:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)psz);
+    return 0;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnHitTest(HWND hwnd, LV_HITTESTINFO *pinfo)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_HITTEST(hwnd:%p, pinfo:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)pinfo);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnEnsureVisible(HWND hwnd, INT i, BOOL fPartialOK)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_ENSUREVISIBLE(hwnd:%p, i:%d, fPartialOK:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i, fPartialOK);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnScroll(HWND hwnd, INT dx, INT dy)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SCROLL(hwnd:%p, dx:%d, dy:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, dx, dy);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnRedrawItems(HWND hwnd, INT iFirst, INT iLast)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_REDRAWITEMS(hwnd:%p, iFirst:%d, iLast:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iFirst, iLast);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnArrange(HWND hwnd, UINT code)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_ARRANGE(hwnd:%p, code:%u)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, code);
+    return FALSE;
+}
+
+static __inline HWND MSGDUMP_API
+MD_ListView_OnEditLabelA(HWND hwnd, INT i)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_EDITLABELA(hwnd:%p, i:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i);
+    return NULL;
+}
+
+static __inline HWND MSGDUMP_API
+MD_ListView_OnGetEditControl(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETEDITCONTROL(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return NULL;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnGetColumnA(HWND hwnd, INT iCol, LV_COLUMNA *pcol)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETCOLUMNA(hwnd:%p, iCol:%d, pcol:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iCol, (void *)pcol);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetColumnA(HWND hwnd, INT iCol, const LV_COLUMNA *pcol)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETCOLUMNA(hwnd:%p, iCol:%d, pcol:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iCol, (const void *)pcol);
+    return FALSE;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnInsertColumnA(HWND hwnd, INT iCol, const LV_COLUMNA *pcol)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_INSERTCOLUMNA(hwnd:%p, iCol:%d, pcol:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iCol, (const void *)pcol);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnDeleteColumn(HWND hwnd, INT iCol)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_DELETECOLUMN(hwnd:%p, iCol:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iCol);
+    return FALSE;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnGetColumnWidth(HWND hwnd, INT iCol)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETCOLUMNWIDTH(hwnd:%p, iCol:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iCol);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetColumnWidth(HWND hwnd, INT iCol, INT cx)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETCOLUMNWIDTH(hwnd:%p, iCol:%d, cx:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iCol, cx);
+    return FALSE;
+}
+
+static __inline HWND MSGDUMP_API
+MD_ListView_OnGetHeader(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETHEADER(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return NULL;
+}
+
+static __inline HIMAGELIST MSGDUMP_API
+MD_ListView_OnCreateDragImage(HWND hwnd, INT i, LPPOINT lpptUpLeft)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_CREATEDRAGIMAGE(hwnd:%p, i:%d, lpptUpLeft:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i, (void *)lpptUpLeft);
+    return NULL;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnGetViewRect(HWND hwnd, RECT *prc)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETVIEWRECT(hwnd:%p, prc:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)prc);
+    return FALSE;
+}
+
+static __inline COLORREF MSGDUMP_API
+MD_ListView_OnGetTextColor(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETTEXTCOLOR(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetTextColor(HWND hwnd, COLORREF clrText)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETTEXTCOLOR(hwnd:%p, clrText:0x%08lX)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, clrText);
+    return FALSE;
+}
+
+static __inline COLORREF MSGDUMP_API
+MD_ListView_OnGetTextBkColor(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETTEXTBKCOLOR(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetTextBkColor(HWND hwnd, COLORREF clrTextBk)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETTEXTBKCOLOR(hwnd:%p, clrTextBk:0x%08lX)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, clrTextBk);
+    return FALSE;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnGetTopIndex(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETTOPINDEX(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnGetCountPerPage(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETCOUNTPERPAGE(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnGetOrigin(HWND hwnd, POINT *ppt)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETORIGIN(hwnd:%p, ppt:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)ppt);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnUpdate(HWND hwnd, INT i)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_UPDATE(hwnd:%p, i:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetItemState(HWND hwnd, INT i, LV_ITEM *lvi)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETITEMSTATE(hwnd:%p, i:%d, lvi:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i, (void *)lvi);
+    return FALSE;
+}
+
+static __inline UINT MSGDUMP_API
+MD_ListView_OnGetItemState(HWND hwnd, INT i, UINT mask)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETITEMSTATE(hwnd:%p, i:%d, mask:%u)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i, mask);
+    return 0;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnGetItemTextA(HWND hwnd, INT i, LV_ITEMA *lvi)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETITEMTEXTA(hwnd:%p, i:%d, lvi:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i, (void *)lvi);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetItemTextA(HWND hwnd, INT i, const LV_ITEMA *lvi)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETITEMTEXTA(hwnd:%p, i:%d, lvi:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i, (const void *)lvi);
+    return FALSE;
+}
+
+static __inline void MSGDUMP_API
+MD_ListView_OnSetItemCount(HWND hwnd, INT cItems)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETITEMCOUNT(hwnd:%p, cItems:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, cItems);
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSortItems(HWND hwnd, LPARAM lPrm, PFNLVCOMPARE pfnCompare)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SORTITEMS(hwnd:%p, lPrm:%p, pfnCompare:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)lPrm, *(void **)&pfnCompare);
+    return FALSE;
+}
+
+static __inline void MSGDUMP_API
+MD_ListView_OnSetItemPosition32(HWND hwnd, INT i, const POINT *ppt)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETITEMPOSITION32(hwnd:%p, i:%d, ppt:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i, (void *)ppt);
+}
+
+static __inline UINT MSGDUMP_API
+MD_ListView_OnGetSelectedCount(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETSELECTEDCOUNT(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline DWORD MSGDUMP_API
+MD_ListView_OnGetItemSpacing(HWND hwnd, BOOL fSmall)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETITEMSPACING(hwnd:%p, fSmall:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, fSmall);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnGetISearchStringA(HWND hwnd, LPSTR lpsz)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETISEARCHSTRINGA(hwnd:%p, lpsz:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)lpsz);
+    return FALSE;
+}
+
+static __inline DWORD MSGDUMP_API
+MD_ListView_OnSetIconSpacing(HWND hwnd, INT cx, INT cy)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETICONSPACING(hwnd:%p, cx:%d, cy:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, cx, cy);
+    return 0;
+}
+
+static __inline DWORD MSGDUMP_API
+MD_ListView_OnSetExtendedListViewStyle(HWND hwnd, DWORD dwMask, DWORD dw)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETEXTENDEDLISTVIEWSTYLE(hwnd:%p, dwMask:0x%08lX, dw:0x%08lX)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, dwMask, dw);
+    return 0;
+}
+
+static __inline DWORD MSGDUMP_API
+MD_ListView_OnGetExtendedListViewStyle(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETEXTENDEDLISTVIEWSTYLE(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnGetSubItemRect(HWND hwnd, INT iItem, RECT *prc)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETSUBITEMRECT(hwnd:%p, iItem:%d, prc:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iItem, (void *)prc);
+    return FALSE;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnSubItemHitTest(HWND hwnd, WPARAM wParam, LPLVHITTESTINFO plvhti)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SUBITEMHITTEST(hwnd:%p, wParam:%p, plvhti:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)wParam, (void *)plvhti);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetColumnOrderArray(HWND hwnd, INT iCount, LPINT pi)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETCOLUMNORDERARRAY(hwnd:%p, iCount:%d, pi:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iCount, (void *)pi);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnGetColumnOrderArray(HWND hwnd, INT iCount, LPINT pi)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETCOLUMNORDERARRAY(hwnd:%p, iCount:%d, pi:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iCount, (void *)pi);
+    return FALSE;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnSetHotItem(HWND hwnd, INT i)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETHOTITEM(hwnd:%p, i:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i);
+    return 0;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnGetHotItem(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETHOTITEM(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline HCURSOR MSGDUMP_API
+MD_ListView_OnSetHotCursor(HWND hwnd, HCURSOR hcur)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETHOTCURSOR(hwnd:%p, hcur:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)hcur);
+    return NULL;
+}
+
+static __inline HCURSOR MSGDUMP_API
+MD_ListView_OnGetHotCursor(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETHOTCURSOR(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return NULL;
+}
+
+static __inline DWORD MSGDUMP_API
+MD_ListView_OnApproximateViewRect(HWND hwnd, INT iWidth, INT iHeight, INT iCount)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_APPROXIMATEVIEWRECT(hwnd:%p, iWidth:%d, iHeight:%d, iCount:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iWidth, iHeight, iCount);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetWorkAreas(HWND hwnd, INT nWorkAreas, const RECT *prc)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETWORKAREAS(hwnd:%p, nWorkAreas:%d, prc:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, nWorkAreas, (void *)prc);
+    return FALSE;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnGetSelectionMark(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETSELECTIONMARK(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnSetSelectionMark(HWND hwnd, INT i)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETSELECTIONMARK(hwnd:%p, i:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetBkImageA(HWND hwnd, const LVBKIMAGEA *plvbki)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETBKIMAGEA(hwnd:%p, plvbki:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (const void *)plvbki);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnGetBkImageA(HWND hwnd, LVBKIMAGEA *plvbki)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETBKIMAGEA(hwnd:%p, plvbki:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)plvbki);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnGetWorkAreas(HWND hwnd, INT nWorkAreas, RECT *prc)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETWORKAREAS(hwnd:%p, nWorkAreas:%d, prc:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, nWorkAreas, (void *)prc);
+    return FALSE;
+}
+
+static __inline DWORD MSGDUMP_API
+MD_ListView_OnSetHoverTime(HWND hwnd, DWORD dwHoverTimeMs)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETHOVERTIME(hwnd:%p, dwHoverTimeMs:0x%08lX)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, dwHoverTimeMs);
+    return 0;
+}
+
+static __inline DWORD MSGDUMP_API
+MD_ListView_OnGetHoverTime(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETHOVERTIME(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnGetNumberOfWorkAreas(HWND hwnd, UINT *pnWorkAreas)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETNUMBEROFWORKAREAS(hwnd:%p, pnWorkAreas:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)pnWorkAreas);
+    return FALSE;
+}
+
+static __inline HWND MSGDUMP_API
+MD_ListView_OnSetToolTips(HWND hwnd, HWND hwndNewHwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETTOOLTIPS(hwnd:%p, hwndNewHwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndNewHwnd);
+    return NULL;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnGetItemW(HWND hwnd, LV_ITEMW *pitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETITEMW(hwnd:%p, pitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)pitem);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetItemW(HWND hwnd, const LV_ITEMW *pitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETITEMW(hwnd:%p, pitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (const void *)pitem);
+    return FALSE;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnInsertItemW(HWND hwnd, const LV_ITEMW *pitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_INSERTITEMW(hwnd:%p, pitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (const void *)pitem);
+    return 0;
+}
+
+static __inline HWND MSGDUMP_API
+MD_ListView_OnGetToolTips(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETTOOLTIPS(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return NULL;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSortItemsEx(HWND hwnd, PFNLVCOMPARE pfnCompare, LPARAM lPrm)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SORTITEMSEX(hwnd:%p, pfnCompare:%p, lPrm:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, *(void **)&pfnCompare, (void *)lPrm);
+    return FALSE;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnFindItemW(HWND hwnd, INT iStart, const LV_FINDINFOW *plvfi)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_FINDITEMW(hwnd:%p, iStart:%d, plvfi:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iStart, (void *)plvfi);
+    return 0;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnGetStringWidthW(HWND hwnd, LPCWSTR psz)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETSTRINGWIDTHW(hwnd:%p, psz:%ls)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, psz);
+    return 0;
+}
+
+#if NTDDI_VERSION >= 0x06000000
+    static __inline UINT MSGDUMP_API
+    MD_ListView_OnGetGroupState(HWND hwnd, DWORD dwGroupId, DWORD dwMask)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_GETGROUPSTATE(hwnd:%p, dwGroupId:0x%08lX, dwMask:0x%08lX)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, dwGroupId, dwMask);
+        return 0;
+    }
+
+    static __inline INT MSGDUMP_API
+    MD_ListView_OnGetFocusedGroup(HWND hwnd)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_GETFOCUSEDGROUP(hwnd:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd);
+        return 0;
+    }
+#endif
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnGetColumnW(HWND hwnd, INT iCol)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETCOLUMNW(hwnd:%p, iCol:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iCol);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetColumnW(HWND hwnd, INT iCol, INT cx)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETCOLUMNW(hwnd:%p, iCol:%d, cx:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iCol, cx);
+    return 0;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnInsertColumnW(HWND hwnd, INT iCol, const LV_COLUMNW *pcol)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_INSERTCOLUMNW(hwnd:%p, iCol:%d, pcol:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iCol, (const void *)pcol);
+    return 0;
+}
+
+#if NTDDI_VERSION >= 0x06000000
+    static __inline BOOL MSGDUMP_API
+    MD_ListView_OnGetGroupRect(HWND hwnd, INT iGroupId, RECT *prc)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_GETGROUPRECT(hwnd:%p, iGroupId:%d, prc:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, iGroupId, (void *)prc);
+        return FALSE;
+    }
+#endif
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnGetItemTextW(HWND hwnd, INT i, LV_ITEMW *pitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETITEMTEXTW(hwnd:%p, i:%d, pitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i, (void *)pitem);
+    return 0;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnSetItemTextW(HWND hwnd, INT i, const LV_ITEMW *pitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETITEMTEXTW(hwnd:%p, i:%d, pitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i, (const void *)pitem);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnGetISearchStringW(HWND hwnd, LPWSTR lpsz)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETISEARCHSTRINGW(hwnd:%p, lpsz:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)lpsz);
+    return FALSE;
+}
+
+static __inline HWND MSGDUMP_API
+MD_ListView_OnEditLabelW(HWND hwnd, INT i)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_EDITLABELW(hwnd:%p, i:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, i);
+    return NULL;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetBkImageW(HWND hwnd, const LVBKIMAGEW *plvbki)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETBKIMAGEW(hwnd:%p, plvbki:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (const void *)plvbki);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnGetBkImageW(HWND hwnd, LVBKIMAGEW *plvbki)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETBKIMAGEW(hwnd:%p, plvbki:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)plvbki);
+    return FALSE;
+}
+
+static __inline void MSGDUMP_API
+MD_ListView_OnSetSelectedColumn(HWND hwnd, INT iCol)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETSELECTEDCOLUMN(hwnd:%p, iCol:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iCol);
+}
+
+static __inline LRESULT MSGDUMP_API
+MD_ListView_OnSetTileWidth(HWND hwnd, WPARAM wParam, LPARAM lParam)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETTILEWIDTH(hwnd:%p, wParam:%p, lParam:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)wParam, (void *)lParam);
+    return 0;
+}
+
+static __inline DWORD MSGDUMP_API
+MD_ListView_OnSetView(HWND hwnd, DWORD iView)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETVIEW(hwnd:%p, iView:0x%08lX)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iView);
+    return 0;
+}
+
+static __inline DWORD MSGDUMP_API
+MD_ListView_OnGetView(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETVIEW(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+#if NTDDI_VERSION >= 0x06000000
+    static __inline INT MSGDUMP_API
+    MD_ListView_OnInsertGroup(HWND hwnd, INT iGroupId, const LVGROUP *pGroup)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_INSERTGROUP(hwnd:%p, iGroupId:%d, pGroup:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, iGroupId, (const void *)pGroup);
+        return 0;
+    }
+
+    static __inline INT MSGDUMP_API
+    MD_ListView_OnSetGroupInfo(HWND hwnd, INT iGroupId, const LVGROUP *pGroup)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_SETGROUPINFO(hwnd:%p, iGroupId:%d, pGroup:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, iGroupId, (const void *)pGroup);
+        return 0;
+    }
+
+    static __inline INT MSGDUMP_API
+    MD_ListView_OnGetGroupInfo(HWND hwnd, INT iGroupId, LVGROUP *pGroup)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_GETGROUPINFO(hwnd:%p, iGroupId:%d, pGroup:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, iGroupId, (void *)pGroup);
+        return 0;
+    }
+
+    static __inline INT MSGDUMP_API
+    MD_ListView_OnRemoveGroup(HWND hwnd, INT iGroupId)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_REMOVEGROUP(hwnd:%p, iGroupId:%d)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, iGroupId);
+        return 0;
+    }
+
+    static __inline LRESULT MSGDUMP_API
+    MD_ListView_OnMoveGroup(HWND hwnd, WPARAM wParam, LPARAM lParam)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_MOVEGROUP(hwnd:%p, wParam:%p, lParam:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, wParam, lParam);
+        return 0;
+    }
+
+    static __inline INT MSGDUMP_API
+    MD_ListView_OnGetGroupCount(HWND hwnd)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_GETGROUPCOUNT(hwnd:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd);
+        return 0;
+    }
+
+    static __inline BOOL MSGDUMP_API
+    MD_ListView_OnGetGroupInfoByIndex(HWND hwnd, INT iIndex, LVGROUP *pgrp)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_GETGROUPINFOBYINDEX(hwnd:%p, iIndex:%d, pgrp:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, iIndex, (void *)pgrp);
+        return FALSE;
+    }
+
+    static __inline LRESULT MSGDUMP_API
+    MD_ListView_OnMoveItemToGroup(HWND hwnd, WPARAM wParam, LPARAM lParam)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_MOVEITEMTOGROUP(hwnd:%p, wParam:%p, lParam:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (void *)wParam, (void *)lParam);
+        return 0;
+    }
+
+    static __inline void MSGDUMP_API
+    MD_ListView_OnSetGroupMetrics(HWND hwnd, const LVGROUPMETRICS *pGroupMetrics)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_SETGROUPMETRICS(hwnd:%p, pGroupMetrics:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (const void *)pGroupMetrics);
+    }
+
+    static __inline void MSGDUMP_API
+    MD_ListView_OnGetGroupMetrics(HWND hwnd, LVGROUPMETRICS *pGroupMetrics)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_GETGROUPMETRICS(hwnd:%p, pGroupMetrics:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (void *)pGroupMetrics);
+    }
+
+    static __inline INT MSGDUMP_API
+    MD_ListView_OnEnableGroupView(HWND hwnd, BOOL fEnable)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_ENABLEGROUPVIEW(hwnd:%p, fEnable:%d)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, fEnable);
+        return 0;
+    }
+
+    static __inline BOOL MSGDUMP_API
+    MD_ListView_OnSortGroups(HWND hwnd, PFNLVGROUPCOMPARE pfnGroupCompate, void *plv)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_SORTGROUPS(hwnd:%p, pfnGroupCompate:%p, plv:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, *(void **)&pfnGroupCompate, plv);
+        return FALSE;
+    }
+
+    static __inline void MSGDUMP_API
+    MD_ListView_OnInsertGroupSorted(HWND hwnd, const LVINSERTGROUPSORTED *structInsert)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_INSERTGROUPSORTED(hwnd:%p, structInsert:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (void *)structInsert);
+    }
+
+    static __inline void MSGDUMP_API
+    MD_ListView_OnRemoveAllGroups(HWND hwnd)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_REMOVEALLGROUPS(hwnd:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd);
+    }
+
+    static __inline BOOL MSGDUMP_API
+    MD_ListView_OnHasGroup(HWND hwnd, DWORD dwGroupId)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_HASGROUP(hwnd:%p, dwGroupId:0x%08lX)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, dwGroupId);
+        return FALSE;
+    }
+#endif
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetTileViewInfo(HWND hwnd, const LVTILEVIEWINFO *ptvi)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETTILEVIEWINFO(hwnd:%p, ptvi:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (const void *)ptvi);
+    return FALSE;
+}
+
+static __inline void MSGDUMP_API
+MD_ListView_OnGetTileViewInfo(HWND hwnd, LVTILEVIEWINFO *ptvi)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETTILEVIEWINFO(hwnd:%p, ptvi:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)ptvi);
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetTileInfo(HWND hwnd, const LVTILEINFO *pti)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETTILEINFO(hwnd:%p, pti:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (const void *)pti);
+    return FALSE;
+}
+
+static __inline void MSGDUMP_API
+MD_ListView_OnGetTileInfo(HWND hwnd, LVTILEINFO *pti)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETTILEINFO(hwnd:%p, pti:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)pti);
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetInsertMark(HWND hwnd, const LVINSERTMARK *lvim)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETINSERTMARK(hwnd:%p, lvim:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (const void *)lvim);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnGetInsertMark(HWND hwnd, LVINSERTMARK *lvim)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETINSERTMARK(hwnd:%p, lvim:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)lvim);
+    return FALSE;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnInsertMarkHitTest(HWND hwnd, LPPOINT point, LPLVINSERTMARK lvim)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_INSERTMARKHITTEST(hwnd:%p, point:%p, lvim:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)point, (void *)lvim);
+    return 0;
+}
+
+static __inline INT MSGDUMP_API
+MD_ListView_OnGetInsertMarkRect(HWND hwnd, LPRECT rc)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETINSERTMARKRECT(hwnd:%p, rc:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)rc);
+    return 0;
+}
+
+static __inline COLORREF MSGDUMP_API
+MD_ListView_OnSetInsertMarkColor(HWND hwnd, COLORREF color)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETINSERTMARKCOLOR(hwnd:%p, color:0x%08lX)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, color);
+    return 0;
+}
+
+static __inline COLORREF MSGDUMP_API
+MD_ListView_OnGetInsertMarkColor(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETINSERTMARKCOLOR(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnSetInfoTip(HWND hwnd, const LVSETINFOTIP *plvInfoTip)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETINFOTIP(hwnd:%p, plvInfoTip:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (const void *)plvInfoTip);
+    return FALSE;
+}
+
+static __inline UINT MSGDUMP_API
+MD_ListView_OnGetSelectedColumn(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETSELECTEDCOLUMN(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnIsGroupViewEnabled(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_ISGROUPVIEWENABLED(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return FALSE;
+}
+
+static __inline COLORREF MSGDUMP_API
+MD_ListView_OnGetOutlineColor(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_GETOUTLINECOLOR(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline COLORREF MSGDUMP_API
+MD_ListView_OnSetOutlineColor(HWND hwnd, COLORREF color)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_SETOUTLINECOLOR(hwnd:%p, color:0x%08lX)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, color);
+    return 0;
+}
+
+static __inline void MSGDUMP_API
+MD_ListView_OnCancelEditLabel(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_CANCELEDITLABEL(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+}
+
+static __inline UINT MSGDUMP_API
+MD_ListView_OnMapIndexToID(HWND hwnd, UINT index)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_MAPINDEXTOID(hwnd:%p, index:%u)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, index);
+    return 0;
+}
+
+static __inline UINT MSGDUMP_API
+MD_ListView_OnMapIDToIndex(HWND hwnd, UINT id)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_MAPIDTOINDEX(hwnd:%p, id:%u)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, id);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_ListView_OnIsItemVisible(HWND hwnd, UINT index)
+{
+    MSGDUMP_TPRINTF(TEXT("%sLVM_ISITEMVISIBLE(hwnd:%p, index:%u)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, index);
+    return FALSE;
+}
+
+#if NTDDI_VERSION >= 0x06000000
+    static __inline void MSGDUMP_API
+    MD_ListView_OnGetEmptyText(HWND hwnd, PWSTR pszText, UINT cchText)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_GETEMPTYTEXT(hwnd:%p, pszText:%p, cchText:%u)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (void *)pszText, cchText);
+    }
+
+    static __inline BOOL MSGDUMP_API
+    MD_ListView_OnGetFooterRect(HWND hwnd, RECT *prc)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_GETFOOTERRECT(hwnd:%p, prc:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (void *)prc);
+        return FALSE;
+    }
+
+    static __inline BOOL MSGDUMP_API
+    MD_ListView_OnGetFooterInfo(HWND hwnd, LVFOOTERINFO *plvfi)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_GETFOOTERINFO(hwnd:%p, plvfi:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (void *)plvfi);
+        return FALSE;
+    }
+
+    static __inline BOOL MSGDUMP_API
+    MD_ListView_OnGetFooterItemRect(HWND hwnd, INT iItem, RECT *prc)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_GETFOOTERITEMRECT(hwnd:%p, iItem:%d, prc:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, iItem, (void *)prc);
+        return FALSE;
+    }
+
+    static __inline BOOL MSGDUMP_API
+    MD_ListView_OnGetFooterItem(HWND hwnd, INT iItem, LVFOOTERITEM *pfi)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_GETFOOTERITEM(hwnd:%p, iItem:%d, pfi:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, iItem, (void *)pfi);
+        return FALSE;
+    }
+
+    static __inline BOOL MSGDUMP_API
+    MD_ListView_OnGetItemIndexRect(HWND hwnd, const LVITEMINDEX *plvii, RECT *prc)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_GETITEMINDEXRECT(hwnd:%p, plvii:%p, prc:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (void *)plvii, (void *)prc);
+        return FALSE;
+    }
+
+    static __inline HRESULT MSGDUMP_API
+    MD_ListView_OnSetItemIndexState(HWND hwnd, const LVITEMINDEX *plvii, const LV_ITEM *lvi)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_SETITEMINDEXSTATE(hwnd:%p, plvii:%p, lvi:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (const void *)plvii, (const void *)lvi);
+        return 0;
+    }
+
+    static __inline BOOL MSGDUMP_API
+    MD_ListView_OnGetNextItemIndex(HWND hwnd, LVITEMINDEX *plvii, UINT flags)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sLVM_GETNEXTITEMINDEX(hwnd:%p, plvii:%p, flags:%u)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (const void *)plvii, flags);
+        return 0;
+    }
+#endif
+
+static __inline HTREEITEM MSGDUMP_API
+MD_TreeView_OnInsertItemA(HWND hwnd, LPTV_INSERTSTRUCTA lpis)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_INSERTITEMA(hwnd:%p, lpis:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)lpis);
+    return NULL;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_TreeView_OnDeleteItem(HWND hwnd, HTREEITEM hitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_DELETEITEM(hwnd:%p, hitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)hitem);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_TreeView_OnExpand(HWND hwnd, HTREEITEM hitem, UINT code)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_EXPAND(hwnd:%p, hitem:%p, code:%u)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)hitem, code);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_TreeView_OnGetItemRect(HWND hwnd, UINT code, RECT *prc)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETITEMRECT(hwnd:%p, code:%u, prc:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, code, (void *)prc);
+    return FALSE;
+}
+
+static __inline UINT MSGDUMP_API
+MD_TreeView_OnGetCount(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETCOUNT(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline UINT MSGDUMP_API
+MD_TreeView_OnGetIndent(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETINDENT(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_TreeView_OnSetIndent(HWND hwnd, INT indent)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_SETINDENT(hwnd:%p, indent:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, indent);
+    return FALSE;
+}
+
+static __inline HIMAGELIST MSGDUMP_API
+MD_TreeView_OnGetImageList(HWND hwnd, INT iImage)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETIMAGELIST(hwnd:%p, iImage:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iImage);
+    return NULL;
+}
+
+static __inline HIMAGELIST MSGDUMP_API
+MD_TreeView_OnSetImageList(HWND hwnd, INT iImage, HIMAGELIST himl)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETIMAGELIST(hwnd:%p, iImage:%d, himl:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iImage, (void *)himl);
+    return NULL;
+}
+
+static __inline HTREEITEM MSGDUMP_API
+MD_TreeView_OnGetNextItem(HWND hwnd, HTREEITEM hitem, UINT code)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETNEXTITEM(hwnd:%p, hitem:%p, code:%u)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)hitem, code);
+    return NULL;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_TreeView_OnSelectItem(HWND hwnd, UINT code, HTREEITEM hitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_SELECTITEM(hwnd:%p, code:%u, hitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, code, (void *)hitem);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_TreeView_OnGetItemA(HWND hwnd, TV_ITEMA *pitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETITEMA(hwnd:%p, pitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)pitem);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_TreeView_OnSetItemA(HWND hwnd, const TV_ITEMA *pitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_SETITEMA(hwnd:%p, pitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (const void *)pitem);
+    return FALSE;
+}
+
+static __inline HWND MSGDUMP_API
+MD_TreeView_OnEditLabelA(HWND hwnd, HTREEITEM hitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_EDITLABELA(hwnd:%p, hitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)hitem);
+    return NULL;
+}
+
+static __inline HWND MSGDUMP_API
+MD_TreeView_OnGetEditControl(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETEDITCONTROL(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return NULL;
+}
+
+static __inline UINT MSGDUMP_API
+MD_TreeView_OnGetVisibleCount(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETVISIBLECOUNT(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline HTREEITEM MSGDUMP_API
+MD_TreeView_OnHitTest(HWND hwnd, LPTV_HITTESTINFO lpht)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_HITTEST(hwnd:%p, lpht:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)lpht);
+    return NULL;
+}
+
+static __inline HIMAGELIST MSGDUMP_API
+MD_TreeView_OnCreateDragImage(HWND hwnd, HTREEITEM hitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_CREATEDRAGIMAGE(hwnd:%p, hitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)hitem);
+    return NULL;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_TreeView_OnSortChildren(HWND hwnd, HTREEITEM hitem, BOOL recurse)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_SORTCHILDREN(hwnd:%p, hitem:%p, recurse:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)hitem, recurse);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_TreeView_OnEnsureVisible(HWND hwnd, HTREEITEM hitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_ENSUREVISIBLE(hwnd:%p, hitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)hitem);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_TreeView_OnSortChildrenCB(HWND hwnd, LPTV_SORTCB psort, BOOL recurse)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_SORTCHILDRENCB(hwnd:%p, psort:%p, recurse:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)psort, recurse);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_TreeView_OnEndEditLabelNow(HWND hwnd, BOOL fCancel)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_ENDEDITLABELNOW(hwnd:%p, fCancel:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, fCancel);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_TreeView_OnGetISearchStringA(HWND hwnd, LPSTR lpsz)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETISEARCHSTRINGA(hwnd:%p, lpsz:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)lpsz);
+    return FALSE;
+}
+
+static __inline HWND MSGDUMP_API
+MD_TreeView_OnSetToolTips(HWND hwnd, HWND hwndTT)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_SETTOOLTIPS(hwnd:%p, hwndTT:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)hwndTT);
+    return NULL;
+}
+
+static __inline HWND MSGDUMP_API
+MD_TreeView_OnGetToolTips(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETTOOLTIPS(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return NULL;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_TreeView_OnSetInsertMark(HWND hwnd, HTREEITEM hItem, BOOL fAfter)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_SETINSERTMARK(hwnd:%p, hItem:%p, fAfter:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)hItem, fAfter);
+    return FALSE;
+}
+
+static __inline INT MSGDUMP_API
+MD_TreeView_OnSetItemHeight(HWND hwnd, INT iHeight)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_SETITEMHEIGHT(hwnd:%p, iHeight:%d)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, iHeight);
+    return 0;
+}
+
+static __inline INT MSGDUMP_API
+MD_TreeView_OnGetItemHeight(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETITEMHEIGHT(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline COLORREF MSGDUMP_API
+MD_TreeView_OnSetBkColor(HWND hwnd, COLORREF clr)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_SETBKCOLOR(hwnd:%p, clr:0x%08lX)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, clr);
+    return 0;
+}
+
+static __inline COLORREF MSGDUMP_API
+MD_TreeView_OnSetTextColor(HWND hwnd, COLORREF clr)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_SETTEXTCOLOR(hwnd:%p, clr:0x%08lX)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, clr);
+    return 0;
+}
+
+static __inline COLORREF MSGDUMP_API
+MD_TreeView_OnGetBkColor(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETBKCOLOR(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline COLORREF MSGDUMP_API
+MD_TreeView_OnGetTextColor(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETTEXTCOLOR(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline UINT MSGDUMP_API
+MD_TreeView_OnSetScrollTime(HWND hwnd, UINT uTime)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_SETSCROLLTIME(hwnd:%p, uTime:%u)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, uTime);
+    return 0;
+}
+
+static __inline UINT MSGDUMP_API
+MD_TreeView_OnGetScrollTime(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETSCROLLTIME(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+#if NTDDI_VERSION >= 0x06000000
+    static __inline INT MSGDUMP_API
+    MD_TreeView_OnSetBorder(HWND hwnd, DWORD dwFlags, INT xBorder, INT yBorder)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sTVM_SETBORDER(hwnd:%p, dwFlags:0x%08lX, xBorder:%d, yBorder:%d)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, dwFlags, xBorder, yBorder);
+        return 0;
+    }
+#endif
+
+static __inline COLORREF MSGDUMP_API
+MD_TreeView_OnSetInsertMarkColor(HWND hwnd, COLORREF clr)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_SETINSERTMARKCOLOR(hwnd:%p, clr:0x%08lX)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, clr);
+    return 0;
+}
+
+static __inline COLORREF MSGDUMP_API
+MD_TreeView_OnGetInsertMarkColor(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETINSERTMARKCOLOR(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline UINT MSGDUMP_API
+MD_TreeView_OnGetItemState(HWND hwnd, HTREEITEM hti, UINT mask)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETITEMSTATE(hwnd:%p, hti:%p, mask:%u)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)hti, mask);
+    return 0;
+}
+
+static __inline COLORREF MSGDUMP_API
+MD_TreeView_OnSetLineColor(HWND hwnd, COLORREF clr)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_SETLINECOLOR(hwnd:%p, clr:0x%08lX)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, clr);
+    return 0;
+}
+
+static __inline COLORREF MSGDUMP_API
+MD_TreeView_OnGetLineColor(HWND hwnd)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETLINECOLOR(hwnd:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd);
+    return 0;
+}
+
+static __inline HTREEITEM MSGDUMP_API
+MD_TreeView_OnMapAccIDToHTREEITEM(HWND hwnd, UINT id)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_MAPACCIDTOHTREEITEM(hwnd:%p, id:%u)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, id);
+    return NULL;
+}
+
+static __inline UINT MSGDUMP_API
+MD_TreeView_OnMapHTREEITEMToAccID(HWND hwnd, HTREEITEM htreeitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_MAPHTREEITEMTOACCID(hwnd:%p, htreeitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)htreeitem);
+    return 0;
+}
+
+#if NTDDI_VERSION >= 0x06000000
+    static __inline DWORD MSGDUMP_API
+    MD_TreeView_OnSetExtendedStyle(HWND hwnd, DWORD dw, DWORD mask)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sTVM_SETEXTENDEDSTYLE(hwnd:%p, dw:0x%08lX, mask:0x%08lX)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, dw, mask);
+        return 0;
+    }
+
+    static __inline DWORD MSGDUMP_API
+    MD_TreeView_OnGetExtendedStyle(HWND hwnd)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sTVM_GETEXTENDEDSTYLE(hwnd:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd);
+        return 0;
+    }
+#endif
+
+static __inline HTREEITEM MSGDUMP_API
+MD_TreeView_OnInsertItemW(HWND hwnd, LPTV_INSERTSTRUCTW lpis)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_INSERTITEMW(hwnd:%p, lpis:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)lpis);
+    return NULL;
+}
+
+#if NTDDI_VERSION >= 0x06000000
+    static __inline BOOL MSGDUMP_API
+    MD_TreeView_OnSetHot(HWND hwnd, HTREEITEM hitem)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sTVM_SETHOT(hwnd:%p, hitem:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (void *)hitem);
+        return FALSE;
+    }
+
+    static __inline BOOL MSGDUMP_API
+    MD_TreeView_OnSetAutoScrollInfo(HWND hwnd, UINT uPixPerSec, UINT uUpdateTime)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sTVM_SETAUTOSCROLLINFO(hwnd:%p, uPixPerSec:%u, uUpdateTime:%u)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, uPixPerSec, uUpdateTime);
+        return FALSE;
+    }
+#endif
+
+static __inline BOOL MSGDUMP_API
+MD_TreeView_OnGetItemW(HWND hwnd, TV_ITEMW *pitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETITEMW(hwnd:%p, pitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)pitem);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_TreeView_OnSetItemW(HWND hwnd, const TV_ITEMW *pitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_SETITEMW(hwnd:%p, pitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (const void *)pitem);
+    return FALSE;
+}
+
+static __inline BOOL MSGDUMP_API
+MD_TreeView_OnGetISearchStringW(HWND hwnd, LPWSTR lpsz)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_GETISEARCHSTRINGW(hwnd:%p, lpsz:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)lpsz);
+    return FALSE;
+}
+
+static __inline HWND MSGDUMP_API
+MD_TreeView_OnEditLabelW(HWND hwnd, HTREEITEM hitem)
+{
+    MSGDUMP_TPRINTF(TEXT("%sTVM_EDITLABELW(hwnd:%p, hitem:%p)\n"),
+                    MSGDUMP_PREFIX, (void *)hwnd, (void *)hitem);
+    return NULL;
+}
+
+#if NTDDI_VERSION >= 0x06000000
+    static __inline DWORD MSGDUMP_API
+    MD_TreeView_OnGetSelectedCount(HWND hwnd)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sTVM_GETSELECTEDCOUNT(hwnd:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd);
+        return 0;
+    }
+
+    static __inline DWORD MSGDUMP_API
+    MD_TreeView_OnShowInfoTip(HWND hwnd, HTREEITEM hitem)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sTVM_SHOWINFOTIP(hwnd:%p, hitem:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (void *)hitem);
+        return 0;
+    }
+
+    static __inline LRESULT MSGDUMP_API
+    MD_TreeView_OnGetItemPartRect(HWND hwnd, WPARAM wParam, LPARAM lParam)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sTVM_GETITEMPARTRECT(hwnd:%p, wParam:%p, lParam:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (void *)wParam, (void *)lParam);
+        return 0;
+    }
+#endif
+
 static __inline LRESULT MSGDUMP_API
 MD_msgdump(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-    TCHAR szClass[32];
+    TCHAR szClass[24], sz[2];
     szClass[0] = 0;
     GetClassName(hwnd, szClass, ARRAYSIZE(szClass));
-    if (lstrcmpi(szClass, TEXT("EDIT")) == 0)
+    sz[0] = szClass[0];
+    sz[1] = 0;
+    CharUpper(sz);
+    if (sz[0] == TEXT('E') && lstrcmpi(szClass, TEXT("EDIT")) == 0)
     {
         switch (uMsg)
         {
@@ -2680,7 +4232,7 @@ MD_msgdump(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
             HANDLE_MSG(hwnd, EM_GETIMESTATUS, MD_Edit_OnGetIMEStatus);
         }
     }
-    else if (lstrcmpi(szClass, TEXT("STATIC")) == 0)
+    else if (sz[0] == TEXT('S') && lstrcmpi(szClass, TEXT("STATIC")) == 0)
     {
         switch (uMsg)
         {
@@ -2690,7 +4242,7 @@ MD_msgdump(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
             HANDLE_MSG(hwnd, STM_GETIMAGE, MD_Static_OnGetImage);
         }
     }
-    else if (lstrcmpi(szClass, TEXT("LISTBOX")) == 0)
+    else if (sz[0] == TEXT('L') && lstrcmpi(szClass, TEXT("LISTBOX")) == 0)
     {
         switch (uMsg)
         {
@@ -2736,7 +4288,7 @@ MD_msgdump(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
             HANDLE_MSG(hwnd, LB_ITEMFROMPOINT, MD_ListBox_OnItemFromPoint);
         }
     }
-    else if (lstrcmpi(szClass, TEXT("COMBOBOX")) == 0)
+    else if (sz[0] == TEXT('C') && lstrcmpi(szClass, TEXT("COMBOBOX")) == 0)
     {
         switch (uMsg)
         {
@@ -2776,7 +4328,7 @@ MD_msgdump(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
             HANDLE_MSG(hwnd, CB_INITSTORAGE, MD_ComboBox_OnInitStorage);
         }
     }
-    else if (lstrcmpi(szClass, TEXT("SCROLLBAR")) == 0)
+    else if (sz[0] == TEXT('S') && lstrcmpi(szClass, TEXT("SCROLLBAR")) == 0)
     {
         switch (uMsg)
         {
@@ -2791,6 +4343,227 @@ MD_msgdump(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
             HANDLE_MSG(hwnd, SBM_GETSCROLLBARINFO, MD_ScrollBar_OnGetScrollBarInfo);
         }
     }
+    else if (sz[0] == TEXT('S') && lstrcmpi(szClass, WC_LISTVIEW) == 0)
+    {
+        switch (uMsg)
+        {
+            HANDLE_MSG(hwnd, LVM_GETBKCOLOR, MD_ListView_OnGetBkColor);
+            HANDLE_MSG(hwnd, LVM_SETBKCOLOR, MD_ListView_OnSetBkColor);
+            HANDLE_MSG(hwnd, LVM_GETIMAGELIST, MD_ListView_OnGetImageList);
+            HANDLE_MSG(hwnd, LVM_SETIMAGELIST, MD_ListView_OnSetImageList);
+            HANDLE_MSG(hwnd, LVM_GETITEMCOUNT, MD_ListView_OnGetItemCount);
+            HANDLE_MSG(hwnd, LVM_GETITEMA, MD_ListView_OnGetItemA);
+            HANDLE_MSG(hwnd, LVM_SETITEMA, MD_ListView_OnSetItemA);
+            HANDLE_MSG(hwnd, LVM_INSERTITEMA, MD_ListView_OnInsertItemA);
+            HANDLE_MSG(hwnd, LVM_DELETEITEM, MD_ListView_OnDeleteItem);
+            HANDLE_MSG(hwnd, LVM_DELETEALLITEMS, MD_ListView_OnDeleteAllItems);
+            HANDLE_MSG(hwnd, LVM_GETCALLBACKMASK, MD_ListView_OnGetCallbackMask);
+            HANDLE_MSG(hwnd, LVM_SETCALLBACKMASK, MD_ListView_OnSetCallbackMask);
+            HANDLE_MSG(hwnd, LVM_GETNEXTITEM, MD_ListView_OnGetNextItem);
+            HANDLE_MSG(hwnd, LVM_FINDITEMA, MD_ListView_OnFindItemA);
+            HANDLE_MSG(hwnd, LVM_GETITEMRECT, MD_ListView_OnGetItemRect);
+            HANDLE_MSG(hwnd, LVM_SETITEMPOSITION, MD_ListView_OnSetItemPosition);
+            HANDLE_MSG(hwnd, LVM_GETITEMPOSITION, MD_ListView_OnGetItemPosition);
+            HANDLE_MSG(hwnd, LVM_GETSTRINGWIDTHA, MD_ListView_OnGetStringWidthA);
+            HANDLE_MSG(hwnd, LVM_HITTEST, MD_ListView_OnHitTest);
+            HANDLE_MSG(hwnd, LVM_ENSUREVISIBLE, MD_ListView_OnEnsureVisible);
+            HANDLE_MSG(hwnd, LVM_SCROLL, MD_ListView_OnScroll);
+            HANDLE_MSG(hwnd, LVM_REDRAWITEMS, MD_ListView_OnRedrawItems);
+            HANDLE_MSG(hwnd, LVM_ARRANGE, MD_ListView_OnArrange);
+            HANDLE_MSG(hwnd, LVM_EDITLABELA, MD_ListView_OnEditLabelA);
+            HANDLE_MSG(hwnd, LVM_GETEDITCONTROL, MD_ListView_OnGetEditControl);
+            HANDLE_MSG(hwnd, LVM_GETCOLUMNA, MD_ListView_OnGetColumnA);
+            HANDLE_MSG(hwnd, LVM_SETCOLUMNA, MD_ListView_OnSetColumnA);
+            HANDLE_MSG(hwnd, LVM_INSERTCOLUMNA, MD_ListView_OnInsertColumnA);
+            HANDLE_MSG(hwnd, LVM_DELETECOLUMN, MD_ListView_OnDeleteColumn);
+            HANDLE_MSG(hwnd, LVM_GETCOLUMNWIDTH, MD_ListView_OnGetColumnWidth);
+            HANDLE_MSG(hwnd, LVM_SETCOLUMNWIDTH, MD_ListView_OnSetColumnWidth);
+            HANDLE_MSG(hwnd, LVM_GETHEADER, MD_ListView_OnGetHeader);
+            HANDLE_MSG(hwnd, LVM_CREATEDRAGIMAGE, MD_ListView_OnCreateDragImage);
+            HANDLE_MSG(hwnd, LVM_GETVIEWRECT, MD_ListView_OnGetViewRect);
+            HANDLE_MSG(hwnd, LVM_GETTEXTCOLOR, MD_ListView_OnGetTextColor);
+            HANDLE_MSG(hwnd, LVM_SETTEXTCOLOR, MD_ListView_OnSetTextColor);
+            HANDLE_MSG(hwnd, LVM_GETTEXTBKCOLOR, MD_ListView_OnGetTextBkColor);
+            HANDLE_MSG(hwnd, LVM_SETTEXTBKCOLOR, MD_ListView_OnSetTextBkColor);
+            HANDLE_MSG(hwnd, LVM_GETTOPINDEX, MD_ListView_OnGetTopIndex);
+            HANDLE_MSG(hwnd, LVM_GETCOUNTPERPAGE, MD_ListView_OnGetCountPerPage);
+            HANDLE_MSG(hwnd, LVM_GETORIGIN, MD_ListView_OnGetOrigin);
+            HANDLE_MSG(hwnd, LVM_UPDATE, MD_ListView_OnUpdate);
+            HANDLE_MSG(hwnd, LVM_SETITEMSTATE, MD_ListView_OnSetItemState);
+            HANDLE_MSG(hwnd, LVM_GETITEMSTATE, MD_ListView_OnGetItemState);
+            HANDLE_MSG(hwnd, LVM_GETITEMTEXTA, MD_ListView_OnGetItemTextA);
+            HANDLE_MSG(hwnd, LVM_SETITEMTEXTA, MD_ListView_OnSetItemTextA);
+            HANDLE_MSG(hwnd, LVM_SETITEMCOUNT, MD_ListView_OnSetItemCount);
+            HANDLE_MSG(hwnd, LVM_SORTITEMS, MD_ListView_OnSortItems);
+            HANDLE_MSG(hwnd, LVM_SETITEMPOSITION32, MD_ListView_OnSetItemPosition32);
+            HANDLE_MSG(hwnd, LVM_GETSELECTEDCOUNT, MD_ListView_OnGetSelectedCount);
+            HANDLE_MSG(hwnd, LVM_GETITEMSPACING, MD_ListView_OnGetItemSpacing);
+            HANDLE_MSG(hwnd, LVM_GETISEARCHSTRINGA, MD_ListView_OnGetISearchStringA);
+            HANDLE_MSG(hwnd, LVM_SETICONSPACING, MD_ListView_OnSetIconSpacing);
+            HANDLE_MSG(hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, MD_ListView_OnSetExtendedListViewStyle);
+            HANDLE_MSG(hwnd, LVM_GETEXTENDEDLISTVIEWSTYLE, MD_ListView_OnGetExtendedListViewStyle);
+            HANDLE_MSG(hwnd, LVM_GETSUBITEMRECT, MD_ListView_OnGetSubItemRect);
+            HANDLE_MSG(hwnd, LVM_SUBITEMHITTEST, MD_ListView_OnSubItemHitTest);
+            HANDLE_MSG(hwnd, LVM_SETCOLUMNORDERARRAY, MD_ListView_OnSetColumnOrderArray);
+            HANDLE_MSG(hwnd, LVM_GETCOLUMNORDERARRAY, MD_ListView_OnGetColumnOrderArray);
+            HANDLE_MSG(hwnd, LVM_SETHOTITEM, MD_ListView_OnSetHotItem);
+            HANDLE_MSG(hwnd, LVM_GETHOTITEM, MD_ListView_OnGetHotItem);
+            HANDLE_MSG(hwnd, LVM_SETHOTCURSOR, MD_ListView_OnSetHotCursor);
+            HANDLE_MSG(hwnd, LVM_GETHOTCURSOR, MD_ListView_OnGetHotCursor);
+            HANDLE_MSG(hwnd, LVM_APPROXIMATEVIEWRECT, MD_ListView_OnApproximateViewRect);
+            HANDLE_MSG(hwnd, LVM_SETWORKAREAS, MD_ListView_OnSetWorkAreas);
+            HANDLE_MSG(hwnd, LVM_GETSELECTIONMARK, MD_ListView_OnGetSelectionMark);
+            HANDLE_MSG(hwnd, LVM_SETSELECTIONMARK, MD_ListView_OnSetSelectionMark);
+            HANDLE_MSG(hwnd, LVM_SETBKIMAGEA, MD_ListView_OnSetBkImageA);
+            HANDLE_MSG(hwnd, LVM_GETBKIMAGEA, MD_ListView_OnGetBkImageA);
+            HANDLE_MSG(hwnd, LVM_GETWORKAREAS, MD_ListView_OnGetWorkAreas);
+            HANDLE_MSG(hwnd, LVM_SETHOVERTIME, MD_ListView_OnSetHoverTime);
+            HANDLE_MSG(hwnd, LVM_GETHOVERTIME, MD_ListView_OnGetHoverTime);
+            HANDLE_MSG(hwnd, LVM_GETNUMBEROFWORKAREAS, MD_ListView_OnGetNumberOfWorkAreas);
+            HANDLE_MSG(hwnd, LVM_SETTOOLTIPS, MD_ListView_OnSetToolTips);
+            HANDLE_MSG(hwnd, LVM_GETITEMW, MD_ListView_OnGetItemW);
+            HANDLE_MSG(hwnd, LVM_SETITEMW, MD_ListView_OnSetItemW);
+            HANDLE_MSG(hwnd, LVM_INSERTITEMW, MD_ListView_OnInsertItemW);
+            HANDLE_MSG(hwnd, LVM_GETTOOLTIPS, MD_ListView_OnGetToolTips);
+            HANDLE_MSG(hwnd, LVM_SORTITEMSEX, MD_ListView_OnSortItemsEx);
+            HANDLE_MSG(hwnd, LVM_FINDITEMW, MD_ListView_OnFindItemW);
+            HANDLE_MSG(hwnd, LVM_GETSTRINGWIDTHW, MD_ListView_OnGetStringWidthW);
+#if NTDDI_VERSION >= 0x06000000
+            HANDLE_MSG(hwnd, LVM_GETGROUPSTATE, MD_ListView_OnGetGroupState);
+            HANDLE_MSG(hwnd, LVM_GETFOCUSEDGROUP, MD_ListView_OnGetFocusedGroup);
+#endif
+            HANDLE_MSG(hwnd, LVM_GETCOLUMNW, MD_ListView_OnGetColumnW);
+            HANDLE_MSG(hwnd, LVM_SETCOLUMNW, MD_ListView_OnSetColumnW);
+            HANDLE_MSG(hwnd, LVM_INSERTCOLUMNW, MD_ListView_OnInsertColumnW);
+#if NTDDI_VERSION >= 0x06000000
+            HANDLE_MSG(hwnd, LVM_GETGROUPRECT, MD_ListView_OnGetGroupRect);
+#endif
+            HANDLE_MSG(hwnd, LVM_GETITEMTEXTW, MD_ListView_OnGetItemTextW);
+            HANDLE_MSG(hwnd, LVM_SETITEMTEXTW, MD_ListView_OnSetItemTextW);
+            HANDLE_MSG(hwnd, LVM_GETISEARCHSTRINGW, MD_ListView_OnGetISearchStringW);
+            HANDLE_MSG(hwnd, LVM_EDITLABELW, MD_ListView_OnEditLabelW);
+            HANDLE_MSG(hwnd, LVM_SETBKIMAGEW, MD_ListView_OnSetBkImageW);
+            HANDLE_MSG(hwnd, LVM_GETBKIMAGEW, MD_ListView_OnGetBkImageW);
+            HANDLE_MSG(hwnd, LVM_SETSELECTEDCOLUMN, MD_ListView_OnSetSelectedColumn);
+            HANDLE_MSG(hwnd, LVM_SETTILEWIDTH, MD_ListView_OnSetTileWidth);
+            HANDLE_MSG(hwnd, LVM_SETVIEW, MD_ListView_OnSetView);
+            HANDLE_MSG(hwnd, LVM_GETVIEW, MD_ListView_OnGetView);
+#if NTDDI_VERSION >= 0x06000000
+            HANDLE_MSG(hwnd, LVM_INSERTGROUP, MD_ListView_OnInsertGroup);
+            HANDLE_MSG(hwnd, LVM_SETGROUPINFO, MD_ListView_OnSetGroupInfo);
+            HANDLE_MSG(hwnd, LVM_GETGROUPINFO, MD_ListView_OnGetGroupInfo);
+            HANDLE_MSG(hwnd, LVM_REMOVEGROUP, MD_ListView_OnRemoveGroup);
+            HANDLE_MSG(hwnd, LVM_MOVEGROUP, MD_ListView_OnMoveGroup);
+            HANDLE_MSG(hwnd, LVM_GETGROUPCOUNT, MD_ListView_OnGetGroupCount);
+            HANDLE_MSG(hwnd, LVM_GETGROUPINFOBYINDEX, MD_ListView_OnGetGroupInfoByIndex);
+            HANDLE_MSG(hwnd, LVM_MOVEITEMTOGROUP, MD_ListView_OnMoveItemToGroup);
+            HANDLE_MSG(hwnd, LVM_SETGROUPMETRICS, MD_ListView_OnSetGroupMetrics);
+            HANDLE_MSG(hwnd, LVM_GETGROUPMETRICS, MD_ListView_OnGetGroupMetrics);
+            HANDLE_MSG(hwnd, LVM_ENABLEGROUPVIEW, MD_ListView_OnEnableGroupView);
+            HANDLE_MSG(hwnd, LVM_SORTGROUPS, MD_ListView_OnSortGroups);
+            HANDLE_MSG(hwnd, LVM_INSERTGROUPSORTED, MD_ListView_OnInsertGroupSorted);
+            HANDLE_MSG(hwnd, LVM_REMOVEALLGROUPS, MD_ListView_OnRemoveAllGroups);
+            HANDLE_MSG(hwnd, LVM_HASGROUP, MD_ListView_OnHasGroup);
+#endif
+            HANDLE_MSG(hwnd, LVM_SETTILEVIEWINFO, MD_ListView_OnSetTileViewInfo);
+            HANDLE_MSG(hwnd, LVM_GETTILEVIEWINFO, MD_ListView_OnGetTileViewInfo);
+            HANDLE_MSG(hwnd, LVM_SETTILEINFO, MD_ListView_OnSetTileInfo);
+            HANDLE_MSG(hwnd, LVM_GETTILEINFO, MD_ListView_OnGetTileInfo);
+            HANDLE_MSG(hwnd, LVM_SETINSERTMARK, MD_ListView_OnSetInsertMark);
+            HANDLE_MSG(hwnd, LVM_GETINSERTMARK, MD_ListView_OnGetInsertMark);
+            HANDLE_MSG(hwnd, LVM_INSERTMARKHITTEST, MD_ListView_OnInsertMarkHitTest);
+            HANDLE_MSG(hwnd, LVM_GETINSERTMARKRECT, MD_ListView_OnGetInsertMarkRect);
+            HANDLE_MSG(hwnd, LVM_SETINSERTMARKCOLOR, MD_ListView_OnSetInsertMarkColor);
+            HANDLE_MSG(hwnd, LVM_GETINSERTMARKCOLOR, MD_ListView_OnGetInsertMarkColor);
+            HANDLE_MSG(hwnd, LVM_SETINFOTIP, MD_ListView_OnSetInfoTip);
+            HANDLE_MSG(hwnd, LVM_GETSELECTEDCOLUMN, MD_ListView_OnGetSelectedColumn);
+            HANDLE_MSG(hwnd, LVM_ISGROUPVIEWENABLED, MD_ListView_OnIsGroupViewEnabled);
+            HANDLE_MSG(hwnd, LVM_GETOUTLINECOLOR, MD_ListView_OnGetOutlineColor);
+            HANDLE_MSG(hwnd, LVM_SETOUTLINECOLOR, MD_ListView_OnSetOutlineColor);
+            HANDLE_MSG(hwnd, LVM_CANCELEDITLABEL, MD_ListView_OnCancelEditLabel);
+            HANDLE_MSG(hwnd, LVM_MAPINDEXTOID, MD_ListView_OnMapIndexToID);
+            HANDLE_MSG(hwnd, LVM_MAPIDTOINDEX, MD_ListView_OnMapIDToIndex);
+            HANDLE_MSG(hwnd, LVM_ISITEMVISIBLE, MD_ListView_OnIsItemVisible);
+#if NTDDI_VERSION >= 0x06000000
+            HANDLE_MSG(hwnd, LVM_GETEMPTYTEXT, MD_ListView_OnGetEmptyText);
+            HANDLE_MSG(hwnd, LVM_GETFOOTERRECT, MD_ListView_OnGetFooterRect);
+            HANDLE_MSG(hwnd, LVM_GETFOOTERINFO, MD_ListView_OnGetFooterInfo);
+            HANDLE_MSG(hwnd, LVM_GETFOOTERITEMRECT, MD_ListView_OnGetFooterItemRect);
+            HANDLE_MSG(hwnd, LVM_GETFOOTERITEM, MD_ListView_OnGetFooterItem);
+            HANDLE_MSG(hwnd, LVM_GETITEMINDEXRECT, MD_ListView_OnGetItemIndexRect);
+            HANDLE_MSG(hwnd, LVM_SETITEMINDEXSTATE, MD_ListView_OnSetItemIndexState);
+            HANDLE_MSG(hwnd, LVM_GETNEXTITEMINDEX, MD_ListView_OnGetNextItemIndex);
+#endif
+        }
+    }
+    else if (sz[0] == TEXT('S') && lstrcmpi(szClass, WC_TREEVIEW) == 0)
+    {
+        switch (uMsg)
+        {
+            HANDLE_MSG(hwnd, TVM_INSERTITEMA, MD_TreeView_OnInsertItemA);
+            HANDLE_MSG(hwnd, TVM_DELETEITEM, MD_TreeView_OnDeleteItem);
+            HANDLE_MSG(hwnd, TVM_EXPAND, MD_TreeView_OnExpand);
+            HANDLE_MSG(hwnd, TVM_GETITEMRECT, MD_TreeView_OnGetItemRect);
+            HANDLE_MSG(hwnd, TVM_GETCOUNT, MD_TreeView_OnGetCount);
+            HANDLE_MSG(hwnd, TVM_GETINDENT, MD_TreeView_OnGetIndent);
+            HANDLE_MSG(hwnd, TVM_SETINDENT, MD_TreeView_OnSetIndent);
+            HANDLE_MSG(hwnd, TVM_GETIMAGELIST, MD_TreeView_OnGetImageList);
+            HANDLE_MSG(hwnd, TVM_SETIMAGELIST, MD_TreeView_OnSetImageList);
+            HANDLE_MSG(hwnd, TVM_GETNEXTITEM, MD_TreeView_OnGetNextItem);
+            HANDLE_MSG(hwnd, TVM_SELECTITEM, MD_TreeView_OnSelectItem);
+            HANDLE_MSG(hwnd, TVM_GETITEMA, MD_TreeView_OnGetItemA);
+            HANDLE_MSG(hwnd, TVM_SETITEMA, MD_TreeView_OnSetItemA);
+            HANDLE_MSG(hwnd, TVM_EDITLABELA, MD_TreeView_OnEditLabelA);
+            HANDLE_MSG(hwnd, TVM_GETEDITCONTROL, MD_TreeView_OnGetEditControl);
+            HANDLE_MSG(hwnd, TVM_GETVISIBLECOUNT, MD_TreeView_OnGetVisibleCount);
+            HANDLE_MSG(hwnd, TVM_HITTEST, MD_TreeView_OnHitTest);
+            HANDLE_MSG(hwnd, TVM_CREATEDRAGIMAGE, MD_TreeView_OnCreateDragImage);
+            HANDLE_MSG(hwnd, TVM_SORTCHILDREN, MD_TreeView_OnSortChildren);
+            HANDLE_MSG(hwnd, TVM_ENSUREVISIBLE, MD_TreeView_OnEnsureVisible);
+            HANDLE_MSG(hwnd, TVM_SORTCHILDRENCB, MD_TreeView_OnSortChildrenCB);
+            HANDLE_MSG(hwnd, TVM_ENDEDITLABELNOW, MD_TreeView_OnEndEditLabelNow);
+            HANDLE_MSG(hwnd, TVM_GETISEARCHSTRINGA, MD_TreeView_OnGetISearchStringA);
+            HANDLE_MSG(hwnd, TVM_SETTOOLTIPS, MD_TreeView_OnSetToolTips);
+            HANDLE_MSG(hwnd, TVM_GETTOOLTIPS, MD_TreeView_OnGetToolTips);
+            HANDLE_MSG(hwnd, TVM_SETINSERTMARK, MD_TreeView_OnSetInsertMark);
+            HANDLE_MSG(hwnd, TVM_SETITEMHEIGHT, MD_TreeView_OnSetItemHeight);
+            HANDLE_MSG(hwnd, TVM_GETITEMHEIGHT, MD_TreeView_OnGetItemHeight);
+            HANDLE_MSG(hwnd, TVM_SETBKCOLOR, MD_TreeView_OnSetBkColor);
+            HANDLE_MSG(hwnd, TVM_SETTEXTCOLOR, MD_TreeView_OnSetTextColor);
+            HANDLE_MSG(hwnd, TVM_GETBKCOLOR, MD_TreeView_OnGetBkColor);
+            HANDLE_MSG(hwnd, TVM_GETTEXTCOLOR, MD_TreeView_OnGetTextColor);
+            HANDLE_MSG(hwnd, TVM_SETSCROLLTIME, MD_TreeView_OnSetScrollTime);
+            HANDLE_MSG(hwnd, TVM_GETSCROLLTIME, MD_TreeView_OnGetScrollTime);
+#if NTDDI_VERSION >= 0x06000000
+            HANDLE_MSG(hwnd, TVM_SETBORDER, MD_TreeView_OnSetBorder);
+#endif
+            HANDLE_MSG(hwnd, TVM_SETINSERTMARKCOLOR, MD_TreeView_OnSetInsertMarkColor);
+            HANDLE_MSG(hwnd, TVM_GETINSERTMARKCOLOR, MD_TreeView_OnGetInsertMarkColor);
+            HANDLE_MSG(hwnd, TVM_GETITEMSTATE, MD_TreeView_OnGetItemState);
+            HANDLE_MSG(hwnd, TVM_SETLINECOLOR, MD_TreeView_OnSetLineColor);
+            HANDLE_MSG(hwnd, TVM_GETLINECOLOR, MD_TreeView_OnGetLineColor);
+            HANDLE_MSG(hwnd, TVM_MAPACCIDTOHTREEITEM, MD_TreeView_OnMapAccIDToHTREEITEM);
+            HANDLE_MSG(hwnd, TVM_MAPHTREEITEMTOACCID, MD_TreeView_OnMapHTREEITEMToAccID);
+#if NTDDI_VERSION >= 0x06000000
+            HANDLE_MSG(hwnd, TVM_SETEXTENDEDSTYLE, MD_TreeView_OnSetExtendedStyle);
+            HANDLE_MSG(hwnd, TVM_GETEXTENDEDSTYLE, MD_TreeView_OnGetExtendedStyle);
+#endif
+            HANDLE_MSG(hwnd, TVM_INSERTITEMW, MD_TreeView_OnInsertItemW);
+#if NTDDI_VERSION >= 0x06000000
+            HANDLE_MSG(hwnd, TVM_SETHOT, MD_TreeView_OnSetHot);
+            HANDLE_MSG(hwnd, TVM_SETAUTOSCROLLINFO, MD_TreeView_OnSetAutoScrollInfo);
+#endif
+            HANDLE_MSG(hwnd, TVM_GETITEMW, MD_TreeView_OnGetItemW);
+            HANDLE_MSG(hwnd, TVM_SETITEMW, MD_TreeView_OnSetItemW);
+            HANDLE_MSG(hwnd, TVM_GETISEARCHSTRINGW, MD_TreeView_OnGetISearchStringW);
+            HANDLE_MSG(hwnd, TVM_EDITLABELW, MD_TreeView_OnEditLabelW);
+#if NTDDI_VERSION >= 0x06000000
+            HANDLE_MSG(hwnd, TVM_GETSELECTEDCOUNT, MD_TreeView_OnGetSelectedCount);
+            HANDLE_MSG(hwnd, TVM_SHOWINFOTIP, MD_TreeView_OnShowInfoTip);
+            HANDLE_MSG(hwnd, TVM_GETITEMPARTRECT, MD_TreeView_OnGetItemPartRect);
+#endif
+        }
+    }
     switch (uMsg)
     {
         HANDLE_MSG(hwnd, WM_NULL, MD_OnNull);
@@ -3066,10 +4839,13 @@ MD_msgresult(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT lResult
 {
 #define DEFINE_RESULT(WM_) case WM_: MSGDUMP_TPRINTF(TEXT("%s") TEXT(#WM_) TEXT(": hwnd:%p, lResult:%p\n"), \
                                                      MSGDUMP_PREFIX, (void *)hwnd, lResult); break
-    TCHAR szClass[32];
+    TCHAR szClass[24], sz[2];
     szClass[0] = 0;
     GetClassName(hwnd, szClass, ARRAYSIZE(szClass));
-    if (lstrcmpi(szClass, TEXT("EDIT")) == 0)
+    sz[0] = szClass[0];
+    sz[1] = 0;
+    CharUpper(sz);
+    if (sz[0] == TEXT('E') && lstrcmpi(szClass, TEXT("EDIT")) == 0)
     {
         switch (uMsg)
         {
@@ -3113,7 +4889,7 @@ MD_msgresult(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT lResult
             DEFINE_RESULT(EM_GETIMESTATUS);
         }
     }
-    else if (lstrcmpi(szClass, TEXT("STATIC")) == 0)
+    else if (sz[0] == TEXT('S') && lstrcmpi(szClass, TEXT("STATIC")) == 0)
     {
         switch (uMsg)
         {
@@ -3123,7 +4899,7 @@ MD_msgresult(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT lResult
             DEFINE_RESULT(STM_GETIMAGE);
         }
     }
-    else if (lstrcmpi(szClass, TEXT("LISTBOX")) == 0)
+    else if (sz[0] == TEXT('L') && lstrcmpi(szClass, TEXT("LISTBOX")) == 0)
     {
         switch (uMsg)
         {
@@ -3169,7 +4945,7 @@ MD_msgresult(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT lResult
             DEFINE_RESULT(LB_ITEMFROMPOINT);
         }
     }
-    else if (lstrcmpi(szClass, TEXT("COMBOBOX")) == 0)
+    else if (sz[0] == TEXT('C') && lstrcmpi(szClass, TEXT("COMBOBOX")) == 0)
     {
         switch (uMsg)
         {
@@ -3209,7 +4985,7 @@ MD_msgresult(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT lResult
             DEFINE_RESULT(CB_INITSTORAGE);
         }
     }
-    else if (lstrcmpi(szClass, TEXT("SCROLLBAR")) == 0)
+    else if (sz[0] == TEXT('S') && lstrcmpi(szClass, TEXT("SCROLLBAR")) == 0)
     {
         switch (uMsg)
         {
@@ -3224,6 +5000,227 @@ MD_msgresult(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT lResult
             DEFINE_RESULT(SBM_GETSCROLLBARINFO);
         }
     }
+    else if (sz[0] == TEXT('S') && lstrcmpi(szClass, WC_LISTVIEW) == 0)
+    {
+        switch (uMsg)
+        {
+            DEFINE_RESULT(LVM_GETBKCOLOR);
+            DEFINE_RESULT(LVM_SETBKCOLOR);
+            DEFINE_RESULT(LVM_GETIMAGELIST);
+            DEFINE_RESULT(LVM_SETIMAGELIST);
+            DEFINE_RESULT(LVM_GETITEMCOUNT);
+            DEFINE_RESULT(LVM_GETITEMA);
+            DEFINE_RESULT(LVM_SETITEMA);
+            DEFINE_RESULT(LVM_INSERTITEMA);
+            DEFINE_RESULT(LVM_DELETEITEM);
+            DEFINE_RESULT(LVM_DELETEALLITEMS);
+            DEFINE_RESULT(LVM_GETCALLBACKMASK);
+            DEFINE_RESULT(LVM_SETCALLBACKMASK);
+            DEFINE_RESULT(LVM_GETNEXTITEM);
+            DEFINE_RESULT(LVM_FINDITEMA);
+            DEFINE_RESULT(LVM_GETITEMRECT);
+            DEFINE_RESULT(LVM_SETITEMPOSITION);
+            DEFINE_RESULT(LVM_GETITEMPOSITION);
+            DEFINE_RESULT(LVM_GETSTRINGWIDTHA);
+            DEFINE_RESULT(LVM_HITTEST);
+            DEFINE_RESULT(LVM_ENSUREVISIBLE);
+            DEFINE_RESULT(LVM_SCROLL);
+            DEFINE_RESULT(LVM_REDRAWITEMS);
+            DEFINE_RESULT(LVM_ARRANGE);
+            DEFINE_RESULT(LVM_EDITLABELA);
+            DEFINE_RESULT(LVM_GETEDITCONTROL);
+            DEFINE_RESULT(LVM_GETCOLUMNA);
+            DEFINE_RESULT(LVM_SETCOLUMNA);
+            DEFINE_RESULT(LVM_INSERTCOLUMNA);
+            DEFINE_RESULT(LVM_DELETECOLUMN);
+            DEFINE_RESULT(LVM_GETCOLUMNWIDTH);
+            DEFINE_RESULT(LVM_SETCOLUMNWIDTH);
+            DEFINE_RESULT(LVM_GETHEADER);
+            DEFINE_RESULT(LVM_CREATEDRAGIMAGE);
+            DEFINE_RESULT(LVM_GETVIEWRECT);
+            DEFINE_RESULT(LVM_GETTEXTCOLOR);
+            DEFINE_RESULT(LVM_SETTEXTCOLOR);
+            DEFINE_RESULT(LVM_GETTEXTBKCOLOR);
+            DEFINE_RESULT(LVM_SETTEXTBKCOLOR);
+            DEFINE_RESULT(LVM_GETTOPINDEX);
+            DEFINE_RESULT(LVM_GETCOUNTPERPAGE);
+            DEFINE_RESULT(LVM_GETORIGIN);
+            DEFINE_RESULT(LVM_UPDATE);
+            DEFINE_RESULT(LVM_SETITEMSTATE);
+            DEFINE_RESULT(LVM_GETITEMSTATE);
+            DEFINE_RESULT(LVM_GETITEMTEXTA);
+            DEFINE_RESULT(LVM_SETITEMTEXTA);
+            DEFINE_RESULT(LVM_SETITEMCOUNT);
+            DEFINE_RESULT(LVM_SORTITEMS);
+            DEFINE_RESULT(LVM_SETITEMPOSITION32);
+            DEFINE_RESULT(LVM_GETSELECTEDCOUNT);
+            DEFINE_RESULT(LVM_GETITEMSPACING);
+            DEFINE_RESULT(LVM_GETISEARCHSTRINGA);
+            DEFINE_RESULT(LVM_SETICONSPACING);
+            DEFINE_RESULT(LVM_SETEXTENDEDLISTVIEWSTYLE);
+            DEFINE_RESULT(LVM_GETEXTENDEDLISTVIEWSTYLE);
+            DEFINE_RESULT(LVM_GETSUBITEMRECT);
+            DEFINE_RESULT(LVM_SUBITEMHITTEST);
+            DEFINE_RESULT(LVM_SETCOLUMNORDERARRAY);
+            DEFINE_RESULT(LVM_GETCOLUMNORDERARRAY);
+            DEFINE_RESULT(LVM_SETHOTITEM);
+            DEFINE_RESULT(LVM_GETHOTITEM);
+            DEFINE_RESULT(LVM_SETHOTCURSOR);
+            DEFINE_RESULT(LVM_GETHOTCURSOR);
+            DEFINE_RESULT(LVM_APPROXIMATEVIEWRECT);
+            DEFINE_RESULT(LVM_SETWORKAREAS);
+            DEFINE_RESULT(LVM_GETSELECTIONMARK);
+            DEFINE_RESULT(LVM_SETSELECTIONMARK);
+            DEFINE_RESULT(LVM_SETBKIMAGEA);
+            DEFINE_RESULT(LVM_GETBKIMAGEA);
+            DEFINE_RESULT(LVM_GETWORKAREAS);
+            DEFINE_RESULT(LVM_SETHOVERTIME);
+            DEFINE_RESULT(LVM_GETHOVERTIME);
+            DEFINE_RESULT(LVM_GETNUMBEROFWORKAREAS);
+            DEFINE_RESULT(LVM_SETTOOLTIPS);
+            DEFINE_RESULT(LVM_GETITEMW);
+            DEFINE_RESULT(LVM_SETITEMW);
+            DEFINE_RESULT(LVM_INSERTITEMW);
+            DEFINE_RESULT(LVM_GETTOOLTIPS);
+            DEFINE_RESULT(LVM_SORTITEMSEX);
+            DEFINE_RESULT(LVM_FINDITEMW);
+            DEFINE_RESULT(LVM_GETSTRINGWIDTHW);
+#if NTDDI_VERSION >= 0x06000000
+            DEFINE_RESULT(LVM_GETGROUPSTATE);
+            DEFINE_RESULT(LVM_GETFOCUSEDGROUP);
+#endif
+            DEFINE_RESULT(LVM_GETCOLUMNW);
+            DEFINE_RESULT(LVM_SETCOLUMNW);
+            DEFINE_RESULT(LVM_INSERTCOLUMNW);
+#if NTDDI_VERSION >= 0x06000000
+            DEFINE_RESULT(LVM_GETGROUPRECT);
+#endif
+            DEFINE_RESULT(LVM_GETITEMTEXTW);
+            DEFINE_RESULT(LVM_SETITEMTEXTW);
+            DEFINE_RESULT(LVM_GETISEARCHSTRINGW);
+            DEFINE_RESULT(LVM_EDITLABELW);
+            DEFINE_RESULT(LVM_SETBKIMAGEW);
+            DEFINE_RESULT(LVM_GETBKIMAGEW);
+            DEFINE_RESULT(LVM_SETSELECTEDCOLUMN);
+            DEFINE_RESULT(LVM_SETTILEWIDTH);
+            DEFINE_RESULT(LVM_SETVIEW);
+            DEFINE_RESULT(LVM_GETVIEW);
+#if NTDDI_VERSION >= 0x06000000
+            DEFINE_RESULT(LVM_INSERTGROUP);
+            DEFINE_RESULT(LVM_SETGROUPINFO);
+            DEFINE_RESULT(LVM_GETGROUPINFO);
+            DEFINE_RESULT(LVM_REMOVEGROUP);
+            DEFINE_RESULT(LVM_MOVEGROUP);
+            DEFINE_RESULT(LVM_GETGROUPCOUNT);
+            DEFINE_RESULT(LVM_GETGROUPINFOBYINDEX);
+            DEFINE_RESULT(LVM_MOVEITEMTOGROUP);
+            DEFINE_RESULT(LVM_SETGROUPMETRICS);
+            DEFINE_RESULT(LVM_GETGROUPMETRICS);
+            DEFINE_RESULT(LVM_ENABLEGROUPVIEW);
+            DEFINE_RESULT(LVM_SORTGROUPS);
+            DEFINE_RESULT(LVM_INSERTGROUPSORTED);
+            DEFINE_RESULT(LVM_REMOVEALLGROUPS);
+            DEFINE_RESULT(LVM_HASGROUP);
+#endif
+            DEFINE_RESULT(LVM_SETTILEVIEWINFO);
+            DEFINE_RESULT(LVM_GETTILEVIEWINFO);
+            DEFINE_RESULT(LVM_SETTILEINFO);
+            DEFINE_RESULT(LVM_GETTILEINFO);
+            DEFINE_RESULT(LVM_SETINSERTMARK);
+            DEFINE_RESULT(LVM_GETINSERTMARK);
+            DEFINE_RESULT(LVM_INSERTMARKHITTEST);
+            DEFINE_RESULT(LVM_GETINSERTMARKRECT);
+            DEFINE_RESULT(LVM_SETINSERTMARKCOLOR);
+            DEFINE_RESULT(LVM_GETINSERTMARKCOLOR);
+            DEFINE_RESULT(LVM_SETINFOTIP);
+            DEFINE_RESULT(LVM_GETSELECTEDCOLUMN);
+            DEFINE_RESULT(LVM_ISGROUPVIEWENABLED);
+            DEFINE_RESULT(LVM_GETOUTLINECOLOR);
+            DEFINE_RESULT(LVM_SETOUTLINECOLOR);
+            DEFINE_RESULT(LVM_CANCELEDITLABEL);
+            DEFINE_RESULT(LVM_MAPINDEXTOID);
+            DEFINE_RESULT(LVM_MAPIDTOINDEX);
+            DEFINE_RESULT(LVM_ISITEMVISIBLE);
+#if NTDDI_VERSION >= 0x06000000
+            DEFINE_RESULT(LVM_GETEMPTYTEXT);
+            DEFINE_RESULT(LVM_GETFOOTERRECT);
+            DEFINE_RESULT(LVM_GETFOOTERINFO);
+            DEFINE_RESULT(LVM_GETFOOTERITEMRECT);
+            DEFINE_RESULT(LVM_GETFOOTERITEM);
+            DEFINE_RESULT(LVM_GETITEMINDEXRECT);
+            DEFINE_RESULT(LVM_SETITEMINDEXSTATE);
+            DEFINE_RESULT(LVM_GETNEXTITEMINDEX);
+#endif
+        }
+    }
+    else if (sz[0] == TEXT('S') && lstrcmpi(szClass, WC_TREEVIEW) == 0)
+    {
+        switch (uMsg)
+        {
+            DEFINE_RESULT(TVM_INSERTITEMA);
+            DEFINE_RESULT(TVM_DELETEITEM);
+            DEFINE_RESULT(TVM_EXPAND);
+            DEFINE_RESULT(TVM_GETITEMRECT);
+            DEFINE_RESULT(TVM_GETCOUNT);
+            DEFINE_RESULT(TVM_GETINDENT);
+            DEFINE_RESULT(TVM_SETINDENT);
+            DEFINE_RESULT(TVM_GETIMAGELIST);
+            DEFINE_RESULT(TVM_SETIMAGELIST);
+            DEFINE_RESULT(TVM_GETNEXTITEM);
+            DEFINE_RESULT(TVM_SELECTITEM);
+            DEFINE_RESULT(TVM_GETITEMA);
+            DEFINE_RESULT(TVM_SETITEMA);
+            DEFINE_RESULT(TVM_EDITLABELA);
+            DEFINE_RESULT(TVM_GETEDITCONTROL);
+            DEFINE_RESULT(TVM_GETVISIBLECOUNT);
+            DEFINE_RESULT(TVM_HITTEST);
+            DEFINE_RESULT(TVM_CREATEDRAGIMAGE);
+            DEFINE_RESULT(TVM_SORTCHILDREN);
+            DEFINE_RESULT(TVM_ENSUREVISIBLE);
+            DEFINE_RESULT(TVM_SORTCHILDRENCB);
+            DEFINE_RESULT(TVM_ENDEDITLABELNOW);
+            DEFINE_RESULT(TVM_GETISEARCHSTRINGA);
+            DEFINE_RESULT(TVM_SETTOOLTIPS);
+            DEFINE_RESULT(TVM_GETTOOLTIPS);
+            DEFINE_RESULT(TVM_SETINSERTMARK);
+            DEFINE_RESULT(TVM_SETITEMHEIGHT);
+            DEFINE_RESULT(TVM_GETITEMHEIGHT);
+            DEFINE_RESULT(TVM_SETBKCOLOR);
+            DEFINE_RESULT(TVM_SETTEXTCOLOR);
+            DEFINE_RESULT(TVM_GETBKCOLOR);
+            DEFINE_RESULT(TVM_GETTEXTCOLOR);
+            DEFINE_RESULT(TVM_SETSCROLLTIME);
+            DEFINE_RESULT(TVM_GETSCROLLTIME);
+#if NTDDI_VERSION >= 0x06000000
+            DEFINE_RESULT(TVM_SETBORDER);
+#endif
+            DEFINE_RESULT(TVM_SETINSERTMARKCOLOR);
+            DEFINE_RESULT(TVM_GETINSERTMARKCOLOR);
+            DEFINE_RESULT(TVM_GETITEMSTATE);
+            DEFINE_RESULT(TVM_SETLINECOLOR);
+            DEFINE_RESULT(TVM_GETLINECOLOR);
+            DEFINE_RESULT(TVM_MAPACCIDTOHTREEITEM);
+            DEFINE_RESULT(TVM_MAPHTREEITEMTOACCID);
+#if NTDDI_VERSION >= 0x06000000
+            DEFINE_RESULT(TVM_SETEXTENDEDSTYLE);
+            DEFINE_RESULT(TVM_GETEXTENDEDSTYLE);
+#endif
+            DEFINE_RESULT(TVM_INSERTITEMW);
+#if NTDDI_VERSION >= 0x06000000
+            DEFINE_RESULT(TVM_SETHOT);
+            DEFINE_RESULT(TVM_SETAUTOSCROLLINFO);
+#endif
+            DEFINE_RESULT(TVM_GETITEMW);
+            DEFINE_RESULT(TVM_SETITEMW);
+            DEFINE_RESULT(TVM_GETISEARCHSTRINGW);
+            DEFINE_RESULT(TVM_EDITLABELW);
+#if NTDDI_VERSION >= 0x06000000
+            DEFINE_RESULT(TVM_GETSELECTEDCOUNT);
+            DEFINE_RESULT(TVM_SHOWINFOTIP);
+            DEFINE_RESULT(TVM_GETITEMPARTRECT);
+#endif
+        }
+    }
     switch (uMsg)
     {
     DEFINE_RESULT(WM_NULL);
@@ -3251,7 +5248,7 @@ MD_msgresult(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT lResult
     DEFINE_RESULT(WM_SYSCOLORCHANGE);
     DEFINE_RESULT(WM_SHOWWINDOW);
     DEFINE_RESULT(WM_WININICHANGE);
-    //DEFINE_RESULT(WM_SETTINGCHANGE);    // same as WM_WININICHANGE
+    /* DEFINE_RESULT(WM_SETTINGCHANGE); */    /* same as WM_WININICHANGE */
     DEFINE_RESULT(WM_DEVMODECHANGE);
     DEFINE_RESULT(WM_ACTIVATEAPP);
     DEFINE_RESULT(WM_FONTCHANGE);
index beb4a53..7c662c7 100644 (file)
@@ -6,7 +6,7 @@
  */
 
 #ifndef _INC_WINXX
-#define _INC_WINXX      2   /* Version 2 */
+#define _INC_WINXX      6   /* Version 6 */
 
 #pragma once
 
@@ -27,7 +27,7 @@
 #define HANDLE_WM_NULL(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd)), 0L)
 #define FORWARD_WM_NULL(hwnd, fn) \
-    (void)((fn)((hwnd), WM_NULL, 0, 0L), 0L)
+    ((fn)((hwnd), WM_NULL, 0, 0L), 0L)
 #endif
 
 /* INT Cls_OnSetHotKey(HWND hwnd, INT nCode, UINT nOptions) */
@@ -51,7 +51,7 @@
 #define HANDLE_WM_PAINTICON(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd)), 0L)
 #define FORWARD_WM_PAINTICON(hwnd, fn) \
-    (void)((fn)((hwnd), WM_PAINTICON, 0, 0L), 0L)
+    ((fn)((hwnd), WM_PAINTICON, 0, 0L), 0L)
 #endif
 
 /* LRESULT Cls_OnGetObject(HWND hwnd, WPARAM wParam, DWORD dwObjId) */
@@ -67,7 +67,7 @@
 #define HANDLE_WM_CANCELJOURNAL(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd)), 0L)
 #define FORWARD_WM_CANCELJOURNAL(hwnd, fn) \
-    (void)((fn)((hwnd), WM_PAINTICON, 0, 0L), 0L)
+    ((fn)((hwnd), WM_PAINTICON, 0, 0L), 0L)
 #endif
 
 /* void Cls_OnInputLangChangeRequest(HWND hwnd, BOOL bFlag, HKL hKL) */
@@ -75,8 +75,8 @@
 #define HANDLE_WM_INPUTLANGCHANGEREQUEST(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (BOOL)(wParam), (HKL)(lParam)), 0L)
 #define FORWARD_WM_INPUTLANGCHANGEREQUEST(hwnd, bFlag, hKL, fn) \
-    (void)((fn)((hwnd), WM_INPUTLANGCHANGEREQUEST, (WPARAM)(BOOL)(bFlag), \
-           (LPARAM)(HKL)(hKL)), 0L)
+    ((fn)((hwnd), WM_INPUTLANGCHANGEREQUEST, (WPARAM)(BOOL)(bFlag), \
+          (LPARAM)(HKL)(hKL)), 0L)
 #endif
 
 /* void Cls_OnInputLangChange(HWND hwnd, DWORD dwCharSet, HKL hKL) */
@@ -84,8 +84,8 @@
 #define HANDLE_WM_INPUTLANGCHANGE(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (DWORD)(wParam), (HKL)(lParam)), 0L)
 #define FORWARD_WM_INPUTLANGCHANGE(hwnd, dwCharSet, hKL, fn) \
-    (void)((fn)((hwnd), WM_INPUTLANGCHANGE, (WPARAM)(DWORD)(dwCharSet), \
-           (LPARAM)(HKL)(hKL)), 0L)
+    ((fn)((hwnd), WM_INPUTLANGCHANGE, (WPARAM)(DWORD)(dwCharSet), \
+          (LPARAM)(HKL)(hKL)), 0L)
 #endif
 
 /* void Cls_OnTCard(HWND hwnd, UINT idAction, DWORD dwActionData) */
@@ -93,7 +93,7 @@
 #define HANDLE_WM_TCARD(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (UINT)(wParam), (DWORD)(lParam)), 0L)
 #define FORWARD_WM_TCARD(hwnd, idAction, dwActionData, fn) \
-    (void)((fn)((hwnd), WM_TCARD, (DWORD)(wParam), (DWORD)(lParam)), 0L)
+    ((fn)((hwnd), WM_TCARD, (DWORD)(wParam), (DWORD)(lParam)), 0L)
 #endif
 
 /* void Cls_OnHelp(HWND hwnd, LPHELPINFO lpHelpInfo) */
 #define HANDLE_WM_HELP(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (LPHELPINFO)(lParam)), 0L)
 #define FORWARD_WM_HELP(hwnd, lpHelpInfo, fn) \
-    (void)((fn)((hwnd), WM_HELP, 0, (LPARAM)(LPHELPINFO)(lpHelpInfo)), 0L)
+    ((fn)((hwnd), WM_HELP, 0, (LPARAM)(LPHELPINFO)(lpHelpInfo)), 0L)
 #endif
 
 /* void Cls_OnUserChanged(HWND hwnd) */
 #define HANDLE_WM_USERCHANGED(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd)), 0L)
 #define FORWARD_WM_USERCHANGED(hwnd, fn) \
-    (void)((fn)((hwnd), WM_USERCHANGED, 0, 0L), 0L)
+    ((fn)((hwnd), WM_USERCHANGED, 0, 0L), 0L)
 #endif
 
 /* INT Cls_OnNotifyFormat(HWND hwnd, HWND hwndTarget, INT nCommand) */
 #define HANDLE_WM_STYLECHANGING(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (UINT)(wParam), (LPSTYLESTRUCT)(lParam)), 0L)
 #define FORWARD_WM_STYLECHANGING(hwnd, nStyleType, lpStyleStruct, fn) \
-    (void)((fn)((hwnd), WM_STYLECHANGING, (WPARAM)(UINT)(nStyleType), \
-                (LPARAM)(LPSTYLESTRUCT)(lpStyleStruct)), 0L)
+    ((fn)((hwnd), WM_STYLECHANGING, (WPARAM)(UINT)(nStyleType), \
+          (LPARAM)(LPSTYLESTRUCT)(lpStyleStruct)), 0L)
 #endif
 
 /* void Cls_OnStyleChanged(HWND hwnd, UINT nStyleType, const STYLESTRUCT *lpStyleStruct) */
 #define HANDLE_WM_STYLECHANGED(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (UINT)(wParam), (const STYLESTRUCT *)(lParam)), 0L)
 #define FORWARD_WM_STYLECHANGED(hwnd, nStyleType, lpStyleStruct, fn) \
-    (void)((fn)((hwnd), WM_STYLECHANGED, (WPARAM)(UINT)(nStyleType), \
-                (LPARAM)(const STYLESTRUCT *)(lpStyleStruct)), 0L)
+    ((fn)((hwnd), WM_STYLECHANGED, (WPARAM)(UINT)(nStyleType), \
+          (LPARAM)(const STYLESTRUCT *)(lpStyleStruct)), 0L)
 #endif
 
 /* HICON Cls_OnGetIcon(HWND hwnd, UINT nType, LPARAM dpi) */
 #define HANDLE_WM_SYNCPAINT(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd)), 0L)
 #define FORWARD_WM_SYNCPAINT(hwnd, fn) \
-    (void)((fn)((hwnd), WM_SYNCPAINT, 0, 0L), 0L)
+    ((fn)((hwnd), WM_SYNCPAINT, 0, 0L), 0L)
 #endif
 
 /* void Cls_OnNCXButtonDown(HWND hwnd, BOOL fDoubleClick, UINT nHitTest, WORD fwButton, INT xPos, INT yPos) */
     (LRESULT)((fn)((hwnd), TRUE, GET_NCHITTEST_WPARAM(wParam), GET_XBUTTON_WPARAM(wParam), \
                    GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)), TRUE)
 #define FORWARD_WM_NCXBUTTONDOWN(hwnd, fDoubleClick, nHitTest, fwButton, xPos, yPos, fn) \
-    (void)((fn)((hwnd), ((fDoubleClick) ? WM_NCXBUTTONDBLCLK : WM_NCXBUTTONDOWN), \
-                MAKEWPARAM((nHitTest), (fwButton)), MAKELPARAM((xPos), (yPos))), 0L)
+    ((fn)((hwnd), ((fDoubleClick) ? WM_NCXBUTTONDBLCLK : WM_NCXBUTTONDOWN), \
+          MAKEWPARAM((nHitTest), (fwButton)), MAKELPARAM((xPos), (yPos))), 0L)
 #endif
 
 /* void Cls_OnNCXButtonUp(HWND hwnd, UINT nHitTest, WORD fwButton, INT xPos, INT yPos) */
     (LRESULT)((fn)((hwnd), GET_NCHITTEST_WPARAM(wParam), GET_XBUTTON_WPARAM(wParam), \
                    GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)), TRUE)
 #define FORWARD_WM_NCXBUTTONUP(hwnd, nHitTest, fwButton, xPos, yPos, fn) \
-    (void)((fn)((hwnd), WM_NCXBUTTONUP, MAKEWPARAM((nHitTest), (fwButton)), \
-                MAKELPARAM((xPos), (yPos))), 0L)
+    ((fn)((hwnd), WM_NCXBUTTONUP, MAKEWPARAM((nHitTest), (fwButton)), \
+          MAKELPARAM((xPos), (yPos))), 0L)
 #endif
 
 /* void Cls_OnImeStartComposition(HWND hwnd) */
 #define HANDLE_WM_IME_STARTCOMPOSITION(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd)), 0L)
 #define FORWARD_WM_IME_STARTCOMPOSITION(hwnd, fn) \
-    (void)((fn)((hwnd), WM_IME_STARTCOMPOSITION, 0, 0L), 0L)
+    ((fn)((hwnd), WM_IME_STARTCOMPOSITION, 0, 0L), 0L)
 #endif
 
 /* void Cls_OnImeEndComposition(HWND hwnd) */
 #define HANDLE_WM_IME_ENDCOMPOSITION(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd)), 0L)
 #define FORWARD_WM_IME_ENDCOMPOSITION(hwnd, fn) \
-    (void)((fn)((hwnd), WM_IME_ENDCOMPOSITION, 0, 0L), 0L)
+    ((fn)((hwnd), WM_IME_ENDCOMPOSITION, 0, 0L), 0L)
 #endif
 
 /* void Cls_OnImeComposition(HWND hwnd, WORD wChar, DWORD lAttribute) */
 #define HANDLE_WM_IME_COMPOSITION(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (WORD)(wParam), (DWORD)(lParam)), 0L)
 #define FORWARD_WM_IME_COMPOSITION(hwnd, wChar, lAttribute, fn) \
-    (void)((fn)((hwnd), WM_IME_COMPOSITION, (WPARAM)(WORD)(wChar), (DWORD)(lAttribute)), 0L)
+    ((fn)((hwnd), WM_IME_COMPOSITION, (WPARAM)(WORD)(wChar), (DWORD)(lAttribute)), 0L)
 #endif
 
 /* void Cls_OnMenuRButtonUp(HWND hwnd, UINT nPos, HMENU hMenu) */
 #define HANDLE_WM_MENURBUTTONUP(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (UINT)(wParam), (HMENU)(lParam)), 0L)
 #define FORWARD_WM_MENURBUTTONUP(hwnd, nPos, hMenu, fn) \
-    (void)((fn)((hwnd), WM_MENURBUTTONUP, (WPARAM)(UINT)(nPos), (LPARAM)(HMENU)(hMenu)), 0L)
+    ((fn)((hwnd), WM_MENURBUTTONUP, (WPARAM)(UINT)(nPos), (LPARAM)(HMENU)(hMenu)), 0L)
 #endif
 
 /* UINT Cls_OnMenuDrag(HWND hwnd, UINT nPos, HMENU hMenu) */
 #define HANDLE_WM_UNINITMENUPOPUP(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (HMENU)(wParam), (UINT)(lParam)), 0L)
 #define FORWARD_WM_UNINITMENUPOPUP(hwnd, hMenu, nFlags, fn) \
-    (void)((fn)((hwnd), WM_UNINITMENUPOPUP, (WPARAM)(HMENU)(hMenu), \
-                (LPARAM)(UINT)(nFlags)), 0L)
+    ((fn)((hwnd), WM_UNINITMENUPOPUP, (WPARAM)(HMENU)(hMenu), \
+          (LPARAM)(UINT)(nFlags)), 0L)
 #endif
 
 /* void Cls_OnMenuCommand(HWND hwnd, UINT nPos, HMENU hMenu) */
 #define HANDLE_WM_MENUCOMMAND(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (UINT)(wParam), (HMENU)(lParam)), 0L)
 #define FORWARD_WM_MENUCOMMAND(hwnd, nPos, hMenu, fn) \
-    (void)((fn)((hwnd), WM_MENURBUTTONUP, (WPARAM)(UINT)(nPos), \
-           (LPARAM)(HMENU)(hMenu)), 0L)
+    ((fn)((hwnd), WM_MENURBUTTONUP, (WPARAM)(UINT)(nPos), \
+          (LPARAM)(HMENU)(hMenu)), 0L)
 #endif
 
 /* void Cls_OnChangeUIState(HWND hwnd, UINT nAction, UINT nUIElement) */
 #define HANDLE_WM_CHANGEUISTATE(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (UINT)LOWORD(wParam), (UINT)HIWORD(wParam)), 0L)
 #define FORWARD_WM_CHANGEUISTATE(hwnd, nAction, nUIElement, fn) \
-    (void)((fn)((hwnd), WM_CHANGEUISTATE, MAKEWPARAM((nAction), (nUIElement)), 0L), 0L)
+    ((fn)((hwnd), WM_CHANGEUISTATE, MAKEWPARAM((nAction), (nUIElement)), 0L), 0L)
 #endif
 
 /* void Cls_OnUpdateUIState(HWND hwnd, UINT nAction, UINT nUIElement) */
 #define HANDLE_WM_UPDATEUISTATE(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (UINT)LOWORD(wParam), (UINT)HIWORD(wParam)), 0L)
 #define FORWARD_WM_UPDATEUISTATE(hwnd, nAction, nUIElement, fn) \
-    (void)((fn)((hwnd), WM_UPDATEUISTATE, MAKEWPARAM((nAction), (nUIElement)), 0L), 0L)
+    ((fn)((hwnd), WM_UPDATEUISTATE, MAKEWPARAM((nAction), (nUIElement)), 0L), 0L)
 #endif
 
 /* UINT Cls_OnQueryUIState(HWND hwnd) */
     (LRESULT)((fn)((hwnd), TRUE, GET_KEYSTATE_WPARAM(wParam), GET_XBUTTON_WPARAM(wParam), \
                    GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)), TRUE)
 #define FORWARD_WM_XBUTTONDOWN(hwnd, fDoubleClick, fwKeys, fwButton, xPos, yPos, fn) \
-    (void)((fn)((hwnd), ((fDoubleClick) ? WM_XBUTTONDBLCLK : WM_XBUTTONDOWN), \
-                MAKEWPARAM((fwKeys), (fwButton)), MAKELPARAM((xPos), (yPos))), 0L)
+    ((fn)((hwnd), ((fDoubleClick) ? WM_XBUTTONDBLCLK : WM_XBUTTONDOWN), \
+          MAKEWPARAM((fwKeys), (fwButton)), MAKELPARAM((xPos), (yPos))), 0L)
 #endif
 
 /* void Cls_OnXButtonUp(HWND hwnd, WORD fwKeys, WORD fwButton, INT xPos, INT yPos) */
     (LRESULT)((fn)((hwnd), GET_KEYSTATE_WPARAM(wParam), GET_XBUTTON_WPARAM(wParam), \
                    GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)), TRUE)
 #define FORWARD_WM_XBUTTONUP(hwnd, fDoubleClick, fwKeys, fwButton, xPos, yPos, fn) \
-    (void)((fn)((hwnd), WM_XBUTTONUP, MAKEWPARAM((fwKeys), (fwButton)), \
-                MAKELPARAM((xPos), (yPos))), 0L)
+    ((fn)((hwnd), WM_XBUTTONUP, MAKEWPARAM((fwKeys), (fwButton)), \
+          MAKELPARAM((xPos), (yPos))), 0L)
 #endif
 
 /* void Cls_OnEnterMenuLoop(HWND hwnd, BOOL bIsTrackPopupMenu) */
 #define HANDLE_WM_ENTERMENULOOP(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (BOOL)(wParam)), 0L)
 #define FORWARD_WM_ENTERMENULOOP(hwnd, bIsTrackPopupMenu, fn) \
-    (void)((fn)((hwnd), WM_ENTERMENULOOP, (BOOL)(bIsTrackPopupMenu), 0L), 0L)
+    ((fn)((hwnd), WM_ENTERMENULOOP, (BOOL)(bIsTrackPopupMenu), 0L), 0L)
 #endif
 
 /* void Cls_OnExitMenuLoop(HWND hwnd, BOOL bIsTrackPopupMenu) */
 #define HANDLE_WM_EXITMENULOOP(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (BOOL)(wParam)), 0L)
 #define FORWARD_WM_EXITMENULOOP(hwnd, bIsTrackPopupMenu, fn) \
-    (void)((fn)((hwnd), WM_EXITMENULOOP, (BOOL)(bIsTrackPopupMenu), 0L), 0L)
+    ((fn)((hwnd), WM_EXITMENULOOP, (BOOL)(bIsTrackPopupMenu), 0L), 0L)
 #endif
 
 /* void Cls_OnNextMenu(HWND hwnd, INT nCode, LPMDINEXTMENU lpMDINextMenu) */
 #define HANDLE_WM_NEXTMENU(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (INT)(wParam), (LPMDINEXTMENU)(lParam)), 0L)
 #define FORWARD_WM_NEXTMENU(hwnd, nCode, lpMDINextMenu, fn) \
-    (void)((fn)((hwnd), WM_NEXTMENU, (WPARAM)(INT)(nCode), \
-           (LPARAM)(LPMDINEXTMENU)(lpMDINextMenu)), 0L)
+    ((fn)((hwnd), WM_NEXTMENU, (WPARAM)(INT)(nCode), \
+          (LPARAM)(LPMDINEXTMENU)(lpMDINextMenu)), 0L)
 #endif
 
 /* void Cls_OnSizing(HWND hwnd, UINT nSide, LPRECT lpRect) */
 #define HANDLE_WM_SIZING(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (UINT)(wParam), (LPRECT)(lParam)), 0L)
 #define FORWARD_WM_SIZING(hwnd, nSide, lpRect, fn) \
-    (void)((fn)((hwnd), WM_SIZING, (WPARAM)(UINT)(nSide), (LPARAM)(LPRECT)(lpRect)), 0L)
+    ((fn)((hwnd), WM_SIZING, (WPARAM)(UINT)(nSide), (LPARAM)(LPRECT)(lpRect)), 0L)
 #endif
 
 /* void Cls_OnCaptureChanged(HWND hwnd, HWND hwndNewCapture) */
 #define HANDLE_WM_CAPTURECHANGED(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (HWND)(lParam)), 0L)
 #define FORWARD_WM_CAPTURECHANGED(hwnd, hwndNewCapture, fn) \
-    (void)((fn)((hwnd), WM_CAPTURECHANGED, 0, (LPARAM)(HWND)(hwndNewCapture)), 0L)
+    ((fn)((hwnd), WM_CAPTURECHANGED, 0, (LPARAM)(HWND)(hwndNewCapture)), 0L)
 #endif
 
 /* void Cls_OnMoving(HWND hwnd, UINT nSide, LPRECT lpRect) */
 #define HANDLE_WM_MOVING(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (UINT)(wParam), (LPRECT)(lParam)), 0L)
 #define FORWARD_WM_MOVING(hwnd, nSide, lpRect, fn) \
-    (void)((fn)((hwnd), WM_MOVING, (WPARAM)(UINT)(nSide), (LPARAM)(LPRECT)(lpRect)), 0L)
+    ((fn)((hwnd), WM_MOVING, (WPARAM)(UINT)(nSide), (LPARAM)(LPRECT)(lpRect)), 0L)
 #endif
 
 /* LRESULT Cls_OnPowerBroadcast(HWND hwnd, UINT nPowerEvent, UINT nEventData) */
 #define HANDLE_WM_IME_COMPOSITIONFULL(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd)), 0L)
 #define FORWARD_WM_IME_COMPOSITIONFULL(hwnd, compactRatio, fn) \
-    (void)((fn)((hwnd), WM_IME_COMPOSITIONFULL, 0, 0L), 0L)
+    ((fn)((hwnd), WM_IME_COMPOSITIONFULL, 0, 0L), 0L)
 #endif
 
 /* void Cls_OnImeSelect(HWND hwnd, BOOL fSelect, HKL hKL) */
 #define HANDLE_WM_IME_SELECT(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (BOOL)(wParam), (HKL)(lParam)), 0L)
 #define FORWARD_WM_IME_SELECT(hwnd, fSelect, hKL, fn) \
-    (void)((fn)((hwnd), WM_IME_SELECT, (WPARAM)(BOOL)(fSelect), (LPARAM)(HKL)(hKL)), 0L)
+    ((fn)((hwnd), WM_IME_SELECT, (WPARAM)(BOOL)(fSelect), (LPARAM)(HKL)(hKL)), 0L)
 #endif
 
 /* void Cls_OnImeChar(HWND hwnd, WORD wCharCode, LONG lKeyData) */
 #define HANDLE_WM_IME_CHAR(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (WORD)(wParam), (LONG)(lParam)), 0L)
 #define FORWARD_WM_IME_CHAR(hwnd, wCharCode, lKeyData, fn) \
-    (void)((fn)((hwnd), WM_IME_CHAR, (WPARAM)(WORD)(wCharCode), (LPARAM)(LONG)(lKeyData)), 0L)
+    ((fn)((hwnd), WM_IME_CHAR, (WPARAM)(WORD)(wCharCode), (LPARAM)(LONG)(lKeyData)), 0L)
 #endif
 
 /* LRESULT Cls_OnImeRequest(HWND hwnd, WPARAM wParam, LPARAM lParam) */
 #define HANDLE_WM_IME_KEYDOWN(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), TRUE, (WORD)(wParam), (LONG)(lParam)), 0L)
 #define FORWARD_WM_IME_KEYDOWN(hwnd, fDown, nVirtKey, lKeyData, fn) \
-    (void)((fn)((hwnd), ((BOOL)(fDown) ? WM_IME_KEYDOWN : WM_IME_KEYUP), \
-                (WPARAM)(UINT)(nVirtKey), (LPARAM)(LONG)(lKeyData)), 0L)
+    ((fn)((hwnd), ((BOOL)(fDown) ? WM_IME_KEYDOWN : WM_IME_KEYUP), \
+          (WPARAM)(UINT)(nVirtKey), (LPARAM)(LONG)(lKeyData)), 0L)
 #define HANDLE_WM_IME_KEYUP(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), FALSE, (WORD)(wParam), (LONG)(lParam)), 0L)
 #define FORWARD_WM_IME_KEYUP(hwnd, fDown, nVirtKey, lKeyData, fn) \
-    (void)((fn)((hwnd), ((BOOL)(fDown) ? WM_IME_KEYDOWN : WM_IME_KEYUP), \
-                (WPARAM)(UINT)(nVirtKey), (LPARAM)(LONG)(lKeyData)), 0L)
+    ((fn)((hwnd), ((BOOL)(fDown) ? WM_IME_KEYDOWN : WM_IME_KEYUP), \
+          (WPARAM)(UINT)(nVirtKey), (LPARAM)(LONG)(lKeyData)), 0L)
 #endif
 
 /* void Cls_OnMouseHover(HWND hwnd, UINT nFlags, INT xPos, INT yPos) */
 #define HANDLE_WM_MOUSEHOVER(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (UINT)(wParam), GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)), 0L)
 #define FORWARD_WM_MOUSEHOVER(hwnd, nFlags, xPos, yPos, fn) \
-    (void)((fn)((hwnd), WM_MOUSEHOVER, (WPARAM)(UINT)(nFlags), \
-                MAKELPARAM((xPos), (yPos))), 0L)
+    ((fn)((hwnd), WM_MOUSEHOVER, (WPARAM)(UINT)(nFlags), \
+          MAKELPARAM((xPos), (yPos))), 0L)
 #endif
 
 /* void Cls_OnMouseLeave(HWND hwnd) */
 #define HANDLE_WM_MOUSELEAVE(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd)), 0L)
 #define FORWARD_WM_MOUSELEAVE(hwnd, fn) \
-    (void)((fn)((hwnd), WM_MOUSELEAVE, 0, 0L), 0L)
+    ((fn)((hwnd), WM_MOUSELEAVE, 0, 0L), 0L)
 #endif
 
 /* void Cls_OnNCMouseHover(HWND hwnd, UINT nHitTest, INT xPos, INT yPos) */
 #define HANDLE_WM_NCMOUSEHOVER(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (INT)(wParam), GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)), 0L)
 #define FORWARD_WM_NCMOUSEHOVER(hwnd, nHitTest, xPos, yPos, fn) \
-    (void)((fn)((hwnd), WM_NCMOUSEHOVER, (WPARAM)(UINT)(nHitTest), \
-           MAKELPARAM((xPos), (yPos))), 0L)
+    ((fn)((hwnd), WM_NCMOUSEHOVER, (WPARAM)(UINT)(nHitTest), \
+          MAKELPARAM((xPos), (yPos))), 0L)
 #endif
 
 /* void Cls_OnNCMouseLeave(HWND hwnd) */
 #define HANDLE_WM_NCMOUSELEAVE(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd)), 0L)
 #define FORWARD_WM_NCMOUSELEAVE(hwnd, fn) \
-    (void)((fn)((hwnd), WM_NCMOUSELEAVE, 0, 0L), 0L)
+    ((fn)((hwnd), WM_NCMOUSELEAVE, 0, 0L), 0L)
 #endif
 
 /* void Cls_OnPrint(HWND hwnd, HDC hDC, UINT uFlags) */
 #define HANDLE_WM_PRINT(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (HDC)(wParam), (UINT)(lParam)), 0L)
 #define FORWARD_WM_PRINT(hwnd, hDC, uFlags, fn) \
-    (void)((fn)((hwnd), WM_PRINT, (WPARAM)(HDC)(hDC), (LPARAM)(uFlags)), 0L)
+    ((fn)((hwnd), WM_PRINT, (WPARAM)(HDC)(hDC), (LPARAM)(uFlags)), 0L)
 #endif
 
 /* void Cls_OnPrintClient(HWND hwnd, HDC hDC, UINT uFlags) */
 #define HANDLE_WM_PRINTCLIENT(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd), (HDC)(wParam), (UINT)(lParam)), 0L)
 #define FORWARD_WM_PRINTCLIENT(hwnd, hDC, uFlags, fn) \
-    (void)((fn)((hwnd), WM_PRINTCLIENT, (WPARAM)(HDC)(hDC), (LPARAM)(uFlags)), 0L)
+    ((fn)((hwnd), WM_PRINTCLIENT, (WPARAM)(HDC)(hDC), (LPARAM)(uFlags)), 0L)
 #endif
 
 /* BOOL Cls_OnAppCommand(HWND hwnd, HWND hwndTarget, UINT cmd, UINT nDevice, UINT nKey) */
 #define HANDLE_WM_ENTERSIZEMOVE(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd)), 0L)
 #define FORWARD_WM_ENTERSIZEMOVE(hwnd, fn) \
-    (void)((fn)((hwnd), WM_ENTERSIZEMOVE, 0, 0L), 0L)
+    ((fn)((hwnd), WM_ENTERSIZEMOVE, 0, 0L), 0L)
 #endif
 
 /* void Cls_OnExitSizeMove(HWND hwnd) */
 #define HANDLE_WM_EXITSIZEMOVE(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd)), 0L)
 #define FORWARD_WM_EXITSIZEMOVE(hwnd, fn) \
-    (void)((fn)((hwnd), WM_EXITSIZEMOVE, 0, 0L), 0L)
+    ((fn)((hwnd), WM_EXITSIZEMOVE, 0, 0L), 0L)
 #endif
 
 /* HICON Cls_OnQueryDragIcon(HWND hwnd) */
 #define HANDLE_LB_ITEMFROMPOINT(hwnd, wParam, lParam, fn) \
     (LRESULT)(DWORD)(fn)((hwnd), (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam))
 
-// TODO: HANDLE_LB_MULTIPLEADDSTRING and HANDLE_LB_GETLISTBOXINFO.
+/* TODO: HANDLE_LB_MULTIPLEADDSTRING and HANDLE_LB_GETLISTBOXINFO. */
 
 /* DWORD ComboBox_OnGetEditSel(HWND hwnd, LPDWORD lpdwStart, LPDWORD lpdwEnd) */
 #define HANDLE_CB_GETEDITSEL(hwnd, wParam, lParam, fn) \
 #define HANDLE_CB_INITSTORAGE(hwnd, wParam, lParam, fn) \
     (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (DWORD)(lParam))
 
-// TODO: CB_MULTIPLEADDSTRING and CB_GETCOMBOBOXINFO
+/* TODO: CB_MULTIPLEADDSTRING and CB_GETCOMBOBOXINFO */
 
 /* INT ScrollBar_OnSetPos(HWND hwnd, INT nPos, BOOL fRedraw) */
 #define HANDLE_SBM_SETPOS(hwnd, wParam, lParam, fn) \
 #define HANDLE_SBM_GETSCROLLBARINFO(hwnd, wParam, lParam, fn) \
     (LRESULT)(INT_PTR)(BOOL)(fn)((hwnd), (LPSCROLLBARINFO)(lParam))
 
+/* COLORREF ListView_OnGetBkColor(HWND hwnd) */
+#define HANDLE_LVM_GETBKCOLOR(hwnd, wParam, lParam, fn) \
+    (COLORREF)(fn)((hwnd))
+
+/* BOOL ListView_OnSetBkColor(HWND hwnd, COLORREF clrBk) */
+#define HANDLE_LVM_SETBKCOLOR(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (COLORREF)(wParam))
+
+/* HIMAGELIST ListView_OnGetImageList(HWND hwnd, INT iImageList) */
+#define HANDLE_LVM_GETIMAGELIST(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HIMAGELIST)(fn)((hwnd), (INT)(wParam))
+
+/* HIMAGELIST ListView_OnSetImageList(HWND hwnd, INT iImageList, HIMAGELIST himl) */
+#define HANDLE_LVM_SETIMAGELIST(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HIMAGELIST)(fn)((hwnd), (INT)(wParam), (HIMAGELIST)(lParam))
+
+/* INT ListView_OnGetItemCount(HWND hwnd) */
+#define HANDLE_LVM_GETITEMCOUNT(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd))
+
+/* BOOL ListView_OnGetItemA(HWND hwnd, LV_ITEMA *pitem) */
+#define HANDLE_LVM_GETITEMA(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (LV_ITEMA *)(lParam))
+
+/* BOOL ListView_OnSetItemA(HWND hwnd, const LV_ITEMA *pitem) */
+#define HANDLE_LVM_SETITEMA(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (const LV_ITEMA *)(lParam))
+
+/* INT ListView_OnInsertItemA(HWND hwnd, const LV_ITEMA *pitem) */
+#define HANDLE_LVM_INSERTITEMA(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (const LV_ITEMA *)(lParam))
+
+/* BOOL ListView_OnDeleteItem(HWND hwnd, INT i) */
+#define HANDLE_LVM_DELETEITEM(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam))
+
+/* BOOL ListView_OnDeleteAllItems(HWND hwnd) */
+#define HANDLE_LVM_DELETEALLITEMS(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd))
+
+/* BOOL ListView_OnGetCallbackMask(HWND hwnd) */
+#define HANDLE_LVM_GETCALLBACKMASK(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd))
+
+/* BOOL ListView_OnSetCallbackMask(HWND hwnd, UINT mask) */
+#define HANDLE_LVM_SETCALLBACKMASK(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (UINT)(wParam))
+
+/* INT ListView_OnGetNextItem(HWND hwnd, INT i, UINT flags) */
+#define HANDLE_LVM_GETNEXTITEM(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (INT)(wParam), (UINT)(lParam))
+
+/* INT ListView_OnFindItemA(HWND hwnd, INT iStart, const LV_FINDINFOA *plvfi) */
+#define HANDLE_LVM_FINDITEMA(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (INT)(wParam), (const LV_FINDINFOA *)(lParam))
+
+/* BOOL ListView_OnGetItemRect(HWND hwnd, INT i, RECT *prc) */
+#define HANDLE_LVM_GETITEMRECT(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam), (RECT *)(lParam))
+
+/* BOOL ListView_OnSetItemPosition(HWND hwnd, INT i, INT x, INT y) */
+#define HANDLE_LVM_SETITEMPOSITION(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam), (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam))
+
+/* BOOL ListView_OnGetItemPosition(HWND hwnd, INT i, POINT *ppt) */
+#define HANDLE_LVM_GETITEMPOSITION(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam), (POINT *)(lParam))
+
+/* INT ListView_OnGetStringWidthA(HWND hwnd, LPCSTR psz) */
+#define HANDLE_LVM_GETSTRINGWIDTHA(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (LPCSTR)(lParam))
+
+/* INT ListView_OnHitTest(HWND hwnd, LV_HITTESTINFO *pinfo) */
+#define HANDLE_LVM_HITTEST(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (LV_HITTESTINFO *)(lParam))
+
+/* BOOL ListView_OnEnsureVisible(HWND hwnd, INT i, BOOL fPartialOK) */
+#define HANDLE_LVM_ENSUREVISIBLE(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam), (BOOL)(lParam))
+
+/* BOOL ListView_OnScroll(HWND hwnd, INT dx, INT dy) */
+#define HANDLE_LVM_SCROLL(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam), (INT)(lParam))
+
+/* BOOL ListView_OnRedrawItems(HWND hwnd, INT iFirst, INT iLast) */
+#define HANDLE_LVM_REDRAWITEMS(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam), (INT)(lParam))
+
+/* BOOL ListView_OnArrange(HWND hwnd, UINT code) */
+#define HANDLE_LVM_ARRANGE(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (UINT)(wParam))
+
+/* HWND ListView_OnEditLabelA(HWND hwnd, INT i) */
+#define HANDLE_LVM_EDITLABELA(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HWND)(fn)((hwnd), (INT)(wParam))
+
+/* HWND ListView_OnGetEditControl(HWND hwnd) */
+#define HANDLE_LVM_GETEDITCONTROL(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HWND)(fn)((hwnd))
+
+/* BOOL ListView_OnGetColumnA(HWND hwnd, INT iCol, LV_COLUMNA *pcol) */
+#define HANDLE_LVM_GETCOLUMNA(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam), (LV_COLUMNA *)(lParam))
+
+/* BOOL ListView_OnSetColumnA(HWND hwnd, INT iCol, const LV_COLUMNA *pcol) */
+#define HANDLE_LVM_SETCOLUMNA(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam), (const LV_COLUMNA *)(lParam))
+
+/* INT ListView_OnInsertColumnA(HWND hwnd, INT iCol, const LV_COLUMNA *pcol) */
+#define HANDLE_LVM_INSERTCOLUMNA(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (INT)(wParam), (const LV_COLUMNA *)(lParam))
+
+/* BOOL ListView_OnDeleteColumn(HWND hwnd, INT iCol) */
+#define HANDLE_LVM_DELETECOLUMN(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam))
+
+/* INT ListView_OnGetColumnWidth(HWND hwnd, INT iCol) */
+#define HANDLE_LVM_GETCOLUMNWIDTH(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (INT)(wParam))
+
+/* BOOL ListView_OnSetColumnWidth(HWND hwnd, INT iCol, INT cx) */
+#define HANDLE_LVM_SETCOLUMNWIDTH(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam), (INT)(lParam))
+
+/* HWND ListView_OnGetHeader(HWND hwnd) */
+#define HANDLE_LVM_GETHEADER(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HWND)(fn)((hwnd))
+
+/* HIMAGELIST ListView_OnCreateDragImage(HWND hwnd, INT i, LPPOINT lpptUpLeft) */
+#define HANDLE_LVM_CREATEDRAGIMAGE(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HIMAGELIST)(fn)((hwnd), (INT)(wParam), (LPPOINT)(lParam))
+
+/* BOOL ListView_OnGetViewRect(HWND hwnd, RECT *prc) */
+#define HANDLE_LVM_GETVIEWRECT(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (RECT *)(lParam))
+
+/* COLORREF ListView_OnGetTextColor(HWND hwnd) */
+#define HANDLE_LVM_GETTEXTCOLOR(hwnd, wParam, lParam, fn) \
+    (COLORREF)(fn)((hwnd))
+
+/* BOOL ListView_OnSetTextColor(HWND hwnd, COLORREF clrText) */
+#define HANDLE_LVM_SETTEXTCOLOR(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (COLORREF)(lParam))
+
+/* COLORREF ListView_OnGetTextBkColor(HWND hwnd) */
+#define HANDLE_LVM_GETTEXTBKCOLOR(hwnd, wParam, lParam, fn) \
+    (COLORREF)(fn)((hwnd))
+
+/* BOOL ListView_OnSetTextBkColor(HWND hwnd, COLORREF clrTextBk) */
+#define HANDLE_LVM_SETTEXTBKCOLOR(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (COLORREF)(lParam))
+
+/* INT ListView_OnGetTopIndex(HWND hwnd) */
+#define HANDLE_LVM_GETTOPINDEX(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd))
+
+/* INT ListView_OnGetCountPerPage(HWND hwnd) */
+#define HANDLE_LVM_GETCOUNTPERPAGE(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd))
+
+/* BOOL ListView_OnGetOrigin(HWND hwnd, POINT *ppt) */
+#define HANDLE_LVM_GETORIGIN(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (POINT *)(lParam))
+
+/* BOOL ListView_OnUpdate(HWND hwnd, INT i) */
+#define HANDLE_LVM_UPDATE(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam))
+
+/* BOOL ListView_OnSetItemState(HWND hwnd, INT i, LV_ITEM *lvi) */
+#define HANDLE_LVM_SETITEMSTATE(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam), (LV_ITEM *)(lParam))
+
+/* UINT ListView_OnGetItemState(HWND hwnd, INT i, UINT mask) */
+#define HANDLE_LVM_GETITEMSTATE(hwnd, wParam, lParam, fn) \
+    (UINT)(fn)((hwnd), (INT)(wParam), (UINT)(lParam))
+
+/* INT ListView_OnGetItemTextA(HWND hwnd, INT i, LV_ITEMA *lvi) */
+#define HANDLE_LVM_GETITEMTEXTA(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (INT)(wParam), (LV_ITEMA *)(lParam))
+
+/* BOOL ListView_OnSetItemTextA(HWND hwnd, INT i, const LV_ITEMA *lvi) */
+#define HANDLE_LVM_SETITEMTEXTA(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam), (const LV_ITEMA *)(lParam))
+
+/* void ListView_OnSetItemCount(HWND hwnd, INT cItems) */
+#define HANDLE_LVM_SETITEMCOUNT(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (INT)(wParam)), 0L)
+
+/* BOOL ListView_OnSortItems(HWND hwnd, LPARAM lPrm, PFNLVCOMPARE pfnCompare) */
+#define HANDLE_LVM_SORTITEMS(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (LPARAM)(wParam), (PFNLVCOMPARE)(lParam))
+
+/* void ListView_OnSetItemPosition32(HWND hwnd, INT i, const POINT *ppt) */
+#define HANDLE_LVM_SETITEMPOSITION32(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (INT)(wParam), (const POINT *)(lParam)), 0L)
+
+/* UINT ListView_OnGetSelectedCount(HWND hwnd) */
+#define HANDLE_LVM_GETSELECTEDCOUNT(hwnd, wParam, lParam, fn) \
+    (UINT)(fn)((hwnd))
+
+/* DWORD ListView_OnGetItemSpacing(HWND hwnd, BOOL fSmall) */
+#define HANDLE_LVM_GETITEMSPACING(hwnd, wParam, lParam, fn) \
+    (DWORD)(fn)((hwnd), (BOOL)(wParam))
+
+/* BOOL ListView_OnGetISearchStringA(HWND hwnd, LPSTR lpsz) */
+#define HANDLE_LVM_GETISEARCHSTRINGA(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (LPSTR)(lParam))
+
+/* DWORD ListView_OnSetIconSpacing(HWND hwnd, INT cx, INT cy) */
+#define HANDLE_LVM_SETICONSPACING(hwnd, wParam, lParam, fn) \
+    (DWORD)(fn)((hwnd), (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam))
+
+/* DWORD ListView_OnSetExtendedListViewStyle(HWND hwnd, DWORD dwMask, DWORD dw) */
+#define HANDLE_LVM_SETEXTENDEDLISTVIEWSTYLE(hwnd, wParam, lParam, fn) \
+    (DWORD)(fn)((hwnd), (DWORD)(wParam), (DWORD)(lParam))
+
+/* DWORD ListView_OnGetExtendedListViewStyle(HWND hwnd) */
+#define HANDLE_LVM_GETEXTENDEDLISTVIEWSTYLE(hwnd, wParam, lParam, fn) \
+    (DWORD)(fn)((hwnd))
+
+/* BOOL ListView_OnGetSubItemRect(HWND hwnd, INT iItem, RECT *prc) */
+#define HANDLE_LVM_GETSUBITEMRECT(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam), (RECT *)(lParam))
+
+/* INT ListView_OnSubItemHitTest(HWND hwnd, WPARAM wParam, LPLVHITTESTINFO plvhti) */
+#define HANDLE_LVM_SUBITEMHITTEST(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (wParam), (LPLVHITTESTINFO)(lParam))
+
+/* BOOL ListView_OnSetColumnOrderArray(HWND hwnd, INT iCount, LPINT pi) */
+#define HANDLE_LVM_SETCOLUMNORDERARRAY(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam), (LPINT)(lParam))
+
+/* BOOL ListView_OnGetColumnOrderArray(HWND hwnd, INT iCount, LPINT pi) */
+#define HANDLE_LVM_GETCOLUMNORDERARRAY(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam), (LPINT)(lParam))
+
+/* INT ListView_OnSetHotItem(HWND hwnd, INT i) */
+#define HANDLE_LVM_SETHOTITEM(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (INT)(wParam))
+
+/* INT ListView_OnGetHotItem(HWND hwnd) */
+#define HANDLE_LVM_GETHOTITEM(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd))
+
+/* HCURSOR ListView_OnSetHotCursor(HWND hwnd, HCURSOR hcur) */
+#define HANDLE_LVM_SETHOTCURSOR(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HCURSOR)(fn)((hwnd), (HCURSOR)(lParam))
+
+/* HCURSOR ListView_OnGetHotCursor(HWND hwnd) */
+#define HANDLE_LVM_GETHOTCURSOR(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HCURSOR)(fn)((hwnd))
+
+/* DWORD ListView_OnApproximateViewRect(HWND hwnd, INT iWidth, INT iHeight, INT iCount) */
+#define HANDLE_LVM_APPROXIMATEVIEWRECT(hwnd, wParam, lParam, fn) \
+    (DWORD)(fn)((hwnd), (INT)(wParam), (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam))
+
+/* BOOL ListView_OnSetWorkAreas(HWND hwnd, INT nWorkAreas, const RECT *prc) */
+#define HANDLE_LVM_SETWORKAREAS(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam), (const RECT *)(lParam))
+
+/* INT ListView_OnGetSelectionMark(HWND hwnd) */
+#define HANDLE_LVM_GETSELECTIONMARK(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd))
+
+/* INT ListView_OnSetSelectionMark(HWND hwnd, INT i) */
+#define HANDLE_LVM_SETSELECTIONMARK(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (INT)(lParam))
+
+/* BOOL ListView_OnSetBkImageA(HWND hwnd, const LVBKIMAGEA *plvbki) */
+#define HANDLE_LVM_SETBKIMAGEA(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (const LVBKIMAGEA *)(lParam))
+
+/* BOOL ListView_OnGetBkImageA(HWND hwnd, LVBKIMAGEA *plvbki) */
+#define HANDLE_LVM_GETBKIMAGEA(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (LVBKIMAGEA *)(lParam))
+
+/* BOOL ListView_OnGetWorkAreas(HWND hwnd, INT nWorkAreas, RECT *prc) */
+#define HANDLE_LVM_GETWORKAREAS(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam), (RECT *)(lParam))
+
+/* DWORD ListView_OnSetHoverTime(HWND hwnd, DWORD dwHoverTimeMs) */
+#define HANDLE_LVM_SETHOVERTIME(hwnd, wParam, lParam, fn) \
+    (DWORD)(fn)((hwnd), (DWORD)(lParam))
+
+/* DWORD ListView_OnGetHoverTime(HWND hwnd) */
+#define HANDLE_LVM_GETHOVERTIME(hwnd, wParam, lParam, fn) \
+    (DWORD)(fn)((hwnd))
+
+/* BOOL ListView_OnGetNumberOfWorkAreas(HWND hwnd, UINT *pnWorkAreas) */
+#define HANDLE_LVM_GETNUMBEROFWORKAREAS(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (UINT *)(lParam))
+
+/* HWND ListView_OnSetToolTips(HWND hwnd, HWND hwndNewHwnd) */
+#define HANDLE_LVM_SETTOOLTIPS(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HWND)(fn)((hwnd), (HWND)(wParam))
+
+/* BOOL ListView_OnGetItemW(HWND hwnd, LV_ITEMW *pitem) */
+#define HANDLE_LVM_GETITEMW(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (LV_ITEMW *)(lParam))
+
+/* BOOL ListView_OnSetItemW(HWND hwnd, const LV_ITEMW *pitem) */
+#define HANDLE_LVM_SETITEMW(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (const LV_ITEMW *)(lParam))
+
+/* INT ListView_OnInsertItemW(HWND hwnd, const LV_ITEMW *pitem) */
+#define HANDLE_LVM_INSERTITEMW(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (const LV_ITEMW *)(lParam))
+
+/* HWND ListView_OnGetToolTips(HWND hwnd) */
+#define HANDLE_LVM_GETTOOLTIPS(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HWND)(fn)((hwnd))
+
+/* BOOL ListView_OnSortItemsEx(HWND hwnd, PFNLVCOMPARE pfnCompare, LPARAM lPrm) */
+#define HANDLE_LVM_SORTITEMSEX(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (PFNLVCOMPARE)(lParam), (LPARAM)(wParam))
+
+/* INT ListView_OnFindItemW(HWND hwnd, INT iStart, const LV_FINDINFOW *plvfi) */
+#define HANDLE_LVM_FINDITEMW(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (INT)(wParam), (const LV_FINDINFOW *)(lParam))
+
+/* INT ListView_OnGetStringWidthW(HWND hwnd, LPCWSTR psz) */
+#define HANDLE_LVM_GETSTRINGWIDTHW(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (LPCWSTR)(lParam))
+
+#if NTDDI_VERSION >= 0x06000000
+    /* UINT ListView_OnGetGroupState(HWND hwnd, DWORD dwGroupId, DWORD dwMask) */
+    #define HANDLE_LVM_GETGROUPSTATE(hwnd, wParam, lParam, fn) \
+        (UINT)(fn)((hwnd), (DWORD)(wParam), (DWORD)(lParam))
+
+    /* INT ListView_OnGetFocusedGroup(HWND hwnd) */
+    #define HANDLE_LVM_GETFOCUSEDGROUP(hwnd, wParam, lParam, fn) \
+        (INT)(fn)((hwnd))
+#endif
+
+/* INT ListView_OnGetColumnW(HWND hwnd, INT iCol) */
+#define HANDLE_LVM_GETCOLUMNW(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (INT)(wParam))
+
+/* BOOL ListView_OnSetColumnW(HWND hwnd, INT iCol, INT cx) */
+#define HANDLE_LVM_SETCOLUMNW(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam), (INT)(lParam))
+
+/* INT ListView_OnInsertColumnW(HWND hwnd, INT iCol, const LV_COLUMNW *pcol) */
+#define HANDLE_LVM_INSERTCOLUMNW(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (INT)(wParam), (const LV_COLUMNW *)(lParam))
+
+#if NTDDI_VERSION >= 0x06000000
+    /* BOOL ListView_OnGetGroupRect(HWND hwnd, INT iGroupId, RECT *prc) */
+    #define HANDLE_LVM_GETGROUPRECT(hwnd, wParam, lParam, fn) \
+        (BOOL)(fn)((hwnd), (INT)(wParam), (RECT *)(lParam))
+#endif
+
+/* INT ListView_OnGetItemTextW(HWND hwnd, INT i, LV_ITEMW *pitem) */
+#define HANDLE_LVM_GETITEMTEXTW(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (INT)(wParam), (LV_ITEMW *)(lParam))
+
+/* INT ListView_OnSetItemTextW(HWND hwnd, INT i, const LV_ITEMW *pitem) */
+#define HANDLE_LVM_SETITEMTEXTW(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (INT)(wParam), (const LV_ITEMW *)(lParam))
+
+/* BOOL ListView_OnGetISearchStringW(HWND hwnd, LPWSTR lpsz) */
+#define HANDLE_LVM_GETISEARCHSTRINGW(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (LPWSTR)(lParam))
+
+/* HWND ListView_OnEditLabelW(HWND hwnd, INT i) */
+#define HANDLE_LVM_EDITLABELW(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HWND)(fn)((hwnd), (INT)(wParam))
+
+/* BOOL ListView_OnSetBkImageW(HWND hwnd, const LVBKIMAGEW *plvbki) */
+#define HANDLE_LVM_SETBKIMAGEW(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (const LVBKIMAGEW *)(lParam))
+
+/* BOOL ListView_OnGetBkImageW(HWND hwnd, LVBKIMAGEW *plvbki) */
+#define HANDLE_LVM_GETBKIMAGEW(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (LVBKIMAGEW *)(lParam))
+
+/* void ListView_OnSetSelectedColumn(HWND hwnd, INT iCol) */
+#define HANDLE_LVM_SETSELECTEDCOLUMN(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (INT)(wParam)), 0L)
+
+/* LRESULT ListView_OnSetTileWidth(HWND hwnd, WPARAM wParam, LPARAM lParam) */
+#define HANDLE_LVM_SETTILEWIDTH(hwnd, wParam, lParam, fn) \
+    (LRESULT)(fn)((hwnd), (wParam), (lParam))
+
+/* DWORD ListView_OnSetView(HWND hwnd, DWORD iView) */
+#define HANDLE_LVM_SETVIEW(hwnd, wParam, lParam, fn) \
+    (DWORD)(fn)((hwnd), (DWORD)(wParam))
+
+/* DWORD ListView_OnGetView(HWND hwnd) */
+#define HANDLE_LVM_GETVIEW(hwnd, wParam, lParam, fn) \
+    (DWORD)(fn)((hwnd))
+
+#if NTDDI_VERSION >= 0x06000000
+    /* INT ListView_OnInsertGroup(HWND hwnd, INT iGroupId, const LVGROUP *pGroup) */
+    #define HANDLE_LVM_INSERTGROUP(hwnd, wParam, lParam, fn) \
+        (INT)(fn)((hwnd), (INT)(wParam), (const LVGROUP *)(lParam))
+
+    /* INT ListView_OnSetGroupInfo(HWND hwnd, INT iGroupId, const LVGROUP *pGroup) */
+    #define HANDLE_LVM_SETGROUPINFO(hwnd, wParam, lParam, fn) \
+        (INT)(fn)((hwnd), (INT)(wParam), (const LVGROUP *)(lParam))
+
+    /* INT ListView_OnGetGroupInfo(HWND hwnd, INT iGroupId, LVGROUP *pGroup) */
+    #define HANDLE_LVM_GETGROUPINFO(hwnd, wParam, lParam, fn) \
+        (INT)(fn)((hwnd), (INT)(wParam), (LVGROUP *)(lParam))
+
+    /* INT ListView_OnRemoveGroup(HWND hwnd, INT iGroupId) */
+    #define HANDLE_LVM_REMOVEGROUP(hwnd, wParam, lParam, fn) \
+        (INT)(fn)((hwnd), (INT)(wParam))
+
+    /* LRESULT ListView_OnMoveGroup(HWND hwnd, WPARAM wParam, LPARAM lParam) */
+    #define HANDLE_LVM_MOVEGROUP(hwnd, wParam, lParam, fn) \
+        (LRESULT)(fn)((hwnd), (wParam), (lParam))
+
+    /* INT ListView_OnGetGroupCount(HWND hwnd) */
+    #define HANDLE_LVM_GETGROUPCOUNT(hwnd, wParam, lParam, fn) \
+        (INT)(fn)((hwnd))
+
+    /* BOOL ListView_OnGetGroupInfoByIndex(HWND hwnd, INT iIndex, LVGROUP *pgrp) */
+    #define HANDLE_LVM_GETGROUPINFOBYINDEX(hwnd, wParam, lParam, fn) \
+        (BOOL)(fn)((hwnd), (INT)(wParam), (LVGROUP *)(lParam))
+
+    /* LRESULT ListView_OnMoveItemToGroup(HWND hwnd, WPARAM wParam, LPARAM lParam) */
+    #define HANDLE_LVM_MOVEITEMTOGROUP(hwnd, wParam, lParam, fn) \
+        (LRESULT)(fn)((hwnd), (wParam), (lParam))
+
+    /* void ListView_OnSetGroupMetrics(HWND hwnd, const LVGROUPMETRICS *pGroupMetrics) */
+    #define HANDLE_LVM_SETGROUPMETRICS(hwnd, wParam, lParam, fn) \
+        ((fn)((hwnd), (const LVGROUPMETRICS *)(lParam)), 0L)
+
+    /* void ListView_OnGetGroupMetrics(HWND hwnd, LVGROUPMETRICS *pGroupMetrics) */
+    #define HANDLE_LVM_GETGROUPMETRICS(hwnd, wParam, lParam, fn) \
+        ((fn)((hwnd), (LVGROUPMETRICS *)(lParam)), 0L)
+
+    /* INT ListView_OnEnableGroupView(HWND hwnd, BOOL fEnable) */
+    #define HANDLE_LVM_ENABLEGROUPVIEW(hwnd, wParam, lParam, fn) \
+        (INT)(fn)((hwnd), (BOOL)(wParam))
+
+    /* BOOL ListView_OnSortGroups(HWND hwnd, PFNLVGROUPCOMPARE pfnGroupCompate, void *plv) */
+    #define HANDLE_LVM_SORTGROUPS(hwnd, wParam, lParam, fn) \
+        (BOOL)(fn)((hwnd), (PFNLVGROUPCOMPARE)(wParam), (void *)(lParam))
+
+    /* void ListView_OnInsertGroupSorted(HWND hwnd, const LVINSERTGROUPSORTED *structInsert) */
+    #define HANDLE_LVM_INSERTGROUPSORTED(hwnd, wParam, lParam, fn) \
+        ((fn)((hwnd), (const LVINSERTGROUPSORTED *)(wParam)), 0L)
+
+    /* void ListView_OnRemoveAllGroups(HWND hwnd) */
+    #define HANDLE_LVM_REMOVEALLGROUPS(hwnd, wParam, lParam, fn) \
+        ((fn)((hwnd)), 0L)
+
+    /* BOOL ListView_OnHasGroup(HWND hwnd, DWORD dwGroupId) */
+    #define HANDLE_LVM_HASGROUP(hwnd, wParam, lParam, fn) \
+        (BOOL)(fn)((hwnd), (DWORD)(wParam))
+#endif
+
+/* BOOL ListView_OnSetTileViewInfo(HWND hwnd, const LVTILEVIEWINFO *ptvi) */
+#define HANDLE_LVM_SETTILEVIEWINFO(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (const LVTILEVIEWINFO *)(lParam))
+
+/* void ListView_OnGetTileViewInfo(HWND hwnd, LVTILEVIEWINFO *ptvi) */
+#define HANDLE_LVM_GETTILEVIEWINFO(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (LVTILEVIEWINFO *)(lParam)), 0L)
+
+/* BOOL ListView_OnSetTileInfo(HWND hwnd, const LVTILEINFO *pti) */
+#define HANDLE_LVM_SETTILEINFO(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (const LVTILEINFO *)(lParam))
+
+/* void ListView_OnGetTileInfo(HWND hwnd, LVTILEINFO *pti) */
+#define HANDLE_LVM_GETTILEINFO(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (LVTILEINFO *)(lParam)), 0L)
+
+/* BOOL ListView_OnSetInsertMark(HWND hwnd, const LVINSERTMARK *lvim) */
+#define HANDLE_LVM_SETINSERTMARK(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (const LVINSERTMARK *)(lParam))
+
+/* BOOL ListView_OnGetInsertMark(HWND hwnd, LVINSERTMARK *lvim) */
+#define HANDLE_LVM_GETINSERTMARK(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (LVINSERTMARK *)(lParam))
+
+/* INT ListView_OnInsertMarkHitTest(HWND hwnd, LPPOINT point, LPLVINSERTMARK lvim) */
+#define HANDLE_LVM_INSERTMARKHITTEST(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (LPPOINT)(wParam), (LPLVINSERTMARK)(lParam))
+
+/* INT ListView_OnGetInsertMarkRect(HWND hwnd, LPRECT rc) */
+#define HANDLE_LVM_GETINSERTMARKRECT(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (LPRECT)(lParam))
+
+/* COLORREF ListView_OnSetInsertMarkColor(HWND hwnd, COLORREF color) */
+#define HANDLE_LVM_SETINSERTMARKCOLOR(hwnd, wParam, lParam, fn) \
+    (COLORREF)(fn)((hwnd), (COLORREF)(lParam))
+
+/* COLORREF ListView_OnGetInsertMarkColor(HWND hwnd) */
+#define HANDLE_LVM_GETINSERTMARKCOLOR(hwnd, wParam, lParam, fn) \
+    (COLORREF)(fn)((hwnd))
+
+/* BOOL ListView_OnSetInfoTip(HWND hwnd, const LVSETINFOTIP *plvInfoTip) */
+#define HANDLE_LVM_SETINFOTIP(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (const LVSETINFOTIP *)(lParam))
+
+/* UINT ListView_OnGetSelectedColumn(HWND hwnd) */
+#define HANDLE_LVM_GETSELECTEDCOLUMN(hwnd, wParam, lParam, fn) \
+    (UINT)(fn)((hwnd))
+
+/* BOOL ListView_OnIsGroupViewEnabled(HWND hwnd) */
+#define HANDLE_LVM_ISGROUPVIEWENABLED(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd))
+
+/* COLORREF ListView_OnGetOutlineColor(HWND hwnd) */
+#define HANDLE_LVM_GETOUTLINECOLOR(hwnd, wParam, lParam, fn) \
+    (COLORREF)(fn)((hwnd))
+
+/* COLORREF ListView_OnSetOutlineColor(HWND hwnd, COLORREF color) */
+#define HANDLE_LVM_SETOUTLINECOLOR(hwnd, wParam, lParam, fn) \
+    (COLORREF)(fn)((hwnd), (COLORREF)(lParam))
+
+/* void ListView_OnCancelEditLabel(HWND hwnd) */
+#define HANDLE_LVM_CANCELEDITLABEL(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd)), 0L)
+
+/* UINT ListView_OnMapIndexToID(HWND hwnd, UINT index) */
+#define HANDLE_LVM_MAPINDEXTOID(hwnd, wParam, lParam, fn) \
+    (UINT)(fn)((hwnd), (UINT)(wParam))
+
+/* UINT ListView_OnMapIDToIndex(HWND hwnd, UINT id) */
+#define HANDLE_LVM_MAPIDTOINDEX(hwnd, wParam, lParam, fn) \
+    (UINT)(fn)((hwnd), (UINT)(wParam))
+
+/* BOOL ListView_OnIsItemVisible(HWND hwnd, UINT index) */
+#define HANDLE_LVM_ISITEMVISIBLE(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (UINT)(wParam))
+
+#if NTDDI_VERSION >= 0x06000000
+    /* void ListView_OnGetEmptyText(HWND hwnd, PWSTR pszText, UINT cchText) */
+    #define HANDLE_LVM_GETEMPTYTEXT(hwnd, wParam, lParam, fn) \
+        ((fn)((hwnd), (PWSTR)(lParam), (UINT)(wParam)), 0L)
+
+    /* BOOL ListView_OnGetFooterRect(HWND hwnd, RECT *prc) */
+    #define HANDLE_LVM_GETFOOTERRECT(hwnd, wParam, lParam, fn) \
+        (BOOL)(fn)((hwnd), (RECT *)(lParam))
+
+    /* BOOL ListView_OnGetFooterInfo(HWND hwnd, LVFOOTERINFO *plvfi) */
+    #define HANDLE_LVM_GETFOOTERINFO(hwnd, wParam, lParam, fn) \
+        (BOOL)(fn)((hwnd), (LVFOOTERINFO *)(lParam))
+
+    /* BOOL ListView_OnGetFooterItemRect(HWND hwnd, INT iItem, RECT *prc) */
+    #define HANDLE_LVM_GETFOOTERITEMRECT(hwnd, wParam, lParam, fn) \
+        (BOOL)(fn)((hwnd), (INT)(wParam), (RECT *)(lParam))
+
+    /* BOOL ListView_OnGetFooterItem(HWND hwnd, INT iItem, LVFOOTERITEM *pfi) */
+    #define HANDLE_LVM_GETFOOTERITEM(hwnd, wParam, lParam, fn) \
+        (BOOL)(fn)((hwnd), (INT)(wParam), (LVFOOTERITEM *)(lParam))
+
+    /* BOOL ListView_OnGetItemIndexRect(HWND hwnd, const LVITEMINDEX *plvii, RECT *prc) */
+    #define HANDLE_LVM_GETITEMINDEXRECT(hwnd, wParam, lParam, fn) \
+        (BOOL)(fn)((hwnd), (const LVITEMINDEX *)(wParam), (RECT *)(lParam))
+
+    /* HRESULT ListView_OnSetItemIndexState(HWND hwnd, const LVITEMINDEX *plvii, const LV_ITEM *lvi) */
+    #define HANDLE_LVM_SETITEMINDEXSTATE(hwnd, wParam, lParam, fn) \
+        (HRESULT)(fn)((hwnd), (const LVITEMINDEX *)(wParam), (const LV_ITEM *)(lParam))
+
+    /* BOOL ListView_OnGetNextItemIndex(HWND hwnd, LVITEMINDEX *plvii, UINT flags) */
+    #define HANDLE_LVM_GETNEXTITEMINDEX(hwnd, wParam, lParam, fn) \
+        (BOOL)(fn)((hwnd), (LVITEMINDEX *)(wParam), (UINT)(lParam))
+#endif
+
+/* HTREEITEM TreeView_OnInsertItemA(HWND hwnd, LPTV_INSERTSTRUCTA lpis) */
+#define HANDLE_TVM_INSERTITEMA(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HTREEITEM)(fn)((hwnd), (LPTV_INSERTSTRUCTA)(lParam))
+
+/* BOOL TreeView_OnDeleteItem(HWND hwnd, HTREEITEM hitem) */
+#define HANDLE_TVM_DELETEITEM(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (HTREEITEM)(lParam))
+
+/* BOOL TreeView_OnExpand(HWND hwnd, HTREEITEM hitem, UINT code) */
+#define HANDLE_TVM_EXPAND(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (HTREEITEM)(lParam), (UINT)(wParam))
+
+/* BOOL TreeView_OnGetItemRect(HWND hwnd, UINT code, RECT *prc) */
+#define HANDLE_TVM_GETITEMRECT(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (UINT)(wParam), (RECT *)(lParam))
+
+/* UINT TreeView_OnGetCount(HWND hwnd) */
+#define HANDLE_TVM_GETCOUNT(hwnd, wParam, lParam, fn) \
+    (UINT)(fn)((hwnd))
+
+/* UINT TreeView_OnGetIndent(HWND hwnd) */
+#define HANDLE_TVM_GETINDENT(hwnd, wParam, lParam, fn) \
+    (UINT)(fn)((hwnd))
+
+/* BOOL TreeView_OnSetIndent(HWND hwnd, INT indent) */
+#define HANDLE_TVM_SETINDENT(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (INT)(wParam))
+
+/* HIMAGELIST TreeView_OnGetImageList(HWND hwnd, INT iImage) */
+#define HANDLE_TVM_GETIMAGELIST(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HIMAGELIST)(fn)((hwnd), (INT)(wParam))
+
+/* HIMAGELIST TreeView_OnSetImageList(HWND hwnd, INT iImage, HIMAGELIST himl) */
+#define HANDLE_TVM_SETIMAGELIST(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HIMAGELIST)(fn)((hwnd), (INT)(wParam), (HIMAGELIST)(lParam))
+
+/* HTREEITEM TreeView_OnGetNextItem(HWND hwnd, HTREEITEM hitem, UINT code) */
+#define HANDLE_TVM_GETNEXTITEM(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HTREEITEM)(fn)((hwnd), (HTREEITEM)(lParam), (UINT)(wParam))
+
+/* BOOL TreeView_OnSelectItem(HWND hwnd, UINT code, HTREEITEM hitem) */
+#define HANDLE_TVM_SELECTITEM(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (UINT)(wParam), (HTREEITEM)(lParam))
+
+/* BOOL TreeView_OnGetItemA(HWND hwnd, TV_ITEMA *pitem) */
+#define HANDLE_TVM_GETITEMA(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (TV_ITEMA *)(lParam))
+
+/* BOOL TreeView_OnSetItemA(HWND hwnd, const TV_ITEMA *pitem) */
+#define HANDLE_TVM_SETITEMA(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (const TV_ITEMA *)(lParam))
+
+/* HWND TreeView_OnEditLabelA(HWND hwnd, HTREEITEM hitem) */
+#define HANDLE_TVM_EDITLABELA(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HWND)(fn)((hwnd), (HTREEITEM)(lParam))
+
+/* HWND TreeView_OnGetEditControl(HWND hwnd) */
+#define HANDLE_TVM_GETEDITCONTROL(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HWND)(fn)((hwnd))
+
+/* UINT TreeView_OnGetVisibleCount(HWND hwnd) */
+#define HANDLE_TVM_GETVISIBLECOUNT(hwnd, wParam, lParam, fn) \
+    (UINT)(fn)((hwnd))
+
+/* HTREEITEM TreeView_OnHitTest(HWND hwnd, LPTV_HITTESTINFO lpht) */
+#define HANDLE_TVM_HITTEST(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HTREEITEM)(fn)((hwnd), (LPTV_HITTESTINFO)(lParam))
+
+/* HIMAGELIST TreeView_OnCreateDragImage(HWND hwnd, HTREEITEM hitem) */
+#define HANDLE_TVM_CREATEDRAGIMAGE(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HIMAGELIST)(fn)((hwnd), (HTREEITEM)(lParam))
+
+/* BOOL TreeView_OnSortChildren(HWND hwnd, HTREEITEM hitem, BOOL recurse) */
+#define HANDLE_TVM_SORTCHILDREN(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (HTREEITEM)(lParam), (BOOL)(wParam))
+
+/* BOOL TreeView_OnEnsureVisible(HWND hwnd, HTREEITEM hitem) */
+#define HANDLE_TVM_ENSUREVISIBLE(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (HTREEITEM)(lParam))
+
+/* BOOL TreeView_OnSortChildrenCB(HWND hwnd, LPTV_SORTCB psort, BOOL recurse) */
+#define HANDLE_TVM_SORTCHILDRENCB(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (LPTV_SORTCB)(lParam), (BOOL)(wParam))
+
+/* BOOL TreeView_OnEndEditLabelNow(HWND hwnd, BOOL fCancel) */
+#define HANDLE_TVM_ENDEDITLABELNOW(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (BOOL)(wParam))
+
+/* BOOL TreeView_OnGetISearchStringA(HWND hwnd, LPSTR lpsz) */
+#define HANDLE_TVM_GETISEARCHSTRINGA(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (LPSTR)(lParam))
+
+/* HWND TreeView_OnSetToolTips(HWND hwnd, HWND hwndTT) */
+#define HANDLE_TVM_SETTOOLTIPS(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HWND)(fn)((hwnd), (HWND)(wParam))
+
+/* HWND TreeView_OnGetToolTips(HWND hwnd) */
+#define HANDLE_TVM_GETTOOLTIPS(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HWND)(fn)((hwnd))
+
+/* BOOL TreeView_OnSetInsertMark(HWND hwnd, HTREEITEM hItem, BOOL fAfter) */
+#define HANDLE_TVM_SETINSERTMARK(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (HTREEITEM)(lParam), (BOOL)(wParam))
+
+/* INT TreeView_OnSetItemHeight(HWND hwnd, INT iHeight) */
+#define HANDLE_TVM_SETITEMHEIGHT(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd), (INT)(wParam))
+
+/* INT TreeView_OnGetItemHeight(HWND hwnd) */
+#define HANDLE_TVM_GETITEMHEIGHT(hwnd, wParam, lParam, fn) \
+    (INT)(fn)((hwnd))
+
+/* COLORREF TreeView_OnSetBkColor(HWND hwnd, COLORREF clr) */
+#define HANDLE_TVM_SETBKCOLOR(hwnd, wParam, lParam, fn) \
+    (COLORREF)(fn)((hwnd), (COLORREF)(lParam))
+
+/* COLORREF TreeView_OnSetTextColor(HWND hwnd, COLORREF clr) */
+#define HANDLE_TVM_SETTEXTCOLOR(hwnd, wParam, lParam, fn) \
+    (COLORREF)(fn)((hwnd), (COLORREF)(lParam))
+
+/* COLORREF TreeView_OnGetBkColor(HWND hwnd) */
+#define HANDLE_TVM_GETBKCOLOR(hwnd, wParam, lParam, fn) \
+    (COLORREF)(fn)((hwnd))
+
+/* COLORREF TreeView_OnGetTextColor(HWND hwnd) */
+#define HANDLE_TVM_GETTEXTCOLOR(hwnd, wParam, lParam, fn) \
+    (COLORREF)(fn)((hwnd))
+
+/* UINT TreeView_OnSetScrollTime(HWND hwnd, UINT uTime) */
+#define HANDLE_TVM_SETSCROLLTIME(hwnd, wParam, lParam, fn) \
+    (UINT)(fn)((hwnd), (UINT)(wParam))
+
+/* UINT TreeView_OnGetScrollTime(HWND hwnd) */
+#define HANDLE_TVM_GETSCROLLTIME(hwnd, wParam, lParam, fn) \
+    (UINT)(fn)((hwnd))
+
+#if NTDDI_VERSION >= 0x06000000
+    /* INT TreeView_OnSetBorder(HWND hwnd, DWORD dwFlags, INT xBorder, INT yBorder) */
+    #define HANDLE_TVM_SETBORDER(hwnd, wParam, lParam, fn) \
+        (INT)(fn)((hwnd), (DWORD)(wParam), (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam))
+#endif
+
+/* COLORREF TreeView_OnSetInsertMarkColor(HWND hwnd, COLORREF clr) */
+#define HANDLE_TVM_SETINSERTMARKCOLOR(hwnd, wParam, lParam, fn) \
+    (COLORREF)(fn)((hwnd), (COLORREF)(lParam))
+
+/* COLORREF TreeView_OnGetInsertMarkColor(HWND hwnd) */
+#define HANDLE_TVM_GETINSERTMARKCOLOR(hwnd, wParam, lParam, fn) \
+    (COLORREF)(fn)((hwnd))
+
+/* UINT TreeView_OnGetItemState(HWND hwnd, HTREEITEM hti, UINT mask) */
+#define HANDLE_TVM_GETITEMSTATE(hwnd, wParam, lParam, fn) \
+    (UINT)(fn)((hwnd), (HTREEITEM)(wParam), (UINT)(lParam))
+
+/* COLORREF TreeView_OnSetLineColor(HWND hwnd, COLORREF clr) */
+#define HANDLE_TVM_SETLINECOLOR(hwnd, wParam, lParam, fn) \
+    (COLORREF)(fn)((hwnd), (COLORREF)(lParam))
+
+/* COLORREF TreeView_OnGetLineColor(HWND hwnd) */
+#define HANDLE_TVM_GETLINECOLOR(hwnd, wParam, lParam, fn) \
+    (COLORREF)(fn)((hwnd))
+
+/* HTREEITEM TreeView_OnMapAccIDToHTREEITEM(HWND hwnd, UINT id) */
+#define HANDLE_TVM_MAPACCIDTOHTREEITEM(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HTREEITEM)(fn)((hwnd), (UINT)(wParam))
+
+/* UINT TreeView_OnMapHTREEITEMToAccID(HWND hwnd, HTREEITEM htreeitem) */
+#define HANDLE_TVM_MAPHTREEITEMTOACCID(hwnd, wParam, lParam, fn) \
+    (UINT)(fn)((hwnd), (HTREEITEM)(wParam))
+
+#if NTDDI_VERSION >= 0x06000000
+    /* DWORD TreeView_OnSetExtendedStyle(HWND hwnd, DWORD dw, DWORD mask) */
+    #define HANDLE_TVM_SETEXTENDEDSTYLE(hwnd, wParam, lParam, fn) \
+        (DWORD)(fn)((hwnd), (DWORD)(wParam), (DWORD)(lParam))
+
+    /* DWORD TreeView_OnGetExtendedStyle(HWND hwnd) */
+    #define HANDLE_TVM_GETEXTENDEDSTYLE(hwnd, wParam, lParam, fn) \
+        (DWORD)(fn)((hwnd))
+#endif
+
+/* HTREEITEM TreeView_OnInsertItemW(HWND hwnd, LPTV_INSERTSTRUCTW lpis) */
+#define HANDLE_TVM_INSERTITEMW(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HTREEITEM)(fn)((hwnd), (LPTV_INSERTSTRUCTW)(lParam))
+
+#if NTDDI_VERSION >= 0x06000000
+    /* BOOL TreeView_OnSetHot(HWND hwnd, HTREEITEM hitem) */
+    #define HANDLE_TVM_SETHOT(hwnd, wParam, lParam, fn) \
+        (BOOL)(fn)((hwnd), (HTREEITEM)(lParam))
+
+    /* BOOL TreeView_OnSetAutoScrollInfo(HWND hwnd, UINT uPixPerSec, UINT uUpdateTime) */
+    #define HANDLE_TVM_SETAUTOSCROLLINFO(hwnd, wParam, lParam, fn) \
+        (BOOL)(fn)((hwnd), (UINT)(wParam), (UINT)(lParam))
+#endif
+
+/* BOOL TreeView_OnGetItemW(HWND hwnd, TV_ITEMW *pitem) */
+#define HANDLE_TVM_GETITEMW(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (TV_ITEMW *)(lParam))
+
+/* BOOL TreeView_OnSetItemW(HWND hwnd, const TV_ITEMW *pitem) */
+#define HANDLE_TVM_SETITEMW(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (const TV_ITEMW *)(lParam))
+
+/* BOOL TreeView_OnGetISearchStringW(HWND hwnd, LPWSTR lpsz) */
+#define HANDLE_TVM_GETISEARCHSTRINGW(hwnd, wParam, lParam, fn) \
+    (BOOL)(fn)((hwnd), (LPWSTR)(lParam))
+
+/* HWND TreeView_OnEditLabelW(HWND hwnd, HTREEITEM hitem) */
+#define HANDLE_TVM_EDITLABELW(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HWND)(fn)((hwnd), (HTREEITEM)(lParam))
+
+#if NTDDI_VERSION >= 0x06000000
+    /* DWORD TreeView_OnGetSelectedCount(HWND hwnd) */
+    #define HANDLE_TVM_GETSELECTEDCOUNT(hwnd, wParam, lParam, fn) \
+        (DWORD)(fn)((hwnd))
+
+    /* DWORD TreeView_OnShowInfoTip(HWND hwnd, HTREEITEM hitem) */
+    #define HANDLE_TVM_SHOWINFOTIP(hwnd, wParam, lParam, fn) \
+        (DWORD)(fn)((hwnd), (HTREEITEM)(lParam))
+
+    /* LRESULT TreeView_OnGetItemPartRect(HWND hwnd, WPARAM wParam, LPARAM lParam) */
+    #define HANDLE_TVM_GETITEMPARTRECT(hwnd, wParam, lParam, fn) \
+        (LRESULT)(fn)((hwnd), (wParam), (lParam))
+#endif
+
 #ifdef _UNDOCUSER_H     /* UNDOCUMENTED */
     /* LRESULT Cls_OnDropObject(HWND hwnd, WPARAM wParam, LPARAM lParam) */
     #ifndef HANDLE_WM_DROPOBJECT