• 締切済み

画像表示について

画像を表示させたいのですがうまくいきません。 途中まで打ってみたのでご意見お願いします。 (リソースから読み込んで表示させる方法) 環境:MicrosoftVisualC++ SDK ******省略********* case WM_PAINT:   hdc = BeginPaint(hWnd,&ps);   //ビットマップリソースハンドルの取得   hBmp = LoadBitmap( hInst, MAKEINTRESOURCE(IDB_BITMAP1));   if(hBmp == NULL){     MessageBox(hWnd,"ファイルの読み込みに失敗しました。","エラー",MB_ICONWARNING | MB_OK);     exit(1);   }   //ビットマップの大きさの情報取得   GetObject(hBmp,(int)sizeof(BITMAP),&bmp_info);   w = bmp_info.bmWidth;   h = bmp_info.bmHeight;   hdc_mem = CreateCompatibleDC(hdc);   SelectObject(hdc_mem,hBmp);   BitBlt(hdc,0,0,w,h,hdc_mem,0,0,SRCCOPY);   DeleteDC(hdc_mem);   DeleteObject(hBmp);   EndPaint(hWnd,&ps);   break; ******リソース(img.rc)****** // // Bitmap // IDB_BITMAP1 BITMAP DISCARDABLE "bitmap1.bmp" #ifdef APSTUDIO_INVOKED

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

問題なさそうに思い増す ・・・ お使いのVCのバージョンは何でしょう チェックされているのが hBmpのみですが hdc_memなども正常に生成されているか確認しましょう DeleteDCで hdc_memを削除する前に hBmpの選択をはずしたほううがいいですよ SelectObjectの戻り値を記憶しておいて これを選択しなおします hOld = (HBITMAP)SelelctObject( hdc_mem, hBmp ); // 描画処理 // 選択を戻す ::SelectObject( hdc_mem, hOld ); ::DeleteDC( hdc_mem ); ::deletObject( hBmp ); といった具合です 描画を PatBlt( hdc, 0, 0, w, h, BLACKNESS ); とした場合 黒い矩形が表示されるのでしょうか …

skyforce
質問者

補足

バージョンは6.0です。 言い忘れてましたが、実行すると以下のif文でメッセージボックスが出るようになってしまってます。 if(hBmp == NULL){     MessageBox(hWnd,"ファイルの読み込みに失敗しました。","エラー",MB_ICONWARNING | MB_OK);     exit(1);   } 考えてみたところ、 hBmp = LoadBitmap( hInst, MAKEINTRESOURCE(IDB_BITMAP1)); に問題があるようなんですが、どうなんでしょうか。 ご意見お願いします。

関連するQ&A