使用 WinXp 常用控件时编辑控件背景颜色的奇怪行为
-
06-07-2019 - |
题
我遇到了一个奇怪的问题(好吧,至少我觉得很奇怪=))。我正在编写自己的 GUI 库,它是 Windows api 的包装器(是的,我知道 WTL 和 MFC =) 等框架)。在现阶段我已经以这种方式封装了公共控件:例如,Edit 类由一个简单窗口和其上方的标准编辑窗口组成( MainWindow -> GhostWindow -> EditBox )。这就是我如何更改编辑类本身内部编辑的背景颜色的方法:
myedit->SetBkColor ( RGB ( 0, 0, 0 ) );
它工作得很好,直到我调用 InitCommonControlsEx 并将清单文件附加到我的程序中。完成此操作后,我的编辑只有在获得焦点时才能够更改颜色。老实说,我对为什么会这样以及我做错了什么没有全面的想法,所以我将不胜感激任何帮助。
谢谢你,#535。
解决方案 2
嗯,一切都比我想象的容易得多。我只是太不专心=(当一个人不使用样式时,一个手杖使用:: SetBkColor(...)来改变背景颜色,并从WM_CTLCOLOR *返回一个刷子来改变边框颜色。启用样式后事情变得不同了。现在:: SetBkColor(...)对应焦点颜色,返回画笔改变背景颜色。对我感到羞耻=(
其他提示
当您附加版本 6 清单时,无需调用 InitcommonControlsEx。
反正。加载第 6 版通用控件后,XP 主题甚至可用于标准 Windows 控件。控件的背景颜色是使用 xp 主题颜色绘制的,因此 WM_CTLCOLOR* 消息使用较少。
您当前正在使用 WM_CTLCOLOR* 消息覆盖各种控制元素的冷却器?
不隶属于 StackOverflow