您的位置:首页 > 其它

双缓冲技术的简单使用

2005-09-22 23:34 225 查看
所谓需要的时候才想到去寻找。我的程序里面需要用了一个动换场面,但是GDI简单的动画实现,不可避免的让我的显示器闪动不已,我知道,要么放弃GDI而用DirectX,要么就用双缓冲技术,于是,我去google了,找到了很多篇文章,其实只有一篇,呵呵在此记录下来:在OnDraw或者OnPaint函数中加入如下代码: CClientDC dc(this);
CRect rect;
GetWindowRect(&rect);
int nWidth = rect.Width();
int nHeight= rect.Height();

CDC MemDC;
CBitmap MemBitmap;
MemDC.CreateCompatibleDC(NULL);
MemBitmap.CreateCompatibleBitmap(&dc, nWidth, nHeight);
CBitmap *pOldBit = MemDC.SelectObject(&MemBitmap);
MemDC.FillSolidRect(0, 0, nWidth, nHeight, RGB(255, 255, 255));
//在MemDC上绘出所有画面
//…
dc.BitBlt(0, 0, nWidth, nHeight, &MemDC, 0, 0, SRCCOPY);
MemBitmap.DeleteObject();
MemDC.DeleteDC();
//-----------------end------------------
写下了这些代码后,我发现我的显示器还是不争气的闪烁,肯定有什么地方不对了。寻找这个失误花了我很多时间,呵呵,我们还需要重写WM_ERASEBKGND的消息处理函数,并返回真,也就是说只是把OnEraseBkgnd的代码增加一条return true;
^_^这样就可以了哈!! Thursday, September 22, 2005
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