MFC双缓冲工作,但其他一切都在闪烁

时间:2017-01-17 08:28:34

标签: c++ mfc

我认为绘图现在不再闪烁所以我认为它有效,

但我还有一个工具栏和一个状态栏现在开始大量闪烁。

有什么方法可以解决这个问题吗?

BOOL CPaintDlg::OnEraseBkgnd(CDC* pDC) // redraw the background colors
{
    return true;
}

void CPaintDlg::OnPaint()
{
   CRect rcClient;
   GetClientRect(rcClient); 

   CDC MemDC, *pDC;
   CBitmap MemBitmap;

   pDC = this->GetDC();         // Get Current DC
   MemDC.CreateCompatibleDC(pDC);
   MemBitmap.CreateCompatibleBitmap(pDC, rcClient.right, rcClient.bottom);

   CBitmap *pOldBitmap = (CBitmap*)MemDC.SelectObject(&MemBitmap);

   MemDC.FillSolidRect(0, 0, rcClient.right, rcClient.bottom, RGB(255, 255, 255));

   for (int i = 0; i < myShapes.GetSize(); ++i)
       myShapes[i]->draw(&MemDC);

   pDC->BitBlt(0, 0, rcClient.right, rcClient.bottom, &MemDC, 0, 0, SRCCOPY);
   MemDC.SelectObject(pOldBitmap);

   ReleaseDC(pDC);
   ReleaseDC(&MemDC);

   CDialogEx::OnPaint();
}

编辑:也许是因为我正在绘制所有ClientRect?

有没有办法排除部分工具栏,可能是ExcludeClipRect?

0 个答案:

没有答案