您的位置:首页 > 其它

VC的GroupBox的背景透明问题

2011-01-14 11:03 441 查看
把字体的背景设置透明了先
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;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: