CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

OnPaint()与OnDraw(*CDC)区别?

楼主blade_fj(小刀)2002-07-20 00:18:50 在 VC/MFC / 基础类 提问

请问OnPaint和OnDraw的具体功能差别是什么?  
  除了OnPaint只用于屏幕显示,而OnDraw还能用于打印等方面,还有什么区别?  
   
  如果,在一个View类里面它们两个同时出现了,如果只用于屏幕显示,那有什么分工呢? 问题点数:50、回复次数:11Top

1 楼Frank_Xu()回复于 2002-07-20 08:34:22 得分 30

OnPaint(   )與OnDraw(   )的區別:  
  OnPaint()是消息響應函數,默認是WM_PAINT消息的入口.  
  OnDraw()是虛函數,是被OnPaint(   )調用的函數.  
  OnPaint(   )優先于OnDraw(   ),如果重載了OnPaint(   ),則不會響應OnDraw(   ).如果需要,則需明確調用OnDraw(   )函數.  
   
  Top

2 楼bljbljbljblj(明月清风偷我心)回复于 2002-07-20 08:37:07 得分 0

我听说OnPaint只显示,而OnDraw支持往各种设备上输出,譬如打印机Top

3 楼fz_zhou(vcfan)回复于 2002-07-20 09:00:20 得分 0

都一样的,OnDraw只不过是MFC和自己对OnPaint作了点手脚!  
  没什么和!  
  就是OnDraw里面的东西按打印就会输出到打印机!Top

4 楼kingsoft111()回复于 2002-07-20 09:02:22 得分 0

同意Frank_Xu()Top

5 楼jmcooler()回复于 2002-07-20 09:37:58 得分 10

楼上各位讲的已经很明确,特别是Frank_Xu。  
  OnDraw()是虛函數,既然是虛函數,就可以被重载(重写)。  
  的确,OnPaint()用来响应WM_PAINT消息,视类的OnPaint()内部根据是打印还是屏幕绘制分别以不同的参数调用OnDraw()虛函數。  
  所以在OnDraw()里你可以区别对待打印和屏幕绘制。  
  其实,MFC在进行打印前后还做了很多工作,调用了很多虚函数,比如OnPreparePrint()等。Top

6 楼andy_lau(天行键,君子当自强不息!)回复于 2002-07-20 09:41:13 得分 10

OnDraw()是虛函數,既然是虛函數,就可以被重载(重写)。  
  的确,OnPaint()用来响应WM_PAINT消息,视类的OnPaint()内部根据是打印还是屏幕绘制分别以不同的参数调用OnDraw()虛函數。  
  所以在OnDraw()里你可以区别对待打印和屏幕绘制。  
  其实,MFC在进行打印前后还做了很多工作,调用了很多虚函数Top

7 楼jmcooler()回复于 2002-07-20 09:49:53 得分 0

andy_lau(阿虎)   ,???Top

8 楼alien_taiji(心灵的守护)回复于 2002-07-20 09:52:39 得分 0

OnDraw肯定要调用Onpaint,只要又重绘的消息就会调用,但是文档内容的改变ondraw不会响应,onpaint可以处理Top

9 楼mxh0506(21911)回复于 2002-07-20 10:03:37 得分 0

看看CView的源程序就知道了:OnPaint()是WM_PAINT的消息响应函数,而OnDraw()是在OnPaint()中被调用的。Top

10 楼blade_fj(小刀)回复于 2002-07-20 23:20:47 得分 0

谢谢指教了!  
  尤其是frank_xuTop

相关问题

  • ondraw 和 onpaint 有何区别?
  • onpaint()和ondraw()的区别
  • OnDraw()和OnPaint()区别和在?
  • OnPaint()和OnDraw()有何区别?
  • OnDraw和OnPaint函数的区别?
  • OnPaint()和OnDraw()有色么区别呢?
  • ■■送分:OnDraw(), OnPaint(), OnEraseBkGnd(),3个函数有什么区别??
  • 请问onPaint和onDraw有什么区别?谢谢。
  • @@(在线等待)@ OnDraw()与OnPaint()有什么区别?
  • 求教一下关于ondraw和onpaint的区别

关键词

  • 屏幕
  • 打印
  • 消息
  • mfc
  • ondraw
  • onpaint
  • 函數
  • 虛函數
  • 调用
  • 屏幕绘制

得分解答快速导航

  • 帖主:blade_fj
  • Frank_Xu
  • jmcooler
  • andy_lau

相关链接

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

广告也精彩

反馈

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