From: Rémi Bernon rbernon@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;