• 締切済み

C++, MFCにてゲームプログラミング

C++, MFCにてOpenGLライブラリを使用してぷよぷよを作成しようと考えています。 ぷよの自動落下なのですが、現在仮に「1秒に1マス落下」としています。 しかし、マウスを動かさないと落下してくれません。 ぷよの座標は1秒ごとに1マスずつ変化しています。 (ViewクラスのOnMouseMoveを呼び出さないと描画しない?) ぷよぷよに限った話ではないのですが、原因を教えていただけると嬉しいです・・・ 初歩的な質問ですみません・・・

みんなの回答

  • unacyo
  • ベストアンサー率51% (35/68)
回答No.2

解決済かもしれませんが、一応。 RedrawWindow()は、更新範囲を指定するためのRECTのポインタを受け取れます。 今はNULLを指定しているので全体更新となりますが、範囲を指定すれば、その範囲だけ更新が出来るはずです。 私はめんどくさがりなので、CDCにCBitmapを関連付けてそこに描画内容を書き込んでからInvalidate(FALSE)を呼び出し、OnPaint()でBitBlt()するだけにしますが。 (描画途中を表示させないためでもある)

回答No.1

単に,再描画していないんじゃないですか? マウスを動かしたら,Windows側からのメッセージを受け取って 再描画されているという状況かと. 落下ごと,および操作ごとに 再描画命令を自分から呼び出したらいいのでは.

lisalisa_nyo
質問者

補足

回答ありがとうございます! 自分から RedrawWindow(NULL, NULL, NULL, RDW_ERASE|RDW_INVALIDATE|RDW_ERASENOW|RDW_ALLCHILDREN); を使って再描画してみたところ自動で落下するようになりました! しかし、落下と同時にウィンドウ内のツールバーまで再描画してしまっているのか、 ツールバーまでチカチカとしてしまっています・・・ もし心当たりがあるようでしたらアドバイスお願いします><

関連するQ&A