• ベストアンサー

DirectInputの押された瞬間の取得

DirectInputでキーが押された時に一度だけ反応させたいのですが、やり方がわかりません。 どなたか教えてもらえるとうれしいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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;         }     } }

noname#142252
質問者

お礼

ありがとうございます!できましたー^^ ただ、未だに理屈がわかっていませんw

関連するQ&A