|
|
||||
Tips > |
|||||
GetAsyncKeyStateでキーが押されたか判定 |
更新 : 2012/09/23 |
||||
|
|
||
解説: 現在押されているキーあるいは最後にどのキーが押されたか調べたい場合があります。 今回はそれを判断するため、Win32APIのGetAsyncKeyState関数を使ってみます。 GetAsyncKeyState関数は引数に 押されているかどうかを調べたいキー、たとえば、[Ctrl]などを指定することで、キーの状態が取得できます。 戻り値が0以外ならキーは押されていて、0ならばキーは押されていないことが分かります。 ちょっと寄り道: inSHORT GetAsyncKeyState( int key ); key:目的のキーの番号を指定。 戻り値:キーが押されていれば0以外、押されていなければ0が返る。 使用例: 以下の例では、Button1をクリックすると、Shiftキーが押されたかどうかを判定して、結果を表示しています。 準備としてはButtonとLabelを適当に配置するだけです。 OnClickイベントハンドラでGetAsyncKeyState関数にVK_SHIFTを渡して、Shiftキーが押されたかどうかを調べています。 Shiftキーが押されていれば、 "Shift"を、押されていなければ"No-Shift"をLabel1に表示します。 時間のある方は、他のキーでも試してみてください。 //------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if (GetAsyncKeyState(VK_SHIFT)) Label1->Caption = "Shift"; else Label1->Caption = "No-Shift"; } //------------------------------------------------------------------- |