Vc++中Ondraw和OnPaint有什么区别?

来源:百度知道 编辑:UC知道 时间:2024/06/14 15:49:52

前者是可以响应WM_PAINT消息,后者是专门的响应WM_PAINT的消息映射函数,前者是在view中操作画图的函数。但是最终的功能都是onPaint实现的,因为OnDraw也是OnPaint函数调用的。 函数原形如下:
OnPaint()
{ CPaintDC dc(this);
OnPreapareDC(&dc);
OnDarw(&dc);
}

简单点说

当窗口重绘的时候系统会发出 WM_PAINT 消息

程序响应该消息就是用的 OnPaint() 但是单文档中他也是这个消息只是他将响应函数写在了MFC里,在函数中正如上面所写的代码,他最后还是调用了 OnDraw() 函数,所以一般用起来两个区别不大.

前者是文档类的函数,后者是对话框类的函数。

CView类派生自CWnd类。而OnPaint()是CWnd的类成员,同时负责响应WM_PAINT消息。OnDraw()是CVIEW的成员函数,并且没有响应消息的功能。这就是为什么你用VC成的程序代码时,在视图类只有OnDraw没有OnPaint的原因。