Clinton Stimpson : user32: Test processing of expose events.

Alexandre Julliard julliard at winehq.org
Sat Mar 15 05:53:51 CDT 2008


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

Author: Clinton Stimpson <cjstimpson at utwire.net>
Date:   Fri Mar 14 23:59:54 2008 -0600

user32: Test processing of expose events.

---

 dlls/user32/tests/win.c |   56 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 56 insertions(+), 0 deletions(-)

diff --git a/dlls/user32/tests/win.c b/dlls/user32/tests/win.c
index 661a7e8..2c4d113 100644
--- a/dlls/user32/tests/win.c
+++ b/dlls/user32/tests/win.c
@@ -4563,6 +4563,61 @@ static void test_GetUpdateRect(void)
     DestroyWindow(hgrandparent);
 }
 
+
+static LRESULT CALLBACK TestExposedRegion_WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+    if(msg == WM_PAINT)
+    {
+        PAINTSTRUCT ps;
+        RECT updateRect;
+        DWORD waitResult;
+        HWND win;
+        const int waitTime = 2000;
+
+        BeginPaint(hwnd, &ps);
+
+        /* create and destroy window to create an exposed region on this window */
+        win = CreateWindowA("static", "win", WS_VISIBLE,
+                             10,10,50,50, NULL, NULL, 0, NULL);
+        DestroyWindow(win);
+
+        waitResult = MsgWaitForMultipleObjectsEx( 0, NULL, waitTime, QS_PAINT, 0 );
+
+        ValidateRect(hwnd, NULL);
+        EndPaint(hwnd, &ps);
+
+        if(waitResult != WAIT_TIMEOUT)
+        {
+            GetUpdateRect(hwnd, &updateRect, FALSE);
+todo_wine
+{
+            ok(!IsRectEmpty(&updateRect), "Exposed rect should not be empty\n");
+}
+        }
+
+        return 1;
+    }
+    return DefWindowProc(hwnd, msg, wParam, lParam);
+}
+
+static void test_Expose(void)
+{
+    ATOM atom;
+    WNDCLASSA cls;
+    HWND mw;
+    memset(&cls, 0, sizeof(WNDCLASSA));
+    cls.lpfnWndProc = TestExposedRegion_WndProc;
+    cls.hbrBackground = GetStockObject(WHITE_BRUSH);
+    cls.lpszClassName = "TestExposeClass";
+    atom = RegisterClassA(&cls);
+
+    mw = CreateWindowA("TestExposeClass", "MainWindow", WS_VISIBLE|WS_OVERLAPPEDWINDOW,
+                            0, 0, 200, 100, NULL, NULL, 0, NULL);
+
+    UpdateWindow(mw);
+    DestroyWindow(mw);
+}
+
 START_TEST(win)
 {
     pGetAncestor = (void *)GetProcAddress( GetModuleHandleA("user32.dll"), "GetAncestor" );
@@ -4645,6 +4700,7 @@ START_TEST(win)
     test_ShowWindow();
     test_gettext();
     test_GetUpdateRect();
+    test_Expose();
 
     /* add the tests above this line */
     UnhookWindowsHookEx(hhook);




More information about the wine-cvs mailing list