wine/dlls/user32/painting.c
Jacek Caban 6f3ed5fd64 win32u: Move NtUserInvalidateRect and NtUserInvalidateRgn implementation from user32.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
2022-06-15 18:32:16 +02:00

125 lines
3.4 KiB
C

/*
* Window painting functions
*
* Copyright 1993, 1994, 1995, 2001, 2004, 2005, 2008 Alexandre Julliard
* Copyright 1996, 1997, 1999 Alex Korobka
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "user_private.h"
/***********************************************************************
* GetDC (USER32.@)
*
* Get a device context.
*
* RETURNS
* Success: Handle to the device context
* Failure: NULL.
*/
HDC WINAPI GetDC( HWND hwnd )
{
if (!hwnd) return NtUserGetDCEx( 0, 0, DCX_CACHE | DCX_WINDOW );
return NtUserGetDCEx( hwnd, 0, DCX_USESTYLE );
}
/***********************************************************************
* GetWindowDC (USER32.@)
*/
HDC WINAPI GetWindowDC( HWND hwnd )
{
return NtUserGetDCEx( hwnd, 0, DCX_USESTYLE | DCX_WINDOW );
}
/***********************************************************************
* UpdateWindow (USER32.@)
*/
BOOL WINAPI UpdateWindow( HWND hwnd )
{
if (!hwnd)
{
SetLastError( ERROR_INVALID_WINDOW_HANDLE );
return FALSE;
}
return NtUserRedrawWindow( hwnd, NULL, 0, RDW_UPDATENOW | RDW_ALLCHILDREN );
}
/***********************************************************************
* ValidateRgn (USER32.@)
*/
BOOL WINAPI ValidateRgn( HWND hwnd, HRGN hrgn )
{
if (!hwnd)
{
SetLastError( ERROR_INVALID_WINDOW_HANDLE );
return FALSE;
}
return NtUserRedrawWindow( hwnd, NULL, hrgn, RDW_VALIDATE );
}
/***********************************************************************
* ValidateRect (USER32.@)
*
* MSDN: if hwnd parameter is NULL, ValidateRect invalidates and redraws
* all windows and sends WM_ERASEBKGND and WM_NCPAINT.
*/
BOOL WINAPI ValidateRect( HWND hwnd, const RECT *rect )
{
UINT flags = RDW_VALIDATE;
if (!hwnd)
{
flags = RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_FRAME | RDW_ERASE | RDW_ERASENOW;
rect = NULL;
}
return NtUserRedrawWindow( hwnd, rect, 0, flags );
}
/*************************************************************************
* ScrollWindow (USER32.@)
*
*/
BOOL WINAPI ScrollWindow( HWND hwnd, INT dx, INT dy,
const RECT *rect, const RECT *clipRect )
{
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;
}