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

CBS_DROPDOWNLIST combo fails to respond to WM_CTLCOLOR... under Windows UX theming

本文关键字:Windows UX CTLCOLOR WM 组合 DROPDOWNLIST 响应 CBS      更新时间:2023-10-16

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

当Windows UX主题化未运行时,此功能可以正常工作。

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

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

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

谢谢JF

您可以检查是否可以通过NM_CUSTOMDRAW通知实现您想要的功能。这些消息被发送到父级(如WM_CTLCOLOR…消息)。使用这些通知,某些控件比其他控件工作得更好。你并不总能收到你所期望的所有通知。

另一种选择是对控件进行子类化并覆盖WM_PAINT。这将是一项艰巨的工作,但它是可行的。有关于绘画主题的文献。

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