我正在编写 WindowsLISTBOX
公共控件的超类版本以添加额外的功能。
标准控件将WM_CTLCOLORLISTBOX
消息发送到其父级,从而允许在运行时在适当的消息处理程序中指定其文本和背景颜色。但是WM_CTLCOLORLISTBOX
不会发送到控件本身,因此无法在内部进行封装和处理。
我试图解决的方案是根据控件的启用/禁用状态更改背景和文本颜色。无论其状态如何,让列表框背景保持相同阴影的标准行为对我来说看起来很丑陋且不一致。是否有另一种方法可以在封装内设置这些值,但将所有其他绘画任务移交给基类窗口过程?
我想知道如何使用SetClassLongPtr()
. 但是,这不仅不会解决文本颜色问题,而且如果我理解正确,它会更改当前存在的该类的所有控件的背景,而不是状态已更改的特定控件。