[PATCH 2/5] user32/tests: Stop relying on pre-existing windows.

Rémi Bernon rbernon at codeweavers.com
Mon Jan 31 03:45:51 CST 2022


Improve the tests robustness by avoiding cross tests interactions, and
recreating the windows every time making them more likely to get
foreground.

Wine-Bug: https://bugs.winehq.org//show_bug.cgi?id=51391
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
 dlls/user32/tests/win.c | 477 ++++++++++++++++++++++++++++------------
 1 file changed, 342 insertions(+), 135 deletions(-)

diff --git a/dlls/user32/tests/win.c b/dlls/user32/tests/win.c
index e48d7bea513..400c00ec238 100644
--- a/dlls/user32/tests/win.c
+++ b/dlls/user32/tests/win.c
@@ -70,7 +70,6 @@ static BOOL test_lbuttondown_flag;
 static DWORD num_gettext_msgs;
 static DWORD num_settext_msgs;
 static HWND hwndMessage;
-static HWND hwndMain, hwndMain2;
 static HHOOK hhook;
 static BOOL app_activated, app_deactivated;
 
@@ -183,6 +182,47 @@ static BOOL ignore_message( UINT message )
             message == 0x0060 /* undocumented, used by Win10 1709+ */);
 }
 
+static BOOL init_test_windows( HWND *main_window, HWND *other_window )
+{
+    DWORD style = WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP;
+    HINSTANCE module = GetModuleHandleA( NULL );
+    BOOL ret = TRUE;
+
+    *main_window = CreateWindowExA( /*WS_EX_TOOLWINDOW*/ 0, "MainWindowClass", "Main window",
+                                    style | WS_VISIBLE, 100, 100, 200, 200, 0, 0, module, NULL );
+    ok( !!*main_window, "CreateWindowExA failed, error %u\n", GetLastError() );
+
+    ret = SetForegroundWindow( *main_window );
+    ok( ret, "SetForegroundWindow failed, error %u\n", GetLastError() );
+
+    if (other_window)
+    {
+        *other_window = CreateWindowExA( /*WS_EX_TOOLWINDOW*/ 0, "MainWindowClass", "Main window 2",
+                                         style, 100, 100, 200, 200, 0, 0, module, NULL);
+        ok( !!*other_window, "CreateWindowExA failed, error %u\n", GetLastError() );
+    }
+
+    flush_events( TRUE );
+    if (*main_window == GetForegroundWindow()) return TRUE;
+
+    skip( "Created window is not foreground, skipping tests.\n" );
+    DestroyWindow( *main_window );
+    if (other_window) DestroyWindow( *other_window );
+    return FALSE;
+}
+
+static void clean_test_windows( HWND main_window, HWND other_window )
+{
+    BOOL ret;
+    if (!main_window) ret = TRUE;
+    else ret = DestroyWindow(main_window);
+    ok(ret, "DestroyWindow failed, error %u\n", GetLastError());
+    if (!other_window) ret = TRUE;
+    else ret = DestroyWindow(other_window);
+    ok(ret, "DestroyWindow failed, error %u\n", GetLastError());
+    flush_events( TRUE );
+}
+
 static BOOL CALLBACK EnumChildProc( HWND hwndChild, LPARAM lParam)
 {
     (*(LPINT)lParam)++;
@@ -211,9 +251,12 @@ static void test_parent_owner(void)
     LONG style;
     HWND test, owner, ret;
     HWND desktop = GetDesktopWindow();
-    HWND child = create_tool_window( WS_CHILD, hwndMain );
+    HWND child, hwndMain, hwndMain2;
     INT  numChildren;
 
+    if (!init_test_windows( &hwndMain, &hwndMain2 )) return;
+
+    child = create_tool_window( WS_CHILD, hwndMain );
     if (winetest_debug > 1)
         trace( "main window %p main2 %p desktop %p child %p\n", hwndMain, hwndMain2, desktop, child );
 
@@ -649,6 +692,8 @@ static void test_parent_owner(void)
     check_parents( test, desktop, owner, NULL, owner, test, test );
     DestroyWindow( owner );
     DestroyWindow( test );
+
+    clean_test_windows( hwndMain, hwndMain2 );
 }
 
 static BOOL CALLBACK enum_proc( HWND hwnd, LPARAM lParam)
@@ -964,7 +1009,7 @@ static void verify_window_info(const char *hook, HWND hwnd, const WINDOWINFO *in
        "wrong dwExStyle: %08x != %08x for %p in hook %s\n",
        info->dwExStyle, GetWindowLongA(hwnd, GWL_EXSTYLE), hwnd, hook);
     status = (GetActiveWindow() == hwnd) ? WS_ACTIVECAPTION : 0;
-    if (GetForegroundWindow())
+    if (GetForegroundWindow() == hwnd)
         ok(info->dwWindowStatus == status, "wrong dwWindowStatus: %04x != %04x active %p fg %p in hook %s\n",
            info->dwWindowStatus, status, GetActiveWindow(), GetForegroundWindow(), hook);
 
@@ -1154,7 +1199,7 @@ static LRESULT CALLBACK test_standard_scrollbar_proc(HWND hwnd, UINT msg, WPARAM
     }
 }
 
-static void test_nonclient_area(HWND hwnd)
+static void check_nonclient_area(HWND hwnd)
 {
     BOOL (WINAPI *pIsThemeActive)(void);
     POINT point, old_cursor_pos;
@@ -1312,6 +1357,14 @@ static void test_nonclient_area(HWND hwnd)
     FreeLibrary(uxtheme);
 }
 
