改变击键C ++的速度

时间:2009-09-15 20:35:09

标签: c++ winapi native

基本上,当一种类型时,就会发生keydown事件。如果按键保持超过一定时间(约1秒),则反复按键直到键盘停止。我想更改密钥在我的c ++应用程序中自动压缩所需的时间。怎么办呢?

由于

5 个答案:

答案 0 :(得分:3)

按键自动重复出现的速度由Windows控制。

如果要操纵按键的自动重复,则轮询键的状态而不是等待keydown事件可能更有利。这取决于您对应用程序的响应程度。

本文可以帮助您找出如何查询关键状态:link

答案 1 :(得分:1)

您可以使用SystemParametersInfo函数更改键盘延迟和刷新率,如this newsgroup thread中所述。

答案 2 :(得分:0)

处理此问题的一种简单方法是在OnKeyDown事件周围建立一个时间缓冲区。设置一个计时器,确定控件是否传递给辅助事件处理程序。如果计时器已过期,则可以通过控制。如果计时器尚未到期,那么您应该返回并保持事件未处理。在将控制传递给辅助事件处理程序之前启动计时器。

void KeyDownHandler(...)
{
    // ...
    if (TimeLeft() <= 0)
    {
        StartTimer();
        handleKeyDown();
    }
}

计时器比计算重复事件更好,因为您无法假设给定系统将具有与您相同的重复率设置。

我同意Stuart的观点,即关键状态的轮询可能会更好。这取决于你想要完成的任务。

另请注意,此类行为可能会让您的用户感到非常恼火 - 为什么您需要忽略重复项?

答案 3 :(得分:0)

您可以使用Windows API,但这可能由操作系统控制。不确定... 您可能需要手动绘制一个命令,例如在按下按键后的一定秒数后多次模拟按键。

答案 4 :(得分:-1)

使用SetKeySpeed api(内核)