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