Implementieren der direkten Aktivierung

Die direkte Aktivierung ermöglicht Benutzern die Interaktion mit einem eingebetteten Objekt, ohne das Containerdokument zu verlassen. Wenn ein Benutzer das Objekt aktiviert, ersetzt eine zusammengesetzte Menüleiste, die Elemente aus den Menüleisten der Containeranwendung und der Serveranwendung umfasst, die Hauptmenüleiste des Containers. Benutzern stehen somit Befehle und Funktionen aus beiden Anwendungen zur Verfügung, einschließlich der kontextbezogenen Hilfe für das aktive Objekt. Wenn Benutzer mit einem Teil des Dokuments arbeiten, der kein Objekt ist, wird das Objekt deaktiviert, sodass das ursprüngliche Menü des Containerdokuments das zusammengesetzte Menü ersetzt.

Diese Funktion wurde ursprünglich als direkte Bearbeitung bezeichnet. Der Name wurde geändert, da die Bearbeitung nur eine Möglichkeit ist, mit einem ausgeführten Objekt zu interagieren. So können beispielsweise Soundclips angehört werden, anstatt sie zu bearbeiten. Videoclips können angesehen werden, anstatt sie zu bearbeiten. Die direkte Aktivierung eignet sich besonders für Videoclips, da sie eine direkte Wiedergabe ermöglicht, ohne dass ein separates Fenster aufgerufen werden muss. Dies kann besonders dann wichtig sein, wenn das Video beispielsweise zusammen mit angrenzenden Textdaten im Containerdokument angezeigt werden soll.

Die Implementierung der direkten Aktivierung ist für Container- und Serveranwendungen rein optional. OLE unterstützt weiterhin das Modell, in dem das Aktivieren eines Objekts bewirkt, dass die Serveranwendung ein separates Fenster öffnet. Verknüpfte Objekte werden immer in einem separaten Fenster geöffnet, um zu verdeutlichen, dass sie sich in einem separaten Dokument befinden.

Die direkte Aktivierung beginnt mit dem Objekt als Reaktion auf einen IOleObject::DoVerb-Aufruf aus seinem Container. Dieser Aufruf erfolgt in der Regel als Reaktion auf einen Doppelklick des Benutzers auf das Objekt oder die Auswahl eines Befehls (Verb) aus dem Menü „Bearbeiten“ der Containeranwendung.

Das direkte Fenster empfängt Tastatur- und Mauseingaben, während das eingebettete Objekt aktiv ist. Wenn ein Benutzer Befehle in der zusammengesetzten Menüleiste auswählt, werden der Befehl und die zugehörigen Menümeldungen an die Container- oder Objektanwendung gesendet, je nachdem, welche Anwendung das ausgewählte Dropdownmenü besitzt. Eingaben über Lineale, Symbolleisten oder Randsteuerelemente eines Objekts werden direkt an das eingebettete Objekt gesendet, das diese Fenster besitzt.

Ein direkt aktiviertes eingebettetes Objekt bleibt aktiv, bis es entweder vom Container als Reaktion auf Benutzereingaben deaktiviert wird, oder bis das Objekt den aktiven Status freiwillig aufgibt, wie es beispielsweise bei einem Videoclip der Fall ist. Benutzer können ein Objekt deaktivieren, indem sie innerhalb des Containerdokuments, aber außerhalb des Fensters der direkten Aktivierung des Objekts klicken oder einfach auf ein anderes Objekt klicken. Ein direkt aktiviertes Objekt bleibt jedoch aktiv, wenn Benutzer auf die Titelleiste, die Bildlaufleiste oder insbesondere auf die Menüleiste des Containers klicken.

Sie können einen Objektserver der direkten Aktivierung entweder als In-Process-Server (DLL) oder als lokalen Server (EXE) implementieren. In beiden Fällen enthält die zusammengesetzte Menüleiste Elemente (in der Regel Dropdownmenüs) aus den Server- und Containerprozessen. Bei einem In-Process-Server ist das Fenster der direkten Aktivierung einfach ein weiteres untergeordnetes Fenster in der Fensterhierarchie des Containers, das seine Eingabe über das Nachrichtensystem der Containeranwendung empfängt.

Bei einem lokalen Server gehört das Fenster der direkten Aktivierung zum Serveranwendungsprozess des eingebetteten Objekts, das übergeordnete Fenster gehört jedoch zum Container. Eingaben für das Fenster der direkten Aktivierung werden in der Nachrichtenwarteschlange des Servers angezeigt und von der Nachrichtenschleife des Servers verteilt. Die OLE-Bibliotheken sind für die ordnungsgemäße Verteilung von Menübefehlen und Nachrichten verantwortlich.

Zusammengesetzte Dokumente