From: Rémi Bernon <rbernon@codeweavers.com> --- dlls/user32/mdi.c | 2 ++ dlls/user32/tests/class.c | 2 +- server/class.c | 6 +++++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/dlls/user32/mdi.c b/dlls/user32/mdi.c index d19990fbdb0..7e6a6054b18 100644 --- a/dlls/user32/mdi.c +++ b/dlls/user32/mdi.c @@ -993,6 +993,8 @@ LRESULT MDIClientWndProc_common( HWND hwnd, UINT message, WPARAM wParam, LPARAM TRACE("%p %04x (%s) %08Ix %08Ix\n", hwnd, message, SPY_GetMsgName(message, hwnd), wParam, lParam); + NtUserSetWindowFNID( hwnd, MAKE_FNID(NTUSER_WNDPROC_MDICLIENT) ); + if (!(ci = get_client_info( hwnd ))) { if (message == WM_NCCREATE) diff --git a/dlls/user32/tests/class.c b/dlls/user32/tests/class.c index a41cfb1c9a5..5588ab781e3 100644 --- a/dlls/user32/tests/class.c +++ b/dlls/user32/tests/class.c @@ -2527,7 +2527,7 @@ static const struct real_class_test class_tests[] = { "ScrollBar", "ScrollBar", FALSE, TRUE, FALSE, TRUE, TRUE }, { "Static", "Static", TRUE, TRUE, TRUE, TRUE, FALSE }, { "ComboLBox", "ListBox", FALSE, TRUE, TRUE, TRUE, FALSE }, - { "MDIClient", "MDIClient", TRUE, TRUE, TRUE, TRUE, TRUE }, + { "MDIClient", "MDIClient", TRUE, TRUE, TRUE, TRUE, FALSE }, { "#32768", "#32768", FALSE, FALSE, TRUE, TRUE, FALSE }, { "#32770", "#32770", TRUE, TRUE, TRUE, TRUE, TRUE }, /* Not all built-in classes set real window class. */ diff --git a/server/class.c b/server/class.c index e505fa46e58..95defe8b9ba 100644 --- a/server/class.c +++ b/server/class.c @@ -163,7 +163,11 @@ unsigned int get_class_fnid( struct window_class *class, data_size_t *extra_size *extra_size = class->shared->info.win_extra; if ((class->fnid & ~0x7fff) != 0x8000) *private_size = 0; - else *private_size = *extra_size; + else switch (class->fnid & 0x7fff) + { + case NTUSER_WNDPROC_MDICLIENT: *private_size = 0; break; + default: *private_size = *extra_size; break; + } return class->fnid; } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11044