整体效果图如下:
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类
至此,设置完毕!