我们有一些C++ Win32代码,通过响应WM_CTLCOLOR ...消息将背景色应用于某些控件。
当Windows UX主题未处于运行状态时,这可以正常工作。
在具有默认主题的Windows 7下,具有CBS_DROPDOWNLIST样式的组合框仅以主题的灰色背景显示。 CBS_DROPDOWN组合框可在启用主题的情况下正确响应背景颜色更改。
我知道我可以删除受影响控件的主题,但这会使它们看起来很奇怪。
现在,MS似乎已经破坏了WM_CTLCOLOR ...的内容,因此任何人都对改变单个主题控件的背景色的官方方式有所了解。
谢谢
JF
最佳答案
您可能会检查以NM_CUSTOMDRAW通知是否可以完成所需的操作。这些被发送到父级(如WM_CTLCOLOR ...消息)。通过这些通知,某些控件比其他控件更有效。您并非总是会收到所有期望的通知。
另一个选择是控件的子类并覆盖WM_PAINT。那将是很多工作,但这是可行的。有关painting with the themes的文档。