doble c++ mfc

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?