適当に日々あったこととか書いてます。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
SHORT GetAsyncKeyState(
int vKey // 仮想キーコード
);
関数呼び出し時にキーが押されているかどうか、また、前回の GetAsyncKeyState 関数呼び出し以降にキーが押されたかどうかを判定します。
<パラメータ>
・vKey
[入力]最大 256 とおりの仮想キーコードのいずれかを指定します。
Windows NT/2000:特定のキーの左キーと右キーを区別できます。詳細については、「解説」を参照してください。
<戻り値>
関数が成功すると、前回の GetAsyncKeyState 関数呼び出し以降にキーが押されたかどうか、およびキーが現在押されているかどうかを示す値が返ります。
最上位ビット(0x8000)がセットされたときは現在そのキーが押されていることを示し、最下位ビット(0x0001)がセットされたときは前回の GetAsyncKeyState 関数呼び出し以降にそのキーが押されたことを示します。
他のスレッド( またはプロセス)のウィンドウがキーボードフォーカスを備えている場合は、0 が返ります。
Windows 95:Windows 95 は、左キーと右キーを区別するための定数をサポートしていません。これらの定数を指定して GetAsyncKeyState を呼び出すと、0 が返ります。
<解説>
GetAsyncKeyState 関数は、マウスボタンの状態も取得できます。
ただしこの関数は、物理的なボタンのマップ先である論理的なマウスボタンの状態ではなく、物理的なマウスボタンの状態を取得します。
たとえば、GetAsyncKeyState(VK_LBUTTON) を呼び出すと、そのボタンが論理的な左ボタンと右ボタンのどちらに割り当てられているかにかかわりなく(後者は「左利き用」の割り当て)、常に物理的な左ボタンの状態を返します。
物理的なマウスボタンと論理的なマウスボタンの対応を調べるには、次の呼び出しを行います。
GetSystemMetrics(SM_SWAPBUTTON)
この呼び出しは、マウスボタンの左右が入れ替わっているときに TRUE を返します。
vKey パラメータの値として、VK_SHIFT、VK_CONTROL、VK_MENU の各仮想キーコード定数を指定できます。この場合、左右を区別することなく、Shift、Ctrl、Alt の各キーの状態を取得できます。
<対応情報>
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダーファイル:Winuser.h 内で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用
引用:ttp://msdn.microsoft.com/ja-jp/library/cc364583.aspx
<使用メモ>
キーボード押されたときの情報検出に使用。
でも別のアプリとかで同じ関数が使われてたら、入力情報はまともに検出できなくなる可能性が高い・・・のか?
少なくとも同時に動作させたらどっちかしか検出できなかった。
もしかしたら他のアプリの使われ方次第でどっちかが動作不良起こす?
0x0000(初回)→0x8001(押す)→0x8000(押し続ける)→0x0000(放す)→0x0001(押してすぐ放す)→0x0000(次に取得)
int vKey // 仮想キーコード
);
関数呼び出し時にキーが押されているかどうか、また、前回の GetAsyncKeyState 関数呼び出し以降にキーが押されたかどうかを判定します。
<パラメータ>
・vKey
[入力]最大 256 とおりの仮想キーコードのいずれかを指定します。
Windows NT/2000:特定のキーの左キーと右キーを区別できます。詳細については、「解説」を参照してください。
<戻り値>
関数が成功すると、前回の GetAsyncKeyState 関数呼び出し以降にキーが押されたかどうか、およびキーが現在押されているかどうかを示す値が返ります。
最上位ビット(0x8000)がセットされたときは現在そのキーが押されていることを示し、最下位ビット(0x0001)がセットされたときは前回の GetAsyncKeyState 関数呼び出し以降にそのキーが押されたことを示します。
他のスレッド( またはプロセス)のウィンドウがキーボードフォーカスを備えている場合は、0 が返ります。
Windows 95:Windows 95 は、左キーと右キーを区別するための定数をサポートしていません。これらの定数を指定して GetAsyncKeyState を呼び出すと、0 が返ります。
<解説>
GetAsyncKeyState 関数は、マウスボタンの状態も取得できます。
ただしこの関数は、物理的なボタンのマップ先である論理的なマウスボタンの状態ではなく、物理的なマウスボタンの状態を取得します。
たとえば、GetAsyncKeyState(VK_LBUTTON) を呼び出すと、そのボタンが論理的な左ボタンと右ボタンのどちらに割り当てられているかにかかわりなく(後者は「左利き用」の割り当て)、常に物理的な左ボタンの状態を返します。
物理的なマウスボタンと論理的なマウスボタンの対応を調べるには、次の呼び出しを行います。
GetSystemMetrics(SM_SWAPBUTTON)
この呼び出しは、マウスボタンの左右が入れ替わっているときに TRUE を返します。
vKey パラメータの値として、VK_SHIFT、VK_CONTROL、VK_MENU の各仮想キーコード定数を指定できます。この場合、左右を区別することなく、Shift、Ctrl、Alt の各キーの状態を取得できます。
<対応情報>
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダーファイル:Winuser.h 内で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用
引用:ttp://msdn.microsoft.com/ja-jp/library/cc364583.aspx
<使用メモ>
キーボード押されたときの情報検出に使用。
でも別のアプリとかで同じ関数が使われてたら、入力情報はまともに検出できなくなる可能性が高い・・・のか?
少なくとも同時に動作させたらどっちかしか検出できなかった。
もしかしたら他のアプリの使われ方次第でどっちかが動作不良起こす?
0x0000(初回)→0x8001(押す)→0x8000(押し続ける)→0x0000(放す)→0x0001(押してすぐ放す)→0x0000(次に取得)
PR
この記事にコメントする