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