GetDCEx 函式 (winuser.h)

GetDCEx 函式會擷取指定視窗或整個畫面之工作區 (DC) 裝置內容的句柄。 您可以在後續 GDI 函式中使用傳回的句柄,在 DC 中繪製。 裝置內容是不透明的數據結構,GDI 會在內部使用其值。

此函式是 GetDC 函式的延伸模組,可讓應用程式更充分掌控裁剪在工作區中的發生方式和是否發生。

語法

HDC GetDCEx(
  [in] HWND  hWnd,
  [in] HRGN  hrgnClip,
  [in] DWORD flags
);

參數

[in] hWnd

要擷取DC之視窗的句柄。 如果此值為 NULL,GetDCEx 會擷取整個畫面的 DC。

[in] hrgnClip

可結合DC可見區域的裁剪區域。 如果 旗標的 值是DCX_INTERSECTRGN或DCX_EXCLUDERGN,則操作系統會假設區域的擁有權,並在不再需要時自動將其刪除。 在此情況下,應用程式不應該在成功呼叫 GetDCEx 之後使用或刪除區域。

[in] flags

指定 DC 的建立方式。 此參數可以是下列一或多個值。

意義
DCX_WINDOW
傳回對應至視窗矩形的DC,而不是用戶端矩形。
DCX_CACHE
從快取傳回 DC,而不是 OWNDC 或 CLASSDC 視窗。 基本上會覆寫CS_OWNDC和CS_CLASSDC。
DCX_PARENTCLIP
使用父視窗的可見區域。 系統會忽略父系的WS_CLIPCHILDREN和CS_PARENTDC樣式位。 原點會設定為 hWnd 所識別視窗的左上角。
DCX_CLIPSIBLINGS
排除 hWnd 所識別視窗上方所有同層級視窗的可見區域。
DCX_CLIPCHILDREN
排除 hWnd 所識別視窗下方所有子視窗的可見區域。
DCX_NORESETATTRS
會忽略此旗標。
DCX_LOCKWINDOWUPDATE
允許繪圖,即使有 有效 LockWindowUpdate 呼叫,否則會排除此視窗。 用於追蹤期間繪製。
DCX_EXCLUDERGN
hrgnClip 所識別的裁剪區域會從傳回DC的可見區域排除。
DCX_INTERSECTRGN
hrgnClip 所識別的裁剪區域會與傳回DC的可見區域交集。
DCX_INTERSECTUPDATE
保留;請勿使用。
DCX_VALIDATE
保留;請勿使用。

傳回值

如果函式成功,則傳回值是指定視窗之 DC 的句柄。

如果函式失敗,則傳回值為 NULLhWnd 參數的值無效,會導致函式失敗。

備註

除非顯示DC屬於視窗類別,否則必須呼叫 ReleaseDC 函式,以在繪製之後釋放 DC。 此外,必須從稱為 GetDCEx 的相同線程呼叫 ReleaseDC。 DC 數目僅受限於可用的記憶體。

如果CS_CLASSDC、CS_OWNDC或CS_PARENTDC指定為註冊類別時 函式會傳回屬於窗口類別的DC句柄。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 winuser.h (包括 Windows.h)
程式庫 User32.lib
Dll User32.dll

另請參閱

BeginPaint

裝置內容函式

裝置內容概觀

GetWindowDC

ReleaseDC

WNDCLASS