组框和WS_CLIPCHILDREN

时间:2010-08-25 21:31:30

标签: c++ winapi

如果父窗口设置了WS_CLIPCHILDREN样式,则组框不能正确呈现。我目前的解决方法是简单地从父项中删除该标志。但是,这会在调整窗口大小时导致极端闪烁。

是否有更好的解决方法?

更新

Dobbs博士的文章Resizable Dialogs Revisited解决了我遇到的完全相同的问题。提供的解决方案减少了闪烁,但并未消除它。我将使用此代码。但是,如果能够提供更好的解决方案,请随时发布!

1 个答案:

答案 0 :(得分:2)

不要使用分组框。

组框只在控件重叠的布局中才有意义 - 像WS_CLIBSIBLINGS | WS_CLIPCHILDREN仅在没有控件重叠的布局中有意义。

让重叠控件无闪烁工作的唯一方法是实际使分组控件成为组框的子项。然后,它们在涂漆时会被剪掉。

Microsoft为Windows 2000添加了一种样式来修复此问题:WS_EX_COMPOSITED强制子控件上的底部到顶部绘制顺序并在父窗口WM_PAINT消息的上下文中绘制所有内容 - 但是它们在Windows Vista中迅速破坏了该样式7 - WS_EX_COMPOSITED仅在禁用航空玻璃时才起作用。 EW。