GetAsyncKeyState() defn 中的 "Shouldn't be relied upon" 是什么意思
What is meant by "Shouldn't be relied upon" in GetAsyncKeyState() defn
来自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()
试图确定自上次调用它以来是否按下了它,这使得它不可靠。其他东西可能已经调用并有效地重置了该标志,这样你就永远不会收到它。
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 这对"With a stackless coroutine, only the top-level routine may be suspended."意味着什么
- 为什么我会" void value not ignored as it ought to be"?
- 如何解决"no Qt platform plugin could be initialized"问题?
- C++/SDL "initial value of reference to a non-const must be an lvalue"
- 如何修复输出日志中的"EnableInput can only be specified on a Pawn for its Controller"错误
- _BitScanForward64 can not be found
- C++复制函数重载导致"must be a nonstatic member function"错误
- 通过分隔符分隔包含 UTF-16 BE 文本的uint8_t数组
- C++ 错误:"array must be initialized with a brace-enclosed initializer"
- "expression must be a modifiable lvalue"是什么意思?
- 如何摆脱导入的 make 项目中的 Eclipse 索引器"Type std::... could not be resolved"错误
- Qt5 部署"procedure entry point could not be located"
- 为什么"types may not be defined in parameter types"
- SFINAE:"enable_if cannot be used to disable this declaration"
- 如何理解"abstract-declarator containing an ellipsis shall only be used in a parameter-declaration"
- 使用自定义 nodejs 插件时的"The specified module could not be found"
- Boost.Python 和导入 dll,"The specified module could not be found"
- GetAsyncKeyState() defn 中的 "Shouldn't be relied upon" 是什么意思