CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

关于CDC的问题?

楼主email_jhb()2006-05-02 11:17:09 在 VC/MFC / 基础类 提问

1.   在对话框应用程序中的OnPaint函数中进行绘图操作使用哪种类型的DC?   是CDC?   CClientDC?CPaintDC?   CWindowDC?  
   
  2.   在OnPaint中,CClientDC的绘图区域中窗口客户区,CWindowDC的绘图区域是窗口。但是CDC,  
  CPaintDC的绘图区域是什么?  
   
  3.   看到一本书上说OnPaint中只能用CPaintDC进行绘图?因为只有它才能删除消息队列中的WM_PAINT消息;其它的不能删除之,这样会引起窗口不停的重绘。这种说法正确吗?  
   
  4.   有些自绘标题栏的应用程序(如金山毒霸),是对有标题栏的对话框中的标题栏进行绘图,还是对没有标题栏(属性中去掉标题栏属性)的对话框客户区进行绘图,用图片模拟出标题栏?哪种方法好一些?  
   
  问题点数:50、回复次数:3Top

1 楼soaroc(会飞的猪)回复于 2006-05-02 15:33:37 得分 50

CDC是应用程序关于绘图的基类。MFC从其中派生出了三个具体的类:CClientDC   CPaintDC及CWindowDC,三者的区别在于:  
  CWindowDC允许在显示器的任何位置绘图,坐标(0,0)表示整个屏幕的左上角,一般在CMainFrame中调用;  
  CClientDC指能够在窗口的客户区绘图,坐标(0,0)表示用户区的左上角。如在视类中绘图,则不包含窗口的边框,菜单栏和标题栏,状态栏;如果在对话框中绘图,则不包含对话框的边框和标题栏;如果在控件中绘图,则不包含控件的边框,一办在View中使用;  
  CPaintDC只在窗口的OnPaint函数中使用。OnPaint函数首先构造一个CPaintDC对象,在调用OnPrepareDC函数将其准备好,最后一这个准备好的CPaintDC对象指针为参数,来调用OnDraw函数进行绘图操作。CPaintDC比较的特殊。他的构造函数和析构函数都是针对OnPaint进行的,因此在OnDraw函数中的代码可以使用于任何的输出设备。另外,CPaintDC的构造函数会自动地调用BeginPaint函数,而析构函数会自动地调用EndPaint函数。  
  一般来说:CClientDC和CPaintDc比较的常用,CClientDC用于在客户区内绘图;CPaintDC用在OnPainth函数中,为OnDraw函数准备设备环境;  
  不知道上面有没有解释清楚,  
  另:后面的一种是一般的方法,这种方法的自由度较大,可以实现各种效果。Top

2 楼email_jhb()回复于 2006-05-02 20:05:28 得分 0

upTop

3 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2006-05-02 20:12:18 得分 0

楼主,为何不多读一下MSDN?Top

相关问题

关键词

得分解答快速导航

  • 帖主:email_jhb
  • soaroc

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo