GetAsyncKeyState() defn 中的 "Shouldn't be relied upon" 是什么意思

What is meant by "Shouldn't be relied upon" in GetAsyncKeyState() defn

本文关键字:be relied upon 意思 是什么 defn 中的 GetAsyncKeyState Shouldn      更新时间:2023-10-16

来自MSDN:

如果设置了最高有效位,则键向下;如果设置了最低有效位,那么在上次调用GetAsyncKeyState之后按下键。但是,你不应该依赖最后一种行为;[..]

尽管返回值的最低有效位表示自上次查询以来是否按下了键,但由于Windows具有先发制人的多任务特性,其他应用程序可以调用GetAsyncKeyState并接收"最近按下的"位,而不是您的应用程序。返回值的最低有效位的行为被严格保留,以与16位Windows应用程序(非抢占式)兼容,不应依赖。

在我的程序中,我只对键当前所在位置的返回值感兴趣。也就是说,正如msdn所定义的,当最低和最高有效位都被设置时(-32767)(这就是它现在的工作方式。)。然而,我还必须检查32767(没有最低sig.bit的值)。在这种情况下,就像它所说的,最低有效位被另一个程序截获,或者"不可靠",不管这意味着什么。

嗯,是的,基本上。不过,只检查最重要的部分而完全忽略最不重要的部分更容易。

我还必须检查32767(没有最小sig.bit的值)吗

这不对-值将是-32768(假设二的补码):

1000 0000 0000 0001   -32767
1000 0000 0000 0000   -32768

另请参见此处;这个值被打包到short中,这对我来说很奇怪,但我们开始了。

GetAsyncKeyState()试图确定自上次调用它以来是否按下了它,这使得它不可靠。其他东西可能已经调用并有效地重置了该标志,这样你就永远不会收到它。

相关文章: