1

こんにちは、インターネットという裏社会の皆さん。

私は Directx 11 用のエディターを作成していますが、これまでのところかなりうまくいっていますが、小さな問題が 1 つだけあります。

これは、フォームにレンダリング関数を呼び出す方法です。

Application::Idle += gcnew EventHandler(&Ideling);

これは実際に機能しますが、マウスをその上に置いた場合にのみ機能し、マウスをその上に置いたままにすると(そしてフォーカスがあります)、何もしません。したがって、アイドリング関数は、マウスがその上に置かれたときにのみ呼び出されます。そして私の質問は次のとおりです。どうすればこれを回避できますか? 常にレンダリングするようにします。

今、これは私にとって大きな苦痛です。

ありがとうございました

4

1 に答える 1

1

ルールは、メッセージ キューから最後のメッセージが取得された後に1 回呼び出されることです。したがって、それを続けるには、たとえばマウスを動かしてメッセージを生成し続ける必要があります。または、Idle イベントにメッセージを生成させることによって。フォームの Invalidate() メソッドを呼び出します。これにより Paint イベントが生成されます。他に何もする必要がない場合は、Idle イベントが再び続きます。

「Winforms game loop」をグーグルで検索して、より多くのアプローチを見つけてください。

于 2012-09-05T01:02:24.470 に答える