基本的に、タイプすると、キーダウン イベントが発生します。キーを一定時間 (~1 秒) 以上押し続けると、キーアップが発生するまでキーが繰り返し押されます。C++ アプリケーションでキーが自動的に押されるまでの時間を変更したいと考えています。これはどのように行うことができますか?
ありがとう
このニュースグループ スレッドで説明されているように、SystemParametersInfo 関数を使用して、キーボードの遅延とリフレッシュ レートを変更できます。
これを処理する簡単な方法は、OnKeyDownイベントの前後に時間のバッファーを確立することです。制御がセカンダリイベントハンドラに渡されるかどうかを決定するタイマーを設定します。タイマーの期限が切れている場合は、制御を渡しても問題ありません。タイマーの期限が切れていない場合は、戻ってイベントを未処理のままにしておく必要があります。セカンダリイベントハンドラに制御を渡す直前にタイマーを開始します。
void KeyDownHandler(...)
{
// ...
if (TimeLeft() <= 0)
{
StartTimer();
handleKeyDown();
}
}
特定のシステムに同じ繰り返しレートが設定されているとは想定できないため、タイマーは重複イベントをカウントするよりも優れています。
キーの状態をポーリングする方がうまくいく可能性があるというスチュアートに同意します。それはあなたが達成しようとしていることに依存します。
また、このタイプの動作はユーザーにとって非常に煩わしい場合があることに注意してください。重複を無視する必要があるのはなぜですか。
Windows API を利用できる場合もありますが、これは OS によって制御される場合があります。わかりません...キーが押されてから設定された秒数後に複数回キーを押すことをシミュレートするなど、コマンドを手動で描画する必要がある場合があります。
SetKeySpeed API (カーネル) を使用する