キーボードコントロールを参照する場合、0x80コードはどういう意味ですか
質問
C ++ Windows環境のキーボードコントロールを参照する場合、0x80コードはどういう意味ですか?
例えば、
if(GetKeyState('K') & 0x80) {
//do something
}
みんな、ありがとう!
正しい解決策はありません
他のヒント
アップデート
ダウンボートの突風が私をさらに調査させました。これは、(160進数で)の返品値です GetKeyState
作品。私はのようなキーのトグルプロパティを完全に取得していません k
しかし、私はそれが切り替えるデフォルトの状態があると仮定しています。
0 Default State, key up
ff80 Default state, key down
1 Toggled, key up
ff81 Toggled, key down
それで 0xff80
高次ビットを設定する必要がある場合はいつでも追加され、低注文ビットが理にかなっています。だから今、私たちは理由を知っています 0x80
アプローチは機能します---下部バイトの高次ビットも設定されているためです!
古い答え
GetKeyState 返品a SHORT
高次ビットがある場合 1
キーがアップしていることを意味します。 ビットワイズと で操作 0x80
そのビットがあるかどうかを確認します 1
バイナリ以来 0x80
は 10000000
.
したがって、声明 GetKeyState('K') & 0x80
戻ってきます 0x80
返された値の高次ビットの場合 GetKeyState('K')
は 1
と 0
高次ビットがある場合 0
.
高次ビットが1の場合、キーはダウンしています。そうでなければ、それはアップです。
ビットごとに、0x80を使用すると、高次のビットが得られます。 if
結果がゼロまたは非ゼロであるかどうかを確認し、本質的にそのビットの値をチェックします。
ただし、このチェックは間違いのように見えます GetKeyState()
返品a SHORT
また、少しの短いビットを確認するには、ビットごとに0x8000で必要です。
そのため、デバッガーで返品値を確認し、これが実際にどのように機能するかを確認することをお勧めします。
0x80ではなく、0x8000を意味すると思います。その場合は、ドキュメントを参照する必要があります(http://msdn.microsoft.com/en-us/library/ms646301(vs.85).aspx)getKeyStateの返品値について次のことを意味します: -
戻り値は、次のように、指定された仮想キーのステータスを指定します。
•高次ビットが1の場合、キーはダウンしています。そうでなければ、それはアップです。 •低次のビットが1の場合、キーは切り替えられます。 Caps Lockキーなどのキーは、オンになった場合に切り替えられます。低次のビットが0の場合、キーはオフになり、非難が行われます。キーボードのトグルキーのインジケータライトがオンになり、キーが切り替えられ、キーがoggedされていないときにオフになります。
0x80は私が知る限りは何の意味もありません
によると ドキュメント
返品値は、指定された仮想キーのステータスを指定します。
高次ビットが1の場合、キーはダウンしています。そうでなければ、それはアップです。
低次のビットが1の場合、キーは切り替えられます。 Caps Lockキーなどのキーは、オンになった場合に切り替えられます。低次のビットが0の場合、キーはオフになり、非難が行われます。キーボードのトグルキーのインジケータライトがオンになり、キーが切り替えられ、キーがoggedされていないときにオフになります。
おそらく、留められないキー(そのような「k」)があり、低いオーダー (あいまいな用語 - おそらく0x0080を意味しますか?) そして、高次(0x8000)ビットは同じことをしますか?