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。

另请参阅

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