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

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

这在Windows UX主题不运行时正常工作。

在带默认主题的Windows 7中,带有CBS_DROPDOWNLIST样式的combobox只显示主题的灰色背景。 CBS_DROPDOWNcombobox将在启用主题的情况下正确响应背景颜色更改。

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

任何人都有任何想法的官方方式来改变个人主题控制的背景颜色,现在MS似乎已经打破了WM_CTLCOLOR …的东西。

谢谢JF

Solutions Collecting From Web of "CBS_DROPDOWNLIST组合无法在Windows UX主题下响应WM_CTLCOLOR …"

您可能会检查是否可以使用NM_CUSTOMDRAW通知完成所需的工作 。 那些被发送到父(如WM_CTLCOLOR …消息)。 使用这些通知的某些控件比其他控件更好。 你并不总是得到你所期望的所有通知。

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

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