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。