説明

WinHLLAPI インプリメンテーションには、メッセージ・ハンドラーそのもので構成されている デフォルトのブロッキング・プロシージャーがあります。このデフォルトの機構を以下の例に示します。
BOOL    DefaultBlockingHook
{
      MSG msg;
 
      if (PeekMessage (&msg, NULL, 0, 0, xfPM_NOREMOVE))
      {
            if(msg.message = = WM_QUIT)
            {
                return FALSE;
            }
            PeekMessage (&msg, NULL, 0, 0, PM_REMOVE);
            TranslateMessage (&msg);
            DispatchMessage (&msg);
      }
return TRUE;
}

ブロッキング・フックは、スレッドごとに実装されます。この関数によって設定されるブロッキング・フックは、 別の WinHLLAPISetBlockingHook() 呼び出しによって置き換えられるまで、もしくは WinHLLAPIUnhookBlockingHook() の呼び出しによってデフォルトが復元されるまで、そのスレッドに対して有効のままとなります。

ブロッキング関数は、WM_QUIT メッセージを受け取った場合は FALSE を戻し、WinHLLAPI がアプリケーションに制御を戻してメッセージを処理し、正常に終了できるようにする必要があります。上記以外の場合には、関数は TRUE を戻す必要があります。