BMPを表示しよう
■リソースにBMPを登録しよう
リソースファイルで右クリックして「追加」->「リソース」を選択してください。
■インポートを選択肢、BMPファイルを選択します。
(BMPフォーマット以外だと、めんどくさいので、BMPにしましょう)
■これでリソースにBMPファイルが登録されます。
■ソースは
Main.cpp
#include <windows.h> #include "resource.h" LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); #define PROC_NAME L"ProcSample03" HBITMAP hBitmap; //---------------------------------------------------------------- int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPreInst, LPWSTR lpszCmdLine, int nCmdShow ) { HWND hwnd; MSG msg; WNDCLASS myProg; if (!hPreInst) { myProg.style = CS_HREDRAW | CS_VREDRAW; myProg.lpfnWndProc = WndProc; myProg.cbClsExtra = 0; myProg.cbWndExtra = 0; myProg.hInstance = hInstance; myProg.hIcon = NULL; myProg.hCursor = NULL; myProg.hbrBackground = (HBRUSH)COLOR_WINDOW; myProg.lpszMenuName = NULL; myProg.lpszClassName = PROC_NAME; if (!RegisterClass( &myProg )){ return FALSE; } } hBitmap = LoadBitmap( hInstance, MAKEINTRESOURCE(IDB_BITMAP1)); hwnd = CreateWindow( PROC_NAME, L"Sample03", WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow( hwnd, nCmdShow ); UpdateWindow( hwnd ); do{ if(PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE )) { TranslateMessage( &msg ); DispatchMessage( &msg ); } } while(msg.message != WM_QUIT); return (int)( msg.wParam ); } //---------------------------------------------------------------- LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { HDC hdc; HDC hMdc; PAINTSTRUCT paintSt; switch (msg) { case WM_PAINT: hdc = BeginPaint( hwnd, &paintSt ); hMdc = CreateCompatibleDC( hdc ); SelectObject( hMdc, hBitmap ); BitBlt( hdc, 0, 0, 56, 96, hMdc, 0, 0, SRCCOPY ); DeleteDC( hMdc ); EndPaint( hwnd, &paintSt ); break; case WM_DESTROY: DeleteObject( hBitmap ); PostQuitMessage( 0 ); break; default: return(DefWindowProc( hwnd, msg, wParam, lParam )); } return (0L); }