winCE下 mfc程序如何给对话框添加背景图片 10
我在OnEraseBkgnd函数中添加了如下代码,但连接设备运行时不能显示设定背景图片,显示的是当前窗口的背景,不知道什么原因,小弟求教!!谢谢!BOOLCQiStart...
我在OnEraseBkgnd函数中添加了如下代码,但连接设备运行时不能显示设定背景图片,显示的是当前窗口的背景,不知道什么原因,小弟求教!!谢谢!
BOOL CQiStartDlg::OnEraseBkgnd(CDC* pDC)
{
CRect rc;
GetUpdateRect(&rc);//需要重画时使用GetUpdateRect,避免使用GetClientRect(),因为这个函数可能默写地方画不到
CDC srcDC;
srcDC.CreateCompatibleDC(pDC);
srcDC.SelectObject(m_pMainBg);
pDC->BitBlt(rc.left,rc.top,rc.Width(),rc.Height(),&srcDC,rc.left,rc.top,SRCCOPY);
return TRUE;
// return CDialog::OnEraseBkgnd(pDC);
} 展开
BOOL CQiStartDlg::OnEraseBkgnd(CDC* pDC)
{
CRect rc;
GetUpdateRect(&rc);//需要重画时使用GetUpdateRect,避免使用GetClientRect(),因为这个函数可能默写地方画不到
CDC srcDC;
srcDC.CreateCompatibleDC(pDC);
srcDC.SelectObject(m_pMainBg);
pDC->BitBlt(rc.left,rc.top,rc.Width(),rc.Height(),&srcDC,rc.left,rc.top,SRCCOPY);
return TRUE;
// return CDialog::OnEraseBkgnd(pDC);
} 展开
1个回答
2015-03-31
展开全部
这是我OnEraseBkgnd的代码,试过显示正常,wincce 6.0下
//背景图片
//获得客户区尺寸
CRect rect;
GetClientRect(&rect);
//加载背景位图
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP_BG); //图片ID
//创建内存DC
CDC dc;
dc.CreateCompatibleDC(pDC);
//选择位图
CBitmap* pOldBitmap=dc.SelectObject(&bitmap);
SetStretchBltMode(pDC->m_hDC,COLORONCOLOR);//这个模式不设置的话会导致图片严重失真
BITMAP bmp;
bitmap.GetBitmap(&bmp);
//绘制位图
pDC->StretchBlt(0,0,rect.Width(), rect.Height(), &dc, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
dc.SelectObject(pOldBitmap);
return TRUE;
//背景图片
//获得客户区尺寸
CRect rect;
GetClientRect(&rect);
//加载背景位图
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP_BG); //图片ID
//创建内存DC
CDC dc;
dc.CreateCompatibleDC(pDC);
//选择位图
CBitmap* pOldBitmap=dc.SelectObject(&bitmap);
SetStretchBltMode(pDC->m_hDC,COLORONCOLOR);//这个模式不设置的话会导致图片严重失真
BITMAP bmp;
bitmap.GetBitmap(&bmp);
//绘制位图
pDC->StretchBlt(0,0,rect.Width(), rect.Height(), &dc, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
dc.SelectObject(pOldBitmap);
return TRUE;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询