1 /* 2 * PROJECT: ReactOS api tests 3 * LICENSE: GPL - See COPYING in the top level directory 4 * PURPOSE: Test for SetWindowTheme 5 * PROGRAMMERS: Giannis Adamopoulos 6 */ 7 8 #include <apitest.h> 9 #include <stdio.h> 10 #include <windows.h> 11 #include <uxtheme.h> 12 13 void TestParams(HWND hwnd) 14 { 15 HRESULT hr; 16 17 hr = SetWindowTheme(0, NULL, NULL); 18 ok (hr == E_HANDLE, "Expected E_HANDLE got 0x%lx error\n", hr); 19 20 hr = SetWindowTheme((HWND)(ULONG_PTR)0xdeaddeaddeaddeadULL, NULL, NULL); 21 ok (hr == E_HANDLE, "Expected E_HANDLE got 0x%lx error\n", hr); 22 23 hr = SetWindowTheme(hwnd, NULL, NULL); 24 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr); 25 26 hr = SetWindowTheme(hwnd, L"none", L"none"); 27 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr); 28 29 hr = SetWindowTheme(hwnd, NULL, L"none"); 30 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr); 31 32 hr = SetWindowTheme(hwnd, L"none", NULL); 33 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr); 34 35 hr = SetWindowTheme(hwnd, L"", L""); 36 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr); 37 } 38 39 void TestTheme(HWND hwnd) 40 { 41 HRESULT hr; 42 HTHEME htheme1, htheme2; 43 44 hr = SetWindowTheme(hwnd, NULL, NULL); 45 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr); 46 47 htheme1 = OpenThemeData(hwnd, L"Toolbar"); 48 if (IsThemeActive()) 49 ok (htheme1 != NULL, "OpenThemeData failed\n"); 50 else 51 skip("Theme not active\n"); 52 53 hr = SetWindowTheme(hwnd, L"", L""); 54 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr); 55 56 htheme2 = OpenThemeData(hwnd, L"Toolbar"); 57 ok (htheme2 == NULL, "Expected OpenThemeData to fail\n"); 58 59 hr = SetWindowTheme(hwnd, L"TrayNotify", L""); 60 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr); 61 62 htheme2 = OpenThemeData(hwnd, L"Toolbar"); 63 ok (htheme2 == NULL, "Expected OpenThemeData to fail\n"); 64 65 hr = SetWindowTheme(hwnd, L"TrayNotify", NULL); 66 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr); 67 68 htheme2 = OpenThemeData(hwnd, L"Toolbar"); 69 if (IsThemeActive()) 70 { 71 ok (htheme2 != NULL, "OpenThemeData failed\n"); 72 ok(htheme1 != htheme2, "Expected different theme data\n"); 73 } 74 else 75 { 76 skip("Theme not active\n"); 77 } 78 } 79 80 START_TEST(SetWindowTheme) 81 { 82 HWND hwnd; 83 84 hwnd = CreateWindowW(L"button", L"Test window", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 100, 200, 200, 0, NULL, NULL, NULL); 85 ok (hwnd != NULL, "Expected CreateWindowW to succeed\n"); 86 87 TestParams(hwnd); 88 TestTheme(hwnd); 89 90 DestroyWindow(hwnd); 91 }