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:

  1. Dateimenü identisch mit dem Menü, das beim Öffnen von Dateien verwendet wird. (Normalerweise werden keine anderen Menüelemente vor dem nächsten Element platziert.)

  2. Zwei aufeinander folgende Trennzeichen.

  3. 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:

  1. Menü "Bearbeiten" identisch mit dem Menü, das beim Öffnen von Dateien verwendet wird.

  2. Trennzeichen.

  3. Objektbearbeitungsmenüs, z. B. das Stiftmenü in der Scribble-Beispielanwendung.

  4. Trennzeichen.

  5. 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 COleIPFrameWndabgeleiteten 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".

Siehe auch

Menüs und Ressourcen (OLE)
Aktivierung
Server
Container