在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
,则表示该键已按下。 0x80
的bitwise AND操作仅检查该位是否为1
,因为二进制0x80
中的值为10000000
。因此,如果
GetKeyState('K') & 0x80
返回的值的高阶位是0x80
,则语句GetKeyState('K')
将返回1
;如果高阶位是0
,则语句0
将会返回ojit_code。关于c++ - 引用键盘控件时0x80代码是什么意思,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2746817/