プログラミングメモ →目次

重い処理時のキー連打対策(VC++)

重い処理時のキー連打対策のメモです。

キーを押して重い処理を実行中に、またキーが押されると、何度も重い処理を実行してしまいます。解決方法としては、処理の後に、メッセージキューにキーのメッセージを消すのです。下記のようにキー関係のメッセージを全部取り除くまで、PeekMessage()を繰り返して呼び出します。

    時間かかる思う処理();
    MSG msg;
    while (::PeekMessage(&msg, 
                         NULL, 
                         WM_KEYFIRST, 
                         WM_KEYLAST, 
                         PM_REMOVE)
                        );
    

 

同じように、マウスのボタンの連打に対策するために、マウス系のメッセージをクリアすれば良いです。す。

    時間かかる思う処理();
    MSG msg;
    while (::PeekMessage(&msg, 
                         NULL, 
                         WM_MOUSEFIRST, 
                         WM_MOUSELAST, 
                         PM_REMOVE)
                        );