【问题标题】:Changing text color of ribbon button更改功能区按钮的文本颜色
【发布时间】:2016-01-05 17:07:36
【问题描述】:

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

以下是按钮当前的外观:

将鼠标悬停在上面时,某些文本似乎会变为所需的颜色。但是,有些即使悬停也不会改变:

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 您是如何为功能区中的按钮添加图像的?对不起,我不回答你的问题。我只是对此感到好奇,因为我很难自己弄清楚这一点。
  • 这看起来很奇怪。禁用文本和普通文本看起来一样。我在带有 Windows 7 主题的计算机上看到了同样的东西。但其他主题都很好。

标签: c++ windows mfc


【解决方案1】:

我设法使用 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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-04
    • 2017-04-10
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    相关资源
    最近更新 更多