From: Rémi Bernon <rbernon(a)codeweavers.com> --- dlls/user32/tests/class.c | 8 ++++---- dlls/win32u/window.c | 10 +++++++++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/dlls/user32/tests/class.c b/dlls/user32/tests/class.c index 38490ae2049..92e07e44bdf 100644 --- a/dlls/user32/tests/class.c +++ b/dlls/user32/tests/class.c @@ -1509,8 +1509,8 @@ static LRESULT WINAPI test_class_wndproc( HWND hwnd, UINT msg, WPARAM wparam, LP if (msg == WM_NCCREATE) { CREATESTRUCTA *cs = (CREATESTRUCTA *)lparam; - if (IS_INTRESOURCE(cs->lpszClass)) todo_wine check_atom_name_a( (UINT_PTR)cs->lpszClass, "WineTestClass" ); - else todo_wine ok( !strcmp( cs->lpszClass, "WineTestClass" ), "got %s\n", debugstr_a(cs->lpszClass) ); + if (IS_INTRESOURCE(cs->lpszClass)) check_atom_name_a( (UINT_PTR)cs->lpszClass, "WineTestClass" ); + else ok( !strcmp( cs->lpszClass, "WineTestClass" ), "got %s\n", debugstr_a(cs->lpszClass) ); return 1; } @@ -1535,8 +1535,8 @@ static LRESULT WINAPI test_class_integral_wndproc( HWND hwnd, UINT msg, WPARAM w if (msg == WM_NCCREATE) { CREATESTRUCTA *cs = (CREATESTRUCTA *)lparam; - if (IS_INTRESOURCE(cs->lpszClass)) todo_wine ok( (UINT_PTR)cs->lpszClass == 1234, "got %p\n", cs->lpszClass ); - else todo_wine ok( !strcmp( cs->lpszClass, "#1234" ), "got %s\n", debugstr_a(cs->lpszClass) ); + if (IS_INTRESOURCE(cs->lpszClass)) ok( (UINT_PTR)cs->lpszClass == 1234, "got %p\n", cs->lpszClass ); + else ok( !strcmp( cs->lpszClass, "#1234" ), "got %s\n", debugstr_a(cs->lpszClass) ); return 1; } diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c index 4c3fba74894..7e7726f52f9 100644 --- a/dlls/win32u/window.c +++ b/dlls/win32u/window.c @@ -5562,6 +5562,7 @@ HWND WINAPI NtUserCreateWindowEx( DWORD ex_style, UNICODE_STRING *class_name, HWND parent, HMENU menu, HINSTANCE class_instance, void *params, DWORD flags, HINSTANCE instance, const WCHAR *class, BOOL ansi ) { + WCHAR base_nameW[MAX_ATOM_LEN + 1]; UINT win_dpi, context; struct window_surface *surface; struct window_rects new_rects; @@ -5665,7 +5666,14 @@ HWND WINAPI NtUserCreateWindowEx( DWORD ex_style, UNICODE_STRING *class_name, release_win_ptr( win ); if (class && IS_INTRESOURCE(class)) cs.lpszClass = class; - else cs.lpszClass = class_name->Buffer; + else + { + UNICODE_STRING base_name; + base_name.Buffer = base_nameW; + base_name.MaximumLength = sizeof(base_nameW); + NtUserGetClassName( hwnd, FALSE, &base_name ); + cs.lpszClass = base_name.Buffer; + } cbtc.hwndInsertAfter = HWND_TOP; cbtc.lpcs = &cs; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9158