解决方案 »

  1.   

    我是直接在CFormView派生类的OnDraw中绘图的,如下所示,用了双缓存,我TRACE的时候,发现每次拖拉分隔条的时候,都会进入OnDraw( )函数.OnDraw( )完整代码如下: CRect rectClient;
    GetClientRect(&rectClient);
    Bitmap bmp(rectClient.right,rectClient.bottom);
    Graphics* pg = Graphics::FromImage(&bmp);
    pg->Clear(RGB(221,231,244));
    DrawTitleBar(pg);
    Graphics graphics(pDC->m_hDC);
    graphics.DrawImage(&bmp,rectClient.left,rectClient.top,rectClient.right,rectClient.bottom);
    delete pg;不知上面代码哪里有问题?
      

  2.   

    你这个bmp就是这个绿色条带吗? 怎么这么小呢?DrawImage是撑满效果绘制,还是按照图片实际大小绘制?
      

  3.   

    绿色条带是用GraphicsPath路径画出来的,我希望的是在拖拉分割条的时候,它能跟着移动.
      

  4.   

    绿色条带是用GraphicsPath路径画出来的,我希望的是在拖拉分割条的时候,它能跟着移动.
    没看到画绿带的代码啊
      

  5.   

    绿色条带是用GraphicsPath路径画出来的,我希望的是在拖拉分割条的时候,它能跟着移动.
    没看到画绿带的代码啊
    在DrawTitleBar()里面
      

  6.   

    DrawTitleBar( )里面如下: CRect rect;
    GetClientRect(&rect);
    Rect rectClient(rect.left,rect.top,rect.Width(),rect.Height());
    Rect titleRect(0,0,rect.Width(),20);
    SolidBrush brush(Color(223,233,245));
    SolidBrush backBrush(Color(248,248,248));
    pGph->FillRectangle(&backBrush,rectClient);
    pGph->FillRectangle(&brush,titleRect);
    DrawTitleIcon(pGph);
    DrawTitleText(pGph);
    DrawPageDecoration(pGph);
      

  7.   


    如上图,我横向移动CFormView滚动条的时候,其他部分刷新也不正常. 我估计和重绘代码没有关系,而是CFormView导致的. 不知我这样理解对不?
      

  8.   

    没有效果,似乎这个和CSplitterWnd有关, 因为我一移动滚动条就乱了.
      

  9.   

    在程序没有失去焦点的情况下,一移动滚动条, 显示就乱了,但是一旦输入焦点切换到别的程序中时, 就不乱了,但是显示还是有问题,它不会随着滚动条一起滚动.但是CFormView中的控件就会.不知到要怎么改.响应哪些事件?
      

  10.   

    各位,问题已解决. 需要重载三个函数,分别如下:void CQueryView::OnSize(UINT nType, int cx, int cy)
    {
    CFormView::OnSize(nType, cx, cy);
    InvalidateRect(NULL,TRUE);
    }void CQueryView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
    {
    InvalidateRect(NULL,TRUE);
    CFormView::OnHScroll(nSBCode, nPos, pScrollBar);
    }void CQueryView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
    {
    InvalidateRect(NULL,TRUE);
    CFormView::OnVScroll(nSBCode, nPos, pScrollBar);
    }我的初步分析如下, CFormView派生自CScrollView, 默认它是可以滚动对话框中的控件, 而我OnDraw()函数中都用了GetClientRect,因此自画的背景不会随着滚动. 导致重影. 因为滚动的时候,坐标已经发生改变了. 因此要么强制重绘,要么改变重绘逻辑,一并考虑滚动条的情况.