From bad2e93524f376cfeb76d5231d4b08510bdad033 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Wed, 27 Oct 2021 14:42:32 -0500 Subject: Add more thmutil window messages to simplify handling control events. --- src/samples/thmviewer/thmviewer.cpp | 57 +++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 24 deletions(-) (limited to 'src/samples') diff --git a/src/samples/thmviewer/thmviewer.cpp b/src/samples/thmviewer/thmviewer.cpp index cffa3851..e593d6ad 100644 --- a/src/samples/thmviewer/thmviewer.cpp +++ b/src/samples/thmviewer/thmviewer.cpp @@ -52,6 +52,10 @@ static BOOL OnThemeLoadingControl( __in const THEME_LOADINGCONTROL_ARGS* pArgs, __in THEME_LOADINGCONTROL_RESULTS* pResults ); +static BOOL OnThemeControlWmNotify( + __in const THEME_CONTROLWMNOTIFY_ARGS* pArgs, + __in THEME_CONTROLWMNOTIFY_RESULTS* pResults + ); static void CALLBACK ThmviewerTraceError( __in_z LPCSTR szFile, __in int iLine, @@ -377,32 +381,11 @@ static LRESULT CALLBACK MainWndProc( ::PostQuitMessage(0); break; - case WM_NOTIFY: - { - NMHDR* pnmhdr = reinterpret_cast(lParam); - switch (pnmhdr->code) - { - case TVN_SELCHANGEDW: - { - NMTREEVIEWW* ptv = reinterpret_cast(lParam); - ::PostThreadMessageW(vdwDisplayThreadId, WM_THMVWR_SHOWPAGE, SW_HIDE, ptv->itemOld.lParam); - ::PostThreadMessageW(vdwDisplayThreadId, WM_THMVWR_SHOWPAGE, SW_SHOW, ptv->itemNew.lParam); - } - break; - - //case NM_DBLCLK: - // TVITEM item = { }; - // item.mask = TVIF_PARAM; - // item.hItem = TreeView_GetSelection(pnmhdr->hwndFrom); - // TreeView_GetItem(pnmhdr->hwndFrom, &item); - // ::PostThreadMessageW(vdwDisplayThreadId, WM_THMVWR_SHOWPAGE, SW_SHOW, item.lParam); - // return 1; - } - } - break; - case WM_THMUTIL_LOADING_CONTROL: return OnThemeLoadingControl(reinterpret_cast(wParam), reinterpret_cast(lParam)); + + case WM_THMUTIL_CONTROL_WM_NOTIFY: + return OnThemeControlWmNotify(reinterpret_cast(wParam), reinterpret_cast(lParam)); } return ThemeDefWindowProc(vpTheme, hWnd, uMsg, wParam, lParam); @@ -558,3 +541,29 @@ static BOOL OnThemeLoadingControl( pResults->hr = S_OK; return TRUE; } + +static BOOL OnThemeControlWmNotify( + __in const THEME_CONTROLWMNOTIFY_ARGS* pArgs, + __in THEME_CONTROLWMNOTIFY_RESULTS* /*pResults*/ + ) +{ + BOOL fProcessed = FALSE; + + switch (pArgs->lParam->code) + { + case TVN_SELCHANGEDW: + switch (pArgs->pThemeControl->wId) + { + case THMVWR_CONTROL_TREE: + NMTREEVIEWW* ptv = reinterpret_cast(pArgs->lParam); + ::PostThreadMessageW(vdwDisplayThreadId, WM_THMVWR_SHOWPAGE, SW_HIDE, ptv->itemOld.lParam); + ::PostThreadMessageW(vdwDisplayThreadId, WM_THMVWR_SHOWPAGE, SW_SHOW, ptv->itemNew.lParam); + + fProcessed = TRUE; + break; + } + break; + } + + return fProcessed; +} -- cgit v1.2.3-55-g6feb