キーボードコントロールを参照する場合、0x80コードはどういう意味ですか

StackOverflow https://stackoverflow.com/questions/2746817

質問

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 バイナリ以来 0x8010000000.

したがって、声明 GetKeyState('K') & 0x80 戻ってきます 0x80 返された値の高次ビットの場合 GetKeyState('K')10 高次ビットがある場合 0.

関数のMSDNドキュメント 州:

高次ビットが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)ビットは同じことをしますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top