WinCPICSetBlockingHook

WinCPICSetBlockingHook関数を使用すると、Microsoft® Windows®共通プログラミングインターフェイス (cpi-c) の実装を使用して、新しい関数によって cpi-c 関数呼び出しをブロックすることができます。 この従来の呼び出しは、Microsoft® Windows®バージョン3で使用されました。xアプリケーションを使用して、システムの残りの部分をブロックせずにブロック呼び出しを行います。 Microsoft Windows オペレーティングシステムの既定では、ブロック呼び出しは、要求が完了するまで呼び出し元のアプリケーションスレッドを中断します。

パラメーター

lpBlockFunc
インストールするブロッキング関数のプロシージャインスタンスアドレスを指定します。

戻り値

戻り値は、以前にインストールされたブロッキング関数のプロシージャインスタンスを指します。 WinCPICSetBlockingHookを呼び出すアプリケーションまたはライブラリは、必要に応じて復元できるように、この戻り値を保存する必要があります。 (入れ子が重要でない場合、アプリケーションは WinCPICSetBlockingHook によって返された値を破棄するだけで、最終的には WinCPICUnhookBlockingHook を使用して既定のメカニズムを復元できます)。

注釈

Windows cpi-c 実装には、cpi-c 関数のブロックを実装する既定のメカニズムがあります。 この関数は、既定の関数の代わりに、ブロック時に独自の関数を実行する機能をアプリケーションに提供します。

既定のブロッキング関数は、次の場合と同じです。

BOOL DefaultBlockingHook (void)  {  
    MSG msg;  
    /* get the next message if any */  
    if ( PeekMessage (&msg,0,0,PM_NOREMOVE)  )  {  
        if ( msg.message = = WM_QUIT  )  
            return FALSE;   // let app process WM_QUIT  
        PeekMessage (&msg,0,0,PM_REMOVE) ;  
        TranslateMessage (&msg) ;  
        DispatchMessage (&msg) ;  
    }  
    /* TRUE if no WM_QUIT received */  
    return TRUE;  
}  

WinCPICSetBlockingHook関数は、マルチドキュメントインターフェイス (MDI) モデルを使用するアプリケーションや、メニューアクセラレータ (TranslateAccelerator) を使用するアプリケーションなど、より複雑なメッセージ処理を必要とするアプリケーションをサポートするために用意されています。

ブロック関数は、WM_QUIT メッセージに応答して FALSE を返す必要があるため、Windows cpi-c はアプリケーションに制御を戻して、メッセージを処理し、適切に終了することができます。 それ以外の場合、関数は TRUE を返します。

参照

Set_Processing_Mode (CPI-C)
Specify_Windows_Handle (CPI-C)