• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ビットマップの描画について(Windowプログラミング))

ビットマップの描画について(Windowプログラミング)

このQ&Aのポイント
  • Windows上でのビットマップの描画に不安があります。
  • ネットでサンプルコードを参考に作成しましたが、正しいか確認してほしいです。
  • ShowBMP関数を使用して、ビットマップを描画しています。

質問者が選んだベストアンサー

  • ベストアンサー
noname#30727
noname#30727
回答No.1

DCにSelectObjectしたら、SelectObjectする前の状態に戻してからDeleteDCしましょう。 SelectObject(hmdc, hBitmap); BitBlt(hdc, 0, 0, BMP_W, BMP_H, hmdc, 0, 0, SRCCOPY); DeleteDC(hmdc); DeleteObject(hBitmap); ↓ HGDIOBJ hPrevBitmap; hPrevBitmap = SelectObject(hmdc, hBitmap); BitBlt(hdc, 0, 0, BMP_W, BMP_H, hmdc, 0, 0, SRCCOPY); SelectObject(hmdc, hPrevBitmap); DeleteDC(hmdc); DeleteObject(hBitmap); あとは目に見えるので、表示されていればOKだと思います。 ちなみに、WM_PAINTでShowBMPが呼ばれるのですか? ビットマップは毎回LoadBitmapしない方がいいです。 更にCompatibleBitmapとして保持可能であればパフォーマンスは最大になります。

t-_-anigu
質問者

お礼

ありがとうございます。 ご指摘いただいた後処理の部分を追加いたしました。

t-_-anigu
質問者

補足

ありがとうございます。 >ちなみに、WM_PAINTでShowBMPが呼ばれるのですか? WM_PAINTから呼んでいます。 case WM_PAINT: hdc = BeginPaint(hWnd, &ps); ShowBMP(hWnd, hdc); EndPaint(hWnd, &ps); break;