1 /*
2 * PROJECT: ReactOS API tests
3 * LICENSE: LGPL-2.1+ (https://spdx.org/licenses/LGPL-2.1+)
4 * PURPOSE: Test for RedrawWindow
5 * COPYRIGHT: Copyright 2018 Thomas Faber <thomas.faber@reactos.org>
6 * Copyright 2024 Tomáš Veselý <turican0@gmail.com>
7 */
8
9 #include "precomp.h"
10
11 static DWORD dwThreadId;
12 static BOOL got_paint;
13
14 BOOL resultWmEraseGnd = FALSE;
15 BOOL resultWmNcPaint = FALSE;
16 int paintIndex = 0;
17 const wchar_t CHILD_CLASS_NAME[] = L"ChildWindowClass";
18
19 static
20 LRESULT
21 CALLBACK
WndProc(_In_ HWND hWnd,_In_ UINT message,_In_ WPARAM wParam,_In_ LPARAM lParam)22 WndProc(
23 _In_ HWND hWnd,
24 _In_ UINT message,
25 _In_ WPARAM wParam,
26 _In_ LPARAM lParam)
27 {
28 disable_success_count
29 ok(GetCurrentThreadId() == dwThreadId, "Thread 0x%lx instead of 0x%lx\n", GetCurrentThreadId(), dwThreadId);
30 if (message == WM_PAINT)
31 {
32 got_paint = TRUE;
33 }
34 return DefWindowProcW(hWnd, message, wParam, lParam);
35 }
36
GetMessageRedrawWindowTest()37 void GetMessageRedrawWindowTest()
38 {
39 HWND hWnd;
40 MSG msg;
41 HRGN hRgn;
42 BOOL ret;
43 int i;
44
45 SetCursorPos(0,0);
46
47 dwThreadId = GetCurrentThreadId();
48 RegisterSimpleClass(WndProc, L"CreateTest");
49
50 hWnd = CreateWindowExW(0, L"CreateTest", NULL, 0, 10, 10, 20, 20, NULL, NULL, 0, NULL);
51 ok(hWnd != NULL, "CreateWindow failed\n");
52
53 ShowWindow(hWnd, SW_SHOW);
54
55 while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE ))
56 {
57 DispatchMessageA( &msg );
58 }
59
60 ok(got_paint == TRUE, "Did not process WM_PAINT message\n");
61 got_paint = FALSE;
62
63 hRgn = CreateRectRgn(0, 0, 1, 1);
64 ok(hRgn != NULL, "CreateRectRgn failed\n");
65 ret = RedrawWindow(hWnd, NULL, hRgn, RDW_INTERNALPAINT | RDW_INVALIDATE);
66 ok(ret == TRUE, "RedrawWindow failed\n");
67
68 i = 0;
69 while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE ))
70 {
71 RECORD_MESSAGE(1, msg.message, POST, 0, 0);
72 if (msg.message == WM_PAINT)
73 {
74 i++;
75 if (i == 10)
76 {
77 ok(got_paint == FALSE, "Received unexpected WM_PAINT message\n");
78 }
79 }
80 if (msg.message != WM_PAINT || i >= 10)
81 {
82 DispatchMessageA( &msg );
83 }
84 }
85
86 ok(i == 10, "Received %d WM_PAINT messages\n", i);
87 ok(got_paint == TRUE, "Did not process WM_PAINT message\n");
88
89 TRACE_CACHE();
90
91 DeleteObject(hRgn);
92 DestroyWindow(hWnd);
93 }
94
DrawContent(HDC hdc,RECT * rect,COLORREF color)95 void DrawContent(HDC hdc, RECT* rect, COLORREF color)
96 {
97 HBRUSH hBrush = CreateSolidBrush(color);
98 FillRect(hdc, rect, hBrush);
99 DeleteObject(hBrush);
100
101 SetBkMode(hdc, TRANSPARENT);
102 SetTextColor(hdc, RGB(255, 255, 255));
103 DrawTextW(hdc, L"Test RedrawWindow", -1, rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
104 }
105
WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)106 LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
107 {
108 switch (uMsg)
109 {
110 case WM_DESTROY:
111 {
112 PostQuitMessage(0);
113 return 0;
114 }
115 case WM_PAINT:
116 {
117 PAINTSTRUCT ps;
118 HDC hdc = BeginPaint(hwnd, &ps);
119 RECT rect;
120 GetClientRect(hwnd, &rect);
121 DrawContent(hdc, &rect, RGB(0, 255, 0));
122 EndPaint(hwnd, &ps);
123 paintIndex++;
124 return 0;
125 }
126 case WM_ERASEBKGND:
127 {
128 if(paintIndex != 0)
129 resultWmEraseGnd = TRUE;
130 return 0;
131 }
132 case WM_NCPAINT:
133 {
134 if (paintIndex != 0)
135 resultWmNcPaint = TRUE;
136 return 0;
137 }
138 }
139 return DefWindowProc(hwnd, uMsg, wParam, lParam);
140 }
141
ChildWindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)142 LRESULT CALLBACK ChildWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
143 {
144 switch (uMsg) {
145 case WM_SYNCPAINT:
146 {
147 PAINTSTRUCT ps;
148 HDC hdc = BeginPaint(hwnd, &ps);
149 HBRUSH brush = CreateSolidBrush(RGB(0, 0, 255));
150 FillRect(hdc, &ps.rcPaint, brush);
151 DeleteObject(brush);
152 EndPaint(hwnd, &ps);
153 break;
154 }
155 case WM_PAINT:
156 {
157 PAINTSTRUCT ps;
158 HDC hdc = BeginPaint(hwnd, &ps);
159 HBRUSH brush = CreateSolidBrush(RGB(0, 0, 255));
160 FillRect(hdc, &ps.rcPaint, brush);
161 DeleteObject(brush);
162 EndPaint(hwnd, &ps);
163 break;
164 }
165 case WM_DESTROY:
166 {
167 PostQuitMessage(0);
168 return 0;
169 }
170 }
171 return DefWindowProc(hwnd, uMsg, wParam, lParam);
172 }
173
174 typedef struct STRUCT_TestRedrawWindow
175 {
176 const wchar_t* testName;
177 DWORD flags;
178 BOOL useRegion;
179 RECT regRect;
180 BOOL useRect;
181 RECT rectRect;
182 BOOL forcePaint;
183 BOOL redrawResult;
184 int testPixelPre1x;
185 int testPixelPre1y;
186 int testPixelPre2x;
187 int testPixelPre2y;
188 int testPixelPost1x;
189 int testPixelPost1y;
190 int testPixelPost2x;
191 int testPixelPost2y;
192 int testChild;
193 COLORREF resultColorPre1;
194 COLORREF resultColorPre2;
195 COLORREF resultColorPost1;
196 COLORREF resultColorPost2;
197 RECT resultUpdateRect;
198 BOOL resultNeedsUpdate;
199 BOOL resultRedraw;
200 BOOL resultWmEraseGnd;
201 BOOL resultWmNcPaint;
202 int resultPaintIndex;
203 } STRUCT_TestRedrawWindow;
204
205 typedef struct STRUCT_TestRedrawWindowCompare
206 {
207 COLORREF resultColorPre1;
208 COLORREF resultColorPre2;
209 COLORREF resultColorPost1;
210 COLORREF resultColorPost2;
211 RECT resultUpdateRect;
212 BOOL resultNeedsUpdate;
213 BOOL resultWmEraseGnd;
214 BOOL resultWmNcPaint;
215 int resultPaintIndex;
216 } STRUCT_TestRedrawWindowCompare;
217
ServeSomeMessages(int messageTime,int messageCount)218 void ServeSomeMessages(int messageTime, int messageCount)
219 {
220 DWORD startTime;
221
222 MSG msg = { 0 };
223 startTime = GetTickCount();
224 while (GetTickCount() - startTime < messageTime * messageCount)
225 {
226 if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
227 {
228 TranslateMessage(&msg);
229 DispatchMessage(&msg);
230 }
231 else
232 {
233 Sleep(messageTime);
234 }
235 }
236 }
237
TestRedrawWindow(STRUCT_TestRedrawWindow * ptestRW)238 void TestRedrawWindow(STRUCT_TestRedrawWindow* ptestRW) {
239 DWORD style;
240 int width;
241 int height;
242 HWND hChildWnd = NULL;
243 HRGN RgnUpdate;
244 RECT* prect;
245
246 resultWmEraseGnd = FALSE;
247 resultWmNcPaint = FALSE;
248 paintIndex = 0;
249
250 WNDCLASSW wc = { 0 };
251 wc.lpfnWndProc = WindowProc;
252 wc.hInstance = GetModuleHandle(NULL);
253 wc.lpszClassName = ptestRW->testName;
254 RegisterClassW(&wc);
255 RECT rectWin = { 0, 0, 800, 600 };
256 style = WS_OVERLAPPEDWINDOW;
257 AdjustWindowRectEx(&rectWin, style, FALSE, 0);
258 width = rectWin.right - rectWin.left;
259 height = rectWin.bottom - rectWin.top;
260 HWND hwnd = CreateWindowExW(0, wc.lpszClassName, wc.lpszClassName, WS_OVERLAPPEDWINDOW,
261 CW_USEDEFAULT, CW_USEDEFAULT, width, height, NULL, NULL, GetModuleHandle(NULL), NULL);
262 if (hwnd == NULL)
263 return;
264
265 ShowWindow(hwnd, SW_SHOW);
266 if(!ptestRW->testChild)
267 UpdateWindow(hwnd);
268
269 if (ptestRW->testChild)
270 {
271 WNDCLASSW wcChild = { 0 };
272 wcChild.lpfnWndProc = ChildWindowProc;
273 wcChild.hInstance = GetModuleHandle(NULL);
274 wcChild.lpszClassName = CHILD_CLASS_NAME;
275 RegisterClassW(&wcChild);
276
277 hChildWnd = CreateWindowExW(
278 0,
279 CHILD_CLASS_NAME,
280 L"Child Window",
281 WS_CHILD | WS_VISIBLE,
282 10, 10, 200, 200,
283 hwnd,
284 NULL,
285 GetModuleHandle(NULL),
286 NULL
287 );
288 }
289
290 HDC hdc = GetDC(hwnd);
291 RECT drect = { 0, 0, 800, 600 };
292 DrawContent(hdc, &drect, RGB(255, 0, 0));
293 ReleaseDC(hwnd, hdc);
294
295 RgnUpdate = NULL;
296 if (ptestRW->useRegion)
297 {
298 RgnUpdate = CreateRectRgn(ptestRW->regRect.left, ptestRW->regRect.top, ptestRW->regRect.right, ptestRW->regRect.bottom);
299 }
300
301 prect=NULL;
302 if (ptestRW->useRect)
303 {
304 prect = &ptestRW->rectRect;
305 }
306
307 if (ptestRW->testChild)
308 {
309 ServeSomeMessages(10, 10);
310 }
311
312 ptestRW->resultRedraw = RedrawWindow(hwnd, prect, RgnUpdate, ptestRW->flags);
313
314 if (ptestRW->testChild)
315 {
316 ServeSomeMessages(10, 10);
317 }
318
319 hdc = GetDC(hwnd);
320 ptestRW->resultColorPre1 = GetPixel(hdc, ptestRW->testPixelPre1x, ptestRW->testPixelPre1y);
321 ptestRW->resultColorPre2 = GetPixel(hdc, ptestRW->testPixelPre2x, ptestRW->testPixelPre2y);
322 ReleaseDC(hwnd, hdc);
323
324 ptestRW->resultNeedsUpdate = GetUpdateRect(hwnd, &ptestRW->resultUpdateRect, FALSE);
325
326 if (ptestRW->forcePaint)
327 {
328 UpdateWindow(hwnd);
329 }
330
331 hdc = GetDC(hwnd);
332 ptestRW->resultColorPost1 = GetPixel(hdc, ptestRW->testPixelPost1x, ptestRW->testPixelPost1y);
333 ptestRW->resultColorPost2 = GetPixel(hdc, ptestRW->testPixelPost2x, ptestRW->testPixelPost2y);
334 ReleaseDC(hwnd, hdc);
335
336 ptestRW->resultWmEraseGnd = resultWmEraseGnd;
337 ptestRW->resultWmNcPaint = resultWmNcPaint;
338 ptestRW->resultPaintIndex = paintIndex;
339
340 if (RgnUpdate) DeleteObject(RgnUpdate);
341
342 if (hChildWnd != NULL)
343 DestroyWindow(hChildWnd);
344 if (hwnd != NULL)
345 DestroyWindow(hwnd);
346 }
347
TestRedrawWindow2(STRUCT_TestRedrawWindow * ptestRW,STRUCT_TestRedrawWindowCompare * ptestRWcompare)348 UINT TestRedrawWindow2(STRUCT_TestRedrawWindow* ptestRW, STRUCT_TestRedrawWindowCompare* ptestRWcompare)
349 {
350 UINT countErrors = 0;
351
352 TestRedrawWindow(ptestRW);
353
354 if (ptestRW->resultRedraw)
355 {
356 if (ptestRWcompare->resultColorPre1 != ptestRW->resultColorPre1)
357 {
358 trace("DIFFERENCE-resultColorPre1 0x%06x 0x%06x\n", (int)ptestRW->resultColorPre1, (int)ptestRWcompare->resultColorPre1);
359 countErrors++;
360 }
361 if (ptestRWcompare->resultColorPre2 != ptestRW->resultColorPre2)
362 {
363 trace("DIFFERENCE-resultColorPre2 0x%06x 0x%06x\n", (int)ptestRW->resultColorPre2, (int)ptestRWcompare->resultColorPre2);
364 countErrors++;
365 }
366 if (ptestRWcompare->resultColorPost1 != ptestRW->resultColorPost1)
367 {
368 trace("DIFFERENCE-resultColorPost1 0x%06x 0x%06x\n", (int)ptestRW->resultColorPost1, (int)ptestRWcompare->resultColorPost1);
369 countErrors++;
370 }
371 if (ptestRWcompare->resultColorPost2 != ptestRW->resultColorPost2)
372 {
373 trace("DIFFERENCE-resultColorPost2 0x%06x 0x%06x\n", (int)ptestRW->resultColorPost2, (int)ptestRWcompare->resultColorPost2);
374 countErrors++;
375 }
376 if (ptestRWcompare->resultNeedsUpdate != ptestRW->resultNeedsUpdate)
377 {
378 trace("DIFFERENCE-resultNeedsUpdate %d %d\n", ptestRW->resultNeedsUpdate, ptestRWcompare->resultNeedsUpdate);
379 countErrors++;
380 }
381 if (ptestRW->resultNeedsUpdate)
382 {
383 if (ptestRWcompare->resultUpdateRect.left != ptestRW->resultUpdateRect.left)
384 {
385 trace("DIFFERENCE-resultUpdateRect.left %d %d\n", (int)ptestRW->resultUpdateRect.left, (int)ptestRWcompare->resultUpdateRect.left);
386 countErrors++;
387 }
388 if (ptestRWcompare->resultUpdateRect.top != ptestRW->resultUpdateRect.top)
389 {
390 trace("DIFFERENCE-resultUpdateRect.top %d %d\n", (int)ptestRW->resultUpdateRect.top, (int)ptestRWcompare->resultUpdateRect.top);
391 countErrors++;
392 }
393 if (ptestRWcompare->resultUpdateRect.right != ptestRW->resultUpdateRect.right)
394 {
395 trace("DIFFERENCE-resultUpdateRect.right %d %d\n", (int)ptestRW->resultUpdateRect.right, (int)ptestRWcompare->resultUpdateRect.right);
396 countErrors++;
397 }
398 if (ptestRWcompare->resultUpdateRect.bottom != ptestRW->resultUpdateRect.bottom)
399 {
400 trace("DIFFERENCE-resultUpdateRect.bottom %d %d\n", (int)ptestRW->resultUpdateRect.bottom, (int)ptestRWcompare->resultUpdateRect.bottom);
401 countErrors++;
402 }
403 }
404 if (ptestRWcompare->resultWmEraseGnd != ptestRW->resultWmEraseGnd)
405 {
406 trace("DIFFERENCE-resultWmEraseGnd %d %d\n", ptestRW->resultWmEraseGnd, ptestRWcompare->resultWmEraseGnd);
407 countErrors++;
408 }
409 if (ptestRWcompare->resultWmNcPaint != ptestRW->resultWmNcPaint)
410 {
411 trace("DIFFERENCE-resultWmNcPaint %d %d\n", ptestRW->resultWmNcPaint, ptestRWcompare->resultWmNcPaint);
412 countErrors++;
413 }
414 if (ptestRWcompare->resultPaintIndex != ptestRW->resultPaintIndex)
415 {
416 trace("DIFFERENCE-resultPaintIndex %d %d\n", ptestRW->resultPaintIndex, ptestRWcompare->resultPaintIndex);
417 countErrors++;
418 }
419 }
420 if (countErrors > 0)
421 {
422 trace("COUNT OF DIFFERENCES - %d\n", countErrors);
423 }
424
425 return countErrors;
426 }
427
InitRect(RECT * rect,int left,int top,int right,int bottom)428 void InitRect(RECT *rect, int left, int top, int right, int bottom) {
429 rect->left = left;
430 rect->top = top;
431 rect->right = right;
432 rect->bottom = bottom;
433 }
434
FlagsRedrawWindowTest()435 void FlagsRedrawWindowTest()
436 {
437 STRUCT_TestRedrawWindow testRW;
438 STRUCT_TestRedrawWindowCompare testRWcompare;
439
440 testRW.testPixelPre1x = 50;
441 testRW.testPixelPre1y = 50;
442 testRW.testPixelPre2x = 50;
443 testRW.testPixelPre2y = 550;
444 testRW.testPixelPost1x = 50;
445 testRW.testPixelPost1y = 50;
446 testRW.testPixelPost2x = 50;
447 testRW.testPixelPost2y = 550;
448
449 // RDW_ERASE tests
450 testRW.testName = L"Test1";
451 testRW.flags = 0;
452 testRW.useRegion = TRUE;
453 InitRect(&testRW.regRect, 0, 500, 800, 600);
454 testRW.useRect = FALSE;
455 InitRect(&testRW.rectRect, 0, 0, 200, 200);
456 testRW.forcePaint = TRUE;
457 testRW.testChild = FALSE;
458
459 testRWcompare.resultColorPre1 = 0x000000FF;
460 testRWcompare.resultColorPre2 = 0x000000FF;
461 testRWcompare.resultColorPost1 = 0x000000FF;
462 testRWcompare.resultColorPost2 = 0x000000FF;
463 InitRect(&testRWcompare.resultUpdateRect, 0, 0, 200, 200);
464 testRWcompare.resultNeedsUpdate = FALSE;
465 testRWcompare.resultWmEraseGnd = FALSE;
466 testRWcompare.resultWmNcPaint = FALSE;
467 testRWcompare.resultPaintIndex = 1;
468 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test1 fail\n");
469
470 testRW.testName = L"Test2";
471 testRW.flags = RDW_ERASE;
472 testRW.useRegion = TRUE;
473 InitRect(&testRW.regRect, 0, 500, 800, 600);
474 testRW.useRect = FALSE;
475 InitRect(&testRW.rectRect, 0, 0, 200, 200);
476 testRW.forcePaint = TRUE;
477 testRW.testChild = FALSE;
478
479 testRWcompare.resultColorPre1 = 0x000000FF;
480 testRWcompare.resultColorPre2 = 0x000000FF;
481 testRWcompare.resultColorPost1 = 0x000000FF;
482 testRWcompare.resultColorPost2 = 0x000000FF;
483 InitRect(&testRWcompare.resultUpdateRect, 0, 0, 200, 200);
484 testRWcompare.resultNeedsUpdate = FALSE;
485 testRWcompare.resultWmEraseGnd = FALSE;
486 testRWcompare.resultWmNcPaint = FALSE;
487 testRWcompare.resultPaintIndex = 1;
488 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test2 fail\n");
489
490 testRW.testName = L"Test3";
491 testRW.flags = RDW_INVALIDATE;
492 testRW.useRegion = TRUE;
493 InitRect(&testRW.regRect, 0, 500, 800, 600);
494 testRW.useRect = FALSE;
495 InitRect(&testRW.rectRect, 0, 0, 200, 200);
496 testRW.forcePaint = TRUE;
497 testRW.testChild = FALSE;
498
499 testRWcompare.resultColorPre1 = 0x000000FF;
500 testRWcompare.resultColorPre2 = 0x000000FF;
501 testRWcompare.resultColorPost1 = 0x000000FF;
502 testRWcompare.resultColorPost2 = 0x0000FF00;
503 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
504 testRWcompare.resultNeedsUpdate = TRUE;
505 testRWcompare.resultWmEraseGnd = FALSE;
506 testRWcompare.resultWmNcPaint = FALSE;
507 testRWcompare.resultPaintIndex = 2;
508 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test3 fail\n");
509
510 testRW.testName = L"Test4";
511 testRW.flags = RDW_INVALIDATE | RDW_ERASE;
512 testRW.useRegion = TRUE;
513 InitRect(&testRW.regRect, 0, 500, 800, 600);
514 testRW.useRect = FALSE;
515 InitRect(&testRW.rectRect, 0, 0, 200, 200);
516 testRW.forcePaint = TRUE;
517 testRW.testChild = FALSE;
518
519 testRWcompare.resultColorPre1 = 0x000000FF;
520 testRWcompare.resultColorPre2 = 0x000000FF;
521 testRWcompare.resultColorPost1 = 0x000000FF;
522 testRWcompare.resultColorPost2 = 0x0000FF00;
523 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
524 testRWcompare.resultNeedsUpdate = TRUE;
525 testRWcompare.resultWmEraseGnd = TRUE;
526 testRWcompare.resultWmNcPaint = FALSE;
527 testRWcompare.resultPaintIndex = 2;
528 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test4 fail\n");
529
530 // RDW_FRAME tests
531 testRW.testName = L"Test5";
532 testRW.flags = RDW_FRAME;
533 testRW.useRegion = TRUE;
534 InitRect(&testRW.regRect, 0, 500, 800, 600);
535 testRW.useRect = FALSE;
536 InitRect(&testRW.rectRect, 0, 0, 200, 200);
537 testRW.forcePaint = TRUE;
538 testRW.testChild = FALSE;
539
540 testRWcompare.resultColorPre1 = 0x000000FF;
541 testRWcompare.resultColorPre2 = 0x000000FF;
542 testRWcompare.resultColorPost1 = 0x000000FF;
543 testRWcompare.resultColorPost2 = 0x000000FF;
544 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
545 testRWcompare.resultNeedsUpdate = FALSE;
546 testRWcompare.resultWmEraseGnd = FALSE;
547 testRWcompare.resultWmNcPaint = FALSE;
548 testRWcompare.resultPaintIndex = 1;
549 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test5 fail\n");
550
551 testRW.testName = L"Test6";
552 testRW.flags = RDW_INVALIDATE | RDW_FRAME;
553 testRW.useRegion = TRUE;
554 InitRect(&testRW.regRect, 0, 500, 800, 600);
555 testRW.useRect = FALSE;
556 InitRect(&testRW.rectRect, 0, 0, 200, 200);
557 testRW.forcePaint = TRUE;
558 testRW.testChild = FALSE;
559
560 testRWcompare.resultColorPre1 = 0x000000FF;
561 testRWcompare.resultColorPre2 = 0x000000FF;
562 testRWcompare.resultColorPost1 = 0x000000FF;
563 testRWcompare.resultColorPost2 = 0x0000FF00;
564 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
565 testRWcompare.resultNeedsUpdate = TRUE;
566 testRWcompare.resultWmEraseGnd = FALSE;
567 testRWcompare.resultWmNcPaint = TRUE;
568 testRWcompare.resultPaintIndex = 2;
569 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test6 fail\n");
570
571 // RDW_INTERNALPAINT tests
572 testRW.testName = L"Test7";
573 testRW.flags = RDW_INTERNALPAINT;
574 testRW.useRegion = TRUE;
575 InitRect(&testRW.regRect, 0, 500, 800, 600);
576 testRW.useRect = FALSE;
577 InitRect(&testRW.rectRect, 0, 0, 200, 200);
578 testRW.forcePaint = TRUE;
579 testRW.testChild = FALSE;
580
581 testRWcompare.resultColorPre1 = 0x000000FF;
582 testRWcompare.resultColorPre2 = 0x000000FF;
583 testRWcompare.resultColorPost1 = 0x000000FF;
584 testRWcompare.resultColorPost2 = 0x000000FF;
585 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
586 testRWcompare.resultNeedsUpdate = FALSE;
587 testRWcompare.resultWmEraseGnd = FALSE;
588 testRWcompare.resultWmNcPaint = FALSE;
589 testRWcompare.resultPaintIndex = 2;
590 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test7 fail\n");
591
592 testRW.testName = L"Test8";
593 testRW.flags = RDW_INVALIDATE | RDW_INTERNALPAINT;
594 testRW.useRegion = TRUE;
595 InitRect(&testRW.regRect, 0, 500, 800, 600);
596 testRW.useRect = FALSE;
597 InitRect(&testRW.rectRect, 0, 0, 200, 200);
598 testRW.forcePaint = TRUE;
599 testRW.testChild = FALSE;
600
601 testRWcompare.resultColorPre1 = 0x000000FF;
602 testRWcompare.resultColorPre2 = 0x000000FF;
603 testRWcompare.resultColorPost1 = 0x000000FF;
604 testRWcompare.resultColorPost2 = 0x0000FF00;
605 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
606 testRWcompare.resultNeedsUpdate = TRUE;
607 testRWcompare.resultWmEraseGnd = FALSE;
608 testRWcompare.resultWmNcPaint = FALSE;
609 testRWcompare.resultPaintIndex = 2;
610 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test8 fail\n");
611
612 // RDW_NOERASE tests
613 testRW.testName = L"Test9";
614 testRW.flags = RDW_NOERASE;
615 testRW.useRegion = TRUE;
616 InitRect(&testRW.regRect, 0, 500, 800, 600);
617 testRW.useRect = FALSE;
618 InitRect(&testRW.rectRect, 0, 0, 200, 200);
619 testRW.forcePaint = TRUE;
620 testRW.testChild = FALSE;
621
622 testRWcompare.resultColorPre1 = 0x000000FF;
623 testRWcompare.resultColorPre2 = 0x000000FF;
624 testRWcompare.resultColorPost1 = 0x000000FF;
625 testRWcompare.resultColorPost2 = 0x000000FF;
626 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
627 testRWcompare.resultNeedsUpdate = FALSE;
628 testRWcompare.resultWmEraseGnd = FALSE;
629 testRWcompare.resultWmNcPaint = FALSE;
630 testRWcompare.resultPaintIndex = 1;
631 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test9 fail\n");
632
633 testRW.testName = L"Test10";
634 testRW.flags = RDW_INVALIDATE | RDW_NOERASE;
635 testRW.useRegion = TRUE;
636 InitRect(&testRW.regRect, 0, 500, 800, 600);
637 testRW.useRect = FALSE;
638 InitRect(&testRW.rectRect, 0, 0, 200, 200);
639 testRW.forcePaint = TRUE;
640 testRW.testChild = FALSE;
641
642 testRWcompare.resultColorPre1 = 0x000000FF;
643 testRWcompare.resultColorPre2 = 0x000000FF;
644 testRWcompare.resultColorPost1 = 0x000000FF;
645 testRWcompare.resultColorPost2 = 0x0000FF00;
646 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
647 testRWcompare.resultNeedsUpdate = TRUE;
648 testRWcompare.resultWmEraseGnd = FALSE;
649 testRWcompare.resultWmNcPaint = FALSE;
650 testRWcompare.resultPaintIndex = 2;
651 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test10 fail\n");
652
653 testRW.testName = L"Test11";
654 testRW.flags = RDW_NOERASE | RDW_ERASE;
655 testRW.useRegion = TRUE;
656 InitRect(&testRW.regRect, 0, 500, 800, 600);
657 testRW.useRect = FALSE;
658 InitRect(&testRW.rectRect, 0, 0, 200, 200);
659 testRW.forcePaint = TRUE;
660 testRW.testChild = FALSE;
661
662 testRWcompare.resultColorPre1 = 0x000000FF;
663 testRWcompare.resultColorPre2 = 0x000000FF;
664 testRWcompare.resultColorPost1 = 0x000000FF;
665 testRWcompare.resultColorPost2 = 0x000000FF;
666 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
667 testRWcompare.resultNeedsUpdate = FALSE;
668 testRWcompare.resultWmEraseGnd = FALSE;
669 testRWcompare.resultWmNcPaint = FALSE;
670 testRWcompare.resultPaintIndex = 1;
671 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test11 fail\n");
672
673 testRW.testName = L"Test12";
674 testRW.flags = RDW_INVALIDATE | RDW_NOERASE | RDW_ERASE;
675 testRW.useRegion = TRUE;
676 InitRect(&testRW.regRect, 0, 500, 800, 600);
677 testRW.useRect = FALSE;
678 InitRect(&testRW.rectRect, 0, 0, 200, 200);
679 testRW.forcePaint = TRUE;
680 testRW.testChild = FALSE;
681
682 testRWcompare.resultColorPre1 = 0x000000FF;
683 testRWcompare.resultColorPre2 = 0x000000FF;
684 testRWcompare.resultColorPost1 = 0x000000FF;
685 testRWcompare.resultColorPost2 = 0x0000FF00;
686 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
687 testRWcompare.resultNeedsUpdate = TRUE;
688 testRWcompare.resultWmEraseGnd = TRUE;
689 testRWcompare.resultWmNcPaint = FALSE;
690 testRWcompare.resultPaintIndex = 2;
691 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test12 fail\n");
692
693 // RDW_NOFRAME tests
694 testRW.testName = L"Test13";
695 testRW.flags = RDW_NOFRAME;
696 testRW.useRegion = TRUE;
697 InitRect(&testRW.regRect, 0, 500, 800, 600);
698 testRW.useRect = FALSE;
699 InitRect(&testRW.rectRect, 0, 0, 200, 200);
700 testRW.forcePaint = TRUE;
701 testRW.testChild = FALSE;
702
703 testRWcompare.resultColorPre1 = 0x000000FF;
704 testRWcompare.resultColorPre2 = 0x000000FF;
705 testRWcompare.resultColorPost1 = 0x000000FF;
706 testRWcompare.resultColorPost2 = 0x000000FF;
707 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
708 testRWcompare.resultNeedsUpdate = FALSE;
709 testRWcompare.resultWmEraseGnd = FALSE;
710 testRWcompare.resultWmNcPaint = FALSE;
711 testRWcompare.resultPaintIndex = 1;
712 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test13 fail\n");
713
714 testRW.testName = L"Test14";
715 testRW.flags = RDW_INVALIDATE | RDW_NOFRAME;
716 testRW.useRegion = TRUE;
717 InitRect(&testRW.regRect, 0, 500, 800, 600);
718 testRW.useRect = FALSE;
719 InitRect(&testRW.rectRect, 0, 0, 200, 200);
720 testRW.forcePaint = TRUE;
721 testRW.testChild = FALSE;
722
723 testRWcompare.resultColorPre1 = 0x000000FF;
724 testRWcompare.resultColorPre2 = 0x000000FF;
725 testRWcompare.resultColorPost1 = 0x000000FF;
726 testRWcompare.resultColorPost2 = 0x0000FF00;
727 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
728 testRWcompare.resultNeedsUpdate = TRUE;
729 testRWcompare.resultWmEraseGnd = FALSE;
730 testRWcompare.resultWmNcPaint = FALSE;
731 testRWcompare.resultPaintIndex = 2;
732 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test14 fail\n");
733
734 testRW.testName = L"Test15";
735 testRW.flags = RDW_INVALIDATE | RDW_VALIDATE | RDW_NOFRAME;
736 testRW.useRegion = TRUE;
737 InitRect(&testRW.regRect, 0, 500, 800, 600);
738 testRW.useRect = FALSE;
739 InitRect(&testRW.rectRect, 0, 0, 200, 200);
740 testRW.forcePaint = TRUE;
741 testRW.testChild = FALSE;
742
743 testRWcompare.resultColorPre1 = 0x000000FF;
744 testRWcompare.resultColorPre2 = 0x000000FF;
745 testRWcompare.resultColorPost1 = 0x000000FF;
746 testRWcompare.resultColorPost2 = 0x0000FF00;
747 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
748 testRWcompare.resultNeedsUpdate = TRUE;
749 testRWcompare.resultWmEraseGnd = FALSE;
750 testRWcompare.resultWmNcPaint = FALSE;
751 testRWcompare.resultPaintIndex = 2;
752 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test15 fail\n");
753
754 testRW.testName = L"Test16";
755 testRW.flags = RDW_VALIDATE | RDW_NOFRAME;
756 testRW.useRegion = TRUE;
757 InitRect(&testRW.regRect, 0, 500, 800, 600);
758 testRW.useRect = FALSE;
759 InitRect(&testRW.rectRect, 0, 0, 200, 200);
760 testRW.forcePaint = TRUE;
761 testRW.testChild = FALSE;
762
763 testRWcompare.resultColorPre1 = 0x000000FF;
764 testRWcompare.resultColorPre2 = 0x000000FF;
765 testRWcompare.resultColorPost1 = 0x000000FF;
766 testRWcompare.resultColorPost2 = 0x000000FF;
767 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
768 testRWcompare.resultNeedsUpdate = FALSE;
769 testRWcompare.resultWmEraseGnd = FALSE;
770 testRWcompare.resultWmNcPaint = FALSE;
771 testRWcompare.resultPaintIndex = 1;
772 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test16 fail\n");
773
774 // RDW_NOINTERNALPAINT tests
775 testRW.testName = L"Test17";
776 testRW.flags = RDW_NOINTERNALPAINT;
777 testRW.useRegion = TRUE;
778 InitRect(&testRW.regRect, 0, 500, 800, 600);
779 testRW.useRect = FALSE;
780 InitRect(&testRW.rectRect, 0, 0, 200, 200);
781 testRW.forcePaint = TRUE;
782 testRW.testChild = FALSE;
783
784 testRWcompare.resultColorPre1 = 0x000000FF;
785 testRWcompare.resultColorPre2 = 0x000000FF;
786 testRWcompare.resultColorPost1 = 0x000000FF;
787 testRWcompare.resultColorPost2 = 0x000000FF;
788 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
789 testRWcompare.resultNeedsUpdate = FALSE;
790 testRWcompare.resultWmEraseGnd = FALSE;
791 testRWcompare.resultWmNcPaint = FALSE;
792 testRWcompare.resultPaintIndex = 1;
793 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test17 fail\n");
794
795 testRW.testName = L"Test18";
796 testRW.flags = RDW_INVALIDATE | RDW_NOINTERNALPAINT;
797 testRW.useRegion = TRUE;
798 InitRect(&testRW.regRect, 0, 500, 800, 600);
799 testRW.useRect = FALSE;
800 InitRect(&testRW.rectRect, 0, 0, 200, 200);
801 testRW.forcePaint = TRUE;
802 testRW.testChild = FALSE;
803
804 testRWcompare.resultColorPre1 = 0x000000FF;
805 testRWcompare.resultColorPre2 = 0x000000FF;
806 testRWcompare.resultColorPost1 = 0x000000FF;
807 testRWcompare.resultColorPost2 = 0x0000FF00;
808 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
809 testRWcompare.resultNeedsUpdate = TRUE;
810 testRWcompare.resultWmEraseGnd = FALSE;
811 testRWcompare.resultWmNcPaint = FALSE;
812 testRWcompare.resultPaintIndex = 2;
813 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test18 fail\n");
814
815 testRW.testName = L"Test19";
816 testRW.flags = RDW_VALIDATE | RDW_NOINTERNALPAINT;
817 testRW.useRegion = TRUE;
818 InitRect(&testRW.regRect, 0, 500, 800, 600);
819 testRW.useRect = FALSE;
820 InitRect(&testRW.rectRect, 0, 0, 200, 200);
821 testRW.forcePaint = TRUE;
822 testRW.testChild = FALSE;
823
824 testRWcompare.resultColorPre1 = 0x000000FF;
825 testRWcompare.resultColorPre2 = 0x000000FF;
826 testRWcompare.resultColorPost1 = 0x000000FF;
827 testRWcompare.resultColorPost2 = 0x000000FF;
828 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
829 testRWcompare.resultNeedsUpdate = FALSE;
830 testRWcompare.resultWmEraseGnd = FALSE;
831 testRWcompare.resultWmNcPaint = FALSE;
832 testRWcompare.resultPaintIndex = 1;
833 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test19 fail\n");
834
835 // RDW_ERASENOW tests
836 testRW.testName = L"Test20";
837 testRW.flags = RDW_ERASENOW;
838 testRW.useRegion = TRUE;
839 InitRect(&testRW.regRect, 0, 500, 800, 600);
840 testRW.useRect = FALSE;
841 InitRect(&testRW.rectRect, 0, 0, 200, 200);
842 testRW.forcePaint = TRUE;
843 testRW.testChild = FALSE;
844
845 testRWcompare.resultColorPre1 = 0x000000FF;
846 testRWcompare.resultColorPre2 = 0x000000FF;
847 testRWcompare.resultColorPost1 = 0x000000FF;
848 testRWcompare.resultColorPost2 = 0x000000FF;
849 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
850 testRWcompare.resultNeedsUpdate = FALSE;
851 testRWcompare.resultWmEraseGnd = FALSE;
852 testRWcompare.resultWmNcPaint = FALSE;
853 testRWcompare.resultPaintIndex = 1;
854 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test20 fail\n");
855
856 testRW.testName = L"Test21";
857 testRW.flags = RDW_INVALIDATE | RDW_ERASENOW;
858 testRW.useRegion = TRUE;
859 InitRect(&testRW.regRect, 0, 500, 800, 600);
860 testRW.useRect = FALSE;
861 InitRect(&testRW.rectRect, 0, 0, 200, 200);
862 testRW.forcePaint = TRUE;
863 testRW.testChild = FALSE;
864
865 testRWcompare.resultColorPre1 = 0x000000FF;
866 testRWcompare.resultColorPre2 = 0x000000FF;
867 testRWcompare.resultColorPost1 = 0x000000FF;
868 testRWcompare.resultColorPost2 = 0x0000FF00;
869 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
870 testRWcompare.resultNeedsUpdate = TRUE;
871 testRWcompare.resultWmEraseGnd = FALSE;
872 testRWcompare.resultWmNcPaint = FALSE;
873 testRWcompare.resultPaintIndex = 2;
874 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test21 fail\n");
875
876 testRW.testName = L"Test22";
877 testRW.flags = RDW_VALIDATE | RDW_ERASENOW;
878 testRW.useRegion = TRUE;
879 InitRect(&testRW.regRect, 0, 500, 800, 600);
880 testRW.useRect = FALSE;
881 InitRect(&testRW.rectRect, 0, 0, 200, 200);
882 testRW.forcePaint = TRUE;
883 testRW.testChild = FALSE;
884
885 testRWcompare.resultColorPre1 = 0x000000FF;
886 testRWcompare.resultColorPre2 = 0x000000FF;
887 testRWcompare.resultColorPost1 = 0x000000FF;
888 testRWcompare.resultColorPost2 = 0x000000FF;
889 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
890 testRWcompare.resultNeedsUpdate = FALSE;
891 testRWcompare.resultWmEraseGnd = FALSE;
892 testRWcompare.resultWmNcPaint = FALSE;
893 testRWcompare.resultPaintIndex = 1;
894 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test22 fail\n");
895
896 // RDW_UPDATENOW tests
897 testRW.testName = L"Test23";
898 testRW.flags = RDW_UPDATENOW;
899 testRW.useRegion = TRUE;
900 InitRect(&testRW.regRect, 0, 500, 800, 600);
901 testRW.useRect = FALSE;
902 InitRect(&testRW.rectRect, 0, 0, 200, 200);
903 testRW.forcePaint = TRUE;
904 testRW.testChild = FALSE;
905
906 testRWcompare.resultColorPre1 = 0x000000FF;
907 testRWcompare.resultColorPre2 = 0x000000FF;
908 testRWcompare.resultColorPost1 = 0x000000FF;
909 testRWcompare.resultColorPost2 = 0x000000FF;
910 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
911 testRWcompare.resultNeedsUpdate = FALSE;
912 testRWcompare.resultWmEraseGnd = FALSE;
913 testRWcompare.resultWmNcPaint = FALSE;
914 testRWcompare.resultPaintIndex = 1;
915 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test23 fail\n");
916
917 testRW.testName = L"Test24";
918 testRW.flags = RDW_INVALIDATE | RDW_UPDATENOW;
919 testRW.useRegion = TRUE;
920 InitRect(&testRW.regRect, 0, 500, 800, 600);
921 testRW.useRect = FALSE;
922 InitRect(&testRW.rectRect, 0, 0, 200, 200);
923 testRW.forcePaint = TRUE;
924 testRW.testChild = FALSE;
925
926 testRWcompare.resultColorPre1 = 0x000000FF;
927 testRWcompare.resultColorPre2 = 0x0000FF00;
928 testRWcompare.resultColorPost1 = 0x000000FF;
929 testRWcompare.resultColorPost2 = 0x0000FF00;
930 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
931 testRWcompare.resultNeedsUpdate = FALSE;
932 testRWcompare.resultWmEraseGnd = FALSE;
933 testRWcompare.resultWmNcPaint = FALSE;
934 testRWcompare.resultPaintIndex = 2;
935 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test24 fail\n");
936
937 testRW.testName = L"Test25";
938 testRW.flags = RDW_VALIDATE | RDW_UPDATENOW;
939 testRW.useRegion = TRUE;
940 InitRect(&testRW.regRect, 0, 500, 800, 600);
941 testRW.useRect = FALSE;
942 InitRect(&testRW.rectRect, 0, 0, 200, 200);
943 testRW.forcePaint = TRUE;
944 testRW.testChild = FALSE;
945
946 testRWcompare.resultColorPre1 = 0x000000FF;
947 testRWcompare.resultColorPre2 = 0x000000FF;
948 testRWcompare.resultColorPost1 = 0x000000FF;
949 testRWcompare.resultColorPost2 = 0x000000FF;
950 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
951 testRWcompare.resultNeedsUpdate = FALSE;
952 testRWcompare.resultWmEraseGnd = FALSE;
953 testRWcompare.resultWmNcPaint = FALSE;
954 testRWcompare.resultPaintIndex = 1;
955 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test25 fail\n");
956
957 // RDW_ALLCHILDREN/RDW_NOCHILDREN tests
958 testRW.testName = L"Test26";
959 testRW.flags = RDW_NOCHILDREN;
960 testRW.useRegion = FALSE;
961 InitRect(&testRW.regRect, 0, 500, 800, 600);
962 testRW.useRect = FALSE;
963 InitRect(&testRW.rectRect, 0, 0, 200, 200);
964 testRW.forcePaint = TRUE;
965 testRW.testChild = TRUE;
966
967 testRWcompare.resultColorPre1 = 0x00FF0000;
968 testRWcompare.resultColorPre2 = 0x0000FF00;
969 testRWcompare.resultColorPost1 = 0x00FF0000;
970 testRWcompare.resultColorPost2 = 0x0000FF00;
971 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
972 testRWcompare.resultNeedsUpdate = FALSE;
973 testRWcompare.resultWmEraseGnd = FALSE;
974 testRWcompare.resultWmNcPaint = FALSE;
975 testRWcompare.resultPaintIndex = 1;
976 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test26 fail\n");
977
978 testRW.testName = L"Test27";
979 testRW.flags = RDW_INVALIDATE | RDW_NOCHILDREN;
980 testRW.useRegion = FALSE;
981 InitRect(&testRW.regRect, 0, 500, 800, 600);
982 testRW.useRect = FALSE;
983 InitRect(&testRW.rectRect, 0, 0, 200, 200);
984 testRW.forcePaint = TRUE;
985 testRW.testChild = TRUE;
986
987 testRWcompare.resultColorPre1 = 0x0000FF00;
988 testRWcompare.resultColorPre2 = 0x0000FF00;
989 testRWcompare.resultColorPost1 = 0x0000FF00;
990 testRWcompare.resultColorPost2 = 0x0000FF00;
991 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
992 testRWcompare.resultNeedsUpdate = FALSE;
993 testRWcompare.resultWmEraseGnd = FALSE;
994 testRWcompare.resultWmNcPaint = FALSE;
995 testRWcompare.resultPaintIndex = 2;
996 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test27 fail\n");
997
998 testRW.testName = L"Test28";
999 testRW.flags = RDW_VALIDATE | RDW_NOCHILDREN;
1000 testRW.useRegion = FALSE;
1001 InitRect(&testRW.regRect, 0, 500, 800, 600);
1002 testRW.useRect = FALSE;
1003 InitRect(&testRW.rectRect, 0, 0, 200, 200);
1004 testRW.forcePaint = TRUE;
1005 testRW.testChild = TRUE;
1006
1007 testRWcompare.resultColorPre1 = 0x00FF0000;
1008 testRWcompare.resultColorPre2 = 0x0000FF00;
1009 testRWcompare.resultColorPost1 = 0x00FF0000;
1010 testRWcompare.resultColorPost2 = 0x0000FF00;
1011 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
1012 testRWcompare.resultNeedsUpdate = FALSE;
1013 testRWcompare.resultWmEraseGnd = FALSE;
1014 testRWcompare.resultWmNcPaint = FALSE;
1015 testRWcompare.resultPaintIndex = 1;
1016 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test28 fail\n");
1017
1018 testRW.testName = L"Test29";
1019 testRW.flags = RDW_ALLCHILDREN;
1020 testRW.useRegion = FALSE;
1021 InitRect(&testRW.regRect, 0, 500, 800, 600);
1022 testRW.useRect = FALSE;
1023 InitRect(&testRW.rectRect, 0, 0, 200, 200);
1024 testRW.forcePaint = TRUE;
1025 testRW.testChild = TRUE;
1026
1027 testRWcompare.resultColorPre1 = 0x00FF0000;
1028 testRWcompare.resultColorPre2 = 0x0000FF00;
1029 testRWcompare.resultColorPost1 = 0x00FF0000;
1030 testRWcompare.resultColorPost2 = 0x0000FF00;
1031 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
1032 testRWcompare.resultNeedsUpdate = FALSE;
1033 testRWcompare.resultWmEraseGnd = FALSE;
1034 testRWcompare.resultWmNcPaint = FALSE;
1035 testRWcompare.resultPaintIndex = 1;
1036 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test29 fail\n");
1037
1038 testRW.testName = L"Test30";
1039 testRW.flags = RDW_INVALIDATE | RDW_ALLCHILDREN;
1040 testRW.useRegion = FALSE;
1041 InitRect(&testRW.regRect, 0, 500, 800, 600);
1042 testRW.useRect = FALSE;
1043 InitRect(&testRW.rectRect, 0, 0, 200, 200);
1044 testRW.forcePaint = TRUE;
1045 testRW.testChild = TRUE;
1046
1047 testRWcompare.resultColorPre1 = 0x00FF0000;
1048 testRWcompare.resultColorPre2 = 0x0000FF00;
1049 testRWcompare.resultColorPre1 = 0x00FF0000;
1050 testRWcompare.resultColorPost2 = 0x0000FF00;
1051 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
1052 testRWcompare.resultNeedsUpdate = FALSE;
1053 testRWcompare.resultWmEraseGnd = FALSE;
1054 testRWcompare.resultWmNcPaint = FALSE;
1055 testRWcompare.resultPaintIndex = 2;
1056 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test30 fail\n");
1057
1058 testRW.testName = L"Test31";
1059 testRW.flags = RDW_VALIDATE | RDW_ALLCHILDREN;
1060 testRW.useRegion = FALSE;
1061 InitRect(&testRW.regRect, 0, 500, 800, 600);
1062 testRW.useRect = FALSE;
1063 InitRect(&testRW.rectRect, 0, 0, 200, 200);
1064 testRW.forcePaint = TRUE;
1065 testRW.testChild = TRUE;
1066
1067 testRWcompare.resultColorPre1 = 0x00FF0000;
1068 testRWcompare.resultColorPre2 = 0x0000FF00;
1069 testRWcompare.resultColorPost1 = 0x00FF0000;
1070 testRWcompare.resultColorPost2 = 0x0000FF00;
1071 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
1072 testRWcompare.resultNeedsUpdate = FALSE;
1073 testRWcompare.resultWmEraseGnd = FALSE;
1074 testRWcompare.resultWmNcPaint = FALSE;
1075 testRWcompare.resultPaintIndex = 1;
1076 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test31 fail\n");
1077
1078 testRW.testName = L"Test32";
1079 testRW.flags = RDW_NOCHILDREN;
1080 testRW.useRegion = TRUE;
1081 InitRect(&testRW.regRect, 0, 500, 800, 600);
1082 testRW.useRect = FALSE;
1083 InitRect(&testRW.rectRect, 0, 0, 200, 200);
1084 testRW.forcePaint = TRUE;
1085 testRW.testChild = TRUE;
1086
1087 testRWcompare.resultColorPre1 = 0x00FF0000;
1088 testRWcompare.resultColorPre2 = 0x0000FF00;
1089 testRWcompare.resultColorPost1 = 0x00FF0000;
1090 testRWcompare.resultColorPost2 = 0x0000FF00;
1091 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
1092 testRWcompare.resultNeedsUpdate = FALSE;
1093 testRWcompare.resultWmEraseGnd = FALSE;
1094 testRWcompare.resultWmNcPaint = FALSE;
1095 testRWcompare.resultPaintIndex = 1;
1096 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test32 fail\n");
1097
1098 testRW.testName = L"Test33";
1099 testRW.flags = RDW_INVALIDATE | RDW_NOCHILDREN;
1100 testRW.useRegion = TRUE;
1101 InitRect(&testRW.regRect, 0, 500, 800, 600);
1102 testRW.useRect = FALSE;
1103 InitRect(&testRW.rectRect, 0, 0, 200, 200);
1104 testRW.forcePaint = TRUE;
1105 testRW.testChild = TRUE;
1106
1107 testRWcompare.resultColorPre1 = 0x00FF0000;
1108 testRWcompare.resultColorPre2 = 0x0000FF00;
1109 testRWcompare.resultColorPre1 = 0x00FF0000;
1110 testRWcompare.resultColorPost2 = 0x0000FF00;
1111 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
1112 testRWcompare.resultNeedsUpdate = FALSE;
1113 testRWcompare.resultWmEraseGnd = FALSE;
1114 testRWcompare.resultWmNcPaint = FALSE;
1115 testRWcompare.resultPaintIndex = 2;
1116 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test33 fail\n");
1117
1118 testRW.testName = L"Test34";
1119 testRW.flags = RDW_VALIDATE | RDW_NOCHILDREN;
1120 testRW.useRegion = TRUE;
1121 InitRect(&testRW.regRect, 0, 500, 800, 600);
1122 testRW.useRect = FALSE;
1123 InitRect(&testRW.rectRect, 0, 0, 200, 200);
1124 testRW.forcePaint = TRUE;
1125 testRW.testChild = TRUE;
1126
1127 testRWcompare.resultColorPre1 = 0x00FF0000;
1128 testRWcompare.resultColorPre2 = 0x0000FF00;
1129 testRWcompare.resultColorPost1 = 0x00FF0000;
1130 testRWcompare.resultColorPost2 = 0x0000FF00;
1131 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
1132 testRWcompare.resultNeedsUpdate = FALSE;
1133 testRWcompare.resultWmEraseGnd = FALSE;
1134 testRWcompare.resultWmNcPaint = FALSE;
1135 testRWcompare.resultPaintIndex = 1;
1136 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test34 fail\n");
1137
1138 // rect defined area tests
1139 testRW.testName = L"Test35";
1140 testRW.flags = 0;
1141 testRW.useRegion = FALSE;
1142 InitRect(&testRW.regRect, 0, 500, 800, 600);
1143 testRW.useRect = TRUE;
1144 InitRect(&testRW.rectRect, 0, 500, 800, 600);
1145 testRW.forcePaint = TRUE;
1146 testRW.testChild = FALSE;
1147
1148 testRWcompare.resultColorPre1 = 0x000000FF;
1149 testRWcompare.resultColorPre2 = 0x000000FF;
1150 testRWcompare.resultColorPost1 = 0x000000FF;
1151 testRWcompare.resultColorPost2 = 0x000000FF;
1152 InitRect(&testRWcompare.resultUpdateRect, 0, 0, 200, 200);
1153 testRWcompare.resultNeedsUpdate = FALSE;
1154 testRWcompare.resultWmEraseGnd = FALSE;
1155 testRWcompare.resultWmNcPaint = FALSE;
1156 testRWcompare.resultPaintIndex = 1;
1157 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test35 fail\n");
1158
1159 testRW.testName = L"Test36";
1160 testRW.flags = RDW_INVALIDATE | RDW_ERASENOW;
1161 testRW.useRegion = FALSE;
1162 InitRect(&testRW.regRect, 0, 500, 800, 600);
1163 testRW.useRect = TRUE;
1164 InitRect(&testRW.rectRect, 0, 500, 800, 600);
1165 testRW.forcePaint = TRUE;
1166 testRW.testChild = FALSE;
1167
1168 testRWcompare.resultColorPre1 = 0x000000FF;
1169 testRWcompare.resultColorPre2 = 0x000000FF;
1170 testRWcompare.resultColorPost1 = 0x000000FF;
1171 testRWcompare.resultColorPost2 = 0x0000FF00;
1172 InitRect(&testRWcompare.resultUpdateRect, 0, 500, 800, 600);
1173 testRWcompare.resultNeedsUpdate = TRUE;
1174 testRWcompare.resultWmEraseGnd = FALSE;
1175 testRWcompare.resultWmNcPaint = FALSE;
1176 testRWcompare.resultPaintIndex = 2;
1177 ok(0 == TestRedrawWindow2(&testRW, &testRWcompare),"Test36 fail\n");
1178 }
1179
START_TEST(RedrawWindow)1180 START_TEST(RedrawWindow)
1181 {
1182 FlagsRedrawWindowTest();
1183 GetMessageRedrawWindowTest();
1184 }
1185