+static void test_nonclient_area(void)
+{
+    HWND hwnd;
+    if (!init_test_windows( &hwnd, NULL )) return;
+    check_nonclient_area( hwnd );
+    clean_test_windows( hwnd, NULL );
+}
+
 static LRESULT CALLBACK cbt_hook_proc(int nCode, WPARAM wParam, LPARAM lParam) 
 { 
     static const char *CBT_code_name[10] = {
@@ -2772,16 +2825,18 @@ static LRESULT WINAPI nccalcsize_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM
     return DefWindowProcA( hwnd, msg, wparam, lparam );
 }
 
-static void test_SetWindowPos(HWND hwnd, HWND hwnd2)
+static void test_SetWindowPos(void)
 {
     RECT orig_win_rc, rect;
     LONG_PTR old_proc;
-    HWND hwnd_grandchild, hwnd_child, hwnd_child2;
+    HWND hwnd, hwnd2, hwnd_grandchild, hwnd_child, hwnd_child2;
     HWND hwnd_desktop;
     RECT rc_expected;
     RECT rc1, rc2;
     BOOL ret;
 
+    if (!init_test_windows(&hwnd, &hwnd2)) return;
+
     SetRect(&rect, 111, 222, 333, 444);
     ok(!GetWindowRect(0, &rect), "GetWindowRect succeeded\n");
     ok(rect.left == 111 && rect.top == 222 && rect.right == 333 && rect.bottom == 444,
@@ -2987,15 +3042,19 @@ static void test_SetWindowPos(HWND hwnd, HWND hwnd2)
     flush_events( TRUE );
     todo_wine check_active_state(hwnd2, hwnd2, hwnd2);
     DestroyWindow(hwnd_child);
+
+    clean_test_windows(hwnd, hwnd2);
 }
 
-static void test_SetMenu(HWND parent)
+static void test_SetMenu(void)
 {
-    HWND child;
+    HWND parent, child;
     HMENU hMenu, ret;
     BOOL retok;
     DWORD style;
 
+    if (!init_test_windows(&parent, NULL)) return;
+
     hMenu = CreateMenu();
     assert(hMenu);
 
@@ -3003,7 +3062,7 @@ static void test_SetMenu(HWND parent)
     if (0)
     {
     /* fails on (at least) Wine, NT4, XP SP2 */
-    test_nonclient_area(parent); 
+    check_nonclient_area(parent);
     }
     ret = GetMenu(parent);
     ok(ret == hMenu, "unexpected menu id %p\n", ret);
@@ -3015,7 +3074,7 @@ static void test_SetMenu(HWND parent)
     ret = GetMenu(parent);
     ok(ret == hMenu, "unexpected menu id %p\n", ret);
     ok(SetMenu(parent, 0), "SetMenu(0) on a top level window should not fail\n");
-    test_nonclient_area(parent);
+    check_nonclient_area(parent);
 
     hMenu = CreateMenu();
     assert(hMenu);
@@ -3025,7 +3084,7 @@ static void test_SetMenu(HWND parent)
     ok(ret == 0, "unexpected menu id %p\n", ret);
 
     ok(!SetMenu(parent, (HMENU)20), "SetMenu with invalid menu handle should fail\n");
-    test_nonclient_area(parent);
+    check_nonclient_area(parent);
     ret = GetMenu(parent);
     ok(ret == 0, "unexpected menu id %p\n", ret);
 
@@ -3033,13 +3092,13 @@ static void test_SetMenu(HWND parent)
     if (0)
     {
     /* fails on (at least) Wine, NT4, XP SP2 */
-    test_nonclient_area(parent);
+    check_nonclient_area(parent);
     }
     ret = GetMenu(parent);
     ok(ret == hMenu, "unexpected menu id %p\n", ret);
 
     ok(SetMenu(parent, 0), "SetMenu(0) on a top level window should not fail\n");
-    test_nonclient_area(parent);
+    check_nonclient_area(parent);
     ret = GetMenu(parent);
     ok(ret == 0, "unexpected menu id %p\n", ret);
  
@@ -3051,17 +3110,17 @@ static void test_SetMenu(HWND parent)
     ok(ret == (HMENU)10, "unexpected menu id %p\n", ret);
 
     ok(!SetMenu(child, (HMENU)20), "SetMenu with invalid menu handle should fail\n");
-    test_nonclient_area(child);
+    check_nonclient_area(child);
     ret = GetMenu(child);
     ok(ret == (HMENU)10, "unexpected menu id %p\n", ret);
 
     ok(!SetMenu(child, hMenu), "SetMenu on a child window should fail\n");
-    test_nonclient_area(child);
+    check_nonclient_area(child);
     ret = GetMenu(child);
     ok(ret == (HMENU)10, "unexpected menu id %p\n", ret);
 
     ok(!SetMenu(child, 0), "SetMenu(0) on a child window should fail\n");
-    test_nonclient_area(child);
+    check_nonclient_area(child);
     ret = GetMenu(child);
     ok(ret == (HMENU)10, "unexpected menu id %p\n", ret);
 
@@ -3077,6 +3136,8 @@ static void test_SetMenu(HWND parent)
 
     DestroyWindow(child);
     DestroyMenu(hMenu);
+
+    clean_test_windows(parent, NULL);
 }
 
 static void test_window_tree(HWND parent, const DWORD *style, const int *order, int total)
@@ -3121,7 +3182,7 @@ static void test_window_tree(HWND parent, const DWORD *style, const int *order,
         ok(DestroyWindow(child[i]), "DestroyWindow failed\n");
 }
 
-static void test_children_zorder(HWND parent)
+static void test_children_zorder(void)
 {
     const DWORD simple_style[5] = { WS_CHILD, WS_CHILD, WS_CHILD, WS_CHILD,
                                     WS_CHILD };
@@ -3139,6 +3200,9 @@ static void test_children_zorder(HWND parent)
                                        WS_CHILD | WS_CLIPSIBLINGS | DS_CONTROL | WS_VISIBLE,
                                        WS_CHILD | WS_VISIBLE };
     const int complex_order_6[3] = { 0, 1, 2 };
+    HWND parent;
+
+    if (!init_test_windows(&parent, NULL)) return;
 
     /* simple WS_CHILD */
     test_window_tree(parent, simple_style, simple_order, 5);
@@ -3152,6 +3216,8 @@ static void test_children_zorder(HWND parent)
 
     /* another set of complex children styles */
     test_window_tree(parent, complex_style_6, complex_order_6, 3);
+
+    clean_test_windows(parent, NULL);
 }
 
 #define check_z_order(hwnd, next, prev, owner, topmost) \
@@ -3194,14 +3260,17 @@ static void check_z_order_debug(HWND hwnd, HWND next, HWND prev, HWND owner,
                     hwnd, topmost ? "" : "NOT ");
 }
 
-static void test_popup_zorder(HWND hwnd_D, HWND hwnd_E, DWORD style)
+static void test_popup_zorder(DWORD style)
 {
-    HWND hwnd_A, hwnd_B, hwnd_C, hwnd_F;
+    HWND hwnd_A, hwnd_B, hwnd_C, hwnd_D, hwnd_E, hwnd_F;
+
+    if (!init_test_windows(&hwnd_E, &hwnd_D)) return;;
 
     /* Give current thread foreground state otherwise the tests may fail. */
     if (!SetForegroundWindow(hwnd_D))
     {
         skip("SetForegroundWindow not working\n");
+        clean_test_windows(hwnd_E, hwnd_D);
         return;
     }
 
@@ -3291,14 +3360,19 @@ static void test_popup_zorder(HWND hwnd_D, HWND hwnd_E, DWORD style)
     DestroyWindow(hwnd_B);
     DestroyWindow(hwnd_C);
     DestroyWindow(hwnd_F);
+
+    clean_test_windows(hwnd_E, hwnd_D);
 }
 
