指参考键盘控件时,0x80代码是什么意思
题
指参考C ++ Windows环境中的键盘控件时,0x80代码是什么意思?
例如,
if(GetKeyState('K') & 0x80) {
//do something
}
谢谢大家!
没有正确的解决方案
其他提示
更新
一连串的低音投票使我进一步调查了这一点。这是回报值(以十六进制)的方式 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
.
这 MSDN功能文档 状态:
如果高阶位为1,则钥匙是下降;否则,它已经上了。
位,使用0x80为您提供高阶位, if
检查结果是零还是非零,本质上可以检查该位的值。
但是,此检查看起来像是一个错误 GetKeyState()
返回a SHORT
要检查一个短阶的高阶位,您需要在0x8000上刻薄。
因此,我建议您使用调试器检查返回值,并验证其实际上是如何工作的。
我认为您的意思是0x8000,而不是0x80。如果是这样,您应该咨询文档(http://msdn.microsoft.com/en-us/library/ms646301(vs.85).aspx)关于getKeystate的返回值: -
返回值指定指定虚拟密钥的状态,如下:
•如果高阶位为1,则钥匙降低;否则,它已经上了。 •如果低阶位为1,则切换键。如果打开的键,例如CAPS锁定键,则将切换。如果低阶位为0,则键关闭,并取消敲打。当键切换键时,键盘上的切换键的指示灯(如果有)将打开,当键未敲打时关闭。
虽然我知道,0x80并不意味着什么
根据 文档
返回值指定指定虚拟密钥的状态:
如果高阶位为1,则钥匙是下降;否则,它已经上了。
如果低阶位为1,则切换键。 如果打开的键,例如CAPS锁定键,则将切换。如果低阶位为0,则键关闭,并取消敲打。当键切换键时,键盘上的切换键的指示灯(如果有)将打开,当键未敲打时关闭。
也许有一个不可敲打的键(例如'k'),低序 (模棱两可的术语 - 也许是指0x0080?) 和高级(0x8000)位做同样的事情吗?