0

コンソールウィンドウで起動し、別のGUIウィンドウを生成してdirectxレンダリングを行うMicrosoft Windowsプログラムを作成しています。

フォーカスが directx ウィンドウにあるときにキーボード文字を取得しようとしていますが、文字を入力すると、getkey は何かを打ったことを登録しません。いろいろいじった後、directx ウィンドウでキーを押した後にフォーカスをコンソール ウィンドウに変更すると、プログラムがキーボード ヒットを登録することがわかりました。キーボード ヒットをキャプチャできるようにするために、directx ウィンドウの特別な初期化が必要ですか?

4

1 に答える 1

1

kbhit はコンソール (標準入力) でのみリッスンしていると思われます。

参照した他の関数を使用する代わりに、 GetKeyboardState API を呼び出して、 (フレームごとに) キーボードの状態をポーリングします。これはおそらくあなたが望むものであり、うまく機能します。ゲームスタジオで働いていた時に使っていたものです。

ポーリングよりもイベント駆動型になりたい場合で、メッセージ ポンプ (GetMessage/DispatchMessage ループ) がある場合は、DirectX ウィンドウのウィンドウ ハンドル (hwnd) でWM_CHARWM_KEYDOWN、およびWM_KEYUPの組み合わせをリッスンできます。

フォーカスのゲイン/ロスの検出が必要な場合は、WM_SETFOCUS / WM_KILLFOCUSを探すか、 GetFocus ()を使用します。

于 2013-01-08T05:24:14.810 に答える