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 ok (htheme1 != NULL, "OpenThemeData failed\n"); 49 50 hr = SetWindowTheme(hwnd, L"", L""); 51 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr); 52 53 htheme2 = OpenThemeData(hwnd, L"Toolbar"); 54 ok (htheme2 == NULL, "Expected OpenThemeData to fail\n"); 55 56 hr = SetWindowTheme(hwnd, L"TrayNotify", L""); 57 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr); 58 59 htheme2 = OpenThemeData(hwnd, L"Toolbar"); 60 ok (htheme2 == NULL, "Expected OpenThemeData to fail\n"); 61 62 hr = SetWindowTheme(hwnd, L"TrayNotify", NULL); 63 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr); 64 65 htheme2 = OpenThemeData(hwnd, L"Toolbar"); 66 ok (htheme2 != NULL, "OpenThemeData failed\n"); 67 68 ok(htheme1 != htheme2, "Expected different theme data\n"); 69 } 70 71 START_TEST(SetWindowTheme) 72 { 73 HWND hwnd; 74 75 hwnd = CreateWindowW(L"button", L"Test window", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 100, 200, 200, 0, NULL, NULL, NULL); 76 ok (hwnd != NULL, "Expected CreateWindowW to succeed\n"); 77 78 TestParams(hwnd); 79 TestTheme(hwnd); 80 }