IOleInPlaceFrame::SetMenu-Methode (oleidl.h)

Fügt dem Fensterrahmen ein zusammengesetztes Menü hinzu, das das aktivierte Objekt enthält.

Syntax

HRESULT SetMenu(
  [in] HMENU    hmenuShared,
  [in] HOLEMENU holemenu,
  [in] HWND     hwndActiveObject
);

Parameter

[in] hmenuShared

Ein Handle für das zusammengesetzte Menü, das durch Aufrufe von IOleInPlaceFrame::InsertMenus und der InsertMenu-Funktion erstellt wurde.

[in] holemenu

Ein Handle für den Menüdeskriptor, der von der OleCreateMenuDescriptor-Funktion zurückgegeben wird.

[in] hwndActiveObject

Ein Handle für ein Fenster, das sich im Besitz des Objekts befindet, und an das Menümeldungen, Befehle und Zugriffstasten gesendet werden sollen.

Rückgabewert

Diese Methode gibt S_OK bei Erfolg zurück. Weitere mögliche Rückgabewerte:

Rückgabecode Beschreibung
E_INVALIDARG
Das angegebene Handle ist ungültig.
E_UNEXPECTED
Ein unerwarteter Fehler ist aufgetreten.

Hinweise

Hinweise für Anrufer

Das Objekt ruft IOleInPlaceFrame::SetMenu auf, um den Container aufzufordern, die zusammengesetzte Menüstruktur zu installieren, die durch Aufrufe von IOleInPlaceFrame::InsertMenus eingerichtet wurde.

Hinweise für Implementierer

Die Implementierung dieser Methode in einem SDI-Container sollte die SetMenu-Funktion aufrufen. Ein MDI-Container sollte eine WM_MDISETMENU Nachricht senden, wobei hmenuShared als Installationsmenü verwendet wird. Der Container sollte OleSetMenuDescriptor aufrufen, um den OLE-Verteilungscode zu installieren.

Beim Deaktivieren muss der Container IOleInPlaceFrame::SetMenu aufrufen und NULL angeben, um das freigegebene Menü zu entfernen. Dies erfolgt, um Fenster-Neubemalungen zu minimieren. Der Container sollte auch OleSetMenuDescriptor aufrufen und NULL angeben, um den Verteilercode aufzuheben. Schließlich ruft die Objektanwendung OleDestroyMenuDescriptor auf, um die Datenstruktur frei zu geben.

Hinweis Führen Sie beim Ausführen von IOleInPlaceFrame::SetMenu keine Aufrufe der PeekMessage - oder GetMessage-Funktionen oder eines Dialogfelds aus. Dies kann zu einem Deadlock des Systems führen. Es gibt weitere Einschränkungen, welche OLE-Schnittstellenmethoden und -Funktionen innerhalb von IOleInPlaceFrame::SetMenu aufgerufen werden können.
 

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile oleidl.h

Weitere Informationen

IOleInPlaceFrame

IOleInPlaceFrame::InsertMenus

EinfügenMenü

OleDestroyMenuDescriptor

OleSetMenuDescriptor