2 * PROJECT: ReactOS api tests
3 * LICENSE: GPL - See COPYING in the top level directory
4 * PURPOSE: Test for toolbar window class v6
5 * PROGRAMMERS: Giannis Adamopoulos
13 #include <undocuser.h>
15 #include <user32testhelpers.h>
17 HANDLE
_CreateV5ActCtx()
19 ACTCTXW ActCtx
= {sizeof(ACTCTX
)};
20 WCHAR buffer
[MAX_PATH
] , *separator
;
22 ok (GetModuleFileNameW(NULL
, buffer
, MAX_PATH
), "GetModuleFileName failed\n");
23 separator
= wcsrchr(buffer
, L
'\\');
25 wcscpy(separator
+ 1, L
"comctl32v5.manifest");
27 ActCtx
.lpSource
= buffer
;
29 return CreateActCtxW(&ActCtx
);;
33 void TestVersionMessage()
38 hwnd
= CreateWindowExW(0, TOOLBARCLASSNAMEW
, L
"Test", 0, 0, 0, 0, 0, 0, 0, 0, NULL
);
39 ok(hwnd
!= NULL
, "CreateWindowEx failed\n");
41 version
= SendMessageW(hwnd
, CCM_GETVERSION
, 0, 0);
42 ok(version
== 6, "Got %d, expected 6\n", version
);
44 version
= SendMessageW(hwnd
, CCM_SETVERSION
, 5, 0);
45 ok(version
== 6, "Got %d, expected 6\n", version
);
47 version
= SendMessageW(hwnd
, CCM_GETVERSION
, 0, 0);
48 ok(version
== 6, "Got %d, expected 6\n", version
);
50 version
= SendMessageW(hwnd
, CCM_SETVERSION
, 7, 0);
51 ok(version
== 6, "Got %d, expected 6\n", version
);
53 version
= SendMessageW(hwnd
, CCM_GETVERSION
, 0, 0);
54 ok(version
== 6, "Got %d, expected 6\n", version
);
56 version
= SendMessageW(hwnd
, CCM_SETVERSION
, 4, 0);
57 ok(version
== 6, "Got %d, expected 6\n", version
);
59 version
= SendMessageW(hwnd
, CCM_GETVERSION
, 0, 0);
60 ok(version
== 6, "Got %d, expected 6\n", version
);
65 void TestSetButtonSize()
70 hwnd
= CreateWindowExW(0, TOOLBARCLASSNAMEW
, L
"Test", 0, 0, 0, 0, 0, 0, 0, 0, NULL
);
71 ok(hwnd
!= NULL
, "CreateWindowEx failed\n");
73 bsize
= SendMessageW(hwnd
, TB_GETBUTTONSIZE
, 0, 0);
74 ok(bsize
== 0x160017, "Expected 0x160017 got %lx\n", bsize
);
76 SendMessageW(hwnd
, TB_SETBUTTONSIZE
, 0, MAKELONG(0, 0));
77 bsize
= SendMessageW(hwnd
, TB_GETBUTTONSIZE
, 0, 0);
78 ok(bsize
== 0x160018, "Expected 0x160018 got %lx\n", bsize
);
80 SendMessageW(hwnd
, TB_SETBUTTONSIZE
, 0, 0x10001);
81 bsize
= SendMessageW(hwnd
, TB_GETBUTTONSIZE
, 0, 0);
82 ok(bsize
== 0x160017, "Expected 0x160017 got %lx\n", bsize
);
84 SendMessageW(hwnd
, TB_SETBUTTONSIZE
, 0, 0x100001);
85 bsize
= SendMessageW(hwnd
, TB_GETBUTTONSIZE
, 0, 0);
86 ok(bsize
== 0x160017, "Expected 0x160017 got %lx\n", bsize
);
88 SendMessageW(hwnd
, TB_SETBUTTONSIZE
, 0, 0x160017);
89 bsize
= SendMessageW(hwnd
, TB_GETBUTTONSIZE
, 0, 0);
90 ok(bsize
== 0x160017, "Expected 0x160017 got %lx\n", bsize
);
92 SendMessageW(hwnd
, TB_SETBUTTONSIZE
, 0, 0x170017);
93 bsize
= SendMessageW(hwnd
, TB_GETBUTTONSIZE
, 0, 0);
94 ok(bsize
== 0x170017, "Expected 0x170017 got %lx\n", bsize
);
104 hwnd
= CreateWindowExW(0, TOOLBARCLASSNAMEW
, L
"Test", 0, 0, 0, 0, 0, 0, 0, 0, NULL
);
105 ok(hwnd
!= NULL
, "CreateWindowEx failed\n");
107 bsize
= SendMessageW(hwnd
, TB_GETPADDING
, 0, 0);
108 ok(bsize
== 0x60007, "Expected 0x60007 got %lx\n", bsize
);
110 SendMessageW(hwnd
, TB_SETPADDING
, 0, 0x10001);
111 SendMessageW(hwnd
, TB_SETBITMAPSIZE
, 0, 0x10001);
112 SendMessageW(hwnd
, TB_SETBUTTONSIZE
, 0, 0x10001);
114 bsize
= SendMessageW(hwnd
, TB_GETPADDING
, 0, 0);
115 ok(bsize
== 0x10001, "Expected 0x10001 got %lx\n", bsize
);
117 bsize
= SendMessageW(hwnd
, TB_GETBUTTONSIZE
, 0, 0);
118 ok(bsize
== 0x20002, "Expected 0x20002 got %lx\n", bsize
);
120 #if 0 /* Luna specific */
121 SetWindowTheme(hwnd
, L
"TaskBand", NULL
);
123 bsize
= SendMessageW(hwnd
, TB_GETBUTTONSIZE
, 0, 0);
124 ok(bsize
== 0x20002, "Expected 0x20002 got %lx\n", bsize
);
126 bsize
= SendMessageW(hwnd
, TB_GETPADDING
, 0, 0);
127 ok(bsize
== 0x10001, "Expected 0x10001 got %lx\n", bsize
);
129 SendMessageW(hwnd
, TB_SETBUTTONSIZE
, 0, 0x10001);
131 bsize
= SendMessageW(hwnd
, TB_GETBUTTONSIZE
, 0, 0);
132 ok(bsize
== 0x160006, "Expected 0x160006 got %lx\n", bsize
);
134 bsize
= SendMessageW(hwnd
, TB_GETPADDING
, 0, 0);
135 ok(bsize
== 0x10001, "Expected 0x10001 got %lx\n", bsize
);
137 SendMessageW(hwnd
, TB_SETPADDING
, 0, 0x10001);
138 SendMessageW(hwnd
, TB_SETBITMAPSIZE
, 0, 0x10001);
139 SendMessageW(hwnd
, TB_SETBUTTONSIZE
, 0, 0x10001);
141 bsize
= SendMessageW(hwnd
, TB_GETPADDING
, 0, 0);
142 ok(bsize
== 0x10001, "Expected 0x10001 got %lx\n", bsize
);
144 bsize
= SendMessageW(hwnd
, TB_GETBUTTONSIZE
, 0, 0);
145 ok(bsize
== 0x160006, "Expected 0x160006 got %lx\n", bsize
);
147 SendMessageW(hwnd
, TB_SETBITMAPSIZE
, 0, 0x10001);
148 SendMessageW(hwnd
, TB_SETPADDING
, 0, 0x20002);
149 SendMessageW(hwnd
, TB_SETBUTTONSIZE
, 0, 0x10001);
151 bsize
= SendMessageW(hwnd
, TB_GETBUTTONSIZE
, 0, 0);
152 ok(bsize
== 0x170007, "Expected 0x170007 got %lx\n", bsize
);
154 SendMessageW(hwnd
, TB_SETBITMAPSIZE
, 0, 0x20002);
155 SendMessageW(hwnd
, TB_SETPADDING
, 0, 0x20002);
156 SendMessageW(hwnd
, TB_SETBUTTONSIZE
, 0, 0x10001);
158 bsize
= SendMessageW(hwnd
, TB_GETBUTTONSIZE
, 0, 0);
159 ok(bsize
== 0x170008, "Expected 0x170008 got %lx\n", bsize
);
161 SendMessageW(hwnd
, TB_SETBITMAPSIZE
, 0, 0x100010);
162 SendMessageW(hwnd
, TB_SETPADDING
, 0, 0x20002);
163 SendMessageW(hwnd
, TB_SETBUTTONSIZE
, 0, 0x10001);
165 bsize
= SendMessageW(hwnd
, TB_GETBUTTONSIZE
, 0, 0);
167 /* With a big enough image size the button size is bitmap size + pading + theme content margins */
168 ok(bsize
== 0x1a0016, "Expected 0x1a0016 got %lx\n", bsize
);
174 void TestButtonSpacing()
180 hwnd
= CreateWindowExW(0, TOOLBARCLASSNAMEW
, L
"Test", 0, 0, 0, 0, 0, 0, 0, 0, NULL
);
181 ok(hwnd
!= NULL
, "CreateWindowEx failed\n");
183 memset(&metrics
, 0, sizeof(metrics
));
184 lres
= SendMessageW(hwnd
, TB_GETMETRICS
, 0, (LPARAM
)&metrics
);
185 ok (lres
== 0, "Got %d result\n", (int)lres
);
186 ok (metrics
.dwMask
== 0, "Got %lu\n", metrics
.dwMask
);
187 ok (metrics
.cxPad
== 0, "Got %d\n", metrics
.cxPad
);
189 metrics
.cbSize
= sizeof(metrics
);
190 metrics
.dwMask
= TBMF_PAD
|TBMF_BARPAD
|TBMF_BUTTONSPACING
;
191 lres
= SendMessageW(hwnd
, TB_GETMETRICS
, 0, (LPARAM
)&metrics
);
192 ok (lres
== 0, "Got %lu result\n", lres
);
193 ok (metrics
.dwMask
== (TBMF_PAD
|TBMF_BARPAD
|TBMF_BUTTONSPACING
), "Got %lu\n", metrics
.dwMask
);
194 ok (metrics
.cxPad
== 7, "Got %d\n", metrics
.cxPad
);
195 ok (metrics
.cyPad
== 6, "Got %d\n", metrics
.cyPad
);
196 ok (metrics
.cxButtonSpacing
== 0, "Got %d\n", metrics
.cxButtonSpacing
);
197 ok (metrics
.cyButtonSpacing
== 0, "Got %d\n", metrics
.cyButtonSpacing
);
200 void TestV5VersionMessage()
205 hwnd
= CreateWindowExW(0, TOOLBARCLASSNAMEW
, L
"Test", 0, 0, 0, 0, 0, 0, 0, 0, NULL
);
206 ok(hwnd
!= NULL
, "CreateWindowEx failed\n");
208 version
= SendMessageW(hwnd
, CCM_GETVERSION
, 0, 0);
209 ok(version
== 0, "Got %d, expected 0\n", version
);
211 version
= SendMessageW(hwnd
, CCM_SETVERSION
, 6, 0);
212 ok(version
== -1, "Got %d, expected -1\n", version
);
214 version
= SendMessageW(hwnd
, CCM_SETVERSION
, 7, 0);
215 ok(version
== -1, "Got %d, expected -1\n", version
);
217 version
= SendMessageW(hwnd
, CCM_SETVERSION
, 5, 0);
218 ok(version
== 0, "Got %d, expected -1\n", version
);
220 version
= SendMessageW(hwnd
, CCM_GETVERSION
, 0, 0);
221 ok(version
== 5, "Got %d, expected 5\n", version
);
223 version
= SendMessageW(hwnd
, CCM_SETVERSION
, 4, 0);
224 ok(version
== 5, "Got %d, expected -1\n", version
);
226 version
= SendMessageW(hwnd
, CCM_GETVERSION
, 0, 0);
227 ok(version
== 4, "Got %d, expected 5\n", version
);
229 version
= SendMessageW(hwnd
, CCM_SETVERSION
, 3, 0);
230 ok(version
== 4, "Got %d, expected -1\n", version
);
232 version
= SendMessageW(hwnd
, CCM_GETVERSION
, 0, 0);
233 ok(version
== 3, "Got %d, expected 5\n", version
);
242 LoadLibraryW(L
"comctl32.dll");
244 TestVersionMessage();
249 hV5ActCtx
= _CreateV5ActCtx();
250 ok (hV5ActCtx
!= INVALID_HANDLE_VALUE
, "CreateActCtxW failed\n");
254 BOOL bActivated
= ActivateActCtx(hV5ActCtx
, &cookie
);
257 TestV5VersionMessage();
258 DeactivateActCtx(0, cookie
);