Exemplo do ATLDuck atributos: Usa pontos de conexão com ATL
O exemplo de atributos ATLDuck consiste em dois projetos: atlduck e pato.Projeto pato cria uma instância de um objeto que implementa o IDuckInt interface. Essa interface inclui quatro funções de membro: Flap, Paddle, Quack, e Walk.
O segundo projeto, atlduck, tem um ponto de conexão para o IDuckInt interface (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 no IDuckInt interface para receptores chamou IConnectionPoint::Advise.
Vários atributos IDL, COM e compilador são demonstrados ATLDuck, incluindo agregável, event_source e event_receiver.The DuckIntclasse é feita unaggregratable especificando o atributo aggregratable("never"). The DuckDoer classe estiver definido sistema autônomo um event_source com e o DuckInt classe sistema autônomo um event_receiver de com sem layout dependente = true.
The Exemplo de ATLDuck é a versão nonattributed 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
Abra a solução arquivo atlduck.sln.
From a Compilação menu, clicar Criar solução.Será compilar os dois projetos e executar o inscrição necessário.Os seguintes arquivos serão criados:
atlduck.exe, um servidor EXE
Duck.exe, um cliente do EXE
Para executar este exemplo.
From a Depurar menu, clicar Iniciar sem depuração.Isso irá iniciar o servidor atlduck e uma instância do cliente pato.Para executar mais de um cliente, navegar até o diretório onde duck.exe está localizado e execute-lo manualmente a partir do aviso de comando.
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.
Uma nova caixa de diálogo, emitida por atlduck.exe, é exibida.Essa caixa de diálogo mostra um botão para cada função no IDuckInt interface, bem sistema autônomo uma caixa de listagem com sistema autônomo conexões com seus cookies e receptores de ativo. 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.
Atributos
Este exemplo usa os seguintes atributos:
ATLDuck agregável, coclass, dispinterface, event_source, exe, helpstring, id, módulo, nome, progid, uuid, vi_progid
ATLDuck/Duck agregável, coclass, padrão, dispinterface, event_receiver, exe, helpstring, id, iid_is in, módulo, o nome, o objeto, out, progid, exclusivo, o uuid, versão, vi_progid
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
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. |