1

我们有一些 C++ Win32 代码通过响应 WM_CTLCOLOR... 消息将背景颜色应用于某些控件。

当 Windows UX 主题不运行时,这可以正常工作。

在默认主题的 Windows 7 下,具有 CBS_DROPDOWNLIST 样式的组合框仅以主题的灰色背景显示。CBS_DROPDOWN 组合框正确响应启用主题的背景颜色变化。

我知道我可以删除受影响控件的主题,但这会让它们看起来很奇怪。

既然 MS 似乎已经破坏了 WM_CTLCOLOR... 的东西,任何人都知道更改单个主题控件的背景颜色的官方方法。

谢谢JF

4

2 回答 2

1

您可能会检查是否可以使用NM_CUSTOMDRAW通知完成您想要的操作。这些被发送到父级(如 WM_CTLCOLOR... 消息)。使用这些通知,某些控件比其他控件效果更好。您并不总是会收到您期望的所有通知。

另一个选项是子类化控件并覆盖 WM_PAINT。这将是很多工作,但它是可行的。有关于主题绘画的文档。

于 2012-04-05T16:46:49.890 回答
0

如果要更改主题控件的颜色,则需要使用主题 API 自定义绘制它。这是一项相当棘手的任务,基本上没有记录。祝你好运!

于 2012-04-05T15:42:26.147 回答