winuser.h


AppendMenu

La función AppendMenu añade un nuevo ítem de menú al final del menú especificado. Una aplicación puede usar esta función para especificar el contenido, apariencia y comportamiento del ítem de menú.

La función AppendMenu ha sido sustituida por InsertMenuItem. Sin embargo, se puede seguir usando, si no se necesitan las características extendidas de la función InsertMenuItem.

Sintaxis

BOOL AppendMenu(
    HMENU hMenu,       // manipulador de menú
    UINT uFlags,       // flags del ítem de menú
    UINT uIDNewItem,   // identificador de ítem de menú o 
                       // manipulador de menú pop-up
    LPCTSTR lpNewItem  // contenido del ítem de menú
   );

Parámetros

hMenu: identifica el menú a modificar.

uFlags: especifica los flags para controlar la apariencia y el comportamiento del ítem de menú. Este parámetro puede ser una combinación de los valores listados en la sección de observaciones.

uIDNewItem: especifica o bien el identificador del nuevo ítem de menú o si el parámetro uFlags incluye MF_POPUP, el manipulador de un menú pop-up.

lpNewItem: especifica el contenido del nuevo ítem de menú. La interpretación de lpNewItem depende de si el parámetro uFlags incluye los flags MF_BITMAP, MF_OWNERDRAW o MF_STRING, como se especifica a continuación:

Valor Descripción
MF_BITMAP Contiene un manipulador de bitmap.
MF_OWNERDRAW Contiene un valor de 32 bits suministrado por la aplicación que puede ser usado para mantener datos adicionales relacionados con el ítem de menú. El valor está en el miembro itemData de la estructura apuntada por el parámetro lparam del mensaje WM_MEASUREITEM o WM_DRAWITEM enviado cuando el menú es creado o su apariencia es actualizada.
MF_STRING Contiene un puntero a una cadena de caracteres terminada con cero.

Valor de retorno

Si la función tiene éxito, el valor de retorno es TRUE.

Si falla, el valor de retorno es FALSE. Para conseguir más información, se puede llamar a GetLastError.

Observaciones

La aplicación debe llamar a la función DrawMenuBar cada vez que el menú cambie, tanto si el menú pertenece a una ventana que se está mostrando como si no.

Deben usarse los siguientes flags en el parámetro uFlags:

Valor Descripción
MF_BITMAP Usa un mapa de bitsp como ítem. El parámetro lpNewItem contiene el manipulador del mapa de bits.
MF_CHECKED Pone una marca de comprobación junto al ítem. Si la aplicación proporciona los mapas de bits de las marcas de comprobación (SetMenuItemBitmaps), esta bandera muestra la marca junto al ítem de menú.
MF_DISABLED Inhibe el ítem de menú de modo que no puede ser seleccionado, pero esta bandera no oscurece el ítem.
MF_ENABLED Habilita en ítem de menú de modo que pueda ser seleccionado y restaura su apariencia si su estado estaba oscurecido.
MF_GRAYED Inhibe el ítem y lo oscurece de modo que no puede ser seleccionado.
MF_MENUBARBREAK Funciona igual que el flag MF_MENUBREAK excepto para menús emergentes, donde la nueva columna es separada de la anterior por una línea vertical.
MF_MENUBREAK Coloca el ítem en una línea nueva (para barras de menú) o en una columna nueva (para menús emergentes) sin columnas separadoras.
MF_OWNERDRAW Especifica que el ítem es dibujado por la ventana propietaria, (owner-drawn). Antes de que el menú sea mostrado por primera vez, la ventana que posee el menú recibirá un mensaje WM_MEASUREITEM para recuperar la anchura y altura del ítem de menú. El mensaje WM_DRAWITEM es enviado al procedimiento de ventana de la ventana propietaria cada vez que la apariencia del ítem deba ser actualizada.
MF_POPUP Indica que el ítem abre un menú emergente o submenú. El parámetro uIDNewItem especifica el manipulador del menú emergente o submenú. La bandera se usa para añadir un ítem pop-up a una barra de menú o a un menú emergente.
MF_SEPARATOR Dibuja una línea horizontal de división. Esta bandera se usa sólo en menús emergentes. La línea no puede ser oscurecida, inhibida o resaltada. Los parámetros lpNewItem y uIDNewItem se ignoran.
MF_STRING Especifica que el ítem es una cadena de texto; el parámetro lpNewItem apunta a una cadena.
MF_UNCHECKED No pone la marca de comprobación junto al ítem (valor por defecto). Si la aplicación suministra mapas de bits para las marcas de comprobación (ver SetMenuItemBitmaps), esta bandera muestra el mapa de bits de no comprobación junto al ítem.

La lista siguiente muestra grupos de flags que no pueden ser usados juntos:

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