共用方式為


顯示裝置內容

應用程式會藉由呼叫 BeginPaintGetDCGetDCEx 函式,並識別對應輸出出現的視窗,以取得顯示 DC。 一般而言,只有在應用程式必須在工作區中繪製時,才會取得顯示DC。 不過,透過呼叫 GetWindowDC 函式,可以取得 視窗裝置內容。 當應用程式完成繪製時,它必須呼叫 EndPaintReleaseDC 函式來釋放 DC。

影片顯示有五種類型的DC:

  • 常見
  • 私人
  • 父母

類別裝置內容

類別裝置內容 受到嚴格支援,以便與16位版本的 Windows 相容。 撰寫應用程式時,請避免使用類別裝置內容;請改用私人裝置內容。

一般裝置內容

系統會在特殊快取中維護一般裝置內容 顯示 DC。 常見的裝置內容會用於執行不常繪製作業的應用程式。 在系統傳回 DC 句柄之前,它會使用預設物件、屬性和模式初始化通用裝置內容。 除非呼叫其中一個 GDI 函式來選取新的物件、變更現有物件的屬性,或選取新的模式,否則應用程式所執行的任何繪圖作業都會使用這些預設值。

因為只有少數常見的裝置內容存在,所以應用程式應該在完成繪圖之後釋放它們。 當應用程式發行通用裝置內容時,預設數據的任何變更都將遺失。

私人裝置內容

私人裝置內容 會顯示DC,與一般裝置內容不同,即使在應用程式放開預設數據之後,仍會保留預設數據的任何變更。 私人裝置內容用於執行許多繪圖作業的應用程式,例如計算機輔助設計(CAD)應用程式、桌面發佈應用程式、繪圖和繪製應用程式等等。 私人裝置內容不是系統快取的一部分,因此在使用后不需要釋放。 系統會在該類別的最後一個視窗終結之後,自動移除私人裝置內容。

當應用程式初始化 WNDCLASS 結構 成員的 樣式,並呼叫 RegisterClass 函式時,應用程式會先指定CS_OWNDC視窗類別樣式,以建立私人裝置內容。 (如需視窗類別的詳細資訊,請參閱 視窗類別。)

使用CS_OWNDC樣式建立窗口之後,應用程式可以呼叫 GetDCGetDCExBeginPaint 函式一次,以取得識別私人裝置內容的句柄。 應用程式可以繼續使用這個句柄(以及相關聯的 DC),直到它刪除使用此類別建立的窗口為止。 系統會保留圖形物件及其屬性或圖形模式的任何變更,直到刪除窗口為止。

視窗裝置內容

視窗裝置內容 可讓應用程式在視窗的任何位置繪製,包括非工作區。 視窗裝置內容通常是由處理具有自定義非工作區之視窗 WM_NCPAINTWM_NCACTIVATE 訊息的應用程式使用。 不建議針對任何其他用途使用視窗裝置內容。 如需詳細資訊;請參閱 GetWindowDC

父裝置內容

父裝置內容 可讓應用程式將設定視窗裁剪區域所需的時間降至最低。 應用程式通常會使用父裝置內容來加速繪製控制視窗,而不需要私人或類別裝置內容。 例如,系統會使用父裝置內容進行按鈕和編輯控制件。 父裝置內容僅供子視窗使用,絕不搭配最上層或彈出視窗使用。 如需詳細資訊;請參閱 父代顯示裝置內容