1

我有一个奇怪的问题(好吧,至少我觉得它很奇怪=))。我正在编写自己的 GUI 库,它是 Windows api 的包装器(是的,我知道 WTL 和 MFC 之类的框架 =))。在当前阶段,我已经以这种方式封装了常用控件:例如,Edit 类由一个简单的窗口和一个标准的编辑窗口组成( MainWindow -> GhostWindow -> EditBox )。这就是我可以例如更改编辑类本身内部编辑的背景颜色的方法:

myedit->SetBkColor ( RGB ( 0, 0, 0 ) );

它运行良好,直到我调用 InitCommonControlsEx 并将清单文件附加到我的程序。完成此操作后,我的编辑只有在获得焦点时才能更改颜色。老实说,我对为什么会有这样的行为以及我做错了什么没有一个全面的想法,所以我会感谢任何帮助。

谢谢你,#535。

4

2 回答 2

0
  1. 附加版本 6 清单时,无需调用 InitcommonControlsEx。

  2. 反正。加载了版本 6 通用控件后,XP 主题甚至可用于标准 Windows 控件。控件的背景颜色使用 xp 主题颜色绘制,因此 WM_CTLCOLOR* 消息的使用较少。

  3. 您目前正在使用 WM_CTLCOLOR* 消息覆盖各种控制元素的冷却器?

于 2009-10-26T05:13:09.513 回答
0

好吧,一切都比我想象的要容易得多。我太不专心了=(当一个人不使用样式时,一个手杖使用 ::SetBkColor(...) 来更改背景颜色,并从 WM_CTLCOLOR* 返回画笔以更改边框颜色。启用样式后情况会有所不同. 现在 ::SetBkColor(...) 对应于焦点颜色,返回画笔改变背景颜色。我很惭愧 =(

于 2009-11-06T08:39:55.317 回答