WinAPPCSetBlockingHook
La fonction WinAPPCSetBlockingHook permet à une implémentation Windows APPC de bloquer les appels de fonction APPC au moyen d’une nouvelle fonction. Par défaut, dans Microsoft Windows, le blocage des appels interrompt le thread de l’application appelante jusqu’à ce que la demande soit terminée.
Syntaxe
FARPROC WINAPI WinAPPCSetBlockingHook (
FARPROC lpBlockFunc);
Paramètres
lpBlockFunc
Spécifie la procédure instance’adresse de la fonction de blocage à installer.
Valeur renvoyée
La valeur de retour pointe vers la procédure instance de la fonction de blocage précédemment installée. L’application ou la bibliothèque qui appelle WinAPPCSetBlockingHook doit enregistrer cette valeur de retour afin qu’elle puisse être restaurée si nécessaire. (Si l’imbrication n’est pas importante, l’application peut simplement ignorer la valeur retournée par WinAPPCSetBlockingHook et éventuellement utiliser WinAPPCUnhookBlockingHook pour restaurer le mécanisme par défaut.)
Remarques
Une implémentation APPC Windows a un mécanisme par défaut par lequel les fonctions APPC bloquantes sont implémentées. Cette fonction donne à l’application la possibilité d’exécuter sa propre fonction au moment du blocage à la place de la fonction par défaut.
La fonction de blocage par défaut équivaut à :
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;
}
Une fonction de blocage doit retourner FALSE si elle reçoit un message WM_QUIT afin que Windows APPC puisse retourner le contrôle à l’application pour traiter le message et se terminer correctement. Sinon, la fonction doit retourner TRUE.
Cette fonction est implémentée par thread. Il permet à un thread particulier de remplacer le mécanisme de blocage sans affecter d’autres threads.
La fonction WinAPPCSetBlockingHook est fournie pour prendre en charge les applications qui nécessitent un traitement des messages plus complexe, par exemple, celles qui utilisent le modèle MDI (Multiple Document Interface).