Condividi tramite


WinAPPCSetBlockingHook

La funzione WinAPPCSetBlockingHook consente a un'implementazione di Windows APPC di bloccare le chiamate di funzione APPC tramite una nuova funzione. Per impostazione predefinita in Microsoft Windows, il blocco delle chiamate sospende il thread dell'applicazione chiamante fino al termine della richiesta.

Sintassi

  
    FARPROC WINAPI WinAPPCSetBlockingHook (   
FARPROC lpBlockFunc);  

Parametri

lpBlockFunc
Specifica l'indirizzo dell'istanza di routine della funzione di blocco da installare.

Valore restituito

Il valore restituito punta all'istanza della routine della funzione di blocco installata in precedenza. L'applicazione o la libreria che chiama WinAPPCSetBlockingHook deve salvare questo valore restituito in modo che possa essere ripristinato, se necessario. Se l'annidamento non è importante, l'applicazione può semplicemente eliminare il valore restituito da WinAPPCSetBlockingHook e infine usare WinAPPCUnhookBlockingHook per ripristinare il meccanismo predefinito.

Osservazioni:

Un'implementazione appc di Windows ha un meccanismo predefinito che blocca le funzioni APPC implementate. Questa funzione consente all'applicazione di eseguire la propria funzione in fase di blocco al posto della funzione predefinita.

La funzione di blocco predefinita equivale a:

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;  
}  

Una funzione di blocco deve restituire FALSE se riceve un messaggio WM_QUIT in modo che Windows APPC possa restituire il controllo all'applicazione per elaborare il messaggio e terminare normalmente. In caso contrario, la funzione deve restituire TRUE.

Questa funzione viene implementata per ogni thread. Fornisce a un particolare thread di sostituire il meccanismo di blocco senza influire sugli altri thread.

La funzione WinAPPCSetBlockingHook viene fornita per supportare le applicazioni che richiedono un'elaborazione dei messaggi più complessa, ad esempio quelle che usano il modello MDI (Multiple Document Interface).

Vedere anche

WinAPPCIsBlocking
WinAPPCCancelBlockingCall