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) 模型或具有 Menu 快速鍵的應用程式, (TranslateAccelerator) 。
封鎖函式必須傳回 FALSE,以回應WM_QUIT訊息,讓 Windows CPI-C 可以將控制權傳回應用程式以處理訊息並正常終止。 否則,函式應該會傳回 TRUE。