创建一个MFC的应用程序名为eef,其中样式样式选择MFC Standard,则eefView类的OnDraw在每次启动时会被激发。但如果我选择Windows Explorer则eefView和CleftView的OnDraw不会被激发了,而且在每次最大最小化窗体也不会激发。请问怎么回事!

解决方案 »

  1.   

    如果选择Windows Explorer则eefView和CleftView分别从CListView和CTreeView继承,这二者包装了CListCtrl和CTreeCtrl,后二者又是公共控件Tree-view control (SysTreeView32)和List-view control (SysListView32)的封装,这些封装类没有提供对OnDraw()的调用。
    CListView和CTreeView从CCtrlView类继承:void CCtrlView::OnDraw(CDC*)
    {
    ASSERT(FALSE);
    }void CCtrlView::OnPaint()
    {
    // this is done to avoid CView::OnPaint
    Default();
    }普通视图类从CView直接继承:
    void CView::OnPaint()
    {
    // standard paint routine
    CPaintDC dc(this);
    OnPrepareDC(&dc);
    OnDraw(&dc);
    }void CView::OnDraw(CDC*)
    {
    }