?? 04.2.4 利用mfc的cwindowdc類實現畫線功能.txt
字號:
4.2.4 利用 MFC的 CWindowDC類實現畫線功能
這里再介紹一個 MFC類: CWindowDC,這個類也派生于 CDC類,并且在構造時調用 GetWindowDC函數獲得相應的設備描述表對象,在析構時調用 ReleaseDC函數釋放該設備描述對象所占用的資源。也就是說,當我們利用 CWindowDC對象繪圖時,也不需要顯式地調用 GetDC和 ReleaseDC函數,該對象會自動獲取和釋放設備描述表資源。
使用 CWindowDC對象有哪些好處呢?該對象可以訪問整個窗口區域,包括框架窗口的非客戶區和客戶區。該對象的構造與 CClientDC對象相同,如果要構造一個與視類窗口相關的設備描述表,則可以利用視類對象的指針來構造這個 CWindowDC對象。如例 4-12所示是利用 CWindowDC對象實現畫線功能的代碼。
例 4-12
void CDrawV工 ew:: OnLButtonUp(UINT nFlags , CPoint point)
CWindowDC dc(this);
118 I ~…
dc .MoveTo(m-ptOrigin) ; dc . LineTo(point) ;
CView ::OnLButtonUp(nFlags , point) ;
Build并運行Draw程序,將會發現這段代碼實現的功能與利用CClientDC類畫線時沒什么區別,也只能在視類窗口中畫線,因為這時創建的設備描述表與視類窗口相關。
接著,把例4-12所示代碼中構造設備描述表對象時使用的參數: this指針換為指向視類父窗口的指針。
CWindowDC dc(GetParent());
Bui1d并運行Draw程序,將會發現此時線條可以畫到工具欄和菜單欄上,程序運行結果如圖4.13所示。
圖4.13利用CWmdowDC實現在框架窗口的客戶區及非客戶區中畫線
飛奪公·細1日眉通常都是在客戶區中繪圖。但是如果利用 CWindowDC類,就可以實現在工具欄和菜單上繪圖。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -