Compartilhar via


Classe CConnectionPoint

Define um tipo especial de interface usada para se comunicar com outros objetos OLE, chamados "ponto de conexão".

class CConnectionPoint : public CCmdTarget

Comentários

Ao contrário das interfaces OLE normais, o que são usados para implementar e expor a funcionalidade de um controle OLE, um ponto de conexão implementa uma interface de saída que é capaz de iniciar ações em outros objetos, sistema autônomo o acionamento de eventos e notificações de alterar.

Uma conexão consiste em duas partes: o objeto chamando a interface, denominada "fonte" e o objeto de implementação da interface, chamado de "coletor." Ao expor um ponto de conexão, uma fonte permite que PIAs estabelecer conexões a mesmo.Através do mecanismo de ponto de conexão, um objeto de fonte obtém um ponteiro para implementação do coletor de um conjunto de funções de membro.Por exemplo, para acionar um evento implementado pelo coletor, fonte pode chamar o método apropriado de implementação do coletor.

Por padrão, um COleControl-classe derivada implementa dois pontos de conexão: um para eventos e uma propriedade alterar notificações.Essas conexões são usadas, respectivamente, para acionamento de eventos e para notificar um coletor (por exemplo, do controle de contêiner) quando um valor da propriedade é alterado.Também é fornecido suporte para controles OLE implementar pontos de conexão adicionais.Para cada ponto de conexão adicional implementado em sua classe de controle, você deve declarar uma "conexão parte" que implementa o ponto de conexão.Se você implementar um ou mais pontos de conexão, você também precisará declarar um único "MAP de conexão" em sua classe de controle.

O exemplo a seguir demonstra um MAP de conexão simples e um ponto de conexão para o Sample Controle OLE, consistindo em dois fragmentos de código: a primeira parte declara o MAP de conexão e o ponto; a segunda implementa esse MAP e ponto.O primeiro fragmento é inserido na declaração da classe controle, sob o protected seção:

// Connection point for ISample interface
 BEGIN_CONNECTION_PART(CMyClass, SampleConnPt)
     CONNECTION_IID(IID_ISampleSink)
 END_CONNECTION_PART(SampleConnPt)

 DECLARE_CONNECTION_MAP()

The BEGIN_CONNECTION_PART e END_CONNECTION_PART macros declarar uma classe incorporada, XSampleConnPt (derivado de CConnectionPoint) que implementa esse ponto de conexão específica. Se você desejar substituir qualquer CConnectionPoint funções de membro, ou adicionar funções de membro de sua preferência, declará-los entre essas duas macros. Por exemplo, a CONNECTION_IID macro substitui o CConnectionPoint::GetIID função de membro ao ser colocado entre essas duas macros.

O segundo fragmento de código é inserido no arquivo de implementação (.CPP) de sua classe de controle.Esse código implementa o MAP da conexão, que inclui o ponto de conexão adicionais, SampleConnPt:

BEGIN_CONNECTION_MAP(CMyClass, CCmdTarget)
    CONNECTION_PART(CMyClass, IID_ISampleSink, SampleConnPt)
END_CONNECTION_MAP()

Depois que esses fragmentos de código foram inseridos, o controle OLE exemplo expõe um ponto de conexão para o ISampleSink interface.

Normalmente, os pontos de conexão oferecem suporte a "multicast", que é a capacidade de transmitir para vários receptores conectados à mesma interface.O fragmento de código a seguir demonstra como realizar a difusão seletiva por iteração cada receptor de um ponto de conexão:

void CMyClass::CallSinkFunc()
{
    POSITION pos = m_xSampleConnPt.GetStartPosition();
    ISampleSink* pSampleSink;
    while( pos != NULL )
    {
        pSampleSink = (ISampleSink*)(m_xSampleConnPt.GetNextConnection(pos));
        if(pSampleSink != NULL)
            pSampleSink->SinkFunc();
    }
}

Este exemplo recupera o conjunto corrente de conexões no SampleConnPt ponto de conexão com uma telefonar para CConnectionPoint::GetConnections. Em seguida, itera através de conexões e chama ISampleSink::SinkFunc em cada conexão ativo.

Para obter mais informações sobre como usar CConnectionPoint, consulte o artigo Pontos de conexão.

Requisitos

Cabeçalho: afxdisp.h

Consulte também

Referência

Classe CCmdTarget

Gráfico de hierarquia

Outros recursos

CConnectionPoint membros