在Charles Petzold的书“Programming Windows”中,他提到了以下内容:
“小心GetKeyState。它不是实时的键盘状态检查。而是它反映了键盘状态,包括当前正在处理的消息。”
“不要while(GetKeyState(VK_F1) >= 0);
”,保证会挂起你的程序。
我根本不明白这些。请问有人可以解释这两个事实。
答案 0 :(得分:4)
每次读取排队的键盘消息时,例如通过调用GetMessage
,操作系统都会更新与调用线程关联的私有键盘状态数据。当您调用GetKeyState
时,私钥键盘状态数据用于确定返回的键状态。因此,只要您不读取另一个排队的消息,GetKeyState
将始终返回相同的值。