回覆列表
-
1 # 梔子花的只若秋水
-
2 # 使用者2458114238191884
m_Bitmap.LoadBitmap("res\bitmap1.bmp");這種用法是錯誤的。
LoadBitmap雖然有兩個過載函式
BOOL LoadBitmap(
LPCTSTR lpszResourceName
);
BOOL LoadBitmap(
UINT nIDResource
);
但是這個兩個引數都是和圖片資源ID相關的,和硬碟上圖片名字沒有關係。
所以你可以這樣用
m_Bitmap.LoadBitmap(IDB_BITMAP1);
m_Bitmap.LoadBitmap((LPCTSTR)IDB_BITMAP1);
如果你非要以硬碟上圖片名字載入圖片的話,只能這樣用
HBITMAP hbitmap=(HBITMAP)LoadImage(NULL,"bitmap1.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
首先你須要控制元件子類化,就是將控制元件對應的類派生出一個子類,然後用這個子類建立控制元件,在子類中新增WM_ERASEBKGND訊息,對應的::OnEraseBkgnd函式中用相容DC貼上準備好的圖片,如下
BOOLXXXXXX::OnEraseBkgnd(CDC*pDC)
{
//TODO:在此新增訊息處理程式程式碼和/或呼叫預設值
CRectrect;
GetClientRect(rect);//得到當前區域大小
CBitmapbitmap;
bitmap.LoadBitmapW(IDB_BITMAP1);//建立點陣圖物件並附加點陣圖
BITMAPbmp;
bitmap.GetBitmap(&bmp);//為了得到附加的位置的長寬
CDCCompatbleDC;
CompatbleDC.CreateCompatibleDC(pDC);//建立相容DC
CompatbleDC.SelectObject(bitmap);//點陣圖選入DC
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&CompatbleDC,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);//將相容dc貼到當前dc中並返回真,通知系統背景已經擦除成功
returnTRUE