【发布时间】:2012-05-10 03:23:29
【问题描述】:
在 Charles Petzold 的《Programming Windows》一书中,他提到了以下内容:
“小心使用 GetKeyState。它不是实时键盘状态检查。而是反映键盘状态直到并包括正在处理的当前消息。”
“不要做while(GetKeyState(VK_F1) >= 0);”,保证会挂你的程序。
我完全不明白这些。请有人对这两个事实做出解释。
【问题讨论】:
标签: winapi
在 Charles Petzold 的《Programming Windows》一书中,他提到了以下内容:
“小心使用 GetKeyState。它不是实时键盘状态检查。而是反映键盘状态直到并包括正在处理的当前消息。”
“不要做while(GetKeyState(VK_F1) >= 0);”,保证会挂你的程序。
我完全不明白这些。请有人对这两个事实做出解释。
【问题讨论】:
标签: winapi
每次您读取排队的键盘消息时,例如通过调用GetMessage,操作系统都会更新与调用线程关联的私有键盘状态数据。当您调用GetKeyState 时,该私有键盘状态数据用于确定返回的键状态。因此,只要您不阅读另一条排队的消息,GetKeyState 将始终返回相同的值。
【讨论】: