diff options
Diffstat (limited to 'src/samples/thmviewer/display.cpp')
-rw-r--r-- | src/samples/thmviewer/display.cpp | 58 |
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 | ); |
24 | static BOOL DisplayOnCreate( | 24 | static 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 | ||
325 | static BOOL DisplayOnCreate( | 321 | static 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 | ||
352 | LExit: | 343 | LExit: |
353 | return SUCCEEDED(hr); | 344 | results->hr = hr; |
345 | return TRUE; | ||
354 | } | 346 | } |