ホーム > DirectInput > 直接データでマウスの状態を取得

直接データでマウスの状態を取得

目次

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

初期化

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

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

デバイスの状態を取得

DIMOUSESTATE構造体のポインタを渡して取得します。構造体の「dims.lX」「dims.lY」「dims.lZ」にはマウスの移動量が、「rgbButtons」配列にはマウスのボタンの状態が格納されていて、キーが押されたときに最上位ビットが1になります。マウスのX座標と左ボタンが押されているか判定するには下記のようにします。

// マウスの状態を取得
DIMOUSESTATE dims;
g_lpDIDevice->GetDeviceState( sizeof(DIMOUSESTATE), &dims );

// カーソルの位置
lXPos += dims.lX;

if( dims.rgbButtons[0] & 0x80 )
{
  // 左ボタンが押されている
}

終了処理

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

最後に

ここまでの手順でマウスの状態を直接データで取得できます。キーボードを直接データで取得する方法とさほど変わらないので簡単だったと思います。一応サンプルを置いておきます。



inserted by FC2 system