ここで、タイミングを追跡するための別のツールを指摘したいと思います。アプリケーションの応答のテストを検討しているため、誰かが言及したように、これには OS のメッセージが関係しているため、Spy++ を使用してこれらのメッセージのタイミングを確認できます。スペースを押したときの出力を、すべての出力をオンにして、キーボード メッセージだけを聞いていたウィンドウにコピーしました。ドッキング ステーションを介した USB キーボードで、スペースを 1 回押して、できるだけ早く離しました。ダウンとアップの処理に ~.05ms かかったことがわかります。
<00001> 00090902 P WM_KEYDOWN nVirtKey:VK_SPACE cRepeat:1 ScanCode:39 fExtended:0 fAltDown:0 fRepeat:0 fUp:0 [wParam:00000020 lParam:00390001 time:1:07:38.116 point:(183, 290)]
<00002> 00090902 P WM_CHAR chCharCode:'32' (32) cRepeat:1 ScanCode:39 fExtended:0 fAltDown:0 fRepeat:0 fUp:0 [wParam:00000020 lParam:00390001 time:1:07:38.116 point:(183, 290)]
<00003> 00090902 P WM_KEYUP nVirtKey:VK_SPACE cRepeat:1 ScanCode:39 fExtended:0 fAltDown:0 fRepeat:1 fUp:1 [wParam:00000020 lParam:C0390001 time:1:07:38.163 point:(183, 290)]
Spy++ は、Visual Studio で提供されるツールです。C:\Program Files\Microsoft Visual Studio XYZ\Common7\Tools\spyxx.exe
XYZ が 8、9.0、10.0の場所で確認できます。
タイミングをさらにテストするためにできることは、Spy++ にキーボード コマンドや WM_PAINT などをリッスンさせて、UI の変更でプログラムがキーボード メッセージにどれだけ迅速に応答するかを確認することです。
たとえば、以下は Calculator を3+3
既に使用してから を押した後のクリーン ログEnter
です。KeyDown と KeyUp の間の処理にかかる .062ms よりも前に、電卓が計算して表示できたことがわかります。
<00001> 00090902 P WM_KEYDOWN nVirtKey:VK_RETURN cRepeat:1 ScanCode:1C fExtended:1 fAltDown:0 fRepeat:0 fUp:0 [wParam:0000000D lParam:011C0001 time:1:19:12.539 point:(179, 283)]
<00002> 00090902 S WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
<00003> 00090902 R WM_PAINT lResult:00000000
<00004> 00090902 S WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
<00005> 00090902 R WM_PAINT lResult:00000000
<00006> 00090902 S WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
<00007> 00090902 R WM_PAINT lResult:00000000
<00008> 00090902 S WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
<00009> 00090902 R WM_PAINT lResult:00000000
<00010> 00090902 P WM_KEYUP nVirtKey:VK_RETURN cRepeat:1 ScanCode:1C fExtended:1 fAltDown:0 fRepeat:1 fUp:1 [wParam:0000000D lParam:C11C0001 time:1:19:12.601 point:(179, 283)]
編集 - Spy++ では、[メッセージ オプション] ダイアログを表示する [ログ オプション] に移動することをお勧めします。[メッセージ] タブに移動し、[すべてクリア] をクリックし、[キーボード] にチェックを入れ、リストボックスをスクロールして WM_PAINT を選択します。このようにして、必要なメッセージのみを取得します。そうしないと、メッセージが殺到します。