Tratamento evento princípios
Há três etapas comuns a todos evento tratamento.Você precisará:
Implemente a interface de evento em seu objeto.
Informe fonte do evento que o objeto deseja receber eventos.
Unadvise fonte do evento quando o seu objeto não mais precisa receber eventos.
A maneira como você implementará o evento interface depende de seu tipo.Uma interface de evento pode ser vtable, dual ou um dispinterface.Se para o designer da fonte de eventos para definir a interface; cabe a você para implementar essa interface.
Observação: |
---|
Embora existam há motivos técnicos uma interface de evento não pode ser dois, há um número de mercadoria design motivos para evitar o uso de duals.No entanto, essa é uma decisão feita pelo designer/implementador do evento fonte.Como você está trabalhando da perspectiva do evento sink, você precisa para permitir que a possibilidade de que talvez não tenha nada, mas para implementar uma interface de evento duplo. Para obter mais informações em duas interfaces, consulte Duas interfaces e ATL. |
Indicando que fonte do evento pode ser dividido em três etapas:
Consultar o objeto de fonte para IConnectionPointContainer.
De telefonarIConnectionPointContainer::FindConnectionPoint passando o IID da interface de evento que lhe interessa.Se for bem-sucedido, isso retornará o IConnectionPoint interface em um objeto de ponto de conexão.
De telefonarIConnectionPoint::Advise passando o IUnknown do evento coletor.Se for bem-sucedido, isso retornará um DWORD cookie que representa a conexão.
Após registrar com êxito seu interesse em receber eventos, métodos de interface de eventos do seu objeto serão chamados de acordo com os eventos acionados pelo objeto de fonte.Quando você não precisa mais receber eventos, é possível passar o cookie de volta para o ponto de conexão via IConnectionPoint::Unadvise.Isso interromperá a conexão entre fonte e o dissipador.
Tenha cuidado para evitar a referência de ciclos de manipulação de eventos.