Piotr Caban : user32/tests: Add tests for window clipping with CS_PARENTDC flag.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Feb 13 07:55:57 CST 2015


Module: wine
Branch: master
Commit: 3d6de8c8a2b105909d77a35c04c5b5dd15401a55
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3d6de8c8a2b105909d77a35c04c5b5dd15401a55

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Fri Feb 13 11:38:15 2015 +0100

user32/tests: Add tests for window clipping with CS_PARENTDC flag.

---

 dlls/user32/tests/dce.c | 44 +++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 41 insertions(+), 3 deletions(-)

diff --git a/dlls/user32/tests/dce.c b/dlls/user32/tests/dce.c
index dc78caf..4ce8d5d 100644
--- a/dlls/user32/tests/dce.c
+++ b/dlls/user32/tests/dce.c
@@ -33,7 +33,7 @@
 #define DCX_USESTYLE         0x00010000
 #endif
 
-static HWND hwnd_cache, hwnd_owndc, hwnd_classdc, hwnd_classdc2;
+static HWND hwnd_cache, hwnd_owndc, hwnd_classdc, hwnd_classdc2, hwnd_parent, hwnd_parentdc;
 
 /* test behavior of DC attributes with various GetDC/ReleaseDC combinations */
 static void test_dc_attributes(void)
@@ -190,7 +190,7 @@ static void test_dc_visrgn(void)
 {
     HDC old_hdc, hdc;
     HRGN hrgn, hrgn2;
-    RECT rect;
+    RECT rect, parent_rect;
 
     /* cache DC */
 
@@ -325,6 +325,20 @@ static void test_dc_visrgn(void)
     ok( !(rect.left >= 20 && rect.top >= 20 && rect.right <= 30 && rect.bottom <= 30),
         "clip box must have been reset %d,%d-%d,%d\n", rect.left, rect.top, rect.right, rect.bottom );
     ReleaseDC( hwnd_classdc2, hdc );
+
+    /* parent DC */
+    hdc = GetDC( hwnd_parentdc );
+    GetClipBox( hdc, &rect );
+    ReleaseDC( hwnd_parentdc, hdc );
+
+    hdc = GetDC( hwnd_parent );
+    GetClipBox( hdc, &parent_rect );
+    ReleaseDC( hwnd_parent, hdc );
+
+    ok( rect.left == parent_rect.left, "rect.left = %d, expected %d\n", rect.left, parent_rect.left );
+    ok( rect.top == parent_rect.top, "rect.top = %d, expected %d\n", rect.top, parent_rect.top );
+    ok( rect.right == parent_rect.right, "rect.right = %d, expected %d\n", rect.right, parent_rect.right );
+    ok( rect.bottom == parent_rect.bottom, "rect.bottom = %d, expected %d\n", rect.bottom, parent_rect.bottom );
 }
 
 
@@ -332,7 +346,7 @@ static void test_dc_visrgn(void)
 static void test_begin_paint(void)
 {
     HDC old_hdc, hdc;
-    RECT rect;
+    RECT rect, parent_rect;
     PAINTSTRUCT ps;
 
     /* cache DC */
@@ -405,6 +419,21 @@ static void test_begin_paint(void)
     GetClipBox( hdc, &rect );
     ok( !(rect.left >= 10 && rect.top >= 10 && rect.right <= 20 && rect.bottom <= 20),
         "clip box should have been reset %d,%d-%d,%d\n", rect.left, rect.top, rect.right, rect.bottom );
+    ReleaseDC( hwnd_classdc2, hdc );
+    EndPaint( hwnd_classdc, &ps );
+
+    /* parent DC */
+    RedrawWindow( hwnd_parent, NULL, 0, RDW_VALIDATE|RDW_NOFRAME|RDW_NOERASE );
+    RedrawWindow( hwnd_parentdc, NULL, 0, RDW_INVALIDATE );
+    hdc = BeginPaint( hwnd_parentdc, &ps );
+    GetClipBox( hdc, &rect );
+    EndPaint( hwnd_parentdc, &ps );
+    GetClientRect( hwnd_parent, &parent_rect );
+
+    ok( rect.left == parent_rect.left, "rect.left = %d, expected %d\n", rect.left, parent_rect.left );
+    ok( rect.top == parent_rect.top, "rect.top = %d, expected %d\n", rect.top, parent_rect.top );
+    todo_wine ok( rect.right == parent_rect.right, "rect.right = %d, expected %d\n", rect.right, parent_rect.right );
+    todo_wine ok( rect.bottom == parent_rect.bottom, "rect.bottom = %d, expected %d\n", rect.bottom, parent_rect.bottom );
 }
 
 /* test ScrollWindow with window DCs */
@@ -593,6 +622,9 @@ START_TEST(dce)
     cls.style = CS_DBLCLKS | CS_CLASSDC;
     cls.lpszClassName = "classdc_class";
     RegisterClassA(&cls);
+    cls.style = CS_PARENTDC;
+    cls.lpszClassName = "parentdc_class";
+    RegisterClassA(&cls);
 
     hwnd_cache = CreateWindowA("cache_class", NULL, WS_OVERLAPPED | WS_VISIBLE,
                                0, 0, 100, 100,
@@ -606,6 +638,11 @@ START_TEST(dce)
     hwnd_classdc2 = CreateWindowA("classdc_class", NULL, WS_OVERLAPPED | WS_VISIBLE,
                                   200, 200, 100, 100,
                                   0, 0, GetModuleHandleA(0), NULL );
+    hwnd_parent = CreateWindowA("static", NULL, WS_OVERLAPPED | WS_VISIBLE,
+                                400, 0, 100, 100, 0, 0, 0, NULL );
+    hwnd_parentdc = CreateWindowA("parentdc_class", NULL, WS_CHILD | WS_VISIBLE,
+                                  0, 0, 1, 1, hwnd_parent, 0, 0, NULL );
+
     test_dc_attributes();
     test_parameters();
     test_dc_visrgn();
@@ -614,6 +651,7 @@ START_TEST(dce)
     test_invisible_create();
     test_dc_layout();
 
+    DestroyWindow(hwnd_parent);
     DestroyWindow(hwnd_classdc2);
     DestroyWindow(hwnd_classdc);
     DestroyWindow(hwnd_owndc);




More information about the wine-cvs mailing list