指参考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 自从二进制 0x8010000000.

因此 GetKeyState('K') & 0x80 会返回 0x80 如果值返回的高阶位 GetKeyState('K')10 如果高阶位是 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)位做同样的事情吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top