GetWindowRgn是Window api里的方法,只有被包含在这个区域内的地方才会被重绘,而不包含在区域内的其他区域系统将不会显示。
GetWindowRgn是Window api里的方法,只有被包含在这个区域内的地方才会被重绘,而不包含在区域内的其他区域系统将不会显示。
GetWindowRgn 函数
The GetWindowRgn function obtains a copy of the window region of a window. The window region of a window is set by calling the SetWindowRgn function. The window region determines the area within the window where the system permits drawing. The system does not display any portion of a window that lies outside of the window region
GetWindowRgn获取窗口的区域,只有被包含在这个区域内的地方才会被重绘,而不包含在区域内的其他区域系统将不会显示.
int GetWindowRgn(HWND hWnd, HRGN hRgn);
hWnd
Handle to the window whose window region is to be obtained.
hRgn
Handle to the region which will be modified to represent the window region.
The return value specifies the type of the region that the function obtains. It can be one of the following values.
NULLREGION - The region is empty.
SIMPLEREGION - The region is a single rectangle.
COMPLEXREGION - The region is more than one rectangle.
ERROR - The specified window does not have a region, or an error occurred while attempting to return the region.
The coordinates of a window's window region are relative to the upper-left corner of the window, not the client area of the window.
To set the window region of a window, call the SetWindowRgn function.
例:
void onPaint(){ CDialog::onPaint(); CWindowDC dc(this); HRGN hr = CreateRectRgn(0, 0, 0, 0); //必须要先创建一个HRGN, 否则GetWindowRgn会失败 GetWindowRgn(hr); CRgn *mpRgnTemp = CRgn::FromHandle(hr); //绘制窗口边框 CBrush br; br.CreateSolidBrush(0x979798); dc.frameRgn(mpRgnTemp, &br, 1, 1); br.DeleteObject();}Windows NT/2000/XP: Included in Windows NT 3.51 and later.
Windows 95/98/Me: Included in Windows 95 and later.
Header: Declared in Winuser.h; include Windows.h.
Library: Use User32.lib.