Share via


Método IOleInPlaceFrame::SetMenu (oleidl.h)

Agrega un menú compuesto al marco de ventana que contiene el objeto que se activa en su lugar.

Sintaxis

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

Parámetros

[in] hmenuShared

Identificador del menú compuesto construido mediante llamadas a IOleInPlaceFrame::InsertMenus y a la función InsertMenu .

[in] holemenu

Identificador del descriptor de menú devuelto por la función OleCreateMenuDescriptor .

[in] hwndActiveObject

Identificador de una ventana que pertenece al objeto y a qué mensajes de menú, comandos y aceleradores se van a enviar.

Valor devuelto

Este método devuelve S_OK cuando funciona correctamente. Otros posibles valores devueltos son los siguientes.

Código devuelto Descripción
E_INVALIDARG
El identificador especificado no es válido.
E_UNEXPECTED
Se produjo un error inesperado.

Comentarios

Notas a los autores de llamadas

El objeto llama a IOleInPlaceFrame::SetMenu para pedir al contenedor que instale la estructura de menús compuesta configurada por llamadas a IOleInPlaceFrame::InsertMenus.

Notas para los implementadores

La implementación de un contenedor SDI de este método debe llamar a la función SetMenu . Un contenedor MDI debe enviar un mensaje de WM_MDISETMENU , con hmenuShared como menú para instalar. El contenedor debe llamar a OleSetMenuDescriptor para instalar el código de distribución OLE.

Al desactivarlo, el contenedor debe llamar a IOleInPlaceFrame::SetMenu, especificando NULL para quitar el menú compartido. Esto se hace para ayudar a minimizar los reintentos de ventana. El contenedor también debe llamar a OleSetMenuDescriptor, especificando NULL para desenganchar el código de distribución. Por último, la aplicación de objeto llama a OleDestroyMenuDescriptor para liberar la estructura de datos.

Nota Al ejecutar IOleInPlaceFrame::SetMenu, no realice llamadas a las funciones PeekMessage o GetMessage , ni a un cuadro de diálogo. Si lo hace, el sistema puede provocar un interbloqueo. Hay más restricciones sobre qué métodos y funciones de interfaz OLE se pueden llamar desde IOleInPlaceFrame::SetMenu.
 

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado oleidl.h

Consulte también

IOleInPlaceFrame

IOleInPlaceFrame::InsertMenus

InsertMenu

OleDestroyMenuDescriptor

OleSetMenuDescriptor