CDC类:
Windows使用与设备无关的图形设备环境(DC :Device Context)进行显示。MFC基础类库定义了设备环境对象类----CDC类。
CDC类从 CObject 直接继承而来。继承了CObject类的各种特性,如动态创建等等。
例如用GDI画矩形要Rectangle(hDC,…),而使用CDC则是dc.Rectangle(…),由此可见CDC主要是把原本需要HDC作为参数的GDI函数封装了一下,HDC成了它的一个成员变量。
CDC类是一个较大的类,包括许多成员函数,如映射函数,绘画工具函数,区域函数等,通过CDC对象的成员函数可以完成所有的绘画工作(在使用CClientDC进行绘图时,一般要调用GetClientRect()函数来获取客户区域的大小;),它具有如下的子类:
1.CPaintDC:仅限于OnPaint处理程序 ,用于响应窗口重绘消息(WM_PAINT)时的绘图输出 。在处理窗口重画时,必须使用CPaintDC ,否则WM_PAINT消息无法从消息队列中清除,将引起不断的窗口重画。CPaintDC也只能用在WM_PAINT消息处理之中。
2.CClientDC:(客户区设备上下文)用于客户区的输出,与特定窗口关联,可以让开发者访问目标窗口中客户区,其 构造函数中包含了GetDC,析构函数中包含了ReleaseDC
注:在绘图前,必须先得到 客户区大小 和 DC 、设置绘图颜色,然后再根据文档数据或用户操作来绘制图形。
3.CWindowDC:整个窗口的显示描述表,包括客户区和框架区。可在非客户区绘制图形,而CClientDC,CPaintDC只能在客户区绘制图形。
4.CMetaFileDC:Windows源文件的设备描述表。Windows源文件包含一个图形设备接口(GDI)命令序列,该序列可被重新执行而创建一幅图像,该类提供了面向对象的GDI图源文件的封装。对CMetaFileDC的成员函数的调用记录在一个原文件中
/******************************************************************************************************/
CDC类数据成员只有两个:
HDC m_hDC : CDC对象使用的输出设备上下文
HDC m_hAttribDC : CDC对象使用的属性设备上下文