Funzione CoSetMessageDispatcher (messagedispatcherapi.h)
Registra o annulla la registrazione del dispatcher messaggi per thread che deve essere richiamato quando sono disponibili messaggi finestra per l'invio all'interno delle API di attesa COM in un thread ASTA. Questa funzione viene in genere chiamata da CoreWindow, ma in determinate circostanze altri componenti che devono specializzare il modo in cui i messaggi vengono inviati su un thread ASTA possono anche chiamare questa funzione.
Sintassi
void CoSetMessageDispatcher(
[in, optional] PMessageDispatcher pMessageDispatcher
);
Parametri
[in, optional] pMessageDispatcher
Se non null, l'oggetto dispatcher del messaggio da registrare. Questo oggetto deve anche implementare IWeakReferenceSource. Se null, annulla la registrazione del dispatcher del messaggio corrente.
Valore restituito
Se questa funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .
Commenti
Questa funzione è supportata solo nei thread ASTA. Un tentativo di impostare il dispatcher del messaggio su un thread non ASTA non ha esito negativo senza effetti collaterali.
Un tentativo di impostare un oggetto che non implementa IWeakReferenceSource non riesce automaticamente senza effetti collaterali.
Una chiamata a questa funzione con un parametro pMessageDispatcher valido e non null registra questo oggetto per ricevere un callback PumpMessages ogni volta che sono disponibili messaggi di finestra per l'invio con LE API di attesa COM su tale thread ASTA. Viene mantenuto un Windows Runtime riferimento debole a questo oggetto e l'oggetto riceve i callback, fino a quando la registrazione non viene sostituita o l'ASTA non inizializzata. Ogni chiamata a questa funzione sostituisce il dispatcher del messaggio registrato in precedenza, se presente.
Non è possibile verificare se un dispatcher di messaggi è registrato in un thread ASTA o per recuperare un dispatcher di messaggi registrato in precedenza. Questa funzione deve essere chiamata solo in circostanze in cui è noto che questo non sarà in conflitto con un'altra registrazione, in particolare:
- Nei thread dell'interfaccia utente dell'app di Windows Store questa funzione viene chiamata da CoreWindow per registrare il dispatcher. Nessun altro componente deve chiamare questa funzione su questi thread.
- I framework dell'interfaccia utente possono supportare una modalità di creazione, in cui le applicazioni vengono eseguite nell'ambiente desktop e pertanto non dispongono di coreWindow nei thread dell'interfaccia utente. Al posto del supporto di CoreWindow, questi framework dell'interfaccia utente possono registrare un dispatcher di messaggi nei thread dell'interfaccia utente per gestire l'elaborazione speciale dei messaggi della finestra in genere gestita da CoreWindow (ad esempio gli acceleratori). Non è necessario chiamare questa funzione se il framework dell'interfaccia utente non ha bisogno di questa funzionalità.
- I browser IAppVisibility non sono limitati alle API dell'app di Windows Store e pertanto possono avere un'elaborazione personalizzata dei messaggi della finestra usando le API user32. Tuttavia, queste applicazioni hanno ancora thread dell'interfaccia utente ASTA come fornito dall'oggetto app e possono registrare un dispatcher di messaggi per gestire questa elaborazione speciale. Non è necessario chiamare questa funzione se il browser non ha bisogno di questa funzionalità.
Requisiti
Piattaforma di destinazione | Windows |
Intestazione | messagedispatcherapi.h |