我在OnDraw函数中重画了。如果吧视图最小化后再打开,重画是成功的,但是如果拉动滚动条,到了上面被遮住的部分,然后再往下拉的时候,方才遮住的部分就会被变成空白。
我不知道什么地方还应该重画,请各位指教!

解决方案 »

  1.   

    int flag = 0;
    OnDraw(CDC* pDC )
    {
        if (flag == 0)
        {
            CRect rect = GetClientRect(&rect);
            CDC *pMemDC = CreateCompatibleDC();
            CBitmap *bitmap = CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
            CBitmap *oldmap = pMemDC.SelectObject(bitmap);
            flag = 1;
        }
        ......//绘图程序,根据滚动条的位置确定绘制的图形。
        pDC.BitBlt(0, 0, rect.Width(), rect.Height(), pMemDC, rect.Width(),rect.Height(), SRCCOPY);
    }
      

  2.   

    每发送一个WM_PAINT消息,就在内存DC中重新根据SCROLL位置画一次,并将其贴到SCREEN DC上。甚至可以建立多个pMemDC进行BitBlt.