如何更改一个Dialogbar上控件的前景色和背景色?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何更改一个Dialogbar上控件的前景色和背景色?相关的知识,希望对你有一定的参考价值。

如果是单文档或多文档程序呢?

参考技术A 在classwizad中class name 这项学则对话框类,然后在messages这项选择增加消息处理 wm_ctlcolor,然后在对应的函数中写代码就可以了。
//exp:

HBRUSH CLogToolDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

HBRUSH hbr=CDialog::OnCtlColor(pDC,pWnd,nCtlColor);

// set edit properities
if(pWnd->GetDlgCtrlID()==IDC_EDIT_LOG)//获取你想要改变的控件ID号

pDC->SetBkColor(RGB(255, 255, 255)); //设置背景颜色
pDC->SetTextColor(RGB(0, 0, 255));//设置文本颜色
return hbrEdit;

//如果还要修改其他控件,方法同上:if(pWnd->GetDlgCtrlID()==?)即可。

return hbr;

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

【中文标题】如何更改 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;

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

【讨论】:

以上是关于如何更改一个Dialogbar上控件的前景色和背景色?的主要内容,如果未能解决你的问题,请参考以下文章

更改文本框中文本的前景色和背景色

如何更改 ListView 控件中单个子项的前景色?

给定背景颜色,如何获得使其在该背景颜色上可读的前景色?

所选列表框项的前景色的 Wpf 样式资源

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

给定背景颜色,如何获得使其在背景颜色上可读的前景色?