首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >避免在按调整大小移动其控件的对话框上闪烁。

避免在按调整大小移动其控件的对话框上闪烁。
EN

Stack Overflow用户
提问于 2011-08-05 07:46:26
回答 2查看 4.7K关注 0票数 1

我有一个弹出对话框( CDialog ),它处理WM_CTLCOLOR消息以给自己着色。它有一些控件(如位图按钮)使用OwnerDraw绘制自己。它还具有一个控件,该控件显示大小为70%的对话框的图像。

当用户重新调整对话框的大小时,对话框中的一些控件应该是重新定位(而不是调整大小)。它还包括重新调整对话框中的图像大小。当图像的调整使整个过程变慢时,控件的个别重新定位就会产生闪烁的视觉效果。

我得把这些处理掉。一种方法是将控件作为中间对话框(原始弹出对话框的子对话框)的子对话框。因此,当有一个调整大小时,我只能重新定位对话框,而不是单独移动每个控件。(重新定位只发生在一个方向(x或y),因此移动中间对话框就足够了。

由于这涉及到一些编码工作,在采取这种方法之前,我需要回答以下问题:

  • 会工作吗?
  • 如果是的话,这种方法的复杂性有多大?
  • 有更好的方法吗?

请帮帮我!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-05 08:04:32

它可能会起作用,但您应该尝试以前不改变您的控制层次结构的解决方案,因为它还有其他微妙的后果(焦点、选项卡顺序、消息通知等)。

尝试以下一种或全部方法:

BeginDeferWindowPos/DeferWindowPos/EndDeferWindowPos

  • 使用函数移动子函数。
  • 在对话框中设置WS_CLIPCHILDREN样式标志。
  • 在对话框中设置WS_EX_LAYERED扩展样式标志。
票数 2
EN

Stack Overflow用户

发布于 2011-08-05 08:51:07

简单的解决办法是:

创建慢窗口的controls

  • turning
  • 会持续很长一段时间,这样它就不会在WS_EX_COMPOSITED样式标志上保留简单的
  • 绘图,所以Windows双缓冲整个窗口,包括它的子窗口。注意不要把artifacts
  • turning画在WS_CLIPCHILDREN样式的标志上,这样洞就不会那么明显了。使背景变成白色将实现相同的
  • ,使缓慢控件的绘制在WM_ENTERSIZEMOVE和WM_ENTERSIZEMOVE控件之间保持简单,在简单的字符串或图像上烧掉昂贵的窗口是不必要的

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6953060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档