-static void test_vis_rgn( HWND hwnd )
+static void test_vis_rgn(void)
 {
     RECT win_rect, rgn_rect;
     HRGN hrgn = CreateRectRgn( 0, 0, 0, 0 );
+    HWND hwnd;
     HDC hdc;
 
+    if (!init_test_windows(&hwnd, NULL)) return;
+
     ShowWindow(hwnd,SW_SHOW);
     hdc = GetDC( hwnd );
     ok( GetRandomRgn( hdc, hrgn, SYSRGN ) != 0, "GetRandomRgn failed\n" );
@@ -3310,6 +3384,8 @@ static void test_vis_rgn( HWND hwnd )
         win_rect.bottom >= rgn_rect.bottom,
         "rgn %s not inside win %s\n", wine_dbgstr_rect(&rgn_rect), wine_dbgstr_rect(&win_rect));
     ReleaseDC( hwnd, hdc );
+
+    clean_test_windows(hwnd, NULL);
 }
 
 static LRESULT WINAPI set_focus_on_activate_proc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
@@ -3325,11 +3401,13 @@ static LRESULT WINAPI set_focus_on_activate_proc(HWND hwnd, UINT msg, WPARAM wp,
     return DefWindowProcA(hwnd, msg, wp, lp);
 }
 
-static void test_SetFocus(HWND hwnd)
+static void test_SetFocus(void)
 {
-    HWND child, child2, ret;
+    HWND hwnd, child, child2, ret;
     WNDPROC old_wnd_proc;
 
+    if (!init_test_windows(&hwnd, NULL)) return;
+
     /* check if we can set focus to non-visible windows */
 
     ShowWindow(hwnd, SW_SHOW);
@@ -3430,11 +3508,15 @@ todo_wine
 
     DestroyWindow( child2 );
     DestroyWindow( child );
+
+    clean_test_windows(hwnd, NULL);
 }
 
-static void test_SetActiveWindow(HWND hwnd)
+static void test_SetActiveWindow(void)
 {
-    HWND hwnd2, ret;
+    HWND hwnd, hwnd2, ret;
+
+    if (!init_test_windows(&hwnd, NULL)) return;
 
     flush_events( TRUE );
     ShowWindow(hwnd, SW_HIDE);
@@ -3517,6 +3599,8 @@ static void test_SetActiveWindow(HWND hwnd)
         check_active_state(hwnd, hwnd, hwnd);
     }
     DestroyWindow(hwnd2);
+
+    clean_test_windows(hwnd, NULL);
 }
 
 struct create_window_thread_params
@@ -3544,16 +3628,18 @@ static DWORD WINAPI create_window_thread(void *param)
     return 0;
 }
 
-static void test_SetForegroundWindow(HWND hwnd)
+static void test_SetForegroundWindow(void)
 {
     struct create_window_thread_params thread_params;
     HANDLE thread;
     DWORD res, tid;
     BOOL ret;
-    HWND hwnd2;
+    HWND hwnd, hwnd2;
     MSG msg;
     LONG style;
 
+    if (!init_test_windows(&hwnd, NULL)) return;
+
     flush_events( TRUE );
     ShowWindow(hwnd, SW_HIDE);
     SetFocus(0);
@@ -3576,6 +3662,7 @@ static void test_SetForegroundWindow(HWND hwnd)
     if (!ret)
     {
         skip( "SetForegroundWindow not working\n" );
+        clean_test_windows(hwnd, NULL);
         return;
     }
     check_wnd_state(hwnd, hwnd, hwnd, 0);
@@ -3670,6 +3757,8 @@ static void test_SetForegroundWindow(HWND hwnd)
     CloseHandle(thread_params.window_created);
     CloseHandle(thread);
     DestroyWindow(hwnd2);
+
+    clean_test_windows(hwnd, NULL);
 }
 
 static WNDPROC old_button_proc;
@@ -3808,10 +3897,13 @@ static void test_capture_2(void)
     check_wnd_state(oldActive, 0, oldFocus, 0);
 }
 
-static void test_capture_3(HWND hwnd1, HWND hwnd2)
+static void test_capture_3(void)
 {
+    HWND hwnd1, hwnd2;
     BOOL ret;
 
+    if (!init_test_windows(&hwnd1, &hwnd2)) return;
+
     ShowWindow(hwnd1, SW_HIDE);
     ShowWindow(hwnd2, SW_HIDE);
 
@@ -3831,6 +3923,8 @@ static void test_capture_3(HWND hwnd1, HWND hwnd2)
     ok (ret, "releasecapture did not return TRUE.\n");
     ret = ReleaseCapture();
     ok (ret, "releasecapture did not return TRUE after second try.\n");
+
+    clean_test_windows(hwnd1, hwnd2);
 }
 
 static LRESULT CALLBACK test_capture_4_proc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
@@ -3957,11 +4051,14 @@ static BOOL peek_message( MSG *msg )
     return ret;
 }
 
-static void test_keyboard_input(HWND hwnd)
+static void test_keyboard_input(void)
 {
+    HWND hwnd;
     MSG msg;
     BOOL ret;
 
+    if (!init_test_windows(&hwnd, NULL)) return;
+
     flush_events( TRUE );
     SetWindowPos(hwnd, 0, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW);
     UpdateWindow(hwnd);
@@ -3996,6 +4093,7 @@ static void test_keyboard_input(HWND hwnd)
     if (!peek_message(&msg))
     {
         skip( "keybd_event didn't work, skipping keyboard test\n" );
+        clean_test_windows(hwnd, NULL);
         return;
     }
     ok(msg.hwnd == hwnd && msg.message == WM_KEYDOWN, "hwnd %p message %04x\n", msg.hwnd, msg.message);
@@ -4031,6 +4129,8 @@ static void test_keyboard_input(HWND hwnd)
     ok(msg.hwnd == hwnd && msg.message == WM_SYSKEYDOWN, "hwnd %p message %04x\n", msg.hwnd, msg.message);
     ret = peek_message(&msg);
     ok( !ret, "message %04x available\n", msg.message);
+
+    clean_test_windows(hwnd, NULL);
 }
 
 static BOOL wait_for_message( MSG *msg )
@@ -4051,15 +4151,17 @@ static BOOL wait_for_message( MSG *msg )
     return ret;
 }
 
