• 締切済み

DirectInputについて

C++でDirectinputの事なのですが。 デバッグには成功するのに、起動した後すぐ強制終了してしまいます。 VOID KeyCheck() { BYTE KeyState[256]; HRESULT hr; hr = g_lpDIDevice->GetDeviceState(256,KeyState); if (SUCCEEDED(hr)) { if (KeyState[DIK_LEFT]&0x80) muki=0; } else hr = g_lpDIDevice->Acquire(); } directxの勉強に簡単なものを書いてみようと思ったのですが、どの辺りがいけないのでしょうか?

みんなの回答

回答No.2

 こんばんは。最近ダイレクトインプットの質問が良く挙がります。  コードに問題は無い様です。  ただ、気に成るのは  hr = g_lpDIDevice->Acquire();  の呼び出している位置です。  此れを呼び出すのは「WM_ACTIVATE」等の中です。連続して呼び出す事はしません。  また、このKeyCheck関数はアイドリング内かマルチスレッド内に置かないといけません。そうしないと、入力の検出を継続する事が出来ないのです。  「ダイレクトインプット(ジョイスティック)」  http://oshiete1.goo.ne.jp/qa4309586.html

noname#142252
質問者

お礼

ご回答ありがとうございます。 directxは初めて2週間くらいで(C++も)まだまだサッパリです>< ただ、この問題は解決することができました(強制終了が出なくなっただけですけど・・・)。 参考を元に入力検出もできるように頑張ります。

  • Gizensha
  • ベストアンサー率34% (207/608)
回答No.1

> hr = g_lpDIDevice->GetDeviceState(256,KeyState); | hr = g_lpDIDevice->GetDeviceState(256,&KeyState); のような気がしますが、気がするだけです。

関連するQ&A