「マウスの状態を取得する」のはWindowsプログラムでは必須となりますが、通常は「マウスでクリックされた」ところから扱うことがほとんどです。今回もDirectInputを使った実装方法ついて書きます。DirectInputでマウスから取得できる情報DirectInputを使ったマウスデバイスから取得できる情報にはマウスポインタの移動量Xマウスポインタの移動量Yマウスポインタの移動量Z(2016時点でZはまだ出番はなさそうですね)マウス左ボタンの押下状態マウス右ボタンの押下状態マウス中ボタンの押下状態(最近のホイールマウスのホイールを押してもここは反応しません。3ボタンマウスというマウスのときに使用されるものです)があります。ここまで、DirectInputで必要なコードヘッダファイルのインクルード文と使用するライブラリファイルの指定です。ここまで、DirectInputで必要なコードここは、使用するDirectInputのオブジェクト(g_pDInput)と、DirectInputのマウスデバイスオブジェクト(g_pDIMouse)の宣言を行っています。マウスデバイスから取得したマウス状態を保持するグローバル変数(g_zdiMouseState)も宣言しています。ここまで、DirectInputで必要なコードここはちょっと長いです。関数が4つ実装されています。DirectInputのマウスデバイス用の解放処理呼び出し用関数これらの関数はそれぞれ、下記の追加部分から呼び出されます。ここまで、DirectInputで必要なコードここが、DirectInputでマウス状態を取得する「実体」になります。DirectInputのGetDeviceState()を呼び出すことで、マウスデバイスが現在持っている状態を取得します。ここまで、DirectInputで必要なコードここは、ウィンドウメッセージの’WM_DESTROY’から呼び出されたときの処理です。プログラム自体が終了する箇所なので、DirectInput関係のオブジェクトも破棄して、プログラムが終了する準備をします。ここまで、DirectInputで必要なコードここは、WinMain関数(Win32プログラムのエントリポイント)が呼び出され、メッセージループに入るまでの処理です。「プログラムの初期化処理」で、ここでDirectInputオブジェクトの生成と初期化(InitDInput()関数の呼び出し)DirectInputマウスデバイスオブジェクトの生成と初期化(InitDInputMouse()関数の呼び出し)を行っておきます。ここまで、DirectInputで必要なコードここはメッセージループ本体(ほんとにループしている個所です)にGetMouseState関数を呼び出すことで、155行目から162行目の処理が実行されます。DirectInputのGetDeviceState()が呼び出されるので、ここでマウス状態の取得処理が行っていることになります。Studioの[出力]タブ)に出力しているだけ」に見えます。このプログラムを実行させて、マウスの左ボタンと右ボタンを同時に押してみてください。通常のWindowsプログラムでは、マウスの左ボタンと右ボタンを同時に押すと、たいてい「左ボタンが押された」「右ボタンが押された」は判りますが、「左ボタンと右ボタンが両方押されている」は判りません。DirectInputを使ったこのプログラムの場合は、マウスの状態をそのまま取得するだけのようですが、「そのまま取得している」ということは、扱い方次第でどちらのボタンを先に押してどのくらい両方のボタンが押されてどちらのボタンを先に離したかまでを知ることができます。プログラムのデバッグなどでは、よく「ログファイル」というファイルに情報を出力してデバッグを行います。zone)は、「地域の標準時を示すUTCとの時間差」でWindowsなどで設定する情報です。「キーボードの押下検知」とは、プログラムで「キーボードのキーが押された」ということを検出することです。