MFC下 在onpaint函数中双缓冲绘图问题
void CDrawWnd::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
// Do not call CWnd::OnPaint() for painting messages
CRect rc;
this->GetClientRect(rc);
CDC memDC;
CBitmap memBitmap;
memDC.CreateCompatibleDC(&dc);
memBitmap.CreateCompatibleBitmap(&dc,rc.Width(),rc.Height());
memDC.FillSolidRect(0,0,rc.Width(),rc.Height(),RGB(0,0,0));
CBitmap *pOldBit=memDC.SelectObject(&memBitmap); // (1)
memDC.SelectObject(pOldBit); // (2)
// 疑问一 : 为何我直接 memDC.SelectObject(memBitmap);的时候图就是个黑色的背景,想画的背景也一直在闪。
但是当我使用 上面的注释 (1)(2)句的时候 就不闪了 。。。 为什么需要一个 *pOldBit 来过度呢
.................................................
省略画图语句
................................................
GetDC()->BitBlt(0,0,rc.Width(),rc.Height(),&memDC,0,0,SRCCOPY);
memBitmap.DeleteObject();
memDC.DeleteDC();
}
//疑问二: 我这语句能实现 双缓冲画图吗? 当时间设置到 100ms 以下时,感觉图片还是在闪。
小弟刚入门,不是很懂,希望知道的大大们指点一下,谢谢