diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec index d251b80fb70..c153b6dbfe3 100644 --- a/dlls/user32/user32.spec +++ b/dlls/user32/user32.spec @@ -412,7 +412,7 @@ @ stdcall GetWindowModuleFileName(long ptr long) GetWindowModuleFileNameA @ stdcall GetWindowModuleFileNameA(long ptr long) @ stdcall GetWindowModuleFileNameW(long ptr long) -@ stdcall GetWindowPlacement(long ptr) +@ stdcall GetWindowPlacement(long ptr) NtUserGetWindowPlacement @ stdcall GetWindowRect(long ptr) @ stdcall GetWindowRgn(long long) @ stdcall GetWindowRgnBox(long ptr) diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c index e4eee036f07..03fe731ee0e 100644 --- a/dlls/user32/winpos.c +++ b/dlls/user32/winpos.c @@ -225,7 +225,7 @@ UINT WINAPI GetInternalWindowPos( HWND hwnd, LPRECT rectWnd, WINDOWPLACEMENT wndpl; wndpl.length = sizeof(wndpl); - if (GetWindowPlacement( hwnd, &wndpl )) + if (NtUserGetWindowPlacement( hwnd, &wndpl )) { if (rectWnd) *rectWnd = wndpl.rcNormalPosition; if (ptIcon) *ptIcon = wndpl.ptMinPosition; @@ -235,18 +235,6 @@ UINT WINAPI GetInternalWindowPos( HWND hwnd, LPRECT rectWnd, } -/*********************************************************************** - * GetWindowPlacement (USER32.@) - * - * Win95: - * Fails if wndpl->length of Win95 (!) apps is invalid. - */ -BOOL WINAPI GetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *wndpl ) -{ - return NtUserGetWindowPlacement( hwnd, wndpl ); -} - - /*********************************************************************** * AnimateWindow (USER32.@) * Shows/Hides a window with an animation diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index 053ca5aa8f1..edb21456d8d 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1184,6 +1184,7 @@ static struct unix_funcs unix_funcs = NtUserGetUpdateRect, NtUserGetUpdateRgn, NtUserGetUpdatedClipboardFormats, + NtUserGetWindowPlacement, NtUserHideCaret, NtUserIsClipboardFormatAvailable, NtUserMapVirtualKeyEx, diff --git a/dlls/win32u/sysparams.c b/dlls/win32u/sysparams.c index f9491313384..8a99e4095f9 100644 --- a/dlls/win32u/sysparams.c +++ b/dlls/win32u/sysparams.c @@ -2163,7 +2163,7 @@ HMONITOR monitor_from_window( HWND hwnd, DWORD flags, UINT dpi ) TRACE( "(%p, 0x%08x)\n", hwnd, flags ); wp.length = sizeof(wp); - if (is_iconic( hwnd ) && get_window_placement( hwnd, &wp )) + if (is_iconic( hwnd ) && NtUserGetWindowPlacement( hwnd, &wp )) return monitor_from_rect( &wp.rcNormalPosition, flags, dpi ); if (get_window_rect( hwnd, &rect, dpi )) diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 7ef2a4b2c7e..48c10fd45d3 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -1014,7 +1014,7 @@ @ stub NtUserGetWindowFeedbackSetting @ stub NtUserGetWindowGroupId @ stub NtUserGetWindowMinimizeRect -@ stub NtUserGetWindowPlacement +@ stdcall NtUserGetWindowPlacement(long ptr) @ stub NtUserGetWindowProcessHandle @ stdcall -syscall NtUserGetWindowRgnEx(long long long) @ stub NtUserGhostWindowFromHungWindow diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index 0e1afb80e62..c7340018830 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -246,6 +246,7 @@ struct unix_funcs BOOL (WINAPI *pNtUserGetUpdateRect)( HWND hwnd, RECT *rect, BOOL erase ); INT (WINAPI *pNtUserGetUpdateRgn)( HWND hwnd, HRGN hrgn, BOOL erase ); BOOL (WINAPI *pNtUserGetUpdatedClipboardFormats)( UINT *formats, UINT size, UINT *out_size ); + BOOL (WINAPI *pNtUserGetWindowPlacement)( HWND hwnd, WINDOWPLACEMENT *placement ); BOOL (WINAPI *pNtUserHideCaret)( HWND hwnd ); BOOL (WINAPI *pNtUserIsClipboardFormatAvailable)( UINT format ); UINT (WINAPI *pNtUserMapVirtualKeyEx)( UINT code, UINT type, HKL layout ); @@ -442,7 +443,6 @@ extern HWND get_full_window_handle( HWND hwnd ) DECLSPEC_HIDDEN; extern HWND get_parent( HWND hwnd ) DECLSPEC_HIDDEN; extern HWND get_hwnd_message_parent(void) DECLSPEC_HIDDEN; extern DPI_AWARENESS_CONTEXT get_window_dpi_awareness_context( HWND hwnd ) DECLSPEC_HIDDEN; -extern BOOL get_window_placement( HWND hwnd, WINDOWPLACEMENT *placement ) DECLSPEC_HIDDEN; extern MINMAXINFO get_min_max_info( HWND hwnd ) DECLSPEC_HIDDEN; extern HWND get_window_relative( HWND hwnd, UINT rel ) DECLSPEC_HIDDEN; extern DWORD get_window_thread( HWND hwnd, DWORD *process ) DECLSPEC_HIDDEN; diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c index 440052d6e0b..338063f5fb5 100644 --- a/dlls/win32u/window.c +++ b/dlls/win32u/window.c @@ -2400,8 +2400,10 @@ static BOOL empty_point( POINT pt ) return pt.x == -1 && pt.y == -1; } -/* see GetWindowPlacement */ -BOOL get_window_placement( HWND hwnd, WINDOWPLACEMENT *placement ) +/*********************************************************************** + * NtUserGetWindowPlacement (win32u.@) + */ +BOOL WINAPI NtUserGetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *placement ) { RECT work_rect = get_maximized_work_rect( hwnd ); WND *win = get_win_ptr( hwnd ); @@ -4036,7 +4038,7 @@ static UINT window_min_maximize( HWND hwnd, UINT cmd, RECT *rect ) TRACE( "%p %u\n", hwnd, cmd ); wpl.length = sizeof(wpl); - get_window_placement( hwnd, &wpl ); + NtUserGetWindowPlacement( hwnd, &wpl ); if (call_hooks( WH_CBT, HCBT_MINMAX, (WPARAM)hwnd, cmd, TRUE )) return SWP_NOSIZE | SWP_NOMOVE; @@ -5393,9 +5395,6 @@ ULONG_PTR WINAPI NtUserCallHwndParam( HWND hwnd, DWORD_PTR param, DWORD code ) case NtUserCallHwndParam_GetWindowLongPtrW: return get_window_long_ptr( hwnd, param, FALSE ); - case NtUserCallHwndParam_GetWindowPlacement: - return get_window_placement( hwnd, (WINDOWPLACEMENT *)param ); - case NtUserCallHwndParam_GetWindowRect: return get_window_rect( hwnd, (RECT *)param, get_thread_dpi() ); diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index 953de0caafc..13b4b7164ab 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -1023,6 +1023,12 @@ BOOL WINAPI NtUserGetUpdatedClipboardFormats( UINT *formats, UINT size, UINT *ou return unix_funcs->pNtUserGetUpdatedClipboardFormats( formats, size, out_size ); } +BOOL WINAPI NtUserGetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *placement ) +{ + if (!unix_funcs) return FALSE; + return unix_funcs->pNtUserGetWindowPlacement( hwnd, placement ); +} + BOOL WINAPI NtUserIsClipboardFormatAvailable( UINT format ) { if (!unix_funcs) return FALSE; diff --git a/include/ntuser.h b/include/ntuser.h index bc60f421f0e..c7490eaad0a 100644 --- a/include/ntuser.h +++ b/include/ntuser.h @@ -577,6 +577,7 @@ HDESK WINAPI NtUserGetThreadDesktop( DWORD thread ); INT WINAPI NtUserGetUpdateRgn( HWND hwnd, HRGN hrgn, BOOL erase ); BOOL WINAPI NtUserGetUpdatedClipboardFormats( UINT *formats, UINT size, UINT *out_size ); BOOL WINAPI NtUserGetUpdateRect( HWND hwnd, RECT *rect, BOOL erase ); +BOOL WINAPI NtUserGetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *placement ); int WINAPI NtUserGetWindowRgnEx( HWND hwnd, HRGN hrgn, UINT unk ); BOOL WINAPI NtUserHideCaret( HWND hwnd ); NTSTATUS WINAPI NtUserInitializeClientPfnArrays( const struct user_client_procs *client_procsA, @@ -1000,7 +1001,6 @@ enum NtUserCallHwndParam_GetWindowLongW, NtUserCallHwndParam_GetWindowLongPtrA, NtUserCallHwndParam_GetWindowLongPtrW, - NtUserCallHwndParam_GetWindowPlacement, NtUserCallHwndParam_GetWindowRect, NtUserCallHwndParam_GetWindowRelative, NtUserCallHwndParam_GetWindowThread, @@ -1093,12 +1093,6 @@ static inline LONG NtUserGetWindowLongW( HWND hwnd, INT offset ) return NtUserCallHwndParam( hwnd, offset, NtUserCallHwndParam_GetWindowLongW ); } -static inline BOOL NtUserGetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *wndpl ) -{ - return NtUserCallHwndParam( hwnd, (UINT_PTR)wndpl, - NtUserCallHwndParam_GetWindowPlacement ); -} - static inline BOOL NtUserGetWindowRect( HWND hwnd, RECT *rect ) { return NtUserCallHwndParam( hwnd, (UINT_PTR)rect, NtUserCallHwndParam_GetWindowRect );