-static void test_mouse_input(HWND hwnd)
+static void test_mouse_input(void)
 {
     RECT rc;
     POINT pt;
     int x, y;
-    HWND popup, child = NULL;
+    HWND hwnd, popup, child = NULL;
     MSG msg;
     BOOL ret;
 
+    if (!init_test_windows(&hwnd, NULL)) return;
+
     ShowWindow(hwnd, SW_SHOWNORMAL);
     UpdateWindow(hwnd);
     SetWindowPos( hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE );
@@ -4279,14 +4381,19 @@ done:
     DestroyWindow(popup);
 
     SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE);
+
+    clean_test_windows(hwnd, NULL);
 }
 
-static void test_validatergn(HWND hwnd)
+static void test_validatergn(void)
 {
-    HWND child;
+    HWND hwnd, child;
     RECT rc, rc2;
     HRGN rgn;
     int ret;
+
+    if (!init_test_windows(&hwnd, NULL)) return;
+
     child = CreateWindowExA(0, "static", NULL, WS_CHILD| WS_VISIBLE, 10, 10, 10, 10, hwnd, 0, 0, NULL);
     ShowWindow(hwnd, SW_SHOW);
     UpdateWindow( hwnd);
@@ -4317,6 +4424,8 @@ static void test_validatergn(HWND hwnd)
 
     DeleteObject( rgn);
     DestroyWindow( child );
+
+    clean_test_windows(hwnd, NULL);
 }
 
 static void nccalchelper(HWND hwnd, INT x, INT y, RECT *prc)
@@ -4330,12 +4439,16 @@ static void nccalchelper(HWND hwnd, INT x, INT y, RECT *prc)
         trace("window rect is %s, nccalc rect is %s\n", wine_dbgstr_rect(&rc), wine_dbgstr_rect(prc));
 }
 
-static void test_nccalcscroll(HWND parent)
+static void test_nccalcscroll(void)
 {
+    HWND parent, hwnd;
     RECT rc1;
     INT sbheight = GetSystemMetrics( SM_CYHSCROLL);
     INT sbwidth = GetSystemMetrics( SM_CXVSCROLL);
-    HWND hwnd = CreateWindowExA(0, "static", NULL, 
+
+    if (!init_test_windows(&parent, NULL)) return;
+
+    hwnd = CreateWindowExA(0, "static", NULL,
             WS_CHILD| WS_VISIBLE | WS_VSCROLL | WS_HSCROLL , 
             10, 10, 200, 200, parent, 0, 0, NULL); 
     ShowWindow( parent, SW_SHOW);
@@ -4367,6 +4480,8 @@ static void test_nccalcscroll(HWND parent)
             wine_dbgstr_rect(&rc1));
 
     DestroyWindow( hwnd);
+
+    clean_test_windows(parent, NULL);
 }
 
 static void test_SetParent(void)
@@ -4553,6 +4668,8 @@ typedef struct
     DWORD exstyle;
 } test_style;
 
+static ATOM atomStyleCheckClass;
+
 static LRESULT WINAPI cbt_proc(int ncode, WPARAM wparam, LPARAM lparam)
 {
     CBT_CREATEWNDW* c = (CBT_CREATEWNDW*)lparam;
@@ -4563,19 +4680,43 @@ static LRESULT WINAPI cbt_proc(int ncode, WPARAM wparam, LPARAM lparam)
     if (ncode !=  HCBT_CREATEWND)
         return CallNextHookEx(NULL, ncode, wparam, lparam);
 
-    ts = c->lpcs->lpCreateParams;
-    ok(ts != NULL, "lpCreateParams not set\n");
-    ok(c->lpcs->style == ts->cs_style, "style = 0x%08x, expected 0x%08x\n",
-            c->lpcs->style, ts->cs_style);
-    ok(c->lpcs->dwExStyle == ts->cs_exstyle, "exstyle = 0x%08x, expected 0x%08x\n",
-            c->lpcs->dwExStyle, ts->cs_exstyle);
+    if (c->lpcs->lpszClass == (void *)MAKEINTATOM(atomStyleCheckClass))
+    {
+        ts = c->lpcs->lpCreateParams;
+        ok(ts != NULL, "lpCreateParams not set\n");
+        ok(c->lpcs->style == ts->cs_style, "style = 0x%08x, expected 0x%08x\n",
+                c->lpcs->style, ts->cs_style);
+        ok(c->lpcs->dwExStyle == ts->cs_exstyle, "exstyle = 0x%08x, expected 0x%08x\n",
+                c->lpcs->dwExStyle, ts->cs_exstyle);
+
+        style = GetWindowLongW(hwnd, GWL_STYLE);
+        ok(style == ts->cs_style, "style = 0x%08x, expected 0x%08x\n",
+                style, ts->cs_style);
+        style = GetWindowLongW(hwnd, GWL_EXSTYLE);
+        ok(style == (ts->cs_exstyle & ~WS_EX_LAYERED),
+                "exstyle = 0x%08x, expected 0x%08x\n", style, ts->cs_exstyle);
+    }
+    else
+    {
+        ok(!c->lpcs->lpCreateParams, "got lpCreateParams %p\n", c->lpcs->lpCreateParams);
+        ok(!c->lpcs->hInstance, "got hInstance %p\n", c->lpcs->hInstance);
+        ok(!c->lpcs->hMenu, "got hMenu %p\n", c->lpcs->hMenu);
+        todo_wine
+        ok(!!c->lpcs->hwndParent, "got hwndParent %p\n", c->lpcs->hwndParent);
+        todo_wine
+        ok(!c->lpcs->cx, "got cx %d\n", c->lpcs->cx);
+        todo_wine
+        ok(!c->lpcs->cy, "got cy %d\n", c->lpcs->cy);
+        ok(!c->lpcs->x, "got x %d\n", c->lpcs->x);
+        ok(!c->lpcs->y, "got y %d\n", c->lpcs->y);
+        todo_wine
+        ok(c->lpcs->style == (WS_POPUP|WS_DISABLED), "got style %#x\n", c->lpcs->style);
+        ok(!wcscmp(c->lpcs->lpszName, L"Default IME"), "got lpszName %s\n", debugstr_w(c->lpcs->lpszName));
+        todo_wine
+        ok(c->lpcs->lpszClass == (void *)0xc026, "got lpszClass %s\n", debugstr_w(c->lpcs->lpszClass));
+        ok(c->lpcs->dwExStyle == 0, "got dwExStyle %#x\n", c->lpcs->dwExStyle);
+    }
 
-    style = GetWindowLongW(hwnd, GWL_STYLE);
-    ok(style == ts->cs_style, "style = 0x%08x, expected 0x%08x\n",
-            style, ts->cs_style);
-    style = GetWindowLongW(hwnd, GWL_EXSTYLE);
-    ok(style == (ts->cs_exstyle & ~WS_EX_LAYERED),
-            "exstyle = 0x%08x, expected 0x%08x\n", style, ts->cs_exstyle);
     return CallNextHookEx(NULL, ncode, wparam, lparam);
 }
 
