Compartir a través de


Función ModifyMenuA (winuser.h)

Cambia un elemento de menú existente. Esta función se usa para especificar el contenido, la apariencia y el comportamiento del elemento de menú.

Note La función modifyMenu ha sido reemplazada por la función setMenuItemInfo . Todavía puede usar ModifyMenu, sin embargo, si no necesita ninguna de las características extendidas de SetMenuItemInfo.
 

Sintaxis

BOOL ModifyMenuA(
  [in]           HMENU    hMnu,
  [in]           UINT     uPosition,
  [in]           UINT     uFlags,
  [in]           UINT_PTR uIDNewItem,
  [in, optional] LPCSTR   lpNewItem
);

Parámetros

[in] hMnu

Tipo: HMENU de

Identificador del menú que se va a cambiar.

[in] uPosition

Tipo: UINT

Elemento de menú que se va a cambiar, determinado por el parámetro uFlags.

[in] uFlags

Tipo: UINT

Controla la interpretación del parámetro uPosition y el contenido, la apariencia y el comportamiento del elemento de menú. Este parámetro debe incluir uno de los siguientes valores necesarios.

Valor Significado
MF_BYCOMMAND
0x00000000L
Indica que el parámetro uPosition proporciona el identificador del elemento de menú. La marca MF_BYCOMMAND es la predeterminada si no se especifica la marca MF_BYCOMMAND ni MF_BYPOSITION.
MF_BYPOSITION
0x00000400L
Indica que el parámetro uPosition proporciona la posición relativa de base cero del elemento de menú.
 

El parámetro también debe incluir al menos uno de los valores siguientes.

Valor Significado
MF_BITMAP
0x00000004L
Usa un mapa de bits como elemento de menú. El parámetro lpNewItem contiene un identificador para el mapa de bits.
MF_CHECKED
0x00000008L
Coloca una marca de verificación junto al elemento. Si la aplicación proporciona mapas de bits de marca de verificación (vea la función SetMenuItemBitmaps), esta marca muestra un mapa de bits seleccionado junto al elemento de menú.
MF_DISABLED
0x00000002L
Deshabilita el elemento de menú para que no se pueda seleccionar, pero esta marca no la atenua.
MF_ENABLED
0x00000000L
Habilita el elemento de menú para que se pueda seleccionar y restaurarlo a partir de su estado atenuado.
MF_GRAYED
0x00000001L
Deshabilita el elemento de menú y lo grisiza para que no se pueda seleccionar.
MF_MENUBARBREAK
0x00000020L
Funciona igual que la marca de MF_MENUBREAK para una barra de menús. Para un menú desplegable, submenú o menú contextual, la nueva columna se separa de la columna anterior por una línea vertical.
MF_MENUBREAK
0x00000040L
Coloca el elemento en una nueva línea (para barras de menús) o en una nueva columna (para un menú desplegable, submenú o menú contextual) sin separar columnas.
MF_OWNERDRAW
0x00000100L
Especifica que el elemento es un elemento dibujado por el propietario. Antes de que el menú se muestre por primera vez, la ventana propietaria del menú recibe un mensaje de WM_MEASUREITEM para recuperar el ancho y el alto del elemento de menú. A continuación, el mensaje WM_DRAWITEM se envía al procedimiento de ventana de la ventana del propietario cada vez que se debe actualizar la apariencia del elemento de menú.
MF_POPUP
0x00000010L
Especifica que el elemento de menú abre un menú desplegable o submenú. El parámetro uIDNewItem especifica un identificador para el menú desplegable o submenú. Esta marca se usa para agregar un nombre de menú a una barra de menús o a un elemento de menú que abre un submenú en un menú desplegable, submenú o menú contextual.
MF_SEPARATOR
0x00000800L
Dibuja una línea divisoria horizontal. Esta marca solo se usa en un menú desplegable, submenú o menú contextual. La línea no puede estar atenuada, deshabilitada ni resaltada. Los parámetros lpNewItem y uIDNewItem se omiten.
MF_STRING
0x00000000L
Especifica que el elemento de menú es una cadena de texto; el parámetro lpNewItem es un puntero a la cadena.
MF_UNCHECKED
0x00000000L
No coloca una marca de verificación junto al elemento (valor predeterminado). Si la aplicación proporciona mapas de bits de marca de verificación (vea la función SetMenuItemBitmaps), esta marca muestra un mapa de bits sin borrar junto al elemento de menú.

[in] uIDNewItem

Tipo: UINT_PTR

El identificador del elemento de menú modificado o, si el parámetro uFlags tiene establecida la marca MF_POPUP, un identificador para el menú desplegable o submenú.

[in, optional] lpNewItem

Tipo: LPCTSTR de

Contenido del elemento de menú modificado. La interpretación de este parámetro depende de si el parámetro uFlags incluye la marca MF_BITMAP, MF_OWNERDRAWo MF_STRING.

Valor Significado
MF_BITMAP
0x00000004L
Un identificador de mapa de bits.
MF_OWNERDRAW
0x00000100L
Valor proporcionado por una aplicación que se usa para mantener datos adicionales relacionados con el elemento de menú. El valor se encuentra en el elementoData miembro de la estructura a la que apunta el parámetro lParam del WM_MEASUREITEM o WM_DRAWITEM mensajes enviados cuando se crea el elemento de menú o se actualiza su apariencia.
MF_STRING
0x00000000L
Puntero a una cadena terminada en null (valor predeterminado).

Valor devuelto

Tipo: BOOL de

Si la función se ejecuta correctamente, el valor devuelto es distinto de cero.

Si se produce un error en la función, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Observaciones

Si ModifyMenu reemplaza un elemento de menú que abre un menú desplegable o submenú, la función destruye el menú desplegable o submenú antiguo y libera la memoria usada por él.

Para que los aceleradores de teclado funcionen con elementos de menú dibujados por el propietario o mapa de bits, el propietario del menú debe procesar el mensaje de WM_MENUCHAR. Consulte Owner-Drawn Menús y el de mensajes de WM_MENUCHAR para obtener más información.

La aplicación debe llamar a la función DrawMenuBar cada vez que cambia un menú, si el menú está en una ventana mostrada. Para cambiar los atributos de los elementos de menú existentes, es mucho más rápido usar las funciones CheckMenuItem y EnableMenuItem.

No se pueden usar juntos los siguientes grupos de marcas:

  • MF_BYCOMMAND y MF_BYPOSITION
  • MF_DISABLED, MF_ENABLEDy MF_GRAYED
  • MF_BITMAP, MF_STRING, MF_OWNERDRAWy MF_SEPARATOR
  • MF_MENUBARBREAK y MF_MENUBREAK
  • MF_CHECKED y MF_UNCHECKED

Ejemplos

Para obtener un ejemplo, vea Establecer fuentes para Menu-Item cadenas de texto.

Nota

El encabezado winuser.h define ModifyMenu como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de winuser.h (incluya Windows.h)
biblioteca de User32.lib
DLL de User32.dll
conjunto de API de ext-ms-win-ntuser-menu-l1-1-3 (introducido en Windows 10, versión 10.0.14393)

Consulte también

AppendMenu

CheckMenuItem

conceptual de

DrawMenuBar

EnableMenuItem

menús de

de referencia de

SetMenuItemBitmaps

SetMenuItemInfo