我设法使用 Barmak 的回答来修复它。 Windows 7 主题是问题所在。
要修复,您有 2 个选项。
选项 1
更改程序使用的主题
这是一个懒惰的工作。只需将您的可视化管理器从 CMFCVisualManagerWindows7 切换到其他可视化管理器之一。
选项 2
重写OnUpdateSystemColors() 函数
首先你需要一个继承CMFCVisualManagerWindows7的新类:
class Win7VM : public CMFCVisualManagerWindows7
{
};
然后您需要调用DECLARE_DYNCREATE,因为该对象是在运行时动态创建的。
class Win7VM : public CMFCVisualManagerWindows7
{
DECLARE_DYNCREATE(Win7VM);
};
接下来,您需要实现该类。
class Win7VM : public CMFCVisualManagerWindows7
{
DECLARE_DYNCREATE(Win7VM)
virtual void OnUpdateSystemColors()
{
CMFCVisualManagerWindows7::OnUpdateSystemColors();
m_clrRibbonPanelCaptionText = RGB(0, 0, 0);
}
};
之后,您需要在全局范围内单独调用 IMPLEMENT_DYNCREATE 到您的类实现。
IMPLEMENT_DYNCREATE(Win7VM, CMFCVisualManagerWindows7);
最后,我们需要将 CMFCVisualManagerWindows7 的用法更改为新类的用法:
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(Win7VM));