@@ -4609,8 +4750,6 @@ static LRESULT WINAPI StyleCheckProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM
     return DefWindowProcA(hwnd, msg, wparam, lparam);
 }
 
-static ATOM atomStyleCheckClass;
-
 static void register_style_check_class(void)
 {
     WNDCLASSA wc =
@@ -5248,12 +5387,15 @@ static void test_dialog_parent(void)
     DestroyWindow(parent);
 }
 
-static void test_scrollwindow( HWND hwnd)
+static void test_scrollwindow(void)
 {
+    HWND hwnd;
     HDC hdc;
     RECT rc, rc2, rc3;
     COLORREF colr;
 
+    if (!init_test_windows(&hwnd, NULL)) return;
+
     ShowWindow( hwnd, SW_SHOW);
     UpdateWindow( hwnd);
     flush_events( TRUE );
@@ -5299,9 +5441,11 @@ static void test_scrollwindow( HWND hwnd)
 
     /* clean up */
     ReleaseDC( hwnd, hdc);
+
+    clean_test_windows(hwnd, NULL);
 }
 
-static void test_scrollvalidate( HWND parent)
+static void test_scrollvalidate(void)
 {
     HDC hdc;
     HRGN hrgn=CreateRectRgn(0,0,0,0);
@@ -5310,7 +5454,9 @@ static void test_scrollvalidate( HWND parent)
     /* create two overlapping child windows. The visual region
      * of hwnd1 is clipped by the overlapping part of
      * hwnd2 because of the WS_CLIPSIBLING style */
-    HWND hwnd1, hwnd2;
+    HWND parent, hwnd1, hwnd2;
+
+    if (!init_test_windows(&parent, NULL)) return;
 
     clipping = CreateRectRgn(0,0,0,0);
     tmprgn = CreateRectRgn(0,0,0,0);
@@ -5459,6 +5605,8 @@ static void test_scrollvalidate( HWND parent)
     DeleteObject( tmprgn);
     DestroyWindow( hwnd1);
     DestroyWindow( hwnd2);
+
+    clean_test_windows(parent, NULL);
 }
 
 /* couple of tests of return values of scrollbar functions
@@ -5497,14 +5645,16 @@ static void test_scroll(void)
     DestroyWindow( hwnd);
 }
 
-static void test_scrolldc( HWND parent)
+static void test_scrolldc(void)
 {
     HDC hdc;
     HRGN exprgn, tmprgn, hrgn;
     RECT rc, rc2, rcu, cliprc;
-    HWND hwnd1;
+    HWND parent, hwnd1;
     COLORREF colr;
 
+    if (!init_test_windows(&parent, NULL)) return;
+
     hrgn = CreateRectRgn(0,0,0,0);
     tmprgn = CreateRectRgn(0,0,0,0);
     exprgn = CreateRectRgn(0,0,0,0);
@@ -5569,13 +5719,17 @@ static void test_scrolldc( HWND parent)
     DeleteObject(exprgn);
     DeleteObject(tmprgn);
     DestroyWindow(hwnd1);
+
+    clean_test_windows(parent, NULL);
 }
 
 static void test_params(void)
 {
-    HWND hwnd;
+    HWND hwnd, hwndMain, hwndMain2;
     INT rc;
 
+    if (!init_test_windows( &hwndMain, &hwndMain2 )) return;
+
     ok(!IsWindow(0), "IsWindow(0)\n");
     ok(!IsWindow(HWND_BROADCAST), "IsWindow(HWND_BROADCAST)\n");
     ok(!IsWindow(HWND_TOPMOST), "IsWindow(HWND_TOPMOST)\n");
@@ -5596,6 +5750,8 @@ static void test_params(void)
     if (!hwnd)
         ok(GetLastError() == ERROR_INVALID_MENU_HANDLE,
            "wrong last error value %d\n", GetLastError());
+
+    clean_test_windows( hwndMain, hwndMain2 );
 }
 
 static void test_AWRwindow(LPCSTR class, LONG style, LONG exStyle, BOOL menu)
@@ -5612,7 +5768,7 @@ static void test_AWRwindow(LPCSTR class, LONG style, LONG exStyle, BOOL menu)
 
     ShowWindow(hwnd, SW_SHOW);
 
-    test_nonclient_area(hwnd);
+    check_nonclient_area(hwnd);
 
     SetMenu(hwnd, 0);
     DestroyWindow(hwnd);
@@ -6666,9 +6822,11 @@ static void test_set_window_long_size(void)
 #ifdef _WIN64
     WNDPROC wnd_proc, wnd_proc_2;
     LONG_PTR retval;
-    HWND hwnd;
+    HWND hwnd, hwndMain;
     LONG ret;
 
+    if (!init_test_windows( &hwndMain, NULL )) return;
+
     /* It's not allowed to set or get 64-bit pointer values using 32-bit functions. */
     hwnd = CreateWindowExA(0, "MainWindowClass", "Child window", WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_CHILD |
             WS_MAXIMIZEBOX | WS_VISIBLE, 100, 100, 200, 200, hwndMain, 0, GetModuleHandleA(NULL), NULL);
@@ -6795,6 +6953,8 @@ todo_wine
     ok(!ret && GetLastError() == ERROR_INVALID_INDEX, "Unexpected parent window %#x.\n", ret);
 
     DestroyWindow(hwnd);
+
+    clean_test_windows( hwndMain, NULL );
 #endif
 }
 
