#include LRESULT CALLBACK WindowProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; HBITMAP hBitmap; static HDC hMemDC; static BITMAP bmp; switch(uMsg) { case WM_CREATE: //ビットマップを読み込む hBitmap=(HBITMAP)LoadImage(0,"Mandrill.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE); if(hBitmap==NULL){ MessageBox(hWnd,"ビットマップがありません",NULL,MB_OK); return 0; } //メモリデバイスコンテキストの作成 hMemDC=CreateCompatibleDC(NULL); SelectObject(hMemDC,hBitmap); //ビットマップの情報を取得 GetObject(hBitmap,sizeof(BITMAP),&bmp); //ビットマップ削除 DeleteObject(hBitmap); return 0; case WM_DESTROY: DeleteDC(hMemDC); PostQuitMessage(0); return 0; case WM_PAINT: hdc=BeginPaint(hWnd,&ps); //表画面へ転送 BitBlt(hdc,0,0,bmp.bmWidth,bmp.bmHeight,hMemDC,0,0,SRCCOPY); EndPaint(hWnd,&ps); return 0; } return DefWindowProc(hWnd,uMsg,wParam,lParam); } int WINAPI WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR lpCmdLine,int nCmdShow) { WNDCLASS wc; MSG msg; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WindowProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL,IDI_APPLICATION); wc.hCursor = LoadCursor(NULL,IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = __FILE__; if(!RegisterClass(&wc)) return 0; HWND hWnd=CreateWindow( __FILE__,"BMPファイルをDDBとして読み込む", WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, NULL,NULL,hInstance,NULL); if(hWnd==NULL) return 0; BOOL bRet; while((bRet=GetMessage(&msg,NULL,0,0))!=0){ if(bRet==-1) break; DispatchMessage(&msg); } return (int)msg.wParam; }