OnPaint()与OnDraw(*CDC)区别?
请问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




