WinCE 双缓冲绘图 不显示问题 求解
最近在6410上做了个双缓冲绘图,view中OnDraw()下的代码入下:
//获取文档指针
CServerUIDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
//作图,采用双缓冲
CDC MemDC;//定义显示设备对象
CBitmap MemBitmap;//定义位图对象
MemDC.CreateCompatibleDC(pDC);//建立与屏幕显示兼容的内存显示设备
//获取客户区大小
CRect rect;
GetClientRect(&rect);
MemBitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());//建立与屏幕显示兼容的位图
CBitmap* pOldBlt = MemDC.SelectObject(&MemBitmap);//将位图选入内存显示设备中,用于作图
MemDC.FillSolidRect(&rect,RGB(255,255,255));//用背景色将位图清除干净
DrawState(&MemDC,pDoc);//作图函数
//将内存中的位图拷贝到屏幕中显示
if(!pDC->BitBlt(rect.left,rect.top,rect.Width(), rect.Height(),&MemDC,rect.left,rect.top,SRCCOPY))
TRACE(_T("BitBlt Error"));
//绘图完成后的清理工作
MemBitmap.DeleteObject();
MemDC.SelectObject(pOldBlt);
MemDC.DeleteDC();
这个程序开始1分钟内,运行很好,随着DOC中数字的改变,图形也实时刷新,但是运行一段时间后就不再刷新了,我跟踪到DrawState绘图函数里面去看时,发现数据还在实时变化,作图用的也是刷新后的数据,但是新作的图并没拷贝到屏幕上去,难道是双缓冲问题吗?搞不懂。我把双缓冲去掉,一切正常,而且这个双缓冲程序在Windows下运行时正常的,为什么在Wince下不行呢,哪位高手能帮我分析下……
[解决办法]
顶。。。最近也在做界面,经常是模拟器下运行没问题,下载到板子上就不行了。。。应该是wince系统资源的问题吧。。。
[解决办法]
MemBitmap.DeleteObject();
MemDC.SelectObject(pOldBlt);
我觉得这两句代码反了
MemDC.SelectObject(pOldBlt);
MemBitmap.DeleteObject();