mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-06 23:54:07 +00:00
6f3ed5fd64
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
125 lines
3.4 KiB
C
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;
|
|
}
|