
1个回答
展开全部
BOOL CDialog::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CRect rect;
CBitmap bitmap;
BITMAP bmp;
CDC dcCompatible;
bitmap.LoadBitmap(IDB_LOGO);
bitmap.GetBitmap(&bmp);
dcCompatible.CreateCompatibleDC(pDC);
CBitmap *pOlBitmap = dcCompatible.SelectObject(&bitmap);
GetWindowRect(&rect);
pDC->SetStretchBltMode(COLORONCOLOR);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,
0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
dcCompatible.SelectObject(pOlBitmap);
DeleteDC(dcCompatible.m_hDC);
return TRUE;
}
重写CtColor然后在函数体加入如下代码
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT);
hbr=(HBRUSH)GetStockObject(NULL_BRUSH);
}
return hbr;
{
// TODO: Add your message handler code here and/or call default
CRect rect;
CBitmap bitmap;
BITMAP bmp;
CDC dcCompatible;
bitmap.LoadBitmap(IDB_LOGO);
bitmap.GetBitmap(&bmp);
dcCompatible.CreateCompatibleDC(pDC);
CBitmap *pOlBitmap = dcCompatible.SelectObject(&bitmap);
GetWindowRect(&rect);
pDC->SetStretchBltMode(COLORONCOLOR);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,
0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
dcCompatible.SelectObject(pOlBitmap);
DeleteDC(dcCompatible.m_hDC);
return TRUE;
}
重写CtColor然后在函数体加入如下代码
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT);
hbr=(HBRUSH)GetStockObject(NULL_BRUSH);
}
return hbr;
追问
你建的是单文档吧 !为什么我试了不行啊一堆错误,我是菜鸟,能不能给个联系方式,qq、手机号都行!
追答
这怎么是单文档呢。。。就是对话框重载两个函数啊
其实,你网页搜索“对话框背景图片”会有很多示例,如果你只是简单添加,那么弄个和对话框一样大的image控件放在下面都可以。
就这里吧,其它联系不方便,不好意思
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询