0

基本的に、タイプすると、キーダウン イベントが発生します。キーを一定時間 (~1 秒) 以上押し続けると、キーアップが発生するまでキーが繰り返し押されます。C++ アプリケーションでキーが自動的に押されるまでの時間を変更したいと考えています。これはどのように行うことができますか?

ありがとう

4

5 に答える 5

1

このニュースグループ スレッドで説明されているように、SystemParametersInfo 関数を使用して、キーボードの遅延とリフレッシュ レートを変更できます。

于 2012-06-09T20:18:43.233 に答える
0

これを処理する簡単な方法は、OnKeyDownイベントの前後に時間のバッファーを確立することです。制御がセカンダリイベントハンドラに渡されるかどうかを決定するタイマーを設定します。タイマーの期限が切れている場合は、制御を渡しても問題ありません。タイマーの期限が切れていない場合は、戻ってイベントを未処理のままにしておく必要があります。セカンダリイベントハンドラに制御を渡す直前にタイマーを開始します。

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

特定のシステムに同じ繰り返しレートが設定されているとは想定できないため、タイマーは重複イベントをカウントするよりも優れています。

キーの状態をポーリングする方がうまくいく可能性があるというスチュアートに同意します。それはあなたが達成しようとしていることに依存します。

また、このタイプの動作はユーザーにとって非常に煩わしい場合があることに注意してください。重複を無視する必要があるのはなぜですか。

于 2009-09-15T20:53:06.500 に答える
0

Windows API を利用できる場合もありますが、これは OS によって制御される場合があります。わかりません...キーが押されてから設定された秒数後に複数回キーを押すことをシミュレートするなど、コマンドを手動で描画する必要がある場合があります。

于 2011-09-19T22:34:18.220 に答える
-1

SetKeySpeed API (カーネル) を使用する

于 2009-09-18T16:33:19.863 に答える