ACDUAL-Beispiel: Fügt einer Automatisierungsanwendung duale Schnittstellen hinzu
ACDual veranschaulicht, wie einer MFC-basierte Automatisierung (früher OLE-Automatisierung) Anwendung Unterstützung für duale Schnittstellen hinzugefügt wird. Die Lösung besteht aus den folgenden Projekten:
ACDualDriv, enthält eine Version des Automatisierungsclient-Projekts AUTODRIV, in dem Sie können auswählen, ob die Serveranwendung mit die Dispatchschnittstelle oder der Vtable-Bindung steuern.
ACDual enthält eine aktuelle Version des der Automation Server b23wfxw0(v=vs.100).md Projekts AUTOCLIK mit Unterstützung für duale Schnittstellen.
Sicherheitshinweis |
---|
Dieser Beispielcode soll ein Konzept veranschaulichen, und es wird nur den Code, der für dieses Konzept relevant sind. Möglicherweise erfüllt dieser nicht die Sicherheitsanforderungen für eine bestimmte Umgebung, und er sollte nicht genau wie dargestellt verwendet werden. Wir empfehlen, Sicherheits- und Fehlerbehandlungscode hinzuzufügen, um Ihre Projekte sicherer und stabiler zu machen. Microsoft stellt diesen Beispielcode "Wie besehen"keine Garantien. |
So erhalten Sie Beispiele und Anweisungen für deren Installation:
Um Beispiele von Visual Studio zuzugreifen
im Menü Hilfe Menü klicken Beispiele.
Standardmäßig sind die Beispiele in installiert. Laufwerk: \Programme\Microsoft visual Studio 10.0\Samples\.
- Die neueste Version dieses Beispiels und eine Liste der anderen Beispiele finden Sie unter Visual Studio Samples auf der MSDN-Website.
Erstellen des Beispiels
So erstellen Sie das ACDual-Beispiel
Öffnen Sie die Projektmappe acdual.sln, die sich im Verzeichnis Acdual befindet.
erstellen Sie Menü, klicken Sie auf erstellen.
Führen Sie ACDual einmal als eigenständige Anwendung, damit Sie sich mit dem System registrieren kann.
Ausführen des Beispiels
Nachdem die Anwendung ACDual zu registrieren, können Sie die Anwendung ACDualDriv ausführen. Erstellen der Lösung von der IDE wird ACDualDriv Registrierung automatisch ausführen, bevor ACDualDriv ausgeführt wird. 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. Außerdem enthält er eine weitere Kontrollkästchen, das Sie, ob VTBL-Bindung zum Kommunizieren mit dem ACDual Document-Objekt auswählen können.
Der ACDual-Server verwendet AUTOCLIK als Ausgangspunkt. Neue globally unique Identifiers (GUID) damit Verwechslungen mit der ursprünglichen AUTOCLIK-Beispiel generiert wurden, und einige Ressourcenzeichenfolgen von wurden geändert, um zu verdeutlichen, ob der ACDual-Server ausgeführt wird. Alle anderen Änderungen an die Datenquellen sind mit Kommentarblöcke wie folgt gekennzeichnet:
// DUAL_SUPPORT_START
... modified code goes here
// DUAL_SUPPORT_END
Weitere Informationen zu dualen Schnittstellen Objekt Beschreibung Language (ODL) Skripts und Automatisierungsfehler-Schnittstellen finden Sie unter Technischer Hinweis 65.
Duale Schnittstellen
Eine duale Schnittstelle können Sie eine IDispatch oder eine VTBL-Schnittstelle implementieren. Für alle verfügbar gemachten Automatisierungsobjekte wird eine duale Schnittstelle empfohlen. Punkte zu berücksichtigen, beim Implementieren einer dualen Schnittstelle werden im Technischer Hinweis 65 beschrieben und umfassen:
Implementieren der Unterstützung für duale Schnittstellen für CCmdTarget-basierende Klassen
Duale Schnittstellen Zeiger übergeben
Aktivieren des typsicheren Bindung einschließlich:
Registrieren der Anwendung Bibliothek Typ
Ändern Projekt Buildeinstellungen um Typ Bibliothek Änderungen zu berücksichtigen
Angabe der korrekten Objekt-Klassennamens in einen Typ Bibliothek
Behandeln von Ausnahmen und Fehler-Automatisierungsschnittstelle
Weitere Informationen finden Sie in der ActiveX-Themen Übersicht über Automatisierungduale Schnittstellen, Automatisierung Typ Beschreibung Schnittstellenund die ODL Posten Attributs dual https://msdn.microsoft.com/de-de/library/ms221048(v=vs.100) verweisen.
Hinweis
Einige Beispiele, z. B. eine, wurden nicht geändert, um Änderungen in der Visual C++-Assistenten, Bibliotheken und Compiler, demonstrieren aber dennoch wie Sie die gewünschte Aufgabe durchführen.
Schlüsselwörter
ACDual-Beispiel demonstriert 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 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