我认为绘图现在不再闪烁所以我认为它有效,
但我还有一个工具栏和一个状态栏现在开始大量闪烁。
有什么方法可以解决这个问题吗?
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?