VC中背景设置问题

把背景擦除,贴张图片,很囧的事情出现了:GroupBox的字体如下:

VC的GroupBox的背景透明问题 - C++侦探 - C Plus Plus侦探

没事,把字体的背景设置透明了先

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;

}

出现如下图, 注意那两个字的后面:

VC的GroupBox的背景透明问题 - C++侦探 - C Plus Plus侦探

字的后面多了条横……没事,是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;

}

好了.贴张成果

VC的GroupBox的背景透明问题 - C++侦探 - C Plus Plus侦探

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值