如何更改 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 vc++ 中的单击按钮时恢复它?