0

この質問は、WindowsでのDirectXプログラミングの根本的な誤解を示している可能性がありますが、理解できない問題が少しあります。私のプログラムは、全画面で実行すると、時々奇妙な状態になり、アプリを強制的に閉じる必要があります(CTRL + ALT + DEL)。

問題は、CTRL + ALT + DELを押すと、タスクマネージャーが表示されますが、マウスを使用できないことです。キーボードは最初は機能しますが、マウスでタスクマネージャーウィンドウをクリックすると、フォーカスが失われ、フォーカスを取り戻すことができなくなります。アプリも最小化されません(Windowsアプリのプログラミングの問題?)

私のアプリがマウスの独占所有権を盗んでいる可能性はありますか?DirectInputを使用していますが、マウス入力はアプリによってまったく処理されません。さらに、この問題はアプリをフルスクリーンで実行している場合にのみ発生します。ウィンドウで実行すると、すべて問題ありません。

重要な場合、私が使用しているツールはMS Visual Studio 12、Windows 8、およびDirectX9です。

4

1 に答える 1

0

これに対する解決策は、すべての入力デバイスの取得を解除し、アプリケーションからフォーカスが失われたときにレンダリング ルーチンを停止することでした。フォーカスがあるかどうかを追跡し、適切なメッセージの Windows メッセージ ポンプで値を適切に調整するようにアプリを設定しました。具体的には、次のメッセージを受け取ったときにフォーカスを「オフ」に設定します。

WM_SIZE( wParam=の場合SIZE_MINIMIZED)、WM_KILLFOCUSWM_ENTERSIZEMOVE、およびWM_ENTERMENULOOP

次のメッセージにフォーカスを戻します。

WM_SIZE(その他すべての場合) WM_SETFOCUS、、、、true に設定されたWM_EXITSIZEMOVEWM_ACTIVATEAPPおよびwParamWM_EXITMENULOOP

WM_KILLFOCUSアプリケーションから ALT-CTRL-DELETE を実行する問題を解決するのに十分です。

于 2013-06-15T05:20:32.810 に答える