ホーム > DirectInput > バッファリングデータでキーボードの状態を取得

バッファリングデータでキーボードの状態を取得

目次

  1. 初期化
  2. デバイスの状態を取得
  3. 終了処理
  4. 最後に

初期化

共通の処理DirectInput8オブジェクトの作成からアクセス権の取得と同じ処理をします。デバイス作成では「GUID_SysKeyboard」を指定します。

LPDIRECTINPUTDEVICE8 g_lpDIDevice = NULL;
g_lpDI->CreateDevice( GUID_SysKeyboard, &g_lpDIDevice, NULL );

デバイスの状態を取得

共通の処理 / デバイスの状態を取得と同じ処理をします。DIDEVICEOBJECTDATA構造体の「dwOfs」メンバにはキーボードデバイス定数の状態が格納されていています。たとえばアルファベットの「A」が押されているか判定するには下記のようにします。

// デバイスのバッファリングデータを取得する
while( TRUE )
{
  DIDEVICEOBJECTDATA od;
  HRESULT            hr;
  DWORD              dwInOut = 1;

  hr = g_lpDIDevice->GetDeviceData( sizeof(od), &od, &dwInOut, 0 );
  if( FAILED(hr) || dwInOut == 0 )  break;
  else
  {
    switch( od.dwOfs )
    {
      case DIK_A:

        // Aが押された

        break;
    }
  }
}

終了処理

共通の処理 / 終了処理と同じ処理をします。

最後に

ここまでの手順でキーボードの状態をバッファリングデータで取得できます。使用例のサンプルを置いておきます。



inserted by FC2 system