ホーム
|
アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


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";
}
//-------------------------------------------------------------------
 



[ ホーム | ページトップ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.