【发布时间】:2018-03-05 22:06:30
【问题描述】:
我正在阅读 SimpleRibbon 示例应用程序,并注意到源代码中有一条奇怪的行:
wcex.style = 0; // Don't use CS_HREDRAW or CS_VREDRAW with a Ribbon
我在 MSDN 或其他地方找不到任何参考来解释为什么这些窗口类不应在包含功能区的窗口中使用。有谁知道这是怎么回事?
干杯。
【问题讨论】:
-
当
CS_HREDRAW位被设置时,水平尺寸的改变会导致整个窗口被重绘。未设置时,水平尺寸更改将导致仅绘制新暴露的区域。设置CS_VREDRAW位的作用相同,但垂直大小会发生变化。我不熟悉 Windows 功能区框架,但我猜你不应该在每次窗口改变大小时重新绘制功能区。您是否尝试过设置这些位并查看会发生什么? -
在样本中并不明显而且有点苛刻。他们也许正试图让它看起来不错。期望功能区是您的主窗口的子类,因此它可以检测 WM_SIZE 等基本消息。有必要确保色带始终适合整个窗口。所以功能区控件本身不需要这些类样式。但是,如果您自己的应用程序不购买 D2D 等 DirectX 包装器,则它可能会这样做。所以忽略它,使用样式,看看有什么能打动粉丝。
-
GitHub 存储库的Issues 选项卡可能是要求澄清的更好地方。
-
大概你会得到很多难看的闪烁。
-
大家好,我在查看示例时遇到了这个问题。阅读您的 cmets 后,它提醒我在 CWnd 中使用 OpenGL 时在 WM_ERASEBKGND 上返回 FALSE。也许需要对功能区执行相同的技巧?
标签: winapi windows-ribbon-framework