Freigeben über


ACDUAL-Beispiel: Fügt einer Automatisierungsanwendung duale Schnittstellen hinzu

Aktualisiert: November 2007

ACDual zeigt, wie einer MFC-basierten Automatisierungsanwendung (früher OLE-Automatisierung genannt) eine Unterstützung für duale Schnittstellen hinzugefügt wird. Die Projektmappe enthält die folgenden Projekte:

  • ACDualDriv – enthält eine Version des Automatisierungsclient-Projekts AUTODRIV, bei dem Sie auswählen können, ob Sie die Serveranwendung mit der Dispatchschnittstelle oder der Vtable-Bindung steuern möchten.

  • ACDual – enthält eine echte Version des Automatisierungsserver-Projekts AUTOCLIK mit Unterstützung für duale Schnittstellen.

Sicherheitshinweis:

Dieser Beispielcode dient dazu, ein Konzept zu veranschaulichen. Er sollte nicht für Anwendungen oder Websites verwendet werden, da dieser Code unter Umständen nicht die sicherste Codierungstechnik darstellt. Microsoft übernimmt keine Haftung für beiläufig entstandene Schäden oder Folgeschäden, falls der Beispielcode nicht bestimmungsgemäß verwendet wird.

So rufen Sie Beispiele und Anweisungen für ihre Installation ab

  • Klicken Sie in Visual Studio im Menü Hilfe auf Beispiele.

    Weitere Informationen finden Sie unter Suchen von Beispieldateien.

  • Die neueste Version und vollständige Liste mit Beispielen ist online unter Visual Studio 2008 Samples verfügbar.

  • Sie können auch Beispiele auf der Festplatte des Computers suchen. Standardmäßig werden Beispiele und eine Infodatei in einen Ordner unter \Programme\Visual Studio 9.0\Samples\ kopiert. Für Express Editions von Visual Studio sind alle Beispiele online verfügbar.

Erstellen des Beispiels

So erstellen Sie das ACDual-Beispiel

  1. Öffnen Sie die Projektmappendatei acdual.sln, die sich im Verzeichnis acdual befindet.

  2. Klicken Sie im Menü Erstellen auf Erstellen.

  3. Führen Sie ACDual einmal als eigenständige Anwendung aus, damit es sich beim System registrieren kann.

Ausführen des Beispiels

Nach der Registrierung der Anwendung ACDual können Sie die Anwendung ACDualDriv ausführen. Durch das Erstellen der Projektmappe von der IDE aus wird ACDualDriv automatisch vor der Ausführung registriert. ACDualDriv startet die Anwendung ACDual und erstellt ein Document-Objekt, das Sie anschließend über die Benutzeroberfläche von ACDualDriv mithilfe der Automatisierung bearbeiten können. Darüber hinaus ist ein zusätzliches Kontrollkästchen enthalten, in dem Sie auswählen können, ob Sie für die Kommunikation mit dem Document-Objekt in ACDual eine VTBL-Bindung verwenden möchten.

Der ACDual-Server verwendet AUTOCLIK als Ausgangspunkt. Um eine Verwechslung mit dem ursprünglichen AUTOCLIK-Beispiel auszuschließen, wurden global eindeutige Bezeichner (Globally Unique Identifiers, GUIDs) generiert. Darüber hinaus wurden einige Ressourcenzeichenfolgen geändert, um klarzustellen, ob der ACDual-Server ausgeführt wird. Alle weiteren Änderungen an Quellcode werden mit Blockkommentaren wie dem folgenden markiert:

      // DUAL_SUPPORT_START
      ... modified code goes here
      // DUAL_SUPPORT_END

Weitere Informationen zu dualen Schnittstellen, ODL-Skripts und Automatisierungsfehler-Schnittstellen finden Sie unter Technischer Hinweis 65 (nur auf Englisch verfügbar).

Duale Schnittstellen

Mit einer dualen Schnittstelle können Sie eine IDispatch- oder eine VTBL-Schnittstelle implementieren. Für alle verfügbaren Automatisierungsobjekte wird eine duale Schnittstelle empfohlen. Aspekte, die bei der Implementierung einer dualen Schnittstelle zu beachten sind, werden in Technischer Hinweis 65 (nur auf Englisch verfügbar) erläutert, z. B.:

  • Implementieren der Unterstützung von dualen Schnittstellen für auf CCmdTarget basierende Klassen

  • Übergeben von Zeigern auf duale Schnittstellen

  • Aktivieren des typsicheren Bindens, einschließlich:

    • Registrieren des Typs der Anwendungsbibliothek

    • Ändern der Buildeinstellungen eines Projekts entsprechend den Änderungen in der Typbibliothek

    • Bestimmen des korrekten Objektklassennamens in einer Typbibliothek

  • Behandeln von Ausnahmen und der Automatisierungsfehlerschnittstelle

Weitere Informationen finden Sie unter den ActiveX-Themen Overview of Automation, Duale Schnittstellen, Automation Type Description Interfaces und dem Eintrag zum dual-Attribut in der ODL-Referenz.

Hinweis:

In diesem und einigen anderen Beispielen wurden die Änderungen an den Visual C++-Assistenten, -Bibliotheken und -Compilern noch nicht nachvollzogen. Sie demonstrieren aber dennoch, wie Sie die gewünschte Aufgabe durchführen können.

Schlüsselwörter

Das ENROLL-Beispiel zeigt die Verwendung der folgenden Schlüsselwörter:

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::Dump; CObject::IsKindOf; CObject::Serialize; COleTemplateServer::ConnectTemplate; COleTemplateServer::UpdateRegistry; CStatusBar::Create; CStatusBar::SetIndicators; CToolBar::Create; 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

Das ACDualDriv-Beispiel demonstriert die Verwendung der folgenden Schlüsselwörter:

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

Siehe auch

Weitere Ressourcen

MFC-Beispiele