WinCPICSetBlockingHook
WinCPICSetBlockingHook 関数を使用すると、Microsoft® Windows® Common Programming Interface for Communications (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) を使用するアプリケーションなど) をサポートするために提供されます。
Windows CPI-C がアプリケーションに制御を返してメッセージを処理し、正常に終了できるように、ブロック関数はWM_QUIT メッセージに応答して FALSE を返す必要があります。 それ以外の場合、関数は TRUE を返す必要があります。