📄 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 + -