CBS_DROPDOWNLIST组合在Windows UX主题下无法响应WM_CTLCOLOR ....

时间:2012-04-05 15:35:54

标签: c++ windows winapi windows-7

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

当Windows UX主题未运行时,此工作正常。

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

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

任何人都知道改变个别主题控件的背景颜色的官方方法,因为MS似乎打破了WM_CTLCOLOR ......的东西。

由于 JF

2 个答案:

答案 0 :(得分:1)

您可以查看是否可以通过NM_CUSTOMDRAW通知完成所需操作。这些被发送给父母(如WM_CTLCOLOR ...消息)。通过这些通知,某些控件比其他控件更好用。您并不总能收到您期望的所有通知。

另一个选项是子类化控件并覆盖WM_PAINT。这将是很多工作,但它是可行的。有painting with the themes的文档。

答案 1 :(得分:0)

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