void CMainFrame::OnPaint() 
{
CPaintDC dc(this); // device context for painting
RECT rect;
rect.left = 0;
rect.top = 0;
rect.right = 400;
rect.bottom = 400;
dc.Draw3dRect(&rect, (COLORREF)0xff0000, (COLORREF)0x0000ff);
}在视图类中OnPaint()函数下写这段代码没用,在主框架的OnPaint()中也没有用.望高手解惑!谢谢~

解决方案 »

  1.   

    CMainFrame::OnPaint() 绘制他自己的窗口,但它的窗口上view覆盖
      

  2.   

    你直接用
    CMainFrame不用MVC估计没问题,
      

  3.   

    那为什么我在视图类的OnPaint()中使用也是什么都没发生??
      

  4.   

    现在能画出来了,请问OnDraw和OnPaint有什么区别?
    我在View中加入OnPaint响应WM_PAINT后,OnDraw中的代码就不执行了
      

  5.   

    你如果采用其文档-视的构架的话,view通常是在Frame的上方的,也就是说View是覆盖在Frame之上的.Frame虽然画了矩形框,但仍然看不到.所以要画的话还是画在View上.
     void CYourView::OnPaint() 
    {
    CPaintDC dc(this); // device context for painting
    RECT rect;
    rect.left = 0;
    rect.top = 0;
    rect.right = 400;
    rect.bottom = 400;
    dc.Draw3dRect(&rect, (COLORREF)0xff0000, (COLORREF)0x0000ff);
    }
    //就ok了!
      

  6.   

    现在能画出来了,请问OnDraw和OnPaint有什么区别?
    为什么我在View中加入OnPaint响应WM_PAINT后,OnDraw中的代码就不执行了?
      

  7.   

    OnPaint()里面默认调用onDraw()
    onDraw()是给onPaint()和onprint调用的
    MFC源码大致是这样的:
    CView::onpaint()
    {
      CpaintDC dc(this);
       ondraw(&dc);
    }