説明
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 を戻す必要があります。