Der Dialog Manager als OLE-Server
Der Dialog Manager stellt in Form eines Objektes die Kommunikations-schnittstelle zur Verfügung. Dieses Objekt gehört der Klasse Control an. Das Control kann mehrfach instanziiert werden, d.h. es kann mehrmals als verschiedene Instanzen in derselben Anwendung benutzt werden. Um der Schnittstelle eine eindeutige Kennung zu geben, ist es notwendig, einen 128-Bit Code anzugeben. Diese UUIDs werden am Dialog und am Control an-gegeben. Diese Kennung wird dann in der Registry und der Typlibrary benutzt, um die Anwendung und die jeweiligen Controls zu identifizieren. Mit Hilfe von standardmäßig vorhandenen Programmen und Optionen im IDM können die entsprechenden Dateien und Kennungen (UUID) erzeugt werden. Diese Optionen bzw. Programme können von der Kommandozeile aufgerufen oder in das Makefile gesetzt werden. Diese Dateien werden benötigt, um den OLE-Server beim System anzumelden.
Das Objekt Control
Das Control hat benutzerdefinierte Attribute und Methoden, es kann mehrere Records beinhalten und es ist möglich, genau ein Objekt als Kind zu definieren, welches im Client erscheinen soll. Die Attribute des Controlobjektes entsprechen den sogenannten Properties aus der OLE-Namenskonvention. Die Methoden entsprechen von der Benutzung und Programmierung her fast vollständig den benannten Regeln. Diese können direkt am Objekt definiert werden.
Ein OLE-Server kann Ereignisse an seinen Client versenden, um diesen über bestimmte Fortschritte oder Ereignisse aufmerksam zu machen. Der Dialog Manager hat dazu eine Ressource erhalten “message”. Diese Ressource wird am Dialog oder Modul definiert.
Die neue Ressource “message”
Mit der Ressource “message” kann der Server einem Client Nachrichten schicken. Sie können am Server die Ressource wie die anderen, z. B. Schrift- und Farbressourcen definieren. Danach müssen Sie die Ressourcen dem Controlobjekt zuweisen und eine Methode definieren, in dem der Event (Message) an den Client geschickt werden soll.
Der Client wiederum muß die Voraussetzung haben, Messages empfangen und abarbeiten zu können. Der IDM-Client kann auf der Basis von extevent auf Messages vom Server reagieren.
Der Dialog Manager als OLE-Client
Über das Attribut .mode des Controlobjektes können Sie steuern, ob ein Server oder ein Client implementiert wird. Setzen Sie das Attribut auf .mode mode_client, können Sie in diesem Control einen Server definieren, der in Ihrer IDM-Anwendung integriert wird. Die Integration kommt auf den Server an. Stellt der Server ein Objekt zur Verfügung, wird dieses in Ihrem IDM-Fenster angezeigt. Die zweite Möglichkeit ist, der Server stellt sich “parallel” zu Ihrer Anwendung als eigenständige Anwendung zur Verfügung, wie z. B. der Internet Explorer, von dem Sie nun Methoden benutzen können.
Um nun einen Server zu integrieren gibt es verschiedene Möglichkei-ten, dies im IDM zu realisieren.
1. Statisch, indem Sie im Attribut .name des Controls den Namen des Servers angeben. Z. B. “InternetExplorer.Applikation” oder Sie geben beim Attribut .uuid die UUID des Internet Explorers an. 2. Dynamisch, indem Sie zur Laufzeit eine Instanz des Modells Control erzeugen und, wie bei 1., entweder den Namen oder die UUID zuweisen.
Damit haben Sie allerdings noch keine Verbindung zum Server aufgenommen, erst wenn Sie .connect auf true setzen, wird eine Verbindung aufgemacht. Danach können Sie, wenn die Verbindung steht, die Methoden des Internet Explorers benutzen, sowie Properties abfragen und setzen.
Voraussetzungen
System
Die OLE-Funktionalität ist auf den Betriebssystemen Windows NT 4.0 bzw. Windows 95/98 und XP funktionsfähig. Anwendung
Der OLE-Client muß über das IDispatch-Interface auf die Schnitt-stellen des OLE-Servers zugreifen können. Des weiteren muß er einige Interfaces besitzen, die es dem Dialog Manager erlauben, eine Kommunikation mit dem Client aufzubauen.
Entwickler
Die Benutzung der OLE-Funktionalität setzt Grundkenntnisse der COM-Technologie und Windows voraus. Es sollte der Umgang mit .reg Dateien, Bedeutung von Interfaces in OLE bzw. COM und der .idl-bzw. .tbl-Dateien bekannt sein.
|