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

时间:2010-07-08 12:43:23

标签: visual-c++ mfc

我在vc ++ / MFC对话框应用程序中执行计算器程序。他,我想在对话框中更改按钮的前景色和背景色。我不知道,如何改变。 如果有任何机构有想法,请用相关代码或示例建议我。

basu_sagar

3 个答案:

答案 0 :(得分:1)

在传统的VC / MFC应用程序中没有简单的方法,按钮颜色始终是系统定义的。您必须使用自定义控件,或创建所有者绘制按钮。处理WM_CTLCOLOR并返回不同的画笔不适用于按钮。

编辑:

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

答案 1 :(得分:1)

您可以使用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;
}

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

答案 2 :(得分:0)

此链接包含您要查找的信息:CWnd::OnCtlColor