Usando IConnectionPoint
Quando o cliente tem um ponteiro para um ponto de conexão, ele pode executar as seguintes operações, conforme expresso por meio de IConnectionPoint:
- Primeiro, IConnectionPoint::GetConnectionInterface recupera o IID da interface de saída suportado pelo ponto de conexão. Quando usado em conjunto com IEnumConnectionPoints, esse método permite que o cliente examine os IIDs de todas as interfaces de saída com suporte no objeto conectável.
- Em segundo lugar, um cliente pode navegar do ponto de conexão de volta para a interface IConnectionPointContainer do objeto conectável por meio do método IConnectionPoint::GetConnectionPointContainer.
- Terceiro, os métodos mais interessantes para o cliente são IConnectionPoint::Advise e IConnectionPoint::Unadvise. Quando um cliente deseja conectar seu próprio objeto coletor ao objeto conectável, o cliente passa o ponteiro IUnknown do coletor (ou qualquer outro ponteiro de interface no mesmo objeto) para Aviso. O ponto de conexão consulta o coletor para a interface de saída específica que é esperada. Se essa interface estiver disponível no coletor, o ponto de conexão armazenará o ponteiro da interface. A partir deste ponto até que Unadvise seja chamado, o objeto conectável fará chamadas para o coletor por meio dessa interface quando ocorrerem eventos. Para desconectar o coletor do ponto de conexão, o cliente passa uma chave retornada de Advise para o método Unadvice . Unadvise deve chamar Release na interface do coletor.
- Finalmente, um cliente pode pedir a um ponto de conexão para enumerar todas as conexões com ele que existem por meio de IConnectionPoint::EnumConnections. Esse método cria um objeto enumerador (com uma contagem de referência separada) retornando um ponteiro IEnumConnections para ele. O cliente deve chamar Release quando o enumerador não for mais necessário. Além disso, o enumerador retorna uma série de estruturas CONNECTDATA , uma para cada conexão. Cada estrutura descreve uma conexão usando o ponteiro IUnknown do coletor, bem como a chave de conexão originalmente retornada do Advise. Quando concluído com esses ponteiros de interface de coletor, o cliente deve chamar Release em cada ponteiro retornado em uma estrutura CONNECTDATA .
Tópicos relacionados