把背景擦除,贴张图片,很囧的事情出现了:GroupBox的字体如下:
没事,把字体的背景设置透明了先
HBRUSH Cbmw08Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改DC 的任何属性
if (pWnd->GetDlgCtrlID() == IDC_GROUP1)
{
// 背景色透明
pDC->SetBkMode(TRANSPARENT);
// 返回透明画刷
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
出现如下图, 注意那两个字的后面:
字的后面多了条横……没事,是return (HRBUSH)GetStockOject(NULL_BRUSH);搞的,返回一个透明的画刷,嘿嘿,背景也就……
解决方案:
在.h头文件定义一个画刷:
CBrush m_BgBrush; // 背景色画刷
然后创建和背景色一样的画刷:
m_BgBrush.CreateSolidBrush(RGB(99,186,214)); // 背景的颜色
再把return语句改成下面的:
HBRUSH Cbmw08Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改DC 的任何属性
if (pWnd->GetDlgCtrlID() == IDC_GROUP1)
{
// 背景色透明
pDC->SetBkMode(TRANSPARENT);
// 返回背景色的画刷
return m_BgBrush;
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
好了.贴张成果