vc中如何使用设备描述表
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
vc中如何使用设备描述表
Windows 程序在屏幕、打印机或其它设备上画图时,它并不是将像素直接输出到设备上,而是将图绘制到由设备描述表表示的逻辑意义上的"显示平面"上去。设备描述表(DC)是Windows中的一种数据结构,它包含GDI需要的所有关于显示界面情况的描述字段,包括相连的物理设备和各种各样的状态信息。在Windows画图之前,Windows程序从GDI获取设备描述表句柄(HDC),并在每次调用完GDI输出函数后将句柄返回给GDI。本文将对如何获得和释放HDC以及CDC及其派生类的使用方法进行演示说明。
下载示例工程DCDemo 具体说明:
1、按钮IDC_GETDC_APINULL的函数
该段代码具体演示了如何使用API 函数GetDC(NULL),取得屏幕的HDC.并进行画图。HDC GetDC(HWND hWnd); //功能:取得hWnd窗口的设备描述表句柄。当hWnd参数为NULL时,取得整个屏幕的设备描述表句柄。MoveToEx 和LineTo演示在DC上画一条直线记住,最后调用ReleaseDC释放HDC资源。int ReleaseDC ( HWND hWnd,//你要控制的那个窗口的句柄,如果你在GetDC 函数传递的是NULL,现在还要传递NULL。HDC hDC //DC的句柄); 编译运行程序,按下按钮,发现屏幕的左上角处画了一条直线。
2、按钮IDC_GETDC_API的函数
这段代码与前一段代码唯一的区别是GetDC的参数不再是NULL,而改为CWnd 的成员变量m_hWnd,即对话框窗口的句柄。对比两段代码运行结果,深入体
会API函数GetDC。
3、按钮IDC_GETDC_CWND的函数
该段代码演示使用MFC CWnd类的GetDC函数和ReleaseDC的方法,使用该
方法在程序窗口中画图非常方便。为了避免获取和释放设备描述表所带来的麻烦,MFC提供了一些CDC派生类,如CPaintDC,CClientDC,CWindowDC,这些类被设计为可直接进行实例化。各个类的构造函数和析构函数调用相应的函数捕获和释放设备描述表,从而使得更加方便简捷。
4、按钮IDC_CCLIENTDC的函数
该段代码演示了CClientDC的具体使用方法,通过测试可以看出和CClientDC对象相对应的设备描述表是窗口的客户区。CPaintDC类是从CDC 类派生出来的,在构造时自动调用CWnd::BeginPaint,析构时调用
CWnd::EndPaint。通常CPaintDC用来响应WM_PAINT消息,一般应用在OnPaint函数,对窗口的客户区进行操作。
5、按钮IDC_CWINDOWDC的函数
运行并观察画线的起始位置。可以看出CWindowDC对象和整个窗口相对应。
6、按钮IDC_POINTER的函数
这段代码演示了如何在堆中创建指向CDC派生类的指针,再利用该指针进行画图,最后请使用delete pDC; 释放指针。就说到这吧,希望能对您有所帮助。不足之处,还望指正。