把字体的背景设置透明了先 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; } |