我在vc++/MFC中做了一个计算器程序的对话框应用程序。因此,我想在对话框中更改按钮的前景和背景颜色。我不知道该怎么改变。请建议我与相关的代码或例子,如果任何人有想法。
basu_sagar
发布于 2010-07-08 13:12:21
在经典的VC/MFC应用程序中,没有简单的方法可以做到这一点,按钮的颜色总是由系统定义的。您要么必须使用自定义控件,要么创建一个所有者描述按钮。处理WM_CTLCOLOR并返回不同的画笔对按钮不起作用。
编辑:
这是一些人构建的an example替换按钮控件,通过将所有者描述的代码封装到一个类中来解决这个问题。
发布于 2016-05-07 22:35:53
您可以使用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;
}
我发布的代码将绘制一个蓝色按钮,带有绿色文本,当光标悬停在按钮上时,其文本将变为红色。
https://stackoverflow.com/questions/3203654
复制