Drew Ronneberg : user32/tests: Add tests for calling ShowWindow(SW_HIDE) on a hidden window.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Nov 21 09:11:39 CST 2014


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

Author: Drew Ronneberg <drew_ronneberg at yahoo.com>
Date:   Tue Nov 18 22:14:21 2014 -0500

user32/tests: Add tests for calling ShowWindow(SW_HIDE) on a hidden window.

---

 dlls/user32/tests/msg.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index 9b7453f..d829c5f 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -4621,9 +4621,21 @@ static void test_MsgWaitForMultipleObjects(HWND hwnd)
     ok(ret == WAIT_IO_COMPLETION, "MsgWaitForMultipleObjectsEx returned %x\n", ret);
 }
 
+static DWORD CALLBACK show_window_thread(LPVOID arg)
+{
+   HWND hwnd = arg;
+
+   /* function will not return if ShowWindow(SW_HIDE) calls SendMessage() */
+   ShowWindow(hwnd, SW_HIDE);
+
+   return 0;
+}
+
 /* test if we receive the right sequence of messages */
 static void test_messages(void)
 {
+    DWORD tid;
+    HANDLE hthread;
     HWND hwnd, hparent, hchild;
     HWND hchild2, hbutton;
     HMENU hmenu;
@@ -4656,6 +4668,22 @@ static void test_messages(void)
     flush_events();
     ok_sequence(WmHideOverlappedSeq, "ShowWindow(SW_HIDE):overlapped", FALSE);
 
+    /* test ShowWindow(SW_HIDE) on a hidden window - single threaded */
+    ShowWindow(hwnd, SW_HIDE);
+    flush_events();
+    ok_sequence(WmEmptySeq, "ShowWindow(SW_HIDE):overlapped", FALSE);
+
+    if (0)
+    {
+    /* test ShowWindow(SW_HIDE) on a hidden window -  multi-threaded */
+    hthread = CreateThread(NULL, 0, show_window_thread, hwnd, 0, &tid);
+    ok(hthread != NULL, "CreateThread failed, error %d\n", GetLastError());
+    ok(WaitForSingleObject(hthread, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n");
+    CloseHandle(hthread);
+    flush_events();
+    ok_sequence(WmEmptySeq, "ShowWindow(SW_HIDE):overlapped", FALSE);
+    }
+
     ShowWindow(hwnd, SW_SHOW);
     flush_events();
     ok_sequence(WmShowOverlappedSeq, "ShowWindow(SW_SHOW):overlapped", TRUE);




More information about the wine-cvs mailing list