我有一个弹出对话框( CDialog ),它处理WM_CTLCOLOR消息以给自己着色。它有一些控件(如位图按钮)使用OwnerDraw绘制自己。它还具有一个控件,该控件显示大小为70%的对话框的图像。
当用户重新调整对话框的大小时,对话框中的一些控件应该是重新定位(而不是调整大小)。它还包括重新调整对话框中的图像大小。当图像的调整使整个过程变慢时,控件的个别重新定位就会产生闪烁的视觉效果。
我得把这些处理掉。一种方法是将控件作为中间对话框(原始弹出对话框的子对话框)的子对话框。因此,当有一个调整大小时,我只能重新定位对话框,而不是单独移动每个控件。(重新定位只发生在一个方向(x或y),因此移动中间对话框就足够了。
由于这涉及到一些编码工作,在采取这种方法之前,我需要回答以下问题:
请帮帮我!
发布于 2011-08-05 08:04:32
它可能会起作用,但您应该尝试以前不改变您的控制层次结构的解决方案,因为它还有其他微妙的后果(焦点、选项卡顺序、消息通知等)。
尝试以下一种或全部方法:
BeginDeferWindowPos/DeferWindowPos/EndDeferWindowPos
发布于 2011-08-05 08:51:07
简单的解决办法是:
创建慢窗口的controls
。
https://stackoverflow.com/questions/6953060
复制相似问题