- ベストアンサー
DirectInputの押された瞬間の取得
DirectInputでキーが押された時に一度だけ反応させたいのですが、やり方がわかりません。 どなたか教えてもらえるとうれしいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 以前押された状態を記録しておかないといけません。以下参考に。 enum E_ToggleKeyBufferIndex { E_OldState, E_NewState, E_TKBufferTotal, }; VOID KeyCheck() { if(!g_pKeyboard) return; static BYTE KeyState[E_TKBufferTotal][256]; HRESULT hr = g_pKeyboard->GetDeviceState(256, KeyState[E_NewState]); if(FAILED(hr)) return; if(KeyState[E_NewState][DIK_RIGHT] & 0x80) { if(KeyState[E_OldState][DIK_RIGHT] & 0x80) { return; } else { //ココが押された瞬間 KeyState[E_OldState][DIK_RIGHT] = KeyState[E_NewState][DIK_RIGHT]; } } else { if(KeyState[E_OldState][DIK_RIGHT] & 0x80) { //ココが離された瞬間 KeyState[E_OldState][DIK_RIGHT] = 0x0; } } }
お礼
ありがとうございます!できましたー^^ ただ、未だに理屈がわかっていませんw