⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 04.2.4 利用mfc的cwindowdc类实现画线功能.txt

📁 网上第一本以TXT格式的VC++深入详解孙鑫的书.全文全以TXT格式,并每一章节都分了目录,清晰易读
💻 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 + -