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ú.
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
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 obligatorios.
El parámetro también debe incluir al menos uno de los valores siguientes.
Valor | Significado |
---|---|
|
Usa un mapa de bits como elemento de menú. El parámetro lpNewItem contiene un identificador para el mapa de bits. |
|
Places 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ú. |
|
Deshabilita el elemento de menú para que no se pueda seleccionar, pero esta marca no la atenua. |
|
Habilita el elemento de menú para que se pueda seleccionar y restaurar a partir de su estado atenuado. |
|
Deshabilita el elemento de menú y lo grisiza para que no se pueda seleccionar. |
|
Funciona igual que la marca MF_MENUBREAK para una barra de menús. Para un menú desplegable, submenú o menú contextual, la nueva columna se separa de la columna antigua mediante una línea vertical. |
|
Places el elemento de una nueva línea (para barras de menú) o en una nueva columna (para un menú desplegable, submenú o menú contextual) sin separar columnas. |
|
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 de 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ú. |
|
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 un elemento de menú que abre un submenú en un menú desplegable, submenú o menú contextual. |
|
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 o resaltada. Se omiten los parámetros lpNewItem y uIDNewItem . |
|
Especifica que el elemento de menú es una cadena de texto; El parámetro lpNewItem es un puntero a la cadena. |
|
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
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
Contenido del elemento de menú cambiado. La interpretación de este parámetro depende de si el parámetro uFlags incluye la marca MF_BITMAP, MF_OWNERDRAW o MF_STRING .
Valor | Significado |
---|---|
|
Un identificador de mapa de bits. |
|
Valor proporcionado por una aplicación que se usa para mantener datos adicionales relacionados con el elemento de menú. El valor está en el miembro itemData 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. |
|
Puntero a una cadena terminada en null (valor predeterminado). |
Valor devuelto
Tipo: BOOL
Si la función se realiza correctamente, el valor devuelto es distinto de cero.
Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.
Comentarios
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 utilizada 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 WM_MENUCHAR . Consulte Menús dibujados por el propietario y el mensaje WM_MENUCHAR para obtener más información.
La aplicación debe llamar a la función DrawMenuBar siempre que cambie 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 .
Los siguientes grupos de marcas no se pueden usar juntos:
- MF_BYCOMMAND y MF_BYPOSITION
- MF_DISABLED, MF_ENABLED y MF_GRAYED
- MF_BITMAP, MF_STRING, MF_OWNERDRAW y 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 Convenciones para prototipos de función.
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 | winuser.h (incluir Windows.h) |
Library | User32.lib |
Archivo DLL | User32.dll |
Conjunto de API | ext-ms-win-ntuser-menu-l1-1-3 (introducido en Windows 10, versión 10.0.14393) |
Consulte también
Conceptual
Referencia