DxLibからのステップアップとして資料が多いバージョンのDirectX9を勉強し始めたのですが、描画するだけでは面白くないと思い、キーボード入力で矩形を移動させようとするプログラムを試作しました。
すると、XInputのXInputGetState()
が常にERROR_SUCCESS
以外の値になってしまい、キーボード入力を識別できません。
代わりにDirectInputを使おうとも考えたのですが、DirectInputはバージョン8で更新が止まっているということで、やめました。
趣味で作成しているプログラムなので、別にDirectInputでもいいのですが、できればXInputを使いたいです。
コードはこちらのGetting the State of a Gamepad
というところを参考にしました。
挙動がおかしい部分のプログラム
C++
1 XINPUT_STATE state; 2 int playerID = -1; 3 for (DWORD i = 0; i < XUSER_MAX_COUNT && playerID == -1; i++) 4 { 5 ZeroMemory(&state, sizeof(XINPUT_STATE)); 6 DWORD result = XInputGetState(i, &state); 7 //ここのif文がtrueにならない 8 if (result == ERROR_SUCCESS) 9 playerID = i; 10 }
ウィンドウが表示されて矩形も表示できたので、DirectXが正常に初期化できていることは確認済みです。
調べたところでは、XInputの記事はどれもXboxなどのコントローラーのものだったので、もしかしたらキーボード入力に対応してないのでしょうか?
なお、このコードは描画するタイミングで実行しているのですが、実行するタイミングが悪いのでしょうか?
多分、このプログラムに実行環境は関係ないと思いますが、一応記載しておきます。
##環境
- OS: Windows10
- IDE: Visual Studio 2019
- CPU: Ryzen 5 2400G
- GPU: Radeon RX Vega 11
- メモリー: 24GB
回答1件
あなたの回答
tips
プレビュー