- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ビットマップの描画について(Windowプログラミング))
ビットマップの描画について(Windowプログラミング)
このQ&Aのポイント
- Windows上でのビットマップの描画に不安があります。
- ネットでサンプルコードを参考に作成しましたが、正しいか確認してほしいです。
- ShowBMP関数を使用して、ビットマップを描画しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
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として保持可能であればパフォーマンスは最大になります。
お礼
ありがとうございます。 ご指摘いただいた後処理の部分を追加いたしました。
補足
ありがとうございます。 >ちなみに、WM_PAINTでShowBMPが呼ばれるのですか? WM_PAINTから呼んでいます。 case WM_PAINT: hdc = BeginPaint(hWnd, &ps); ShowBMP(hWnd, hdc); EndPaint(hWnd, &ps); break;