@@ -6802,9 +6962,11 @@ static void test_set_window_word_size(void)
 {
     WNDPROC wnd_proc, wnd_proc_2;
     LONG_PTR retval;
-    HWND hwnd;
+    HWND hwnd, hwndMain;
     LONG ret;
 
+    if (!init_test_windows( &hwndMain, NULL )) return;
+
     /* It's not allowed to set or get 64-bit pointer values using 32-bit functions. */
     hwnd = CreateWindowExA(0, "MainWindowClass", "Child window", WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_CHILD |
             WS_MAXIMIZEBOX | WS_VISIBLE, 100, 100, 200, 200, hwndMain, 0, GetModuleHandleA(NULL), NULL);
@@ -6882,12 +7044,17 @@ todo_wine
     ok(!ret && GetLastError() == ERROR_INVALID_INDEX, "Unexpected parent window %#x.\n", ret);
 
     DestroyWindow(hwnd);
+
+    clean_test_windows( hwndMain, NULL );
 }
 
 static void test_SetWindowLong(void)
 {
     LONG_PTR retval;
     WNDPROC old_window_procW;
+    HWND hwndMain;
+
+    if (!init_test_windows( &hwndMain, NULL )) return;
 
     SetLastError(0xdeadbeef);
     retval = SetWindowLongPtrA(NULL, GWLP_WNDPROC, 0);
@@ -6928,6 +7095,8 @@ static void test_SetWindowLong(void)
 
     test_set_window_long_size();
     test_set_window_word_size();
+
+    clean_test_windows( hwndMain, NULL );
 }
 
 static LRESULT WINAPI check_style_wnd_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
@@ -7346,14 +7515,16 @@ static void test_ShowWindow(void)
     }
 }
 
-static void test_ShowWindow_owned(HWND hwndMain)
+static void test_ShowWindow_owned(void)
 {
     MONITORINFO mon_info = {sizeof(mon_info)};
     RECT rect, orig, expect, nc;
     BOOL ret;
-    HWND hwnd, hwnd2;
+    HWND hwndMain, hwnd, hwnd2;
     LONG style;
 
+    if (!init_test_windows(&hwndMain, NULL)) return;
+
     GetMonitorInfoW(MonitorFromWindow(hwndMain, MONITOR_DEFAULTTOPRIMARY), &mon_info);
     SetRect(&orig, 20, 20, 210, 110);
     hwnd = CreateWindowA("MainWindowClass", "owned", WS_CAPTION | WS_SYSMENU |
@@ -7474,16 +7645,20 @@ static void test_ShowWindow_owned(HWND hwndMain)
 
     DestroyWindow(hwnd2);
     DestroyWindow(hwnd);
+
+    clean_test_windows(hwndMain, NULL);
 }
 
-static void test_ShowWindow_child(HWND hwndMain)
+static void test_ShowWindow_child(void)
 {
     RECT rect, orig, expect, nc;
     BOOL ret;
-    HWND hwnd, hwnd2;
+    HWND hwndMain, hwnd, hwnd2;
     LONG style;
     POINT pt = {0};
 
+    if (!init_test_windows(&hwndMain, NULL)) return;
+
     SetRect(&orig, 20, 20, 210, 110);
     hwnd = CreateWindowA("MainWindowClass", "child", WS_CAPTION | WS_SYSMENU |
                          WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CHILD,
@@ -7607,17 +7782,21 @@ static void test_ShowWindow_child(HWND hwndMain)
 
     DestroyWindow(hwnd2);
     DestroyWindow(hwnd);
+
+    clean_test_windows(hwndMain, NULL);
 }
 
-static void test_ShowWindow_mdichild(HWND hwndMain)
+static void test_ShowWindow_mdichild(void)
 {
     RECT rect, orig, expect, nc;
     BOOL ret;
-    HWND mdiclient, hwnd, hwnd2;
+    HWND hwndMain, mdiclient, hwnd, hwnd2;
     LONG style;
     POINT pt = {0};
     CLIENTCREATESTRUCT mdi_client_cs = {0,1};
 
+    if (!init_test_windows(&hwndMain, NULL)) return;
+
     SetRect(&orig, 20, 20, 210, 110);
     GetClientRect(hwndMain, &rect);
     mdiclient = CreateWindowA("mdiclient", "MDI client", WS_CHILD,
@@ -7736,6 +7915,8 @@ static void test_ShowWindow_mdichild(HWND hwndMain)
     DestroyWindow(hwnd2);
     DestroyWindow(hwnd);
     DestroyWindow(mdiclient);
+
+    clean_test_windows(hwndMain, NULL);
 }
 
 static DWORD CALLBACK enablewindow_thread(LPVOID arg)
@@ -8969,12 +9150,12 @@ static LRESULT WINAPI test_thick_child_size_winproc(HWND hwnd, UINT msg, WPARAM
 }
 
 #define NUMBER_OF_THICK_CHILD_TESTS 16
-static void test_thick_child_size(HWND parentWindow)
+static void test_thick_child_size(void)
 {
     BOOL success;
     RECT childRect;
     RECT adjustedParentRect;
-    HWND childWindow;
+    HWND parentWindow, childWindow;
     LONG childWidth;
     LONG childHeight;
     LONG expectedWidth;
@@ -9039,6 +9220,8 @@ static void test_thick_child_size(HWND parentWindow)
         "style=WS_CHILD | WS_VISIBLE | WS_THICKFRAME | WS_BORDER exstyle= WS_EX_STATICEDGE | WS_EX_DLGMODALFRAME",
     };
 
+    if (!init_test_windows(&parentWindow, NULL)) return;
+
     cls.style = 0;
     cls.lpfnWndProc = test_thick_child_size_winproc;
     cls.cbClsExtra = 0;
@@ -9099,14 +9282,19 @@ static void test_thick_child_size(HWND parentWindow)
         ok(success,"DestroyWindow call failed, error: %u\n", GetLastError());
     }
     ok(UnregisterClassA(className, GetModuleHandleA(NULL)),"UnregisterClass call failed\n");
+
+    clean_test_windows(parentWindow, NULL);
 }
 
-static void test_handles( HWND full_hwnd )
+static void test_handles(void)
 {
-    HWND hwnd = full_hwnd;
+    HWND full_hwnd, hwnd;
     BOOL ret;
     RECT rect;
 
+    if (!init_test_windows(&full_hwnd, NULL)) return;
+    hwnd = full_hwnd;
+
     SetLastError( 0xdeadbeef );
     ret = GetWindowRect( hwnd, &rect );
     ok( ret, "GetWindowRect failed for %p err %u\n", hwnd, GetLastError() );
@@ -9137,6 +9325,8 @@ static void test_handles( HWND full_hwnd )
     ok( !ret, "GetWindowRect succeeded for %p\n", hwnd );
     ok( GetLastError() == ERROR_INVALID_WINDOW_HANDLE, "wrong error %u\n", GetLastError() );
 #endif
+
+    clean_test_windows(full_hwnd, NULL);
 }
 
 static void test_winregion(void)
@@ -10186,7 +10376,9 @@ todo_wine
 
 static void test_window_without_child_style(void)
 {
-    HWND hwnd;
+    HWND hwnd, hwndMain;
+
+    if (!init_test_windows(&hwndMain, NULL)) return;
 
     hwnd = CreateWindowExA(0, "edit", NULL, WS_VISIBLE|WS_CHILD,
             0, 0, 50, 50, hwndMain, NULL, 0, NULL);
@@ -10202,6 +10394,7 @@ static void test_window_without_child_style(void)
     flush_events(TRUE);
 
     DestroyWindow(hwnd);
+    clean_test_windows(hwndMain, NULL);
 }
 
 
@@ -10501,14 +10694,16 @@ static DWORD WINAPI set_foreground_thread(void *params)
     return 0;
 }
 
