c++ - 分组框和 WS_CLIPCHILDREN

标签 c++ winapi

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

是否有更好的解决方法?

更新

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

最佳答案

不要使用分组框。

组框仅在控件将要重叠的布局中才有意义 - 像 WS_CLIBSIBLINGS | 这样的样式WS_CLIPCHILDREN 仅在没有控件重叠的布局中有意义。

让重叠控件无闪烁地工作的唯一方法是实际使分组控件成为组框的子控件。然后它们会在绘制时从其区域中剪掉。

Microsoft 在 Windows 2000 中添加了一种样式来解决此问题:WS_EX_COMPOSITED 强制子控件采用从下到上的绘制顺序,并在父窗口 WM_PAINT 消息的上下文中绘制所有内容 - 但他们立即在 Windows Vista 中打破了该样式,并且7 - WS_EX_COMPOSITED 现在仅在禁用毛玻璃时有效。呃。

关于c++ - 分组框和 WS_CLIPCHILDREN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3570376/

相关文章:

c - 使用 WIN32 API 中的 sendmessage() 函数通过编辑框获取整数输入 (C)

c++ - 可以使用 mingw 为 Windows Vista 或 7 编译代码吗?

c++ - union 初始化列表的正确格式是什么?

c++ - 为什么我在这里得到垃圾(不需要的)输出?

c++ - C++ 世界中是否有特定于线程的时钟?

c++ - 检查是否存在 Windows API 函数

C winapi hwnd返回空值

c++ - 使用C++ 11基于范围的正确方法是什么?

用于深层次继承的 C++ 模板单例基类

c++ - 关于选择 MFC CListCtrl 项