c++ - El doble buffer de MFC funciona pero todo lo demás parpadea
doble buffer c# (0)
Creo que el dibujo ahora ya no parpadea, así que creo que funciona,
Pero también tengo una barra de herramientas y una barra de estado que ahora comenzaron a parpadear pesadamente.
¿Hay alguna forma de arreglar esto?
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();
}
Editar: ¿Tal vez es porque dibujo todo el ClientRect?
¿Hay alguna forma de excluir la parte de las barras de herramientas, tal vez con ExcludeClipRect?