Exemplo do ATLDuck: Usa pontos de conexão com ATL

O exemplo ATLDuck consiste em quatro projetos: atlduck, pato e seu respectivo proxy/stub projetos atlduckPS e duckPS.Projeto pato cria uma instância de um objeto que implementa a interface IDuckInt.Essa interface inclui quatro funções de membro: Sincronismo, paddle, grasne e movimentação.

O segundo projeto, atlduck, tem um ponto de conexão para a interface IDuckInt (ou seja, ele sabe como usar a interface mas não implementa).Somente uma única instância deste objeto será criada.Depois que a conexão é estabelecida entre os dois aplicativos, atlduck chamará as funções na interface do IDuckInt de pias tem chamado IConnectionPoint::Advise.

Este exemplo também usa o código marshaling (através de atlduckPS e duckPS) necessário para conectar-se interfaces em processos diferentes.

The Exemplo de atributos ATLDuck é a versão atribuída neste exemplo.

Observação de segurança:

Este código de exemplo é fornecido para ilustrar um conceito e não deve ser usado em aplicativos ou sites da Web, pois ele não pode ilustrar sistema autônomo práticas de codificação mais seguras.Microsoft sistema autônomo sumes nenhuma responsabilidade por danos incidentais ou conseqüenciais deve o código de exemplo ser usado para fins diferentes de sistema autônomo se destina.

Para obter exemplos e instruções para instalá-los:

  • Sobre o Visual Studio Ajuda menu, clicar Exemplos.

    Para obter mais informações, consulte Localizando arquivos de exemplo.

  • A versão mais recente e a lista completa das Exemplos está disponível online a partir de O Visual Studio 2008 Exemplos página.

  • Você também pode localizar exemplos no disco rígido do seu computador.Por padrão, exemplos e um arquivo Leiame são copiados para uma pasta sob \programa Files\Visual Studio 9.0\Samples\.Para edições Express do Visual Studio, todos os exemplos estão localizados online.

Criando e executando o exemplo

Para compilação esta amostra

  1. em aberto o arquivo de solução atlduck.sln.

  2. From a Compilação menu, clicar Criar solução.Este será compilação todas as quatro projetos e fazer o inscrição necessário.Os seguintes arquivos serão criados:

    • atlduck.exe, um servidor EXE

    • atlduckPS.dll, uma DLL de empacotamento para o servidor atlduck.exe

    • Duck.exe, um cliente do EXE

    • duckPS.dll, uma DLL de empacotamento para o cliente duck.exe

Para executar este exemplo.

  1. Inicie um ou mais instâncias de duck.exe.

    Observação:

    Abrir diversas instâncias de duck.exe demonstra pontos de conexão com mais eficiência.

  2. Uma caixa de diálogo aparece.Na caixa de diálogo, clicar no botão Criar objeto DoDuck.Quando você clica nesse botão, o aplicativo cria uma instância de um objeto com da classe ID CLSID_DuckDoer, executando atlduck.

  3. Uma nova caixa de diálogo, emitida por atlduck.exe, é exibida.Essa caixa de diálogo mostra um botão para cada função na interface IDuckInt, bem sistema autônomo um lista caixa com sistema autônomo conexões com seus cookies e receptores de ativos.Em caixas de diálogo pato, você pode qualquer um dos Advise ou Unadvise o ponto de conexão. Dependendo de sua escolha, você irá receber ou não receberá notificações das fontes.Mostrará a notificação, quando for exibida, no campo de edição de status.Além disso, ATLDuck demonstra o valor do cookie fornecido pelo ponto de conexão quando a conexão é aconselhável.

Classes e palavras-chave

O exemplo usar as seguintes classes:

CDialog (MFC) CComObject (ATL) IConnectionPointImpl <cduckdoer>(ATL)

Este exemplo utiliza as seguintes palavras-chave:

_ASSERTE; _tcslen; _VERIFY; AddRef; Advise; BEGIN_COM_MAP; BEGIN_CONNECTION_POINT_MAP; BEGIN_MSG_MAP; BEGIN_OBJECT_MAP; CComCoClass; CComModule::Unlock; CComObjectRootEx; CDialogImpl; CenterWindow; CoInitialize; COM_INTERFACE_ENTRY; COM_INTERFACE_ENTRY_IMPL; COMMAND_HANDLER; COMMAND_ID_HANDLER; CONNECTION_POINT_ENTRY; CoSuspendClassObjects; CoUninitialize; criar; DECLARE_CLASSFACTORY_SINGLETON; DECLARE_NOT_AGGREGATABLE; DECLARE_REGISTRY_RESOURCEID; DestroyWindow; DispatchMessage; EnableWindow; END_COM_MAP; END_CONNECTION_POINT_MAP; END_MSG_MAP; END_OBJECT_MAP; ExitProcess; FindConnectionPoint; GetCommandLine; GetDC; GetDlgItem; GetMessage; GetTextExtentPoint32; IConnectionPointContainerImpl; IConnectionPointImpl; Init; IsWindowVisible; MESSAGE_HANDLER; MessageBox; OBJECT_ENTRY; OleInitializeCoCreateInstance; OnCancel; OnFlap; OnInitDialog; OnOK; OnPaddle; OnWalk OnQuack; PostThreadMessage; QueryInterface; RecalcListboxExtent; RegisterClassObjects; RegisterServer; reinterpret_cast; ReleaseDC; RevokeClassObjects; SendMessage; SetOwner; SetWindowText; ShowStatus; ShowWindow; Unadvise; UnregisterServer; UNUSED_ALWAYS; UpdateRegistryFromResource; UpdateWindow; USES_CONVERSION

Consulte também

Outros recursos

Exemplos do ATL