回 帖 发 新 帖 刷新版面

主题:[讨论]OnDraw()的调用机制

如果我要在单文档程序框架的视类窗口实现画图操作
在C**View中加入代码
程序执行路径是CView 的OnPaint()
但是C**View 的OnDraw()解释说是多态性
但我了解的多态性:允许将子类对象的指针(或者对象的地址)赋值给父类类型的指针。
在这我还是没但到多态性?望高手们 讲一下 void CView::OnPaint()
{
    // standard paint routine
    CPaintDC dc(this);
    OnPrepareDC(&dc);
    OnDraw(&dc);
}
调用的时候如何判断调用哪个 OnDraw()

回复列表 (共2个回复)

沙发

MFC里面这个问题很简单,不需要考虑.
如果你的C**View有重载 OnDraw 那么,就调用你的OnDraw
如果没有重载OnDraw 那么,就调用CView的OnDraw

同理,其他MFC中类似OnDraw 的virtual 函数都可以这样理解.

板凳

MFC虽然提高了编程效率但有时又让人无法深入其中
有点不习惯

我来回复

您尚未登录,请登录后再回复。点此登录或注册