私は XNA と C# を初めて使用します。XNA プロジェクトで、ゲームがフォーカスを失うタイミングを予測するイベント ハンドラーが必要になり、フォーカスが再び得られたときに音楽とビジュアルを同期できるようになりました。しかし、問題が 1 つあります。ゲームはドラッグ中に「更新」されませんが、これに適したイベントリスナーが見つからないようです。私はもう試した:
System.Windows.Forms.Control.FromHandle(Window.Handle).Move += new EventHandler(DeactivateGame);
これは、ウィンドウの移動中に「DeactivateGame」を何度も呼び出します。しかし、それが機能しても、関数を複数回呼び出すという事実にもかかわらず、ウィンドウハンドルが解放されたときに関数を呼び出して、「ActivateGame」を呼び出してゲームを再開できるようにするイベントハンドラーが表示されません。
補足(役立つ場合);
this.Activated += new EventHandler<EventArgs>(NotifyActivated);
this.Deactivated += new EventHandler<EventArgs>(NotifyDeactivated);
これらのイベント ハンドラーは、ウィンドウを最小化したり、ゲーム ウィンドウ以外にフォーカスを置いたりすると正常に動作しますが、ドラッグされているウィンドウは登録されません。プログラミングに慣れている人には明らかかもしれませんが、十分な情報を提供したことを確認したいだけです
編集: イベント ハンドラーの結果として追加したい関数は、ウィンドウがフォーカスされていないかドラッグされたときに呼び出される DateTime/TimeSpan です。ドロップまたはフォーカスを再び取得すると、現在の時刻と、ウィンドウがフォーカスを失ったときに設定された時刻が比較され、その間に失われた時間が計算されます。