您的位置:首页 > 其它

MFC双缓冲 防止闪屏

2012-04-15 13:39 197 查看
好久没有写mfc的东西了。今天帮别人看改个闪屏的问题。

弄了挺久的。。写在把解决的方法写出来。

void CWanggeView::OnDraw(CDC* pDC)
{
CWanggeDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CRect rect;
GetClientRect(&rect);
//建立与屏幕设备描述表(前端缓冲区)兼容的内存设备描述表句柄(后备缓冲区)
MemDC.CreateCompatibleDC(NULL);
//这时还不能绘图,因为没有位图的设备描述表是不能绘图的
//下面建立一个与屏幕设备描述表(或者内存设备描述表)兼容的位图
MemBitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
//将位图选入到内存设备描述表
//只有选入了位图的设备描述表才有地方绘图,画到指定的位图上
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);

//////////////////////////////////////////////////////////////////////////////////////////////////
//绘图什么的就写在这里。。。
//////////////////////////////////////////////////////////////////////////////////////////////////
//将后备缓冲区中的图形拷贝到前端缓冲区
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
//绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: