Inscription aux événements de terminal enfichable
Le processus d’inscription d’événement a lieu lorsque le terminal est sélectionné par un flux. Dans l’implémentation de l’application terminale de la méthode SelectTerminal , nous pouvons utiliser l’interface ITTerminal du terminal qui a été attaché au flux et appeler QueryInterface pour rechercher ITPluggableTerminalEventSinkRegistration.
HRESULT hr = E_FAIL;
ITPluggableTerminalEventSinkRegistration* pEventRegistration = NULL;
hr = pTerminal->QueryInterface(
IID_ITPluggableTerminalEventSinkRegistration,
(void**)& pEventRegistration
);
Si l’appel QueryInterface réussit, nous pouvons appeler la méthode RegisterSink . À cet effet, nous devons créer un objet qui implémente l’interface ITPluggableTerminalEventSink . Nous transmettons cette interface en tant que paramètre de la méthode RegisterSink .
ITPluggableTerminalEventSink* pEventSink;
HRESULT hr = CreateEventSink( &pEventSink);
// If (hr != S_OK) process the error here.
hr = pEventRegistration->RegisterSink( pEventSink );
// If (hr != S_OK) process the error here.
Le terminal qui implémente l’appel ITPluggableTerminalEventSinkRegistration stocke l’interface. Le pointeur est utilisé lorsque le terminal déclenche un événement.
Le récepteur d’événements peut être désinscrit à l’aide de UnregisterSink.
hr = pEventRegistration->UnregisterSink();
// If (hr != S_OK) process the error here.