【问题标题】:Calling GetKeyState in a tight loop, why doesn't it work?在一个紧密的循环中调用 GetKeyState,为什么它不起作用?
【发布时间】:2012-05-10 03:23:29
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: winapi


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-01-13
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 2019-11-21
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      相关资源
      最近更新 更多