From: David Adam Subject: [PATCH v2] msvfw32: WS_CHILD is set for window style when parent is not NULL Message-Id: Date: Sun, 21 Feb 2021 15:19:22 -1000

From 67808609e11bd820e74db97b83f8436f565a68d3 Mon Sep 17 00:00:00 2001 From: David Adam Date: Sat, 20 Feb 2021 13:39:02 -1000 Subject: [PATCH] msvfw32: WS_CHILD is set for window style when parent is not NULL Signed-off-by: David Adam --- dlls/msvfw32/mciwnd.c | 12 +-- dlls/msvfw32/tests/mciwnd.c | 183 ++++++++++++++++++++++++++++++------ 2 files changed, 158 insertions(+), 37 deletions(-) diff --git a/dlls/msvfw32/mciwnd.c b/dlls/msvfw32/mciwnd.c index 0b35bad356c..c038bf97404 100644 --- a/dlls/msvfw32/mciwnd.c +++ b/dlls/msvfw32/mciwnd.c @@ -108,15 +108,15 @@ HWND VFWAPIV MCIWndCreateW(HWND hwndParent, HINSTANCE hInstance, if (!hInstance) hInstance = GetModuleHandleW(0); + dwStyle |= WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN; + if (hwndParent) - dwStyle |= WS_VISIBLE | WS_BORDER /*| WS_CHILD*/; + dwStyle |= WS_BORDER | WS_CHILD; else - dwStyle |= WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX; + dwStyle |= WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX; - return CreateWindowExW(0, mciWndClassW, NULL, - dwStyle | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, - 0, 0, 300, 0, - hwndParent, 0, hInstance, (LPVOID)szFile); + return CreateWindowExW(0, mciWndClassW, NULL, dwStyle, 0, 0, 300, 0, + hwndParent, 0, hInstance, (LPVOID)szFile); } /*********************************************************************** diff --git a/dlls/msvfw32/tests/mciwnd.c b/dlls/msvfw32/tests/mciwnd.c index 27ca2e8d203..95ea657c62b 100644 --- a/dlls/msvfw32/tests/mciwnd.c +++ b/dlls/msvfw32/tests/mciwnd.c @@ -155,44 +155,165 @@ static BOOL create_avi_file(char *fname) static void test_MCIWndCreate(void) { - HWND parent, window; + int i; + HWND parent, window, window2; HMODULE hinst = GetModuleHandleA(NULL); char fname[MAX_PATH]; char invalid_fname[] = "invalid.avi"; char error[200]; LRESULT ret; + DWORD result; + DWORD always_set_style, expected_style, style; + DWORD given_style[]= { MCIWNDF_NOAUTOSIZEWINDOW, MCIWNDF_NOAUTOSIZEMOVIE, MCIWNDF_NOMENU, + MCIWNDF_RECORD, MCIWNDF_SHOWMODE, MCIWNDF_SHOWNAME, MCIWNDF_SHOWPOS }; create_avi_file(fname); - - window = MCIWndCreateA(NULL, hinst, MCIWNDF_NOERRORDLG, fname); - ok(window != NULL, "Failed to create an MCIWnd window without parent\n"); - - ret = SendMessageA(window, MCIWNDM_GETERRORA, sizeof(error), (LPARAM)error); - ok(!ret || broken(ret == ERROR_INVALID_HANDLE) /* w2003std, w2008s64 */, - "Unexpected error %ld\n", ret); - - DestroyWindow(window); - - parent = CreateWindowExA(0, "static", "msvfw32 test", - WS_POPUP, 0, 0, 100, 100, - 0, 0, 0, NULL); - ok(parent != NULL, "Failed to create a window\n"); - window = MCIWndCreateA(parent, hinst, MCIWNDF_NOERRORDLG, fname); - ok(window != NULL, "Failed to create an MCIWnd window\n"); - - ret = SendMessageA(window, MCIWNDM_GETERRORA, sizeof(error), (LPARAM)error); - ok(!ret || broken(ret == ERROR_INVALID_HANDLE) /* w2003std, w2008s64 */, - "Unexpected error %ld\n", ret); - - DestroyWindow(parent); - - window = MCIWndCreateA(NULL, hinst, MCIWNDF_NOERRORDLG, invalid_fname); - ok(window != NULL, "Failed to create an MCIWnd window\n"); - - ret = SendMessageA(window, MCIWNDM_GETERRORA, sizeof(error), (LPARAM)error); - todo_wine ok(ret == MCIERR_FILE_NOT_FOUND, "Unexpected error %ld\n", ret); - - DestroyWindow(window); + always_set_style = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_VISIBLE; + + for(i=0; i