KEY_DOWN事件在Windows中持续多长时间?

时间:2014-04-15 16:37:26

标签: windows architecture language-agnostic programming-languages

我总是想知道,当我按下键盘上的一个键时,Windows将其视为KEY_DOWN事件,然后我的程序可以询问Windows是否有这样的事件,并且窗口将会回答。

但是,确切地说,这个事件能持续多久?我的意思是,在现实世界中我们不会担心这一点,因为我们的处理器每秒可以处理许多操作,比我们点击的速度快得多,但是如果我能以光速点击怎么办?

那么,KEY_DOWN究竟是如何定时的?

1 个答案:

答案 0 :(得分:3)

输入事件(如按键)是缓冲。当Windows从键盘驱动程序接收通知时,它会将事件存储在消息队列中。这是拥有前台窗口的线程所拥有的。无论你的程序需要多长时间,都会坐在那里。它需要调用GetMessage()或PeekMessage()。

这需要多长时间完全不可预测,这取决于程序的UI线程的响应程度。或者换句话说,它调度收到的消息的速度有多快,并再次调用GetMessage()来检索下一个消息。一段时间内处于昏迷状态的UI线程并不罕见。即使在快速处理器上,执行dbase查询的程序写得很差,该查询返回数千行并等待其结果也很常见。

缓冲确保这不会导致问题。无论用户输入的速度有多快,他的击键都不会丢失。

相关问题