windows程序设计(四)---CDC类及其子类---CClientDC、CWindowDC和CPaintDC

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值