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

整体效果图如下:

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类

至此,设置完毕!

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值