c++ - 使用 WinXp 公共(public)控件时编辑控件背景颜色的奇怪行为

标签 c++ winapi background-color edit-control

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

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

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

谢谢你,#535。

最佳答案

  1. 当您附加版本 6 list 时,就不需要调用 InitcommonControlsEx。

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

  3. 您目前正在使用 WM_CTLCOLOR* 消息覆盖各种控制元素的颜色吗?

关于c++ - 使用 WinXp 公共(public)控件时编辑控件背景颜色的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1621077/

相关文章:

c++ - 生命周期结束后,重新创建一个新对象,bass类的非静态数据成员的类型是引用类型,这是明确的吗?

c++ - Visual Leak Detector 在 ntdll.dll 上抛出 "Access violation reading location"

c++ - 使用 C++ 在 Windows 8 中不固定到开始屏幕的应用程序快捷方式

css - 如何将自定义颜色应用于 PdfPCell 的背景?

javascript - jQuery : If url contains string x change backgroud color of specific tag

emacs - 如何获取emacs背景颜色

c++ - 如何在C++中创建具有动态对齐要求的对象?

c++ - 如何在只有 "makefile"而没有解决方案文件的 Visual Studio C++ 中编译开源框架?

c - 如何将变量分配给控件的内容

c++ - 使用 GUIDFromString 要求包括 Shell32.dll : How do I do that