Exemplo de atributos de conectar: Demonstra o uso de pontos de conexão e implementação

O exemplo de atributos conectar ilustra a implementação e o uso de pontos de conectar (o IConnectionPointContainer and IConnectionPoint interfaces) em um ambiente multithreaded.

O exemplo demonstra que vários atributos IDL, COM e compilador, incluindo support_errorinfo, event_source e event_receiver usados.

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 e executar esse exemplo

  1. Abra a solução arquivo conectar.sln.

  2. From a Compilação menu, clicar Criar solução.

  3. selecionar qual cliente você deseja executar, unidade ou MDrive, e torná-lo o projeto de inicialização (clicar com o botão direito do mouse o projeto pasta e clique em conjunto sistema autônomo projeto de inicialização).Obter mais informações sobre os clientes podem ser encontradas na seção como funciona o exemplo.

  4. No menu Debug, clique em Start Without Debugging.

Como funciona o exemplo

O servidor é implementado no conectar.dll.Essa DLL permite a criação de um CoRandom Objeto COM, implementada pela CRandom Classe do C++. O objeto COM suporta IRandom (uma interface dupla) e IConnectionPointContainere ele aceita conexões a IRandomEvent interface.

The IRandom interface oferece suporte aos seguintes métodos:

  • Start — Inicia um thread dentro do objeto

  • Stop — pára um thread dentro do objeto

  • StopAll — interrompe todos os threads em execução

Quando em execução, os threads secundários dentro do objeto manter disparando eventos por meio do ponto de conexão.

São fornecidos dois clientes: A unidade e MDrive.Eles podem ser encontrados nos subdiretórios MDrive e a unidade.

  • unidade.exe é um aplicativo de console simples que fornece um único objeto implementando a IRandomEvent interface. Ele cria um CoRandom objeto, chamadas Advise e Unadvise no ponto de conexão e torna o CoRandom objeto acionam eventos em objeto da unidade.

  • Mdrive.exe é um MFC baseado em diálogo aplicativo, capaz de criar vários aconselhar receptores e controle o número de segmentos que o servidor cria.Quando você executa Mdrive.exe, clicar no Iniciar barra pelo menos uma vez e, em seguida, clicar no Advise botão várias vezes. Cada clicar do Advise botão adiciona um ponto de conexão, o que torna a exibição mais larga. Se você não clicar na Advise botão, você não veja qualquer atividade na exibição.

Atributos

Este exemplo usa os seguintes atributos:

  • Conectar-se coclass, padrão, dll, duplo, event_source, helpstring, ID, no módulo, o nome, o objeto, out pointer_default, progid, support_error_info uuid, vi_progid

  • Conectar/unidade event_receiver, módulo

Palavras-chave

Este exemplo utiliza as seguintes palavras-chave:

AfxGetApp; AfxMessageBox; AtlAdvise; ATLASSERT; AtlUnadvise; BEGIN_COM_MAP; BEGIN_CONNECTION_POINT_MAP; BEGIN_MESSAGE_MAP; BEGIN_OBJECT_MAP; CComCoClass; CComModule::GetClassObject; CComModule::GetLockCount; CComModule::Init; CComModule::RegisterServer; CComModule::Term; CComModule::UnregisterServer; CComObject::CreateInstance; CComObjectRoot; CDialog::OnCancel; CDialog::OnOK; CloseHandle; CoCreateInstance; COleTemplateServer::RegisterAll; COM_INTERFACE_ENTRY; COM_INTERFACE_ENTRY_IMPL; COM_INTERFACE_ENTRY2; CONNECTION_POINT_ENTRY; CoUninitialize; CreateEvent; CreateThread; DECLARE_REGISTRY_RESOURCEID; DisableThreadLibraryCalls; DoModal; DrawIcon; END_COM_MAP; END_CONNECTION_POINT_MAP; END_MESSAGE_MAP; END_OBJECT_MAP; GdiFlush; GetClientRect; GetDlgItem; GetTickCount; GetUnknown; IConnectionPointContainerImpl; IConnectionPointImpl; IDispatchImpl; ISupportErrorInfo; LoadIcon; bloquear; memset; OBJECT_ENTRY; ON_COMMAND; puts; ReleaseDC; SendMessage; SetEvent; SetIcon; SetPixel; suspensão; Unadvise; Unlock; WaitForSingleObject

Observação:

Alguns dos exemplos, sistema autônomo esta, não foram modificados para refletir sistema autônomo alterações nos assistentes, bibliotecas e compilador Visual C++, mas ainda Demonstre sistema autônomo concluir a tarefa desejada.

Consulte também

Outros recursos

Exemplos de atributos do ATL