Adicionando Pontos de Conexão a um Objeto

O Tutorial da ATL demonstra como criar um controle com suporte para pontos de conexão, como adicionar eventos e como implementar o ponto de conexão. A ATL implementa pontos de conexão com a classe IConnectionPointImpl.

Para implementar um ponto de conexão, você tem duas opções:

  • Implementar sua própria origem do evento de saída, adicionando um ponto de conexão ao controle ou objeto.

  • Reutilizar uma interface de ponto de conexão definida em outra biblioteca de tipos.

Em ambos os casos, o Assistente para Implementar Ponto de Conexão usa uma biblioteca de tipos para fazer seu trabalho.

Para adicionar um ponto de conexão a um controle ou objeto

  1. Defina uma dispinterface no bloco de biblioteca do arquivo .idl. Se você habilitou o suporte para pontos de conexão quando criou o controle com o Assistente de Controle de ATL, a dispinterface já estará criada. Se você não habilitou o suporte para pontos de conexão quando criou o controle, você deve adicionar manualmente uma dispinterface ao arquivo .idl. O seguinte é um exemplo de uma dispinterface. As interfaces de saída não precisam ser interfaces de expedição, mas muitas linguagens de script, como VBScript e JScript, exigem isso. Portanto, este exemplo usa duas dispinterfaces:

    [
       uuid(3233E37D-BCC0-4871-B277-48AE6B61224A),
       helpstring("Buddy Events")
    ]
    dispinterface DBuddyEvents
    {
       properties:
       methods:
    };
    

    Use o utilitário uuidgen.exe ou guidgen.exe para gerar um GUID.

  2. Adicione a dispinterface como a interface [default,source] na coclass para o objeto no arquivo .idl do projeto. Novamente, se você ativou o suporte para pontos de conexão quando criou o controle, o Assistente de Controle de ATL criará a entrada [default,source]. Para adicionar manualmente esta entrada, adicione a linha em negrito:

    coclass Buddy
    {
       [default] interface IBuddy;
       [default,source] dispinterface DBuddyEvents;
    };
    

    Consulte o arquivo .idl na amostra Circ da ATL para obter um exemplo.

  3. Use Modo de Exibição de Classe para adicionar métodos e propriedades à interface de eventos. Clique com o botão direito do mouse na classe no Modo de Exibição de Classe, aponte para Adicionar no menu de atalho e clique em Adicionar ponto de conexão.

  4. Na caixa de listagem Interfaces de origem do Assistente para Implementação de Ponto de Conexão, selecione Interfaces do projeto. Se você escolher uma interface para seu controle e pressionar OK, você vai:

    • Gerar um arquivo de cabeçalho com uma classe de proxy de evento que implemente o código que fará as chamadas de saída para o evento.

    • Adicionar uma entrada ao mapa de pontos de conexão.

    Você também verá uma lista de todas as bibliotecas de tipos em seu computador. Você deve usar apenas uma dessas outras bibliotecas de tipos para definir seu ponto de conexão se desejar implementar exatamente a mesma interface de saída encontrada em outra biblioteca de tipos.

Para reutilizar uma interface de ponto de conexão definida em outra biblioteca de tipos

  1. No Modo de Exibição de Classe, clique com o botão direito do mouse em uma classe que implementa uma macro BEGIN_COM_MAP, aponte para Adicionar no menu de atalho e clique em Adicionar ponto de conexão.

  2. No Assistente para Implementação de Ponto de Conexão, selecione uma biblioteca de tipos e uma interface na biblioteca de tipos e clique em Adicionar .

  3. Edite o arquivo .idl para:

    • Copiar a dispinterface do arquivo .idl para o objeto que a origem do evento está sendo usada.

    • Use a instrução importlib nessa biblioteca de tipos.

Confira também

Ponto de conexão