1

在 Charles Petzold 的《Programming Windows》一书中,他提到了以下内容:

“小心 GetKeyState。它不是实时键盘状态检查。而是反映键盘状态,直至并包括正在处理的当前消息。”

“不要做while(GetKeyState(VK_F1) >= 0);”,保证会挂起你的程序。

我完全不明白这些。请有人对这两个事实进行解释。

4

1 回答 1

4

每次您读取排队的键盘消息时,例如通过调用GetMessage,操作系统都会更新与调用线程关联的私有键盘状态数据。当您调用GetKeyState 该私有键盘状态数据时,该数据用于确定返回的键状态。因此,只要您不阅读另一条排队的消息,GetKeyState将始终返回相同的值。

于 2012-05-09T19:13:46.610 回答