我的MDI工程,其中的…View函数我改成了基于ListView的函数(工程学要,显示列表用),但是其中的OnDraw函数并不按照原来基于View类的函数那样执行。我用断点调试观察他并不执行;这是啥原因?怎么才能使以ListView中的OnDraw函数自动执行。谢谢!

解决方案 »

  1.   

    修改控件属性为自绘OWNER DRAW试试
      

  2.   

    “OWNER DRAW”属性,在对话框中我知道怎么改,但是视图中在哪里改啊?
      

  3.   

    普通的CView::OnPaint()是这样的:void CView::OnPaint()
    {
    // standard paint routine
    CPaintDC dc(this);
    OnPrepareDC(&dc);
    OnDraw(&dc);
    }
    但是CListView的基类CCtrlView是这样的:void CCtrlView::OnPaint()
    {
    // this is done to avoid CView::OnPaint
    Default();
    }
      

  4.   

    Mackz(在相互)
    谢谢,用OnPaint() 函数可以达到我用的效果。在ClassWizard中这两个消息都可以添加。OnPain()和OnDraw()的用法有什么区别?
      

  5.   

    // this is done to avoid CView::OnPaint不要去改它。可以重载自绘。
      

  6.   

    区别?void CView::OnPaint()
    {
    // standard paint routine
    CPaintDC dc(this);
    OnPrepareDC(&dc);
    OnDraw(&dc);
    }这还不够明显嘛?
      

  7.   

    继续定!希望还有别的答案。
    前几天,我也是这个问题。我把OnDraw()下的代码写在Update()里面,解决问题,但是不知道,为什么OnDraw()没有执行.....