aboutsummaryrefslogtreecommitdiff
path: root/src/samples/thmviewer/display.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/samples/thmviewer/display.cpp')
-rw-r--r--src/samples/thmviewer/display.cpp58
1 files changed, 25 insertions, 33 deletions
diff --git a/src/samples/thmviewer/display.cpp b/src/samples/thmviewer/display.cpp
index c0e6c7e1..e64f79c6 100644
--- a/src/samples/thmviewer/display.cpp
+++ b/src/samples/thmviewer/display.cpp
@@ -21,9 +21,10 @@ static LRESULT CALLBACK DisplayWndProc(
21 __in WPARAM wParam, 21 __in WPARAM wParam,
22 __in LPARAM lParam 22 __in LPARAM lParam
23 ); 23 );
24static BOOL DisplayOnCreate( 24static BOOL DisplayOnThmLoadedControl(
25 __in THEME* pTheme, 25 __in THEME* pTheme,
26 __in HWND hWnd 26 __in const THEME_LOADEDCONTROL_ARGS* args,
27 __in THEME_LOADEDCONTROL_RESULTS* results
27 ); 28 );
28 29
29 30
@@ -270,13 +271,6 @@ static LRESULT CALLBACK DisplayWndProc(
270 } 271 }
271 break; 272 break;
272 273
273 case WM_CREATE:
274 if (!DisplayOnCreate(pHandleTheme->pTheme, hWnd))
275 {
276 return -1;
277 }
278 break;
279
280 case WM_TIMER: 274 case WM_TIMER:
281 if (!lParam && SUCCEEDED(ThemeSetProgressControl(pHandleTheme->pTheme, wParam, dwProgress))) 275 if (!lParam && SUCCEEDED(ThemeSetProgressControl(pHandleTheme->pTheme, wParam, dwProgress)))
282 { 276 {
@@ -308,47 +302,45 @@ static LRESULT CALLBACK DisplayWndProc(
308 } 302 }
309 break; 303 break;
310 304
311 case WM_DESTROY:
312 ThemeUnloadControls(pHandleTheme->pTheme);
313 ::PostQuitMessage(0);
314 break;
315
316 case WM_NCDESTROY: 305 case WM_NCDESTROY:
317 DecrementHandleTheme(pHandleTheme); 306 DecrementHandleTheme(pHandleTheme);
318 ::SetWindowLongPtrW(hWnd, GWLP_USERDATA, 0); 307 ::SetWindowLongPtrW(hWnd, GWLP_USERDATA, 0);
308 ::PostQuitMessage(0);
319 break; 309 break;
310
311 case WM_THMUTIL_LOADED_CONTROL:
312 if (pHandleTheme)
313 {
314 return DisplayOnThmLoadedControl(pHandleTheme->pTheme, reinterpret_cast<THEME_LOADEDCONTROL_ARGS*>(wParam), reinterpret_cast<THEME_LOADEDCONTROL_RESULTS*>(lParam));
315 }
320 } 316 }
321 317
322 return ThemeDefWindowProc(pHandleTheme ? pHandleTheme->pTheme : NULL, hWnd, uMsg, wParam, lParam); 318 return ThemeDefWindowProc(pHandleTheme ? pHandleTheme->pTheme : NULL, hWnd, uMsg, wParam, lParam);
323} 319}
324 320
325static BOOL DisplayOnCreate( 321static BOOL DisplayOnThmLoadedControl(
326 __in THEME* pTheme, 322 __in THEME* pTheme,
327 __in HWND hWnd 323 __in const THEME_LOADEDCONTROL_ARGS* args,
324 __in THEME_LOADEDCONTROL_RESULTS* results
328 ) 325 )
329{ 326{
330 HRESULT hr = S_OK; 327 HRESULT hr = S_OK;
331 328 const THEME_CONTROL* pControl = args->pThemeControl;
332 hr = ThemeLoadControls(pTheme);
333 ExitOnFailure(hr, "Failed to load theme controls");
334 329
335 // Pre-populate some control types with data. 330 // Pre-populate some control types with data.
336 for (DWORD i = 0; i < pTheme->cControls; ++i) 331 if (THEME_CONTROL_TYPE_RICHEDIT == pControl->type)
337 { 332 {
338 THEME_CONTROL* pControl = pTheme->rgControls + i; 333 hr = ThemeLoadRichEditFromResource(pTheme, pControl->wId, MAKEINTRESOURCEA(THMVWR_RES_RICHEDIT_FILE), ::GetModuleHandleW(NULL));
339 if (THEME_CONTROL_TYPE_RICHEDIT == pControl->type) 334 ExitOnFailure(hr, "Failed to load richedit text.");
340 { 335 }
341 hr = ThemeLoadRichEditFromResource(pTheme, pControl->wId, MAKEINTRESOURCEA(THMVWR_RES_RICHEDIT_FILE), ::GetModuleHandleW(NULL)); 336 else if (THEME_CONTROL_TYPE_PROGRESSBAR == pControl->type)
342 ExitOnFailure(hr, "Failed to load richedit text."); 337 {
343 } 338 DWORD dwId = ::SetTimer(pTheme->hwndParent, pControl->wId, 500, NULL);
344 else if (THEME_CONTROL_TYPE_PROGRESSBAR == pControl->type) 339 dwId = dwId; // prevents warning in "ship" build.
345 { 340 Assert(dwId == pControl->wId);
346 DWORD dwId = ::SetTimer(hWnd, pControl->wId, 500, NULL);
347 dwId = dwId; // prevents warning in "ship" build.
348 Assert(dwId == pControl->wId);
349 }
350 } 341 }
351 342
352LExit: 343LExit:
353 return SUCCEEDED(hr); 344 results->hr = hr;
345 return TRUE;
354} 346}