• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VC++でシューティングゲームを作っているのですが・・・)

VC++でシューティングゲームを作っているのですが・・・

このQ&Aのポイント
  • VC++でシューティングゲームを作っているのですが、ウィンドウの左上に自機ビットマップが表示されません。
  • ビルドすると真っ黒な画面になり、背景が黒で、自機ビットマップの画像は真っ黒、自機ビットマップの領域にあたる四角が白くなります。
  • どのような原因でこのような状態になるのかわからないので、助けが必要です。

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

  • ベストアンサー
  • isle
  • ベストアンサー率51% (77/150)
回答No.1

とりあえず… 作成されたばかりのデバイスコンテキストには、1x1ピクセルのモノクロビットマップが選択されています。 なので『hMemDCと互換性のあるビットマップhMemBmp』はモノクロになってしまうのです。

manche5
質問者

お礼

回答ありがとうございます。 確かに、ここがおかしいですね。 hMemBmp = CreateCompatibleBitmap(hMemDC, sizeWnd.right, sizeWnd.bottom); 正直言うと”互換性”の言葉の意味をよくわかってなかったので、 わからなかった理由としては、それが大きかったです。 自分の意図としては、上のhMemDCをhDCに換えたものが正しいのかなと思います。 あとクライアント領域の全体を白くするには、”領域と同じ大きさの白い長方形を描画する”で正しいのでしょうか? 何度も申し訳ないですが、お願いします。

その他の回答 (1)

  • isle
  • ベストアンサー率51% (77/150)
回答No.2

> あとクライアント領域の全体を白くするには、”領域と同じ大きさの白い長方形を描画する”で正しいのでしょうか? ウィンドウのクライアント領域を塗るという意味であれば正しくありません。 hMemBmpで示されるビットマップでクライアント領域全体が埋まるので、クライアント領域を消去しても意味がありません。 塗り潰すべき背景はhMemBmpで示されるビットマップにあります。 ”領域と同じ大きさの白い長方形を描画する”のはhMemBmpで示されるビットマップに対して、になります。 #wc.hdrBackgroundはNULLにしておくと無駄な処理が減ります。 #むしろNULLでないとウィンドウ操作時に激しく点滅することがあります。

manche5
質問者

お礼

回答ありがとうございます。 自分の言葉足らずな部分があったようで恐縮します。 >#wc.hdrBackgroundはNULLにしておくと無駄な処理が減ります。 思いも寄らない情報で、助かりました。 早速変えておこうと思います。

関連するQ&A