Menüs und Ressourcen: Menüs schachteln
In diesem Artikel werden die Schritte beschrieben, die für OLE-Dokumentanwendungen erforderlich sind, um die visuelle Bearbeitung und die direkte Aktivierung ordnungsgemäß zu verarbeiten. Die direkte Aktivierung stellt eine Herausforderung für Container- und Serveranwendungen (Komponenten) dar. Der Benutzer wird im selben Framefenster (im Kontext des Containerdokuments) erneut Standard, aber tatsächlich eine andere Anwendung (der Server) ausgeführt. Dies erfordert eine Koordination zwischen den Ressourcen des Containers und der Serveranwendungen.
In diesem Artikel werden die folgenden Themen behandelt:
Menülayouts
Der erste Schritt besteht darin, Menülayouts zu koordinieren. Containeranwendungen sollten ein neues Menü erstellen, das nur verwendet werden soll, wenn eingebettete Elemente aktiviert werden. Dieses Menü sollte mindestens aus der folgenden Reihenfolge bestehen:
Dateimenü identisch mit dem Menü, das beim Öffnen von Dateien verwendet wird. (Normalerweise werden keine anderen Menüelemente vor dem nächsten Element platziert.)
Zwei aufeinander folgende Trennzeichen.
Das Fenstermenü ist identisch mit dem Menü, das beim Öffnen von Dateien verwendet wird (nur, wenn die Containeranwendung in einer MDI-Anwendung vorhanden ist). Einige Anwendungen verfügen möglicherweise über andere Menüs, z. B. ein Menü "Optionen", das zu dieser Gruppe gehört, die wieder Standard im Menü angezeigt wird, wenn ein eingebettetes Element aktiviert wird.
Hinweis
Möglicherweise gibt es andere Menüs, die sich auf die Ansicht des Containerdokuments auswirken, z. B. Zoom. Diese Containermenüs werden zwischen den beiden Trennzeichen in dieser Menüressource angezeigt.
Serveranwendungen (Komponenten) sollten auch ein neues Menü speziell für die direkte Aktivierung erstellen. Es sollte wie das Menü sein, das beim Öffnen von Dateien verwendet wird, aber ohne Menüelemente, z. B. "Datei" und "Fenster", die das Serverdokument anstelle der Daten bearbeiten. In der Regel besteht dieses Menü aus folgenden Komponenten:
Menü "Bearbeiten" identisch mit dem Menü, das beim Öffnen von Dateien verwendet wird.
Trennzeichen.
Objektbearbeitungsmenüs, z. B. das Stiftmenü in der Scribble-Beispielanwendung.
Trennzeichen.
Menü „Hilfe“.
Sehen Sie sich beispielsweise das Layout einiger Beispielmenüs für einen Container und einen Server an. Die Details der einzelnen Menüelemente wurden entfernt, um das Beispiel klarer zu gestalten. Das direkte Menü des Containers enthält die folgenden Einträge:
IDR_CONTAINERTYPE_CNTR_IP MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&File C1"
MENUITEM SEPARATOR
POPUP "&Zoom C2"
MENUITEM SEPARATOR
POPUP "&Options C3"
POPUP "&Window C3"
END
Die aufeinander folgenden Trennzeichen geben an, wo sich der erste Teil des Menüs des Servers befinden soll. Sehen Sie sich nun das direkte Menü des Servers an:
IDR_SERVERTYPE_SRVR_IP MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&Edit S1"
MENUITEM SEPARATOR
POPUP "&Format S2"
MENUITEM SEPARATOR
POPUP "&Help S3"
END
Die Trennzeichen geben hier an, wo die zweite Gruppe von Containermenüelementen eingefügt werden soll. Die resultierende Menüstruktur, wenn ein Objekt von diesem Server in diesem Container aktiviert wird, sieht wie folgt aus:
BEGIN
POPUP "&File C1"
POPUP "&Edit S1"
POPUP "&Zoom C2"
POPUP "&Format S2"
POPUP "&Options C3
POPUP "&Window C3"
POPUP "&Help S3"
END
Wie Sie sehen können, wurden die Trennzeichen durch die verschiedenen Gruppen des Menüs jeder Anwendung ersetzt.
Zugriffstastentabellen, die dem direkten Menü zugeordnet sind, sollten auch von der Serveranwendung bereitgestellt werden. Der Container enthält sie in eigene Zugriffstastentabellen.
Wenn ein eingebettetes Element aktiviert wird, lädt das Framework das direkte Menü. Anschließend fordert sie die Serveranwendung nach der direkten Aktivierung des Menüs auf und fügt sie dort ein, wo sich die Trennzeichen befinden. So kombinieren die Menüs. Sie erhalten Menüs aus dem Container, um die Datei- und Fensterplatzierung zu verwenden, und Sie erhalten Menüs vom Server für den Betrieb auf dem Element.
Symbolleisten und Statusleisten
Serveranwendungen sollten eine neue Symbolleiste erstellen und ihre Bitmap in einer separaten Datei speichern. Die vom Anwendungs-Assistenten generierten Anwendungen speichern diese Bitmap in einer Datei namens "ITOOLBAR.BMP". Die neue Symbolleiste ersetzt die Symbolleiste der Containeranwendung, wenn das Element ihres Servers aktiviert ist, und sollte dieselben Elemente wie die normale Symbolleiste enthalten, aber Symbole entfernen, die Elemente in den Menüs "Datei" und "Fenster" darstellen.
Diese Symbolleiste wird in Ihrer COleIPFrameWnd
abgeleiteten Klasse geladen, die vom Anwendungs-Assistenten für Sie erstellt wird. Die Statusleiste wird von der Containeranwendung behandelt. Weitere Informationen zur Implementierung von direkten Framefenstern finden Sie unter "Server: Implementieren eines Servers".