Exemplo do ACDUAL: Adiciona duas interfaces a um aplicativo de automação
ACDual demonstra como adicionar suporte a interface dual para um aplicativo MFC com automação (anteriormente denominadas automação OLE).A solução consiste em projetos a seguir:
ACDualDriv, que contém uma versão do projeto AUTODRIV cliente de automação que permite que você selecionar se deseja controlar o aplicativo de servidor usando a interface dispatch ou usando ligação vtable.
ACDual, que contém uma versão real do servidor de automação AUTOCLIKprojeto com suporte dual-interface.
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.
O exemplo de criação
Para compilação amostra ACDual
em aberto acdual.sln a solução, localizado no diretório acdual.
Sobre o Compilação menu, clicar Compilação.
Executar ACDual uma vez sistema autônomo um aplicativo independente para que ele pode registrar próprio sistema.
Executando o exemplo
Depois de registrar-se o aplicativo ACDual, você estará pronto para executar o aplicativo ACDualDriv.Compilar a solução a partir do IDE executará o inscrição ACDualDriv automaticamente antes ACDualDriv seja executado.ACDualDriv inicia o aplicativo ACDual e cria um objeto de documento, você pode manipular, em seguida, usando a automação por meio da interface de usuário ACDualDriv.Ele também contém uma caixa de seleção adicional que permite que você selecionar se deseja usar ligação VTBL para se comunicar com o objeto ACDual documento.
O servidor ACDual usa AUTOCLIK sistema autônomo um ponto de partida.Novos identificadores globalmente exclusivos (GUID) foram gerados para evitar confusão com o exemplo AUTOCLIK original e algumas seqüências de recursos foram alteradas para esclarecer esteja executando o servidor ACDual.Todas as outras alterações para as fontes são marcadas com blocos de comentário como este:
// DUAL_SUPPORT_START
... modified code goes here
// DUAL_SUPPORT_END
Para obter mais informações sobre interfaces duas, scripts de linguagem (ODL) de descrição de objeto e interfaces de erro de automação, consulte Observação técnica 65.
Interfaces duplos
Uma interface dupla permite que você implemente um IDispatch uma interface VTBL ou. Uma interface dupla é altamente recomendável para todos os objetos de automação expostos.Questões a considerar ao implementar uma interface dupla são discutidas em Observação técnica 65 e incluem:
Implementando o suporte à interface dual para CCmdTarget-com base em classes
Passar ponteiros de interface dupla
Ativando typesafe vinculação, incluindo:
Registrando o tipo de biblioteca do aplicativo
Modificando as configurações de compilação do projeto para acomodar alterações na biblioteca de tipos
Especifica o nome de classe de objeto correto em uma biblioteca de tipos
Tratamento de exceções e a interface de erro de automação
Para obter mais informações, consulte os tópicos de ActiveX Overview of Automation, Interfaces duplos, Automation Type Description Interfacese a entrada de referência ODL sobre o duplo atributo.
Observação: |
---|
Alguns 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. |
Palavras-chave
O exemplo ACDual demonstra as seguintes palavras-chave:
AfxMessageBox; AfxOleInit; AfxOleLockApp; AfxOleUnlockApp; CCmdTarget::EnableAutomation; CCmdTarget::FromIDispatch; CCmdTarget::GetIDispatch; CCmdTarget::OnFinalRelease; CControlBar::EnableDocking; CControlBar::GetBarStyle; CControlBar::SetBarStyle; CDialog::DoModal; CDocument::GetFirstViewPosition; CDocument::GetNextView; CDocument::OnNewDocument; CDocument::SetModifiedFlag; CDocument::UpdateAllViews; CFrameWnd::ActivateFrame; CFrameWnd::DockControlBar; CFrameWnd::EnableDocking; CFrameWnd::LoadFrame; CObject::AssertValid; CObject::despejo; CObject::IsKindOf; CObject::Serialize; COleTemplateServer::ConnectTemplate; COleTemplateServer::UpdateRegistry; CStatusBar::criar; CStatusBar::SetIndicators; CToolBar::criar; CView::DoPreparePrinting; CView::GetDocument; CView::OnBeginPrinting; CView::OnDraw; CView::OnEndPrinting; CView::OnPreparePrinting; CWinApp::AddDocTemplate; CWinApp::EnableShellOpen; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWinApp::RegisterShellFileTypes; CWnd::DoDataExchange; CWnd::GetParentFrame; CWnd::OnCreate; CWnd::OnLButtonDown; CWnd::PreCreateWindow; CWnd::ShowWindow; CWnd::UpdateWindow; DragAcceptFiles; ShowWindow; TextOut
O ACDualDriv demonstra as seguintes palavras-chave:
AfxGetApp AfxMessageBox AfxOleInit; CDC::DrawIcon; CDC::GetSafeHdc; CDialog::DoModal; CDialog::EndDialog; COleDispatchDriver::AttachDispatch; COleDispatchDriver::GetProperty; COleDispatchDriver::InvokeHelper; COleDispatchDriver::SetProperty; CRect::Height; CRect::Width; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWnd::DoDataExchange; CWnd::GetClientRect; CWnd::IsIconic; CWnd::OnClose; CWnd::OnCreate; CWnd::OnPaint; CWnd::OnQueryDragIcon; CWnd::SendMessage; CWnd::ShowWindow; CWnd::UpdateData; GetSystemMetrics; LoadIcon; ShowWindow