何かアクションが起こった際(例えばマウスクリック時)に、キーボードが押されているかどうかを判定したい場合があります(シフトキー等)。
そんな時には「GetKeyState関数」を使います。
押されていると、SHORT型の最上位ビットが1になります。
最下位ビットが1のときはキーがトグル状態にあることを、0のときはトグルが解除されていることを示します。
1 2 3 4 | //シフトキーの判定例(& 0x80でも良いみたい) if (GetKeyState(VK_SHIFT) & 0x8000){ //処理 } |
ちなみに、シフトやコントロールキーと言ったキーはマクロで定義されていますが(VK_SHIFT等)、
通常の「A」や「B」と言ったキーは定義されていません。これらのキーは、キーコードを指定しれやれば良いです。
1 2 3 | if (GetKeyState( 'A' ) & 0x8000){ //処理 } |
同時に全キー状態を取得したい場合には、「GetKeyboardState関数」を使います。
この関数は、256バイトの配列を引き渡してやると、そこへ各キーの状態を詰め込んでくれます。
こちらも、最上位ビットが1の場合は押されているという事になります。
1 2 3 4 5 6 7 | BYTE KeyState[256]; GetKeyboardState(KeyState); //シフトキー判定例 if (KeyState[VK_SHIFT] & 0x80){ //処理 } |