在C++ Windows环境中引用键盘控件时,0x80代码是什么意思?

例如,

if(GetKeyState('K') & 0x80) {
    //do something
}

谢谢大家!

最佳答案

更新

一连串的不赞成票促使我进一步调查了此事。这是GetKeyState的返回值(十六进制)的工作方式。我不太了解k之类的键的toggle属性,但我假设它会切换到一些默认状态。

0      Default State, key up
ff80    Default state, key down
1       Toggled, key up
ff81    Toggled, key down

因此,只要需要设置高阶位而使低阶位有意义,就添加0xff80。现在,我们知道了0x80方法为何有效---因为还设置了低字节的高位!

旧答案

GetKeyState返回一个SHORT,如果高阶位是1,则表示该键已按下。 0x80bitwise AND操作仅检查该位是否为1,因为二进制0x80中的值为10000000

因此,如果GetKeyState('K') & 0x80返回的值的高阶位是0x80,则语句GetKeyState('K')将返回1;如果高阶位是0,则语句0将会返回ojit_code。

关于c++ - 引用键盘控件时0x80代码是什么意思,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2746817/

10-12 16:16