Función AppendMenuW (winuser.h)

Anexa un nuevo elemento al final de la barra de menús, el menú desplegable, el submenú o el menú contextual especificados. Puede usar esta función para especificar el contenido, la apariencia y el comportamiento del elemento de menú.

Sintaxis

BOOL AppendMenuW(
  [in]           HMENU    hMenu,
  [in]           UINT     uFlags,
  [in]           UINT_PTR uIDNewItem,
  [in, optional] LPCWSTR  lpNewItem
);

Parámetros

[in] hMenu

Tipo: HMENU

Identificador de la barra de menús, menú desplegable, submenú o menú contextual que se va a cambiar.

[in] uFlags

Tipo: UINT

Controla la apariencia y el comportamiento del nuevo elemento de menú. Este parámetro puede ser una combinación de los valores siguientes.

Value 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 de menú. Si la aplicación proporciona mapas de bits de marca de verificación (vea SetMenuItemBitmaps, esta marca muestra el mapa de bits de marca de verificación junto al elemento de menú.
MF_DISABLED
0x00000002L
Deshabilita el elemento de menú para que no se pueda seleccionar, pero la marca no la atenua.
MF_ENABLED
0x00000000L
Habilita el elemento de menú para que se pueda seleccionar y lo restaura 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 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.
MF_MENUBREAK
0x00000040L
Coloca el elemento en una nueva línea (para una barra de menús) o en una nueva columna (para un menú desplegable, submenú o menú contextual) sin separar las 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 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ú.
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 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 o resaltada. Se omiten los parámetros lpNewItem y uIDNewItem .
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 SetMenuItemBitmaps), esta marca muestra el mapa de bits sin borrar junto al elemento de menú.

[in] uIDNewItem

Tipo: UINT_PTR

Identificador del nuevo elemento de menú o, si el parámetro uFlags está establecido en MF_POPUP, un identificador del menú desplegable o submenú.

[in, optional] lpNewItem

Tipo: LPCTSTR

Contenido del nuevo elemento de menú. La interpretación de lpNewItem depende de si el parámetro uFlags incluye los valores siguientes.

Value Significado
MF_BITMAP
0x00000004L
Contiene un identificador de mapa de bits.
MF_OWNERDRAW
0x00000100L
Contiene un valor proporcionado por la aplicación que se puede usar 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 mensaje enviado cuando se crea el menú o se actualiza su apariencia.
MF_STRING
0x00000000L
Puntero a una cadena terminada en null.

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

La aplicación debe llamar a la función DrawMenuBar siempre que cambie un menú, si el menú está en una ventana mostrada.

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 . Para obtener más información, vea Menús dibujados por el propietario y el mensaje WM_MENUCHAR.

Los siguientes grupos de marcas no se pueden usar juntos:

  • MF_BITMAP, MF_STRING y MF_OWNERDRAW
  • MF_CHECKED y MF_UNCHECKED
  • MF_DISABLED, MF_ENABLED y MF_GRAYED
  • MF_MENUBARBREAK y MF_MENUBREAK

Ejemplos

Para obtener un ejemplo, vea Agregar líneas y gráficos a un menú.

Nota

El encabezado winuser.h define AppendMenu 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

   
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-0 (introducido en Windows 8)

Consulte también

Conceptual

CreateMenu

DeleteMenu

DestroyMenu

DrawMenuBar

InsertMenu

InsertMenuItem

Menús

ModifyMenu

Referencia

RemoveMenu

SetMenuItemBitmaps