From dfeb2d2474292b65795f431e2864b7364abcfdfe Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 19 May 2022 14:27:36 +0200 Subject: [PATCH] win32u: Introduce DesktopWindowProc driver entry point. Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- dlls/win32u/defwnd.c | 4 ++++ dlls/win32u/driver.c | 7 +++++++ include/wine/gdi_driver.h | 3 ++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/dlls/win32u/defwnd.c b/dlls/win32u/defwnd.c index 444abd1657f..9b4edc90eaa 100644 --- a/dlls/win32u/defwnd.c +++ b/dlls/win32u/defwnd.c @@ -417,6 +417,10 @@ LRESULT desktop_window_proc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ) } case WM_NCCALCSIZE: return 0; + + default: + if (msg >= WM_USER && hwnd == get_desktop_window()) + return user_driver->pDesktopWindowProc( hwnd, msg, wparam, lparam ); } return default_window_proc( hwnd, msg, wparam, lparam, FALSE ); diff --git a/dlls/win32u/driver.c b/dlls/win32u/driver.c index 9185069208a..4dac0760464 100644 --- a/dlls/win32u/driver.c +++ b/dlls/win32u/driver.c @@ -721,6 +721,11 @@ static SHORT nulldrv_VkKeyScanEx( WCHAR ch, HKL layout ) return -256; /* use default implementation */ } +static LRESULT nulldrv_DesktopWindowProc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ) +{ + return default_window_proc( hwnd, msg, wparam, lparam, FALSE ); +} + static void nulldrv_DestroyCursorIcon( HCURSOR cursor ) { } @@ -1175,6 +1180,7 @@ static const struct user_driver_funcs lazy_load_driver = /* windowing functions */ loaderdrv_CreateDesktopWindow, loaderdrv_CreateWindow, + nulldrv_DesktopWindowProc, nulldrv_DestroyWindow, loaderdrv_FlashWindowEx, loaderdrv_GetDC, @@ -1247,6 +1253,7 @@ void CDECL __wine_set_user_driver( const struct user_driver_funcs *funcs, UINT v SET_USER_FUNC(UpdateDisplayDevices); SET_USER_FUNC(CreateDesktopWindow); SET_USER_FUNC(CreateWindow); + SET_USER_FUNC(DesktopWindowProc); SET_USER_FUNC(DestroyWindow); SET_USER_FUNC(FlashWindowEx); SET_USER_FUNC(GetDC); diff --git a/include/wine/gdi_driver.h b/include/wine/gdi_driver.h index 82bac557c2a..21fff4d4aa2 100644 --- a/include/wine/gdi_driver.h +++ b/include/wine/gdi_driver.h @@ -168,7 +168,7 @@ struct gdi_dc_funcs }; /* increment this when you change the DC function table */ -#define WINE_GDI_DRIVER_VERSION 78 +#define WINE_GDI_DRIVER_VERSION 79 #define GDI_PRIORITY_NULL_DRV 0 /* null driver */ #define GDI_PRIORITY_FONT_DRV 100 /* any font driver */ @@ -299,6 +299,7 @@ struct user_driver_funcs /* windowing functions */ BOOL (*pCreateDesktopWindow)(HWND); BOOL (*pCreateWindow)(HWND); + LRESULT (*pDesktopWindowProc)(HWND,UINT,WPARAM,LPARAM); void (*pDestroyWindow)(HWND); void (*pFlashWindowEx)(FLASHWINFO*); void (*pGetDC)(HDC,HWND,HWND,const RECT *,const RECT *,DWORD);