在MFC 如何设置按钮的颜色
我是以为MFC新手我最近弄了对话框的界面程序但是按钮总是灰色看起不舒服我想改变哈按钮的颜色!!请问怎么做我只知道要派生个Button类还用DrawItem函数重绘但是具体...
我是以为MFC新手 我最近弄了对话框的界面程序 但是按钮总是灰色 看起不舒服 我想改变哈按钮的颜色!!请问怎么做 我只知道要派生个Button类 还用DrawItem函数重绘 但是具体怎么做 我不知道了 我在网上看了很多 但是就是不行啊 请哪位具体点 给我讲哈 尽量附上代码 尽量讲的具体点哈
展开
5个回答
展开全部
思路:在控件显示之前,每一个控件会向父对话框发送一个WM_CTLCOLOR消息,这个消息缺省处理函数CWnd::OnCtlColor返回一个HBRUSH类型的句柄,这样,就可以设置前景和背景文本颜色,并为控件或者对话框的非文本区域选定一个刷子。
实现:
① 先创建一个基于对话框的工程,命名为test,然后在对话框上加入一个ListBox控件。
② 在testDlg.h中加入一个成员变量:HBRUSH m_hbrush;
③ 在OnInitDialog()中,加入m_hbrush=CreateSolidBrush(RGB(0,0,0);此处设置的RGB值可以改变ListBox的背景色。为了观看ListBox中字的颜色变化,给ListBox加入几个字:利用Class Wizard给ListBox加入一个Control类型的成员变量m_ctrlListBox,然后在OnInitDialog()加入如下所示的代码:
m_ctrlListBox.AddString("第一行");
m_ctrlListBox.AddString("第二行");
④ 点击Class Wizard,给testDlg加入WM_CTLCOLOR事件,单击Edit Code按钮,然后把改函数的内容替换为如下代码:
if(nCtlColor== CTLCOLOR_LISTBOX)
{
pDC->SetBkMode(TRANSPARENT);
//此处设置字体的颜色
pDC->SetTextColor(RGB(255,255,255));
return m_hbrush;
}
else
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
实现:
① 先创建一个基于对话框的工程,命名为test,然后在对话框上加入一个ListBox控件。
② 在testDlg.h中加入一个成员变量:HBRUSH m_hbrush;
③ 在OnInitDialog()中,加入m_hbrush=CreateSolidBrush(RGB(0,0,0);此处设置的RGB值可以改变ListBox的背景色。为了观看ListBox中字的颜色变化,给ListBox加入几个字:利用Class Wizard给ListBox加入一个Control类型的成员变量m_ctrlListBox,然后在OnInitDialog()加入如下所示的代码:
m_ctrlListBox.AddString("第一行");
m_ctrlListBox.AddString("第二行");
④ 点击Class Wizard,给testDlg加入WM_CTLCOLOR事件,单击Edit Code按钮,然后把改函数的内容替换为如下代码:
if(nCtlColor== CTLCOLOR_LISTBOX)
{
pDC->SetBkMode(TRANSPARENT);
//此处设置字体的颜色
pDC->SetTextColor(RGB(255,255,255));
return m_hbrush;
}
else
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
2013-08-01
展开全部
MFC自己修改Button比较麻烦 要自己绘画各个状态下按钮的状态如果真想做个漂亮点的按钮MFC是支持在按钮上贴图片的可以用漂亮的图片贴在上面效果也很不错哦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-11-05
展开全部
使用CMFCButton可以解决:
//CMFCButton * button = new CMFCButton;
//button->Create(_T("Test Button"),
// WS_VISIBLE,
// CRect(5, 5, 80, 50),
// this,
// IDC_CCP);
//// 更改文字
//button->SetWindowText(_T("强制更改"));
//// 更改背景颜色
//button->SetFaceColor(RGB(153, 217, 234));
//// 更改字体颜色
//button->SetTextColor(RGB(255, 0, 0));
//// 更改高亮颜色
//button->SetTextHotColor(RGB(63, 72, 204));
//// 更改位置
//button->MoveWindow(100, 300, 100, 70);
//// 鼠标经过时变成手势
//button->SetMouseCursorHand();
//// 工具提示
//button->SetTooltip(_T("俺是提示"));
//CMFCButton * button = new CMFCButton;
//button->Create(_T("Test Button"),
// WS_VISIBLE,
// CRect(5, 5, 80, 50),
// this,
// IDC_CCP);
//// 更改文字
//button->SetWindowText(_T("强制更改"));
//// 更改背景颜色
//button->SetFaceColor(RGB(153, 217, 234));
//// 更改字体颜色
//button->SetTextColor(RGB(255, 0, 0));
//// 更改高亮颜色
//button->SetTextHotColor(RGB(63, 72, 204));
//// 更改位置
//button->MoveWindow(100, 300, 100, 70);
//// 鼠标经过时变成手势
//button->SetMouseCursorHand();
//// 工具提示
//button->SetTooltip(_T("俺是提示"));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-01
展开全部
你看下面的文章,还有code可以下载,这种事情,看看,然后动一下手,就会很easy的http://www.vckbase.com/document/viewdoc/?id=551
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没那么麻烦,我能说MFC自带的MFC Button Control控件等按钮,自己就可以修改颜色,还能添加图片,设置字体颜色等。这些控件就在工具箱的下面,前面带MFC开头的那些。你先复制原来按钮的ID,再删掉原来的按钮,拖入MFC按钮,再把这个按钮的ID改为原来按钮的ID,就能提换掉原来的按钮,然后给这个按钮添加变量。在需要改颜色的地方调用m_btn.SetFaceColor(RGB(0, 255, 0));这样的就行了。其他的功能百度或MSDN MFCButton。
这里也有一些http://tech.cncms.com/develop/cjj/95068.html
这里也有一些http://tech.cncms.com/develop/cjj/95068.html
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询