简介:
DC: device context 设备上下文 主要就是指绘图设备
HDC:设备上下文句柄 属于windows平台SDK 即API中 用于绘图数据类型
CDC:class of device-context objects 设备上下文类 属于MFC封装Windows API生成的(其实就是封装了HDC) 给用户在MFC下绘图类
从MSDN Hierarchy Chart可以看到 MFC 下CWnd 与 CDC (这里顺便说下CWnd) MFC 把
窗口相关的封装到CWnd中 CWnd它派生于CCmdTarget类是最基本的GUI(图形用户接口)对象
作图相关的封装到CDC中 CDC它直接派生于CObject
CDC 下又派生出ClientDC CMetaFileDC CPaintDC CWindowDC
以下举例:
|
HDC hdc; //HDC 设备上下文句柄 CDC *pDC=GetDC(); //CWnd类中的成员函数 GetDC() 返回值CDC* //CWindowDC 也是派生于CDC 构造、析构也是类似ClientDC 可以访问整个程序区域 包括客户区与非客户区 //透明画刷 |
CPaintDC 用于响应窗口重绘消息(WM_PAINT)是的绘图输出。CPaintDC在构造函数中调用BeginPaint()取得设备上下文,在析构函数中调用 EndPaint()释放设备上下文。EndPaint()除了释放设备上下文外,还负责从消息队列中清除WM_PAINT消息。因此,在处理窗口重画时,必须使用CPaintDC,否则WM_PAINT消息无法从消息队列中清除,将引起不断的窗口重画。CPaintDC也只能用在WM_PAINT消息处理之中。
所以,CPaintDC和CClientDC、CWindowDC从应用角度来看两回事情,不能拿在一起比较!!
本文详细介绍了Windows平台下的绘图设备上下文(Device Context,DC),包括HDC(设备上下文句柄)、CDC(设备上下文类)等概念,并通过实例展示了不同类型的设备上下文对象(如CClientDC、CWindowDC、CPaintDC)的应用场景及其特点。
463

被折叠的 条评论
为什么被折叠?



