CClientDC 和CPaintDC (转载于:http://www.cnblogs.com/cutepig/archive/2009/01/19/1378550.html)
2009-11-30 21:50
756 查看
1.CClientDC
CClientDC(客户区设备上下文)用于客户区的输出,它在构造函数中封装了GetDC(),在析构函数中封装了ReleaseDC()函数。一般在响应非窗口重画消息(如键盘输入时绘制文本、鼠标绘图)绘图时要用到它。用法是:
CClientDC dc(this);//this一般指向本窗口或当前活动视图
dc.TextOut(10,10,str,str.GetLength());
//利用dc输出文本,如果是在CScrollView中使用,还要注意调
//用OnPrepareDC(&dc)调整设备上下文的坐标。
2.CPaintDC
CPaintDC 用于响应窗口重绘消息(WM_PAINT)是的绘图输出。CPaintDC在构造函数中调用BeginPaint()取得设备上下文,在析构函数中调用 EndPaint()释放设备上下文。EndPaint()除了释放设备上下文外,还负责从消息队列中清除WM_PAINT消息。因此,在处理窗口重画时,必须使用CPaintDC,否则WM_PAINT消息无法从消息队列中清除,将引起不断的窗口重画。CPaintDC也只能用在WM_PAINT消息处理之中。
3.CDC
直接使用CDC的例子是内存设备上下文,例如:
CDC dcMem; //声明一个CDC对象
dcMem.CreateCompatibleDC(&dc); //创建设备描述表
pbmOld = dcMem.SelectObject(&m_bmBall);//更改设备描述表属性
…//作一些绘制操作
dcMem.SelectObject(pbmOld);//恢复设备描述表的属性
dcMem.DeleteDC(); //可以不调用,而让析构函数去删除设备描述表
CClientDC(客户区设备上下文)用于客户区的输出,它在构造函数中封装了GetDC(),在析构函数中封装了ReleaseDC()函数。一般在响应非窗口重画消息(如键盘输入时绘制文本、鼠标绘图)绘图时要用到它。用法是:
CClientDC dc(this);//this一般指向本窗口或当前活动视图
dc.TextOut(10,10,str,str.GetLength());
//利用dc输出文本,如果是在CScrollView中使用,还要注意调
//用OnPrepareDC(&dc)调整设备上下文的坐标。
2.CPaintDC
CPaintDC 用于响应窗口重绘消息(WM_PAINT)是的绘图输出。CPaintDC在构造函数中调用BeginPaint()取得设备上下文,在析构函数中调用 EndPaint()释放设备上下文。EndPaint()除了释放设备上下文外,还负责从消息队列中清除WM_PAINT消息。因此,在处理窗口重画时,必须使用CPaintDC,否则WM_PAINT消息无法从消息队列中清除,将引起不断的窗口重画。CPaintDC也只能用在WM_PAINT消息处理之中。
3.CDC
直接使用CDC的例子是内存设备上下文,例如:
CDC dcMem; //声明一个CDC对象
dcMem.CreateCompatibleDC(&dc); //创建设备描述表
pbmOld = dcMem.SelectObject(&m_bmBall);//更改设备描述表属性
…//作一些绘制操作
dcMem.SelectObject(pbmOld);//恢复设备描述表的属性
dcMem.DeleteDC(); //可以不调用,而让析构函数去删除设备描述表
相关文章推荐
- 异或转载http://www.cnblogs.com/this-543273659/archive/2011/08/30/2159819.html
- 转载TortoiseSVN的使用详解1(http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.html)
- Android实现XML解析技术 (转载http://www.cnblogs.com/hanyonglu/archive/2012/02/28/2370675.html)
- eclipse中安装ADT插件的最简单的方法转载自http://www.cnblogs.com/go-onxp/archive/2012/05/22/android.html
- 浅淡SqlServer的Top与Oracle的RowNum 转载自http://www.cnblogs.com/liguangxi8/archive/2010/05/21/1740708.html
- 转载:C++设计模式之Bridge模式 http://www.cnblogs.com/chain2012/archive/2011/01/17/1937528.html
- http://www.cnblogs.com/lovenets/archive/2006/06/24/434880.html 转载
- 存储过程使用事物的几种方式 转载自--http://www.cnblogs.com/chengxiaoming/archive/2010/06/11/1756163.html
- 转载String分析 (http://www.cnblogs.com/fancydeepin/archive/2013/04/22/min-snail-speak_String.html)
- Android实现推送方式解决方案【转载地址:http://www.cnblogs.com/hanyonglu/archive/2012/03/04/2378971.html】
- 为什么要慎用触发器(转载http://www.cnblogs.com/tom-fu/archive/2008/06/25/1229314.html)
- SQLiteDatabase类——转载(http://www.cnblogs.com/tt_mc/archive/2010/03/09/1681540.html)
- http://www.cnblogs.com/cute/archive/2011/04/20/2022651.html
- MongoDB设置访问权限、设置用户(注:转载于:http://www.cnblogs.com/zengen/archive/2011/04/23/2025722.html)
- 事件转载自(http://www.cnblogs.com/zengshunyou/archive/2009/06/16/1504475.html)
- 转载TortoiseSVN的使用详解2(http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.html)
- Android应用视觉效果设计技巧(转载http://www.cnblogs.com/hanyonglu/archive/2012/03/02/2376451.html)
- 转载Android常见错误(http://www.cnblogs.com/ok-lanyan/archive/2011/10/12/2208378.html)
- 转载:C++设计模式之Observer(观察者)模式 http://www.cnblogs.com/chain2012/archive/2011/01/24/1943322.html
- 装饰器 转载自 http://www.cnblogs.com/huxi/archive/2011/03/01/1967600.html