如何更改 MFC/VC++ 对话框应用程序中按钮的前景色(即文本或标题)

Posted

技术标签:

【中文标题】如何更改 MFC/VC++ 对话框应用程序中按钮的前景色(即文本或标题)【英文标题】:How to change the foreground colour (ie text or caption) of a push button in MFC/VC++ dialog application 【发布时间】:2010-07-08 12:43:23 【问题描述】:

我正在 vc++/MFC 对话框应用程序中做一个计算器程序。 Thier,我想更改对话框中按钮的前景色和背景色。不知道怎么改。 如果有人有想法,请向我推荐相关代码或示例。

basu_sagar

【问题讨论】:

【参考方案1】:

在经典的 VC/MFC 应用程序中没有简单的方法可以做到这一点,按钮颜色始终是系统定义的。您要么必须使用自定义控件,要么创建一个自绘按钮。处理 WM_CTLCOLOR 并返回不同的画笔不适用于按钮。

编辑:

这是an example 替换按钮控件,有人通过将所有者绘制代码封装到一个类中来解决此问题。

【讨论】:

【参考方案2】:

您可以使用 CMFCButton。虽然你可以直接在你的资源文件中说一个按钮是这种类型的,但我不推荐它,因为它在 rc 文件中添加了一段不可维护的十六进制文本。如果你使用多个 rc 文件,每种语言一个,那真是太糟糕了!

所以我们走吧。在你的表单类中,声明一个成员

CMFCButton m_button1;

DoDataExchange 应该如下所示:

void MyDialog::DoDataExchange(CDataExchange* pDX)

    __super::DoDataExchange(pDX);

    DDX_Control(pDX, IDC_BUTTON1, m_button1);

    // ...

那么 OnInitDialog 应该是这样的:

BOOL CMyDialog::OnInitDialog()

    if(!__super::OnInitDialog())
         return FALSE;

    m_button1.SetFaceColor(RGB(0,0,255));
    m_button1.SetTextColor(RGB(0,255,0));
    m_button1.SetHotTextColor(RGB(255,0,0));

    return TRUE;

我发布的代码将绘制一个蓝色按钮,带有绿色文本,当光标悬停在按钮上时,其文本将变为红色。

【讨论】:

以上是关于如何更改 MFC/VC++ 对话框应用程序中按钮的前景色(即文本或标题)的主要内容,如果未能解决你的问题,请参考以下文章

如何更改弹出菜单的字体大小(MFC、VC6)

如何在单击按钮时暂停读取文本文件并在 mfc vc++ 中的单击按钮时恢复它?

如何在 mFC VC++ 中将编辑控件的背景转换为透明?

如何在 MFC(VC++) 中获取应用程序当前路径?

当我按下对话框窗口中的按钮时,如何在该对话框中更改/附加编辑控件框的文本

如果两个数字在 MFC(VC++) 中的任何范围内,我们如何比较?