現在網上隨便下個jpg圖片,用windows自帶的畫圖工具打開,點擊畫圖工具左上角,文件->另存為->選擇bmp,點擊保存,保存好后,就得到一張位圖了。
得到的位圖,位圖的內存比原圖片jpg占用內存大。
將位圖添加到vs2012項目里面。鼠標右鍵項目名稱->添加->資源。
選擇Bitmap->導入,選擇剛才你做好的*.bmp位圖圖片。
導入的位圖,在項目的資源中可以看到。
在resource.h資源頭文件中會突出一個宏定義,我的是IDB_BITMAP7。
然后在代碼中加載位圖。然后與兼容dc綁定,在把兼容dc上的內容顯示到窗口dc上面。下面代碼。
LRESULT CALLBACK fnWndProc(HWND hWnd, UINT mSg, WPARAM wParam, LPARAM lParam){ static HBITMAP hBitmap; static int cxClient, cyClient; HDC hdc, hdcMem; HINSTANCE hInstance; PAINTSTRUCT ps; switch(mSg){ case WM_CREATE: hInstance = ((LPCREATESTRUCT)lParam)->hInstance;//獲取窗口實例句柄 hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP7));//加載位圖 break; case WM_SIZE://窗口大小改變的消息 cxClient = LOWORD(lParam);//窗口顯示寬度 cyClient = HIWORD(lParam);//窗口顯示高度 break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); hdcMem = (HDC)CreateCompatibleDC(hdc);//創建兼容性DC SelectObject(hdcMem, hBitmap);//將位圖和兼容性DC綁定 BitBlt(hdc, 0, 0, cxClient, cyClient, hdcMem, 0, 0, SRCCOPY);//將兼容DC的內容復制到hdc上面,也就是顯示的窗口上。 DeleteObject(hdcMem);//刪除兼容性DC EndPaint(hWnd, &ps); break; case WM_DESTROY: DeleteObject(hBitmap);//刪除位圖 PostQuitMessage(0); break; } return DefWindowProc(hWnd, mSg, wParam, lParam); }
代碼運行結果
窗口最大化