共通の処理の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 ) { // 左ボタンが押されている }
共通の処理 / 終了処理と同じ処理をします。
ここまでの手順でマウスの状態を直接データで取得できます。キーボードを直接データで取得する方法とさほど変わらないので簡単だったと思います。一応サンプルを置いておきます。