MFC Tab背景颜色及窗体内控件背景颜色更改

原创 2017年06月10日 15:25:23

整体效果图如下:

1、Tab标签页改变背景颜色

主要参照的是以下链接中的案例进行的修改,有需要的可以参考:http://download.csdn.net/detail/u014272404/9797785

2、最外层深色边框绘制

一、在对话框内增加OnPaint函数

二、在OnPaint函数内增加以下代码

代码内IDC_TAB_BASE为增加的Tab控件的ID

CRect rect;
GetDlgItem(IDC_TAB_BASE)->GetWindowRect(&rect);
ScreenToClient(&rect);
CBrush brush;
brush.CreateSolidBrush(RGB(97, 120, 140));
dc.SelectObject(&brush);
dc.RoundRect(rect.left-10, rect.top-10, rect.right+10, rect.bottom+10, 10, 10);
dc.FillSolidRect(rect.left, rect.top, rect.Width(), rect.Height(), GetSysColor(COLOR_BTNFACE));
 

3、Tab标签页的控件背景颜色修改

一、新建一个Dialog,类型为child,在其中加入以上图中的控件

二、用ClassWizard为新增加的对话框添加类

三、在头文件内添加以下变量

COLORREF m_color; //保存选择的颜色

四、为新建的Dialog添加WM_CTLCOLOR消息

五、修改新建Dialog背景色

在新建的Dialog类中增加自定义函数SetBackgroundColor(COLORREF m_brColor),设置m_color为自定义的颜色,

同时增加OnPaint函数,并在函数内增加以下代码,完成Tab Page页背景色修改

CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialog::OnPaint()
CRect rClient;
GetClientRect(rClient);
dc.FillSolidRect(rClient, m_color);

六、在Cpp  OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)内增加以下代码

HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO:  在此更改 DC 的任何属性
if(nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(m_color);
hbr = ::CreateSolidBrush(m_color);
}
// TODO:  如果默认的不是所需画笔,则返回另一个画笔
return hbr;

七、触发OnCtlColor

在SetBackgroundColor(COLORREF m_brColor)函数内增加以下代码,完成重绘,主要是Invalidate(FALSE)

m_color = m_brColor;
Invalidate(FALSE);

颜色选择对话框直接调用CColorDialog类

至此,设置完毕!

版权声明:本文为博主原创文章,未经博主允许不得转载。

MFC学习——设置对话框的背景颜色及设置透明

转载自:http://blog.sina.com.cn/s/blog_673ccb5b01010uwr.html 设置背景颜色:     我用了很多方法都不行,查了很多资料,现在说一下解决方案吧。...
  • qingzai_
  • qingzai_
  • 2017年05月04日 10:50
  • 1419

MFC修改对话框及控件背景颜色 - 很轻松!

1、修改静态文本框、编辑框、按钮等子控件的显示效果 MFC中对主窗口和子控件重绘之前都会调用OnCtlColor函数来进行一些基本的属性设置,如设置子控件的背景模式(是否透明等)、文本颜色、...
  • baobei0112
  • baobei0112
  • 2016年07月20日 11:01
  • 5775

MFC修改界面和控件颜色

重新ON_WM_PAINT()、ON_WM_CTLCOLOR()消息对应的函数OnPaint()、OnCtlColor() (一)OnPaint()//CDialogEx::OnPaint(); ...
  • dlhlSC
  • dlhlSC
  • 2017年01月24日 20:17
  • 1696

MFC设置对话框背景色及控件颜色

MFC设置对话框背景色及控件颜色 一、使用背景图片更改对话框背景色 在对话框源文件void CxxDlg::OnPaint()函数中 if (IsIconic()) {     (这里省...
  • u013541325
  • u013541325
  • 2015年07月04日 15:53
  • 8230

MFC设置窗口背景颜色(很全很强大)

如何修改frame窗口的背景颜色?    MDI窗口的客户区是由frame窗口拥有的另一个窗口覆盖的。为了改变frame窗口背景的颜色,只需要这个客户区的背景颜色就可以了。你必须自己处理WM_E...
  • leaf6094189
  • leaf6094189
  • 2012年05月11日 17:52
  • 23395

MFC 控件背景色

由于需要,要讲GroupBox控件和文本控件Static的背景色设为一致。      OnCtrlColor中设置GroupBox背景色: if(pWnd->GetDlgCtrlID()==IDC_G...
  • a379039233
  • a379039233
  • 2015年05月25日 15:43
  • 1716

VC 对话框背景颜色、控件颜色

系统环境:Windows 7软件环境:Visual C++ 2008 SP1本次目的:为对话框设置背景颜色、控件颜色      既然MFC对话框不好开发,那么现在我们来开始美化我们的对话框。为对话框设...
  • akof1314
  • akof1314
  • 2009年12月06日 19:07
  • 30996

转载:巧改TabLayout背景色

项目中有这种需求,google了下发现了解决方案,摘录如下方便大家排查.  原文链接 原理是利用selector 第一步  在drawable文件夹下建立文件 tab_backgrou...
  • cadi2011
  • cadi2011
  • 2017年04月01日 16:34
  • 1080

MFC背景颜色

1、从InitInstance设置应用程序默认背景和对话框颜色。 CWinApp::SetDialogBkColor This method is called from within t...
  • Gordennizaicunzai
  • Gordennizaicunzai
  • 2015年12月12日 16:29
  • 601

MFC对话框修改背景颜色或添加背景图片、控件背景与字体颜色的修改

MFC对话框修改背景颜色:在CXXXDlg::OnInitDialog()中添加: CDialogEx::SetBackgroundColor(RGB(155,170,190)); 效果如下:...
  • u014033518
  • u014033518
  • 2015年11月26日 20:07
  • 1876
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC Tab背景颜色及窗体内控件背景颜色更改
举报原因:
原因补充:

(最多只允许输入30个字)