|
case IDM_OPENBITMAP:
ofn.lStructSize = sizeof( OPENFILENAME );
ofn.hwndOwner = hWnd;
ofn.hInstance = hInst;
ofn.lpstrFilter = "ビットマップ\0*.bmp\0\0";
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = NULL;
ofn.nFilterIndex = 1;
ofn.lpstrFile = buffer;
ofn.nMaxFile = 4096;
ofn.lpstrFileTitle = NULL;
ofn.lpstrInitialDir = NULL;
ofn.lpstrTitle = "ファイルのオープン";
ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
// ダイアログ表示
ret = GetOpenFileName( &ofn );
if ( ret == 0 ) {
break;
}
// 初回のロード
if ( hBitmap == 0 ) {
hBitmap = LoadImage(0, buffer, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
GetObject( hBitmap, sizeof(BITMAP), &bmap );
hOld = SelectObject( hDCMem, hBitmap );
}
// 2回目以降のロード
else {
SelectObject( hDCMem, hOld );
DeleteObject( hBitmap );
hBitmap = LoadImage(0, buffer, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
GetObject( hBitmap, sizeof(BITMAP), &bmap );
hOld = SelectObject( hDCMem, hBitmap );
}
RedrawWindow( hWnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE );
break;
| |