diff --git a/dlls/user32/painting.c b/dlls/user32/painting.c index be6f91e1bde..de67cd97e5f 100644 --- a/dlls/user32/painting.c +++ b/dlls/user32/painting.c @@ -62,18 +62,3 @@ BOOL WINAPI ScrollWindow( HWND hwnd, INT dx, INT dy, UINT flags = SW_INVALIDATE | SW_ERASE | (rect ? 0 : SW_SCROLLCHILDREN) | SW_NODCCACHE; return NtUserScrollWindowEx( hwnd, dx, dy, rect, clipRect, 0, NULL, flags ); } - -/************************************************************************ - * PrintWindow (USER32.@) - * - */ -BOOL WINAPI PrintWindow(HWND hwnd, HDC hdcBlt, UINT nFlags) -{ - UINT flags = PRF_CHILDREN | PRF_ERASEBKGND | PRF_OWNED | PRF_CLIENT; - if(!(nFlags & PW_CLIENTONLY)) - { - flags |= PRF_NONCLIENT; - } - SendMessageW(hwnd, WM_PRINT, (WPARAM)hdcBlt, flags); - return TRUE; -} diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec index b843d2068cd..1130ab457cd 100644 --- a/dlls/user32/user32.spec +++ b/dlls/user32/user32.spec @@ -576,7 +576,7 @@ @ stdcall PostQuitMessage(long) @ stdcall PostThreadMessageA(long long long long) @ stdcall PostThreadMessageW(long long long long) NtUserPostThreadMessage -@ stdcall PrintWindow(long long long) +@ stdcall PrintWindow(long long long) NtUserPrintWindow @ stdcall PrivateExtractIconExA(str long ptr ptr long) @ stdcall PrivateExtractIconExW(wstr long ptr ptr long) @ stdcall PrivateExtractIconsA (str long long long ptr ptr long long) diff --git a/dlls/win32u/dce.c b/dlls/win32u/dce.c index 364fbe6455b..1cc6a0d605e 100644 --- a/dlls/win32u/dce.c +++ b/dlls/win32u/dce.c @@ -1858,3 +1858,14 @@ INT WINAPI NtUserScrollWindowEx( HWND hwnd, INT dx, INT dy, const RECT *rect, return retval; } + +/************************************************************************ + * NtUserPrintWindow (win32u.@) + */ +BOOL WINAPI NtUserPrintWindow( HWND hwnd, HDC hdc, UINT flags ) +{ + UINT prf_flags = PRF_CHILDREN | PRF_ERASEBKGND | PRF_OWNED | PRF_CLIENT; + if (!(flags & PW_CLIENTONLY)) prf_flags |= PRF_NONCLIENT; + send_message( hwnd, WM_PRINT, (WPARAM)hdc, prf_flags ); + return TRUE; +} diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index 97052d4dc46..558edc0257e 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -237,6 +237,7 @@ static void * const syscalls[] = NtUserPerMonitorDPIPhysicalToLogicalPoint, NtUserPostMessage, NtUserPostThreadMessage, + NtUserPrintWindow, NtUserQueryInputContext, NtUserRedrawWindow, NtUserRegisterClassExWOW, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index d4e4365ce23..1d85a450748 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -1105,7 +1105,7 @@ @ stub NtUserPostKeyboardInputMessage @ stdcall -syscall NtUserPostMessage(long long long long) @ stdcall -syscall NtUserPostThreadMessage(long long long long) -@ stub NtUserPrintWindow +@ stdcall -syscall NtUserPrintWindow(long long long) @ stub NtUserProcessConnect @ stub NtUserProcessInkFeedbackCommand @ stub NtUserPromoteMouseInPointer diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index c2cd0b7bbf5..8573fa743a5 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -223,6 +223,7 @@ SYSCALL_ENTRY( NtUserPerMonitorDPIPhysicalToLogicalPoint ) \ SYSCALL_ENTRY( NtUserPostMessage ) \ SYSCALL_ENTRY( NtUserPostThreadMessage ) \ + SYSCALL_ENTRY( NtUserPrintWindow ) \ SYSCALL_ENTRY( NtUserQueryInputContext ) \ SYSCALL_ENTRY( NtUserRedrawWindow ) \ SYSCALL_ENTRY( NtUserRegisterClassExWOW ) \ diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c index af77475e740..447e8f84495 100644 --- a/dlls/wow64win/user.c +++ b/dlls/wow64win/user.c @@ -3184,6 +3184,15 @@ NTSTATUS WINAPI wow64_NtUserPostThreadMessage( UINT *args ) return NtUserPostThreadMessage( thread, msg, wparam, lparam ); } +NTSTATUS WINAPI wow64_NtUserPrintWindow( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + HDC hdc = get_handle( &args ); + UINT flags = get_ulong( &args ); + + return NtUserPrintWindow( hwnd, hdc, flags ); +} + NTSTATUS WINAPI wow64_NtUserQueryInputContext( UINT *args ) { HIMC handle = get_handle( &args ); diff --git a/include/ntuser.h b/include/ntuser.h index 18718ea8a2c..b83ae2418d3 100644 --- a/include/ntuser.h +++ b/include/ntuser.h @@ -810,6 +810,7 @@ BOOL WINAPI NtUserPeekMessage( MSG *msg_out, HWND hwnd, UINT first, UINT last BOOL WINAPI NtUserPerMonitorDPIPhysicalToLogicalPoint( HWND hwnd, POINT *pt ); BOOL WINAPI NtUserPostMessage( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ); BOOL WINAPI NtUserPostThreadMessage( DWORD thread, UINT msg, WPARAM wparam, LPARAM lparam ); +BOOL WINAPI NtUserPrintWindow( HWND hwnd, HDC hdc, UINT flags ); UINT_PTR WINAPI NtUserQueryInputContext( HIMC handle, UINT attr ); BOOL WINAPI NtUserRedrawWindow( HWND hwnd, const RECT *rect, HRGN hrgn, UINT flags ); ATOM WINAPI NtUserRegisterClassExWOW( const WNDCLASSEXW *wc, UNICODE_STRING *name, UNICODE_STRING *version,