CClientDC

CClientDC是CDC的派生,在構造時調用了Windows函式GetDC,在析構時調用了ReleaseDC,和CClientDC對象相關的設備上下文是視窗的客戶區。本文介紹了主要幾種DC及其區別。

類CClientDC派生於CDC,在構造時調用了Windows函式GetDC,在析構時調用了ReleaseDC。這意味著和CClientDC對象相關的設備上下文是視窗的客戶區。幾種DC及區別

CClientDC:(客戶區設備上下文)用於客戶區的輸出,與特定視窗關聯,可以讓開發者訪問目標視窗中客戶區,其構造函式中包含了GetDC,析構函式中包含了ReleaseDC:
用法是:CClientDC dc(this);//this一般指向本視窗或當前活動視圖dc.TextOut(10,10,str,str.GetLength());//利用dc輸出文本,如果是在CScrollView中使用,還要注意調用OnPrepareDC(&dc)調整設備上下文的坐標。CPaintDC用於回響視窗重繪訊息(WM_PAINT)時的繪圖輸出。CPaintDC在構造函式中調用BeginPaint()取得設備上下文,在析構函式中調用EndPaint()釋放設備上下文。EndPaint()除了釋放設備上下文外,還負責從訊息佇列中清除WM_PAINT訊息。因此,在處理視窗重畫時,必須使用CPaintDC,否則WM_PAINT訊息無法從訊息佇列中清除,將引起不斷的視窗重畫。CPaintDC也只能用在WM_PAINT訊息處理之中。
CWindowDC:關聯一特定視窗,允許開發者在目標視窗的任何一部分進行繪圖,包含邊界與標題,這種DC同WM_NCPAINT訊息一起傳送
CWindowDC與CClientDC,CPaintDC的區別:CWindowDC可在非客戶區繪製圖形,而CClientDC,CPaintDC只能在客戶區繪製圖形。CWindowDC下坐標原點是在螢幕的左上角,CClientDC,CPaintDC下坐標原點是在客戶區的左上角。CClientDC與CPaintDC的區別:
CPaintDC的對象一般用在OnPaint內以回響Windows訊息WM_PAINT,自動完成繪製,在整個視窗內進行重畫,維持原有視窗完整性。CClientDC套用在非回響Windows訊息WM_PAINT的情況下,進行實時繪製,繪製的區域內被重畫。

相關詞條

相關搜尋

熱門詞條

聯絡我們