CDC,CPaintDC,CClientDC,CWindowDC的區別

[轉]CDC,CPaintDC,CClientDC,CWindowDC區別

CDC是Windows繪圖設備的基類
CClientDC:
(1)(客戶區設備上下文)用於客戶區的輸出,與特定窗口關聯,可以讓開發者訪問目標窗口中客戶區,其構造函數中包含了GetDC,析構函數中包含了ReleaseDC


CPaintDC:
(1)用於響應窗口重繪消息(WM_PAINT)是的繪圖輸出。
(2)CPaintDC在構造函數中調用BeginPaint()取得設備上下文,在析構函數中調用EndPaint()釋放設備上下文。EndPaint()除了釋放設備上下文外,還負責從消息隊列中清除WM_PAINT消息。因此,在處理窗口重畫時,必須使用CPaintDC,否則WM_PAINT消息無法從消息隊列中清除,將引起不斷的窗口重畫。
(3)CPaintDC也只能用在WM_PAINT消息處理之中。


CWindowDC:
(1)可在非客戶區繪製圖形,而CClientDC,CPaintDC只能在客戶區繪製圖形。
(2)座標原點是在屏幕的左上角,CClientDC,CPaintDC下座標原點是在客戶區的左上角。
(3)關聯一特定窗口,允許開發者在目標窗口的任何一部分進行繪圖,包含邊界與標題,這種DC同WM_NCPAINT消息一起發送

說明:在繪圖時推薦使用CClientDC,CPaintDC和CWindowDC對象,而不推薦直接使用CDC對象,CWindowDC的構造函數調用GetWindowDC獲取窗口DC(包含非客戶區),析構函數中調用ReleaseDC,當需要對窗口非客戶區操作時使用。

實例:
CClientDC *pDC = new CClientDC(this);
CWindowDC dc(this);

 

原貼地址:http://www.cnblogs.com/songsu/articles/1350014.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章