织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>杂项技术>VC(MFC)>

CDC类及其子类---CClientDC、CWindowDC和CPaintDC

落鹤生 发布于 2012-06-19 13:13 点击:次 
CPaintDC CWindowDC CClientDC:他们都是从CDC继承,分别是对上面所说BeginPaint,GetWindowDC, GetDC调用对进行封装(CPaintDC构造时调用BeginPaint,析构时调用EndPaint,其余同理)。
TAG:

CDC类

Windows使用与设备无关的图形设备环境(DC :Device Context) 进行显示 。MFC基础类库定义了设备环境对象类----CDC类。

父类:从 CObject 直接继承而来。继承了CObject类的各种特性,如动态创建等等。

例如用GDI画矩形要Rectangle(hDC,...),而使用CDC则是dc.Rectangle(...),由此可见CDC主要是把原本需 要HDC作为参数的GDI函数封装了一下,HDC成了它的一个成员变量。

CPaintDC CWindowDC CClientDC:

他们都是从CDC继承,分别是对上面所说的BeginPaint,GetWindowDC, GetDC调用对进行封装(CPaintDC构造时调用BeginPaint,析构时调用EndPaint,其余同理)。

数据成员只有两个:HDC m_hDC : CDC对象使用的输出设备上下文
                           HDC m_hAttribDC : CDC对象使用的属性设备上下文

CClientDC子类
CClientDC类只能在客户区绘图;
所谓客户区指窗口区域中去掉边框、标题栏、菜单栏、工具栏、状态栏等之外的部分,它是用户可以操作的区域;
在使用CClientDC进行绘图时,一般要调用GetClientRect()函数来获取客户区域的大小;
CClientDC类在构造函数中调用Windows API函数GetDC(),在析构时响应ReleaseDC();
CClientDC类的窗口句柄保存在成员变量m_hWnd,为构造CClientDC,需将CWnd作为参数传递给构造函数。
CWindowDC子类
CWindowDC对象在构造时调用Windows API函数GetWindowDC,在析构时调用相应的API函数ReleaseDC,这意味着CWindowDC对象可访问CWnd所指向的为整个全屏幕区域;
CWindowDC允许在显示器的任意位置绘图。坐标原点在整个窗口的左上角。
在使用CWindowDC进行绘图时,一般要调用GetWindowRect函数来获取整个应用程序窗口区域的大小;
CWindowDC类的窗口句柄保存在成员变量m_hWnd,为构造CClientDC,需将CWnd作为参数传递给构造函数。
CPaintDC子类
通常CPaintDC用来响应WM_PAINT消息。一般应用在OnPaint函数. 
CClientDC也是从CDC派生出来的.构造时自动调用GetDC函数,析构时自动调用ReleaseDC函数.一般应用于客户区窗口的绘制.
CPaintDC只能在WM_PAINT消息中使用, 用于有重画消息发出时才使用的内存设备环境, 而CClientDC和客户区相关,有重画消息发出时才使用的内存设备环境, 可在任何地方使用.
在处理窗口重画时,必须使用CPaintDC,否则WM_PAINT消息无法从消息队列中清除,将引起不断的窗口重画。

(ccfboy)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201206/16096.html]
本文出处:CSDN博客 作者:ccfboy 原文
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
相关文章
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容