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
TestParams(HWND hwnd)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
TestTheme(HWND hwnd)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
START_TEST(SetWindowTheme)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 }
92