實現(xiàn)效果:
這個實際上是1個非常常見的功能,大家都會斟酌給自己簡單的工程做1個背景界面。其實只要在view類中重載OnEraseBkgnd()這個函數(shù)就行了。
代碼以下:
BOOL CdddView::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息處理程序代碼和/或調(diào)用默許值
CString string("b.bmp");
HBITMAP hbitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),string,
IMAGE_BITMAP,1024,768, LR_CREATEDIBSECTION|LR_LOADFROMFILE);
//VERY IMPORTANT:NOT CALL THE SUPER CLASS FUNCTION
CPaintDC dc(this);
if(hbitmap==NULL)
return FALSE;
CBitmap bitmap;
bitmap.Attach(hbitmap);
BITMAP bmp;
bitmap.GetBitmap(&bmp);
CDC memDc;
memDc.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = memDc.SelectObject(&bitmap);
CRect rect;
GetClientRect(&rect);
pDC->SetStretchBltMode(COLORONCOLOR);//這個模式不設(shè)置的話會致使圖片嚴(yán)重失真
pDC->StretchBlt(0,0,rect.Width() ,rect.Height(),
&memDc,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
memDc.SelectObject(pOldBitmap);
memDc.DeleteDC(); //刪除DC
return TRUE;
}
順便給工程換個標(biāo)題欄:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWndEx::PreCreateWindow(cs) )
return FALSE;
// TODO: 在此處通過修改
// CREATESTRUCT cs 來修改窗口類或樣式
cs.style &=~FWS_ADDTOTITLE;
cs.lpszName = _T("XXX系統(tǒng)");
return TRUE;
}
加載位圖時候有的格式可能還有點問題,下面是討論貼:
http://bbs.csdn.net/topics/391027250?page=1#post⑶99164597