怎么用双缓冲解决MFC的闪屏

 我来答
传毅鼠y
2017-02-21 · TA获得超过329个赞
知道答主
回答量:219
采纳率:50%
帮助的人:47.1万
展开全部
您好,通常情况下,增加1个DC可以解决闪屏问题。
新的DC用于在后缓冲区中绘图。
再用CDC::BitBlt()这类函数将新DC的内容绘制到窗口绘图区的DC,通常这样就可以解决闪屏了。

假设您在MFC视图类中使用OnDraw函数绘图,示例代码如下:
///////////////////////////////////begin///////////////////////////////////////////////////////////////
void 您的视图类名称::OnDraw(CDC* pDC)
{
...
...
//新DC
CDC MemDC;

//创建与原Dc兼容的DC,用于后台绘图
MemDC.CreateCompatibleDC(/*这里的参数是窗口绘图区的DC指针*/ pDC);

/*在MemDC中绘制DIB图像*/
...
...
//调用CDC::BitBlt()函数,将MemDC中的内容绘制到pDC
pDC->BitBlt(..., &MemDC, ...);
...
...
}
////////////////////////////////////////////////////end//////////////////////////////////////////////////////////////////////////////////////////
如上示例是使用MFC解决问题的思路,如果您直接调用的是Windows API则请参考上述代码修改,思路不变。希望我的回答可以帮到您。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式