求助双缓存问题,谢谢。(我是新人,没有分)

XingCity 2008-04-18 02:18:11
我做了个界面,但是由于上面控件太多,界面大小改变或者拖动边框改变界面大小时,界面闪烁太厉害,请问有什么好方法消除闪烁吗??
已经重载了OnEraseBkgnd,无论返回什么值都没有用。
在网上找的的双缓存的方法多是画位图的,有没有具体的移动界面上控件的方法,比如移动一个CBUTTON,最好有源代码。
我是初学者,也是新人,没有分。不好意思。
谢谢大家。
...全文
94 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ringphone 2008-04-21
  • 打赏
  • 举报
回复
不知道你的TAB切换是怎么做的,是用的PropertySheet还是在切换的时候根据选中的TAB进行一系列控件的隐藏与显示,如果是后者可以用BeginDeferWindowPos,DeferWindowPos,EndDeferWindowPos.自己画背景造成闪烁是因为背景画上去盖住了控件,导致控件刷新,可以在画背景前先逐个获取控件坐标,然后ExcludeClipRect裁剪掉绘制区域,这样就不会造成控件闪烁了。
XingCity 2008-04-19
  • 打赏
  • 举报
回复
我今天仔细观察了下,
发现是拖动改变窗口大小时不闪烁
但是改变不同Tab时所有的控件都会闪烁
屏蔽OnEraseBkgnd(CDC* pDC)
就不会闪烁,在Onpaint或Ondraw中自己画背景仍然会闪烁
控件有时候不会刷新,即较小的拖动窗口大小,有些控件会出现重叠的现象,如果最小化,然后还原就没有了
也试过局部刷新,没有用。
用了全局刷新,闪得更厉害。
season030441 2008-04-19
  • 打赏
  • 举报
回复
解决闪烁要具体分析啊
菜牛 2008-04-18
  • 打赏
  • 举报
回复
双缓冲用来解决绘图时候的闪烁问题,不能解决界面元素的闪烁;你可能有太多的计算量导致切换界面的时候闪烁,可以在切换前LockWindowUpdate,切换后UnlockWindowUpdate
XingCity 2008-04-18
  • 打赏
  • 举报
回复
如果切换不同Tab Control 的话,所有的控件都闪。
XingCity 2008-04-18
  • 打赏
  • 举报
回复
控件闪

谢谢
Jeffrey84 2008-04-18
  • 打赏
  • 举报
回复
窗口背景闪还是控件闪?
XingCity 2008-04-18
  • 打赏
  • 举报
回复
我用的是MoveWindows,但是用了比较多的Tab Control控件,不同的TAB切换时,TABMAIN闪烁厉害。
不知道怎么弄好。
想知道用双缓存怎么用
谢谢。。。
fullfree 2008-04-18
  • 打赏
  • 举报
回复
你是说MoveWindow或者CWnd::MoveWindow?还是双缓存好,初学可能有点麻烦
修猫写代码 2008-04-18
  • 打赏
  • 举报
回复
可以试试DeferWindowPos

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