問題タブ [directinput]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
671 参照

c++ - Typedef 警告と構文エラー LPINPUT

Direct Input 8 を使用するコードのコンパイルで問題が発生しました。コード内の他のすべてのコードは正常に動作しますが、入力コードがコンパイルされると、この一連の警告とエラーが表示されます。

これは Visual Studio 2012 にあります。これを引き起こしている可能性のあるアイデアはありますか? コードの残りの部分でセミコロンとコンマが欠落していないかチェックしましたが、何も見つかりませんでした。以前に同様の問題を抱えた人はいますか?

winuser.h の周囲の行は次のとおりです。

現在、Input.H に含まれているものは次のとおりです。

および Input.cpp には Input.H のみが含まれます

0 投票する
0 に答える
1029 参照

c++ - ゲームでユーザー入力をキャプチャする最良の方法

Windows 用の OpenGL ゲームでユーザー入力を操作する最良の方法を見つけようとしています。私には次の 4 つの選択肢があります。

(1)次のように、レンダリングも含むメイン メッセージ ループ内のゲーム ウィンドウのメッセージをのぞくだけです。

これは、ほとんどの OpenGL チュートリアルで使用される方法です。この方法の大きな問題は、FPS 依存性にあります。

(2) WH_KEYBOARD_LL / WH_MOUSE_LL とは別のスレッドでSetWindowsHookExを使用します。

このメソッドを使用すると、1 秒あたり任意の数のメッセージを表示できますが、人工的すぎるように思えます + システム内のユーザー入力全体がフックされるため、これも正しくないように思えます。

(3) (2) と同じですが、WH_KEYBOARD / WH_MOUSE を使用します。オーバーヘッドのように見える別の .dll が必要です。

(4) DirectInputを使用します。試しませんでしたが、ドキュメントとチュートリアルで見たものからすると、これが最良の方法かもしれません + ゲームパッドからも簡単に入力をキャプチャできます。

問題は、DirectInput が DirectX の一部であるにもかかわらず、OpenGL ゲームをビルドしようとしていることです。


だから、私の質問は - ユーザー入力を操作する正しい方法はどれですか? それとも、私が見逃した方法がありますか?

0 投票する
1 に答える
1547 参照

c++ - Windows メッセージと directx 9 を使用したキーボード入力の処理

DirectInputよりもWindowsメッセージを使用する方が望ましいとどこでも読んだことがあります。それにもかかわらず、多くの DirectInput チュートリアルがあり、Windows メッセージングでキーボードを扱うためのチュートリアルはほとんどありません。良い情報源が見つからなかったので、自分で試してみました.

キーが押された場合に保持する 2 つの 256 メンバ bool 配列を作成しました。このフレームでキーが押されたかどうかを m_bKeyDown[256] で確認し、このフレームでキーが押されていないかどうかを m_bKeyDown で確認できるようにしたいと考えています。私の MsgProc switch ステートメントは次のとおりです。

}

F1キーを押し続けると音が出るようにテストしてみました。理想的には、ボタンを離してもう一度押すまで、サウンドが繰り返されないようにする必要があります。

違いはないようですが、ボタンを押し続けると音が繰り返されます。これを行うには、ループを修正するか、Windows メッセージングをセットアップする方法を教えてください。私は正しい道を進んでいますか、それともまったく別の方向に進むべきですか?

編集: iedoc の以下の例を使用したところ、改善されましたが、何らかの理由で遅延があるように、サウンドは停止する前に 3 回再生されます。これを回避する方法はありますか?

0 投票する
1 に答える
185 参照

c++ - C++ (スレッドまたはタイマー) でのゲームの更新?

最近、自分でゲームを作成しようとしていますが、1 つの質問に出くわしました... ゲームを毎秒 60 回レンダリングしたいのですが、それは良いことですが、Directinput8 を使用してキーボードとマウスのセットを取得します。アップ、そしてゲームをデバッグします...キーボードも毎秒60回更新されることがわかりました。たとえば、「UP」を押すと、メニューがおかしくなりました! これを修正するためにいくつかの変数を使用できることは知っていますが、タイマーとスレッドが役立つことも聞きました。以前ゲームを作成した人に聞いてもいいですか、または私が何をすべきかを教えてください。何でも役に立ちます!ありがとう!:) ちなみに、いくつかのクールなライブラリ (Allegro など?) が完成していることは知っていますが、この「更新とレンダリング」の問題をどのように克服したのか、誰か教えていただけないでしょうか?

0 投票する
0 に答える
71 参照

c# - ダイレクトインプットを何度でも初期化する

以下のコードは、直接入力ライブラリを初期化するために SlimDx.dll を使用しています。実行ごとに1回しか使用できません。たとえば、このコードを使用するボタンがあります。このボタンをクリックするたびに直接入力を初期化したいのですが、それは起こっておらず、最初のクリックで1回だけです.

この問題を解決するにはどうすればよいですか?

0 投票する
0 に答える
555 参照

c# - DirectInput からのキーボード通知の受信 (C#)

編集:自分で理由を見つけたようです。スレッドを開始する前に、キーボード デバイスを取得するのを忘れていました。幸いなことに、これは簡単な問題でした。kbd.Acquire(); を追加した後 スレッド呼び出しの前に、コードが機能し始めました。

もちろん、対応する kbd.Unacquire(); が必要になります。閉じるボタンのハンドラーで。

元の質問

私は DirectInput とスレッド化が初めてです。以下のコードの何が問題なのか、誰か教えてください。イベント ハンドラー スレッドをトリガーする通知を受け取ることはないようです。

【使用ブロック省略。現在、DirectInput には SlimDX を使用しています]

メイン フォーム クラスには、必要な変数の定義が含まれています。

どうしたの?

0 投票する
1 に答える
720 参照

c++ - フォーカスが失われた後、C++ Directx マウス入力の動作がおかしい

こんにちは、ウィンドウ フォーカス (alt+tab / Windows キー) を失った後、マウス入力に小さな問題があります。

フォーカスがゲーム ウィンドウに戻った後、マウス (ヨー) の動作が遅くなり、応答しなくなります (ピッチは何らかの理由で正常に機能しています)。動く時もあるし、全く動かない時もある。

コードの一部を次に示します。

疑問に思っている人のために、私はこのチュートリアルを使用して c++ と directx の学習を始めたばかりです: http://www.braynzarsoft.net/index.php?p=DX11Lessons (ただし、OpenGL + Java を使用した経験はかなりあります)。