MFC采用双缓冲后还是出现闪烁情况
我是这个做的:① 建立基于对话框的MFC应用程序;
② 在OnInitDialog里面输入如下代码:
SetTime(1,50,NULL);
③ 在OnTimer里面加入:
Invalidate(TRUE)
④ 删除OnPaint()里面的原始代码,写入双缓冲程序,主要实现时间的动态显示:
CPaintDC dc(this); // device context for painting
CDC *pDC = GetDC();
CRect rect;
GetClientRect (&rect);
//创建一个内存中的显示设备
CDC nDC;
nDC.CreateCompatibleDC(NULL);
//创建一个内存中的图像
CBitmap nBitmap,*OldBitMap;
nBitmap.CreateCompatibleBitmap(pDC, rect.Width(),rect.Height());
//指定内存显示设备在内存中的图像上画图
OldBitMap=nDC.SelectObject(&nBitmap);
//显示时间
CString str;
CTime tm; tm=CTime::GetCurrentTime();
str=tm.Format("当前时间:%X");
nDC.TextOutW(50,50,str);
pDC->BitBlt(rect.left,rect.top,rect.right,rect.bottom,&nDC, 0, 0, SRCCOPY);
//释放相关资源
nDC.SelectObject(OldBitMap);
nBitmap.DeleteObject();
nDC.DeleteDC();
ReleaseDC(pDC);
⑤ 添加OnEraseBkgnd函数,将其重载为return TRUE;
哪位大神帮忙看一下啊,指导一下哪里写错了。
运行出来会闪烁,郁闷了,就是按照网上的方法做的啊。