Automatisierungsserver
Die Automatisierung ermöglicht es Ihrer Anwendung, Objekte zu bearbeiten, die in einer anderen Anwendung implementiert wurden, oder Objekte verfügbar zu machen, damit sie bearbeitet werden können. Ein Automatisierungsserver ist eine Anwendung, die programmierbare Objekte (als Automatisierungsobjekte bezeichnet) für andere Anwendungen (als Automatisierungsclients bezeichnet) verfügbar macht. Automatisierungsserver werden manchmal als Automatisierungskomponenten bezeichnet.
Durch das Verfügbarmachen von Automatisierungsobjekten können Clients bestimmte Prozeduren automatisieren, indem sie direkt auf die Objekte und Funktionen zugreifen, die der Server zur Verfügung stellt. Das Verfügbarmachen von Objekten auf diese Weise ist von Vorteil, wenn Anwendungen Funktionen bereitstellen, die für andere Anwendungen nützlich sind. Beispielsweise kann ein Textverarbeitungsprogramm seine Rechtschreibprüfungsfunktionen verfügbar machen, damit andere Programme sie verwenden können. Durch die Belichtung von Objekten können Anbieter die Funktionalität ihrer Anwendungen mithilfe der vorgefertigten Funktionalität anderer Anwendungen verbessern.
Diese Automatisierungsobjekte verfügen über Eigenschaften und Methoden als externe Schnittstelle. Eigenschaften sind benannte Attribute des Automatisierungsobjekts. Eigenschaften sind wie die Datenmember einer C++-Klasse. Methoden sind Funktionen, die an Automatisierungsobjekten arbeiten. Methoden sind wie die öffentlichen Memberfunktionen einer C++-Klasse.
Hinweis
Obwohl Eigenschaften wie C++-Datenmber sind, sind sie nicht direkt zugänglich. Um einen transparenten Zugriff zu ermöglichen, richten Sie eine interne Variable im Automatisierungsobjekt mit einem Paar get-set-Memberfunktionen ein, um darauf zuzugreifen.
Durch die Bereitstellung von Anwendungsfunktionen über eine gängige, gut definierte Schnittstelle ermöglicht die Automatisierung das Erstellen von Anwendungen in einer einzigen allgemeinen Programmiersprache wie Microsoft Visual Basic anstelle verschiedener anwendungsspezifischer Makrosprachen.
Unterstützung für Automatisierungsserver
Visual C++ und das MFC-Framework bieten umfassende Unterstützung für Automatisierungsserver. Sie behandeln einen Großteil des Aufwands, der bei der Erstellung eines Automatisierungsservers verbunden ist, damit Sie sich auf die Funktionalität Ihrer Anwendung konzentrieren können.
Der Prinzipalmechanismus des Frameworks zur Unterstützung der Automatisierung ist die Verteilerzuordnung, eine Reihe von Makros, die in die Deklarationen und Aufrufe erweitert werden, die zum Verfügbarmachen von Methoden und Eigenschaften für OLE erforderlich sind. Eine typische Verteilerkarte sieht wie folgt aus:
BEGIN_DISPATCH_MAP(CMyServerDoc, COleServerDoc)
DISP_PROPERTY(CMyServerDoc, "Msg", m_strMsg, VT_BSTR)
DISP_FUNCTION(CMyServerDoc, "SetDirty", SetDirty, VT_EMPTY, VTS_I4)
END_DISPATCH_MAP()
Der Kurs-Assistent und die Klassenansicht helfen bei der Standard nachhaltigen Verteilerzuordnung. Wenn Sie einer Klasse eine neue Methode oder Eigenschaft hinzufügen, fügt Visual Studio ein entsprechendes DISP_FUNCTION
Oder DISP_PROPERTY
Makro mit Parametern hinzu, die den Klassennamen, externe und interne Namen der Methode oder Eigenschaft sowie Datentypen angeben.
Das Dialogfeld "Klasse hinzufügen" vereinfacht außerdem die Deklaration von Automatisierungsklassen und die Verwaltung ihrer Eigenschaften und Vorgänge. Wenn Sie das Dialogfeld "Klasse hinzufügen" verwenden, um Ihrem Projekt eine Klasse hinzuzufügen, geben Sie dessen Basisklasse an. Wenn die Basisklasse die Automatisierung zulässt, zeigt das Dialogfeld "Klasse hinzufügen" Steuerelemente an, die Sie verwenden, um anzugeben, ob die neue Klasse Automatisierung unterstützen soll, ob sie "OLE creatable" ist (d. h. ob Objekte der Klasse auf einer Anforderung von einem COM-Client erstellt werden können) und den externen Namen für den COM-Client, der verwendet werden soll.
Anschließend erstellt das Dialogfeld "Klasse hinzufügen" eine Klassendeklaration, einschließlich der entsprechenden Makros für die angegebenen OLE-Features. Außerdem wird der Skelettcode für die Implementierung der Memberfunktionen Ihrer Klasse hinzugefügt.
Der MFC-Anwendungs-Assistent vereinfacht die Schritte, mit denen Ihre Automatisierungsserveranwendung vom Boden entfernt wird. Wenn Sie das Kontrollkästchen Automatisierung auf der Seite "Erweiterte Features " aktivieren, fügt der MFC-Anwendungs-Assistent der Anwendung die Aufrufe hinzu, die zum Registrieren Ihrer Automatisierungsobjekte erforderlich sind, und führen Sie Die Anwendung als Automatisierungsserver InitInstance
aus.