如果父窗口设置了 WS_CLIPCHILDREN 样式,则组框无法正确呈现。我当前的解决方法是简单地从父级中删除该标志。然而,这会导致在调整窗口大小时出现极度闪烁。
有更好的解决方法吗?
多布斯博士的文章《重新调整大小的对话框》解决了我遇到的完全相同的问题。所提供的解决方案减少了闪烁,但并没有消除它。我将使用这段代码。但是,如果可能有更好的解决方案,请随时发布!
不要使用组框。
组框仅在控件将重叠的布局中才有意义 - 其样式如 WS_CLIBSIBLINGS | WS_CLIPCHILDREN 仅在没有控制重叠的布局中才有意义。
使重叠控件无闪烁工作的唯一方法是实际上使分组控件成为分组框的子控件。然后在绘制时它们会被剪掉其区域。
Microsoft 在 Windows 2000 中添加了一种样式来解决此问题:WS_EX_COMPOSITED,它强制在子控件上执行从下到上的绘制顺序,并在父窗口 WM_PAINT 消息的上下文中绘制所有内容 - 但他们很快就在 Windows Vista 和 7 中破坏了该样式 - WS_EX_COMPOSITED现在只有在航空玻璃被禁用的情况下才有效。呃。