描述
GetDCEx函数检索指定窗口或整个屏幕的客户区域的设备上下文(DC)的句柄。您可以在随后的GDI函数中使用返回的句柄来绘制直流。设备上下文是不透明的数据结构,其值由GDI内部使用。
此函数是GetDC功能的扩展,它使应用程序能够更好地控制在客户端区域中是否发生裁剪。
C++ 语法
HDC GetDCEx( __in HWND hWnd, __in HRGN hrgnClip, __in DWORD flags ); |
PowerBASIC 语法
FUNCTION GetDCEx ( _ BYVAL hWnd AS DWORD, _ BYVAL hrgnClip AS DWORD, _ BYVAL flags AS DWORD _ ) AS DWORD |
参数
hWnd
[in]处理要检索DC的窗口。如果此值为NULL,则GetDCEx检索整个屏幕的DC。
Windows 98 / Me,Windows 2000 / XP / Vista / Windows 7:要获取特定显示器的DC,请使用EnumDisplayMonitors和CreateDC功能。
hrgnClip
[in]指定可与DC的可见区域组合的剪切区域。如果标志的值为DCX_INTERSECTRGN或DCX_EXCLUDERGN,则操作系统将承担该区域的所有权,并在不再需要时自动将其删除。在这种情况下,在成功调用GetDCEx之后,应用程序不应该使用该区域甚至不会删除它。
flags
[in]指定DC的创建方式。此参数可以是以下值中的一个或多个。
值 |
含义 |
DCX_WINDOW &H00000001??? |
返回与窗口矩形相对应的DC,而不是客户端矩形。 |
DCX_CACHE &H00000002??? |
从缓存返回一个DC,而不是OWNDC或CLASSDC窗口。基本上覆盖CS_OWNDC和CS_CLASSDC。 |
DCX_PARENTCLIP &H00000020??? |
使用父窗口的可见区域。父级的WS_CLIPCHILDREN和CS_PARENTDC样式位将被忽略。原点设置为由的hWnd标识的窗口的左上角。 |
DCX_CLIPSIBLINGS &H00000010??? |
排除由的hWnd标识的窗口上方的所有兄弟窗口的可见区域。 |
DCX_CLIPCHILDREN &H00000008??? |
排除由的hWnd标识的窗口下方的所有子窗口的可见区域。 |
DCX_NORESETATTRS &H00000004??? |
当DC释放时,不将此DC的属性重置为默认属性。 |
DCX_LOCKWINDOWUPDATE &H00000400??? |
即使有LockWindowUpdate调用有效也可以绘制,否则将排除此窗口。用于追踪时绘图。 |
DCX_EXCLUDERGN &H00000040??? |
由hrgnClip标识的剪辑区域从返回的DC的可见区域中排除。 |
DCX_INTERSECTRGN &H00000080??? |
由hrgnClip识别的剪切区域与返回的DC的可见区域相交。 |
DCX_INTERSECTUPDATE &H00000200??? |
保留;不使用。 |
DCX_VALIDATE &H00200000??? |
保留;不使用。 |
返回值
如果函数成功,则返回值是指定窗口的DC的句柄。
如果函数失败,返回值为NULL。hWnd参数的无效值将导致该函数失败。
Windows NT / 2000 / XP / Vista / Windows 7:要获取扩展错误信息,请调用GetLastError.
备注
除非显示器DC属于窗口类,否则必须调用ReleaseDC函数以在绘制后释放DC。此外,ReleaseDC必须从调用GetDCEx的同一线程调用。DC的数量仅受可用内存限制。
Windows 95/98 / Me:任何时候只有五个常见的DC可用,因此无法释放DC可能会阻止其他应用程序访问。
如果CS_CLASSDC,CS_OWNDC或CS_PARENTDC在类注册时被指定为WNDCLASS结构中的样式,该函数将返回属于窗口类的DC的句柄。
无证标志
处理WM_NCPAINT时获取设备上下文不能按照所述进行操作。附加无证标志&H00010000 ???必须使用:
CASE %WM_NCPAINT
LOCAL hdc AS DWORD
hdc = GetDCEx(hwnd, wParam, %DCX_WINDOW OR _
%DCX_INTERSECTRGN OR &H00010000???)
' // Paint into this DC
ReleaseDC(hwnd, hdc)
在Windows XP上验证。
引用文件 #INCLUDE Once
WinUser.inc(包括Windows.inc)