| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1344 人关注过本帖
标题:关于双缓冲问题
取消只看楼主 加入收藏
gao_gao86
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-3-3
收藏
 问题点数:0 回复次数:1 
关于双缓冲问题

我用MFC写了一个简单的五子棋界面,但是一拖屏幕的话窗口中的画面就会闪动,于是我用双缓冲来改写了OnPaint,
但是结果还是老样子。不知道问题出在哪里。这种现象是否和屏幕或者显卡有关系? 希望高手能指点迷津。小弟不胜感激!
OnPaint的代码如下
void CChildView::OnPaint()
{
CRect rect;
GetWindowRect(&rect);

CPaintDC pDC(this);

CBitmap bmp;
CDC MemDC;

MemDC.CreateCompatibleDC(&pDC);
bmp.CreateCompatibleBitmap(&pDC,rect.Width(),rect.Height());

MemDC.SelectObject(&bmp);
MemDC.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(192.,192,192));
DrawBoard(&MemDC);
pDC.BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
MemDC.DeleteDC();
bmp.DeleteObject();
}

BOOL CChildView::OnEraseBkgnd(CDC *pDC)
{
return TRUE;
}
另外我重载了OnEraseBkgnd直接返回TRUE
请问这里面有问题吗?

搜索更多相关主题的帖子: 五子棋 pDC 缓冲 OnPaint CDC 
2007-08-03 16:18
gao_gao86
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-3-3
收藏
得分:0 
回复:(radcat)把代码改到OnEraseBkgnd里试试
OnEraseBkgnd 函数里做的是什么工作啊? 不过我想 重画的话也只是重画视图里的东西 为什么我窗口上的菜单栏也会一起闪呢 ?
2007-08-05 17:06
快速回复:关于双缓冲问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019941 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved