Menü Hilfe-Zusammenführen
Wenn ein Objekt innerhalb eines Containers aktiv ist, gibt das Menüzusammenführungs Authentifizierungsprotokoll von OLE-Dokumenten die Objekt vollständige kontrolle des Hilfe Menüs.Daher sind die Hilfethemen des Containers nicht verfügbar, es sei denn, der Benutzer das Objekt deaktiviert.Die Active Document-Kapselungsarchitektur erweitert die Regeln für die direkte Menüzusammenführung den Container und ein aktives Dokument ermöglicht, die aktiv ist, das Menü freizugeben.Die neuen Regeln sind einfach zusätzliche Konventionen dazu, welche Komponente besitzt, welcher Teil des Menüs und wie das freigegebene Menü erstellt wird.
Die neue Konvention ist ein einfacher Vorgang.In den aktiven Dokumenten hat das Hilfe zwei Menüelemente Menü der obersten Ebene, die geordnet sind wie folgt:
Help
Container Help >
Object Help >
Wenn beispielsweise ein Word im Abschnitt Office-Sammelmappe aktiv ist, das Hilfe Menü angezeigt wird:
Help
Binder Help >
Word Help >
Beide Menüelemente sind Untermenüs, unter denen zusätzliche Menüelemente, die dem Container und auf das Objekt beziehen, die dem Benutzer zur Verfügung stehen.Welche Elemente hier angezeigt werden, hängt mit dem Container und Objekte, die betroffen sind.
Um dieses Hilfe zusammengeführte Menü zu erstellen, ändert sich die Active Document-Kapselungsarchitektur die übliche OLE-Dokumenten der Prozedur.Gemäß OLE-Dokumenten kann die zusammengeführte Menüleiste sechs Gruppen Menüs, nämlich Datei, Bearbeiten, Container, Object, Fenster, Hilfe haben, in dieser Reihenfolge.In jeder Gruppe kann keine oder mehrere geben Menüs.Die Gruppen Datei, Container und Fenster gehören zum Container und Gruppen Bearbeiten, Object, und Hilfe dem Objekt gehören.Wenn das Objekt durchführen möchte, Menüzusammenführung erstellt er eine leere Menüleiste und übergibt sie an den Container.Der Container fügt anschließend die Menüs ein, indem er IOleInPlaceFrame::InsertMenus aufruft.Das Objekt wird auch eine Struktur, die ein Array von sechs LANGEN Werten (OLEMENUGROUPWIDTHS) ist.Nachdem er die Menüs eingefügt hat, markiert der Container Menüs, wie er in allen zugehörigen Gruppen hinzugefügt und wird dann beendet.Anschließend fügt das Objekt die Menüs und erwähnt die Anzahl von Menüs in jeder Gruppe Container.Schließlich übergibt das Objekt die zusammengeführte Menüleiste und das Array (das die Anzahl von Menüs in jeder Gruppe enthält) zu OLE, das ein nicht einsehbares "Menu" Deskriptor Handle zurückgibt.Später übergibt dieses Handle des Objekts und die zusammengeführte Menüleiste auf den Container, über IOleInPlaceFrame::SetMenu.Derzeit wird der Container die zusammengeführte Menüleiste an und führt außerdem das Handle für OLE, damit das richtige OLE Weiterleiten von Meldungen Menü erfolgen kann.
In der bearbeiteten aktiven Dokumenten der Prozedur muss das Objekt die OLEMENUGROUPWIDTHS-Elemente zuerst auf Null initialisiert, bevor es an den Container übergeben wird.Anschließend führt der Container eine normale Einfügen von Menüs mit einer Ausnahme fehl: Der Container fügt ein Hilfe Menü als letztes Element ein und speichert einen Wert von 1 (6) im letzten Eintrag des OLEMENUGROUPWIDTHS Arrays (das heißt Breite [5], die der Gruppe der Hilfe des Objekts gehört).Dieses Hilfe Menü ist nur ein Element, das über ein Untermenü darstellt, das Container Help "überlappende" > Menü, wie zuvor beschrieben.
Das Objekt wird dann den normalen Menü einfügungs von Code aus, mit dem Unterschied, dass sein, bevor Hilfe Menü eingefügt wird, überprüft er den Eintrag des 6. OLEMENUGROUPWIDTHS Arrays.Wenn der Wert 1 ist, und der Name des letzten Menüs Hilfe (oder die entsprechende lokalisierte Zeichenfolge) ist, wird das Objekt sein Hilfe Menü als Untermenü des Menüs Hilfe den Container ein.
Das Objekt stellt das 6. OLEMENUGROUPWIDTHS-Element auf Null und das fünfte Element von eins erhöht.Dieses informiert, dass das OLE Hilfe Menü dem Container gehört und das Menü Meldungen entsprechend diesem Menü (und den Untermenüs) an den Container weitergeleitet werden sollen.Es ist die Verantwortung des Containers, WM_INITMENUPOPUP, WM_COMMAND weiterzuleiten, WM_SELECT und andere Menü-verknüpfte Meldungen, welcher Teil des Hilfe Menüs gehören.Dies wird erreicht, indem WM_INITMENU ein Flag zu deaktivieren, das den Container angibt, ob der Benutzer in Hilfe des Objekts das Menü navigiert ist.Der Container für Eintrag in WM_MENUSELECT dann überwacht oder Verlassen jedem Element im Hilfe Menü, das der Container selbst nicht hinzugefügt werden können.Klicken Sie auf Eintrag bedeutet, dass der Benutzer ein Menü Objekt navigiert ist, sodass der Container das "im Hilfemenü Objekt" - Flag festgelegt und den Zustand dieses Flags verwendet, um jedes WM_MENUSELECT, WM_INITMENUPOPUP und WM_COMMAND Meldungen, z. B. Fenster, das mit dem Objekt weiterzuleiten.(Klicken Beenden, löscht der Container das Flag und verarbeitet anschließend dieselben Nachrichten selbst.) Der Container sollte das Fenster verwenden, das von der IOleInPlaceActiveObejct::GetWindow-Funktion des Objekts als Ziel für diese Meldungen zurückgegeben wurde.
Wenn das Objekt in 6 (null). Element aus OLEMENUGROUPWIDTHS erkennt, wird sie gemäß den normalen Regeln OLE-Dokumenten fort.Diese Prozedur wird Container, die an Hilfe sowie Menüzusammenführung beteiligten Pakete ab, die nicht der Fall ist.
Wenn das Objekt IOleInPlaceFrame::SetMenu aufruft, bevor sie angezeigt wird, überprüft die zusammengeführte Menüleiste, der Container, ob das Menü Hilfe ein zusätzliches Untermenü verfügt zusätzlich, was vom Container eingefügt hat.In diesem Fall bewirkt, dass der Container sein Hilfe zusammengeführten Menü in der Menüleiste.Wenn das Menü Hilfe kein zusätzliches Untermenü verfügt, entfernt der Container sein Hilfe zusammengeführten Menü in der Menüleiste.Diese Prozedur wird Objekte, die an Hilfe sowie Menüzusammenführung beteiligten Pakete ab, die nicht der Fall ist.
Wenn es Zeit ist, das Menü zu disassemblieren, entfernt das Menü Hilfe das eingefügte Objekt neben dem Entfernen der anderen eingefügten Menüelemente.Wenn der Container seine Menüelemente entfernt, entfernt er sein Hilfe Menü (zusätzlich zu den anderen Menüs, die sie eingefügt hat.