-static void test_activateapp(HWND window1)
+static void test_activateapp(void)
 {
-    HWND window2, test_window;
+    HWND window1, window2, test_window;
     HANDLE thread;
     struct set_foreground_thread_params thread_params;
     DWORD tid;
     MSG msg;
 
+    if (!init_test_windows(&window1, NULL)) return;
+
     window2 = CreateWindowExA(0, "static", "window 2", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
             300, 0, 10, 10, 0, 0, 0, NULL);
     thread_params.msg_quit = WM_USER;
@@ -10651,6 +10846,8 @@ static void test_activateapp(HWND window1)
 
     CloseHandle(thread_params.command_executed);
     DestroyWindow(window2);
+
+    clean_test_windows(window1, NULL);
 }
 
 static LRESULT WINAPI winproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
@@ -10844,7 +11041,7 @@ todo_wine
     ok(ret, "got %d\n", ret);
 }
 
-static void test_LockWindowUpdate(HWND parent)
+static void lock_window_update_tests(HWND parent, HWND child)
 {
     typedef struct
     {
@@ -10854,7 +11051,6 @@ static void test_LockWindowUpdate(HWND parent)
     } TEST;
 
     int i;
-    HWND child = CreateWindowA("static", 0, WS_CHILD | WS_VISIBLE, 0, 0, 20, 20, parent, 0, 0, 0);
 
     TEST tests[] = {
         {child, child, 0, 0},
@@ -10867,12 +11063,6 @@ static void test_LockWindowUpdate(HWND parent)
         {parent, parent, 1, 1}
     };
 
-    if (!child)
-    {
-        skip("CreateWindow failed, skipping LockWindowUpdate tests\n");
-        return;
-    }
-
     ShowWindow(parent, SW_SHOW);
     UpdateWindow(parent);
     flush_events(TRUE);
@@ -10906,12 +11096,32 @@ static void test_LockWindowUpdate(HWND parent)
         ReleaseDC(tests[i].hwnd_draw, hdc);
 #undef TEST_PIXEL
     }
+}
+
+static void test_LockWindowUpdate(void)
+{
+    HWND parent, child;
+
+    if (!init_test_windows(&parent, NULL)) return;
+
+    if (!(child = CreateWindowA("static", 0, WS_CHILD | WS_VISIBLE, 0, 0, 20, 20, parent, 0, 0, 0)))
+    {
+        skip("CreateWindow failed, skipping LockWindowUpdate tests\n");
+        clean_test_windows(parent, NULL);
+        return;
+    }
+
+    lock_window_update_tests(parent, child);
+
     DestroyWindow(child);
+    clean_test_windows(parent, NULL);
 }
 
 static void test_hide_window(void)
 {
-    HWND hwnd, hwnd2, hwnd3;
+    HWND hwnd, hwnd2, hwnd3, hwndMain;
+
+    if (!init_test_windows(&hwndMain, NULL)) return;
 
     hwnd = CreateWindowExA(0, "MainWindowClass", "Main window", WS_POPUP | WS_VISIBLE,
                            100, 100, 200, 200, 0, 0, GetModuleHandleA(NULL), NULL);
@@ -11003,11 +11213,15 @@ static void test_hide_window(void)
     DestroyWindow(hwnd3);
     DestroyWindow(hwnd2);
     DestroyWindow(hwnd);
+
+    clean_test_windows(hwndMain, NULL);
 }
 
-static void test_minimize_window(HWND hwndMain)
+static void test_minimize_window(void)
 {
-    HWND hwnd, hwnd2, hwnd3;
+    HWND hwndMain, hwnd, hwnd2, hwnd3;
+
+    if (!init_test_windows(&hwndMain, NULL)) return;
 
     hwnd = CreateWindowExA(0, "MainWindowClass", "Main window", WS_POPUP | WS_VISIBLE,
                            100, 100, 200, 200, 0, 0, GetModuleHandleA(NULL), NULL);
@@ -11116,6 +11330,8 @@ static void test_minimize_window(HWND hwndMain)
     DestroyWindow(hwnd3);
     DestroyWindow(hwnd2);
     DestroyWindow(hwnd);
+
+    clean_test_windows(hwndMain, NULL);
 }
 
 static void test_desktop( void )
@@ -11547,11 +11763,12 @@ if (!is_wine) /* FIXME: remove once Wine is fixed */
     DestroyWindow(owner);
 }
 
-static void test_display_affinity( HWND win )
+static void test_display_affinity(void)
 {
     DWORD affinity;
     BOOL ret, dwm;
     LONG styleex;
+    HWND win;
 
     if (!pGetWindowDisplayAffinity || !pSetWindowDisplayAffinity)
     {
@@ -11559,6 +11776,8 @@ static void test_display_affinity( HWND win )
         return;
     }
 
+    if (!init_test_windows(&win, NULL)) return;
+
     ret = pGetWindowDisplayAffinity(NULL, NULL);
     ok(!ret, "GetWindowDisplayAffinity succeeded\n");
     ok(GetLastError() == ERROR_INVALID_WINDOW_HANDLE, "Expected ERROR_INVALID_WINDOW_HANDLE, got %u\n", GetLastError());
@@ -11627,6 +11846,8 @@ static void test_display_affinity( HWND win )
     ok(affinity == WDA_NONE, "Expected WDA_NONE, got 0x%x\n", affinity);
 
     SetWindowLongW(win, GWL_EXSTYLE, styleex);
+
+    clean_test_windows(win, NULL);
 }
 
 static struct destroy_data
@@ -11797,8 +12018,10 @@ static void test_destroy_quit(void)
 
 static void test_IsWindowEnabled(void)
 {
+    HWND hwnd, hwndMain;
     BOOL ret;
-    HWND hwnd;
+
+    if (!init_test_windows(&hwndMain, NULL)) return;
 
     ret = IsWindowEnabled(NULL);
     ok(!ret, "Expect IsWindowEnabled() return FALSE\n");
@@ -11814,6 +12037,8 @@ static void test_IsWindowEnabled(void)
     ret = IsWindowEnabled(hwnd);
     ok(!ret, "Expect IsWindowEnabled() return FALSE\n");
     DestroyWindow(hwnd);
+
+    clean_test_windows(hwndMain, NULL);
 }
 
 static void test_window_placement(void)
