OnDraw和OnPaint函数的区别

来源:互联网 发布:nsga python 编辑:程序博客网 时间:2024/04/29 21:12

CWnd::OnPaint() 是CWnd类的成员函数,是WM_PAINT 消息的响应函数.当你调用CWnd::UpdateWindow(), CWnd::RedrawWindow()时, 或者窗口被其他窗口覆盖,改变大小等事件就会产生WM_PAINT 消息. 你可以在CWnd派生的子类中使用它.

CView::OnDraw()是CView类的一个纯虚函数.你要使用,必须重载它. 
CView::OnPaint()会调用它.
OnPaint是收到WM_PAINT消息时所调用的,OnPaint调用OnDraw函数,而由于OnDraw是虚拟函数,你可以自己改写,所以就实现了,不同的绘图目的
OnDraw用于CView,而OnPaint用于CDialog

OnPait 响应WM_PAINT消息,在CView中,它接着调用OnDraw 
CPaintDC响应WM_PAINT消息,自动完成绘制 
ClientDC实时绘制

一般情况下,你看不到两个函数有什么太大区别,因为一般情况下,它们的任务都是重画窗口。 
在CView及其子类中,恰如浪刀所言,OnDraw是由OnPaint调用的,也就是你可以像在窗口类中一样,调用Invalidate函数导致,OnDraw的调用(当然,Invalidate是先导致OnPaint的调用)。 
要说OnDraw和OnPaint有什么区别,那就是它除了可以把画画到屏幕外,还可以把它画到其它任何标准输出设备,如打印机。

原创粉丝点击