更改功能区按钮的文本颜色

时间:2016-01-05 17:07:36

标签: c++ windows mfc

我在 VS2013-15 中遇到问题,我的按钮的字体颜色是灰色而不是黑色。

以下按钮的外观如下: enter image description here

当悬停在上面时,某些文字似乎会变成所需的颜色。但是,有些人即使在盘旋时也不会改变:

enter image description here

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:1)

我设法使用巴马克的答案解决了这个问题。 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));