我想用双缓存解决MFC界面屏幕闪烁的问题,我的代码没有达到效果,请教各位大侠,急急急!!

CDCdcCompatible;CDC*pDC=this->GetDC();CBitmapbitmap;BITMAPbmp;bitmap.LoadBitmap(IDB_B... CDC dcCompatible;
CDC *pDC = this->GetDC();
CBitmap bitmap;
BITMAP bmp;
bitmap.LoadBitmap(IDB_BITMAP_MAP);
bitmap.GetBitmap(&bmp);
dcCompatible.CreateCompatibleDC(pDC);
HBITMAP OldBitmap = (HBITMAP)dcCompatible.SelectObject(&bitmap);

pDC->StretchBlt(0,0,1366,768,&dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY); //放置图片
dcCompatible.SelectObject(&OldBitmap);
ReleaseDC(&dcCompatible); //释放资源,防止内存泄露不断增长
ReleaseDC(pDC);
展开
 我来答
bhtzu
2013-01-25 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4095万
展开全部
1·思路反了,内存DC应该在初始化的时候创建并导入位图,所有DC操作要在内存DC上先执行,内存DC应该是类成员变量,不能每次重新创建。
2·双缓冲使用下,应该在OnDraw或者OnPaint里面,只有一条实际语句,就是内存DC到pDC的BitBlt(不能是Stretch,而且正好和你的代码相反,是内存DC到pdc)
追问
要怎么改啊,谢谢
追答
改动是在整个工程里面的,不只是一处代码。而且根据实际需要并不相同,从你的代码上看不到实际的具体情况。
至于示例代码,网上太多了,搜“内存DC 双缓冲”会有很多代码,只有看明白了理解了,才能做出适合你实际需要的代码。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式