@@ -12435,9 +12660,12 @@ static void test_cancel_mode(void)
 
 static void test_DragDetect(void)
 {
+    HWND hwndMain;
     POINT pt;
     BOOL ret;
 
+    if (!init_test_windows(&hwndMain, NULL)) return;
+
     ok(!GetCapture(), "got capture window %p\n", GetCapture());
     ok(!(GetKeyState( VK_LBUTTON ) & 0x8000), "got VK_LBUTTON\n");
 
@@ -12447,6 +12675,8 @@ static void test_DragDetect(void)
 
     ok(!GetCapture(), "got capture window %p\n", GetCapture());
     ok(!(GetKeyState( VK_LBUTTON ) & 0x8000), "got VK_LBUTTON\n");
+
+    clean_test_windows(hwndMain, NULL);
 }
 
 START_TEST(win)
@@ -12499,19 +12729,6 @@ START_TEST(win)
 
     if (!RegisterWindowClasses()) assert(0);
 
-    hwndMain = CreateWindowExA(/*WS_EX_TOOLWINDOW*/ 0, "MainWindowClass", "Main window",
-                               WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX |
-                               WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE,
-                               100, 100, 200, 200,
-                               0, 0, GetModuleHandleA(NULL), NULL);
-    assert( hwndMain );
-
-    if(!SetForegroundWindow(hwndMain)) {
-        /* workaround for foreground lock timeout */
-        simulate_click(101, 101);
-        ok(SetForegroundWindow(hwndMain), "SetForegroundWindow failed\n");
-    }
-
     SetLastError(0xdeafbeef);
     GetWindowLongPtrW(GetDesktopWindow(), GWLP_WNDPROC);
 
@@ -12523,27 +12740,20 @@ START_TEST(win)
     test_FindWindow();
     test_SetParent();
 
-    hwndMain2 = CreateWindowExA(/*WS_EX_TOOLWINDOW*/ 0, "MainWindowClass", "Main window 2",
-                                WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX |
-                                WS_MAXIMIZEBOX | WS_POPUP,
-                                100, 100, 200, 200,
-                                0, 0, GetModuleHandleA(NULL), NULL);
-    assert( hwndMain2 );
-
-    our_pid = GetWindowThreadProcessId(hwndMain, NULL);
+    our_pid = GetCurrentThreadId();
 
     /* Add the tests below this line */
     test_child_window_from_point();
     test_window_from_point(argv[0]);
-    test_thick_child_size(hwndMain);
+    test_thick_child_size();
     test_fullscreen();
     test_hwnd_message();
-    test_nonclient_area(hwndMain);
+    test_nonclient_area();
     test_params();
     test_GetWindowModuleFileName();
     test_capture_1();
     test_capture_2();
-    test_capture_3(hwndMain, hwndMain2);
+    test_capture_3();
     test_capture_4();
     test_rtl_layout();
     test_FlashWindow();
@@ -12555,26 +12765,26 @@ START_TEST(win)
 
     test_mdi();
     test_icons();
-    test_SetWindowPos(hwndMain, hwndMain2);
-    test_SetMenu(hwndMain);
-    test_SetFocus(hwndMain);
-    test_SetActiveWindow(hwndMain);
+    test_SetWindowPos();
+    test_SetMenu();
+    test_SetFocus();
+    test_SetActiveWindow();
     test_NCRedraw();
 
-    test_children_zorder(hwndMain);
-    test_popup_zorder(hwndMain2, hwndMain, WS_POPUP);
-    test_popup_zorder(hwndMain2, hwndMain, 0);
+    test_children_zorder();
+    test_popup_zorder(WS_POPUP);
+    test_popup_zorder(0);
     test_GetLastActivePopup();
-    test_keyboard_input(hwndMain);
-    test_mouse_input(hwndMain);
-    test_validatergn(hwndMain);
-    test_nccalcscroll( hwndMain);
-    test_scrollwindow( hwndMain);
-    test_scrollvalidate( hwndMain);
-    test_scrolldc( hwndMain);
+    test_keyboard_input();
+    test_mouse_input();
+    test_validatergn();
+    test_nccalcscroll();
+    test_scrollwindow();
+    test_scrollvalidate();
+    test_scrolldc();
     test_scroll();
     test_IsWindowUnicode();
-    test_vis_rgn(hwndMain);
+    test_vis_rgn();
 
     test_AdjustWindowRect();
     test_window_styles();
@@ -12585,31 +12795,31 @@ START_TEST(win)
     test_SetWindowLong();
     test_set_window_style();
     test_ShowWindow();
-    test_ShowWindow_owned(hwndMain);
-    test_ShowWindow_child(hwndMain);
-    test_ShowWindow_mdichild(hwndMain);
+    test_ShowWindow_owned();
+    test_ShowWindow_child();
+    test_ShowWindow_mdichild();
     test_EnableWindow();
     test_gettext();
     test_GetUpdateRect();
     test_Expose();
     test_layered_window();
 
-    test_SetForegroundWindow(hwndMain);
-    test_handles( hwndMain );
+    test_SetForegroundWindow();
+    test_handles();
     test_winregion();
     test_map_points();
     test_update_region();
     test_window_without_child_style();
     test_smresult();
     test_GetMessagePos();
-    test_activateapp(hwndMain);
+    test_activateapp();
     test_winproc_handles(argv[0]);
     test_deferwindowpos();
-    test_LockWindowUpdate(hwndMain);
+    test_LockWindowUpdate();
     test_desktop();
-    test_display_affinity(hwndMain);
+    test_display_affinity();
     test_hide_window();
-    test_minimize_window(hwndMain);
+    test_minimize_window();
     test_destroy_quit();
     test_IsWindowEnabled();
     test_window_placement();
@@ -12622,12 +12832,9 @@ START_TEST(win)
     /* add the tests above this line */
     if (hhook) UnhookWindowsHookEx(hhook);
 
-    DestroyWindow(hwndMain2);
-    DestroyWindow(hwndMain);
-
     /* Make sure that following tests are executed last, under Windows they
      * tend to break the tests which are sensitive to z-order and activation
-     * state of hwndMain and hwndMain2 windows.
+     * state of windows.
      */
     test_topmost();
 
-- 
2.34.1




More information about the wine-devel mailing list