如何更改一个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上控件的前景色和背景色?的主要内容,如果未能解决你的问题,请参考以下文章