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。