winuser.h

Estructura MENUITEMINFO

Definición

typedef struct tagMENUITEMINFO {
    UINT    cbSize;  
    UINT    fMask; 
    UINT    fType; 
    UINT    fState; 
    UINT    wID; 
    HMENU   hSubMenu; 
    HBITMAP hbmpChecked; 
    HBITMAP hbmpUnchecked; 
    DWORD   dwItemData; 
    LPTSTR  dwTypeData; 
    UINT    cch; 
#if (_WIN32_WINNT >= 0x0500)
    HBITMAP hbmpItem;
#endif
} MENUITEMINFO, FAR *LPMENUITEMINFO; 

La estructura MENUITEMINFO contiene información sobre un ítem de menú.

Descripción

cbSize: tamaño de la estructura, en bytes.

fMask: miembros a recuperar o asignar. Este miembro puede ser uno o más de estos valores:

Valor Significado
MIIM_CHECKMARKS Recupera o asigna los miembros hbmpChecked y hbmpUnchecked.
MIIM_DATA Recupera o asigna el miembro dwItemData.
MIIM_ID Recupera o asigna el miembro wID.
MIIM_STATE Recupera o asigna el miembro fState.
MIIM_SUBMENU Recupera o asigna el miembro hSubMenu.
MIIM_TYPE Recupera o asigna los miembros fType y dwTypeData.
MIIM_BITMAP Windows 98/Me, Windows 2000/XP: recupera o asigna el mimebro hbmpItem.
MIIM_FTYPE Windows 98/Me, Windows 2000/XP: recupera o asigna el miembro fType.
MIIM_STRING Windows 98/Me, Windows 2000/XP: recupera o asigna el miembro dwTypeData.

fType: tipo de ítem de menú. Este miembro puede ser uno o más de los siguientes valores:

Valor Significado
MFT_BITMAP Muestra el ítem de menú usando un mapa de bits. La palabra de menor peso del miembro dwTypeData es el manipulador de mapa de bits, y el miembro cch se ignora.
Windows 98/Me, Windows 2000/XP: MFT_BITMAP se ha reemplazado por MIIM_BITMAP y hbmpItem.
MFT_MENUBARBREAK Coloca el ítem de menú en una línea nueva (para una barra de menú) o en una columna nueva (para un menú desplegable, un submenú o un menú de atajo). Para este último caso, una línea vertical separa la nueva columna de la antigua.
MFT_MENUBREAK Coloca el ítem de menú en una línea nueva (para una barra de menú) o en una columna nueva (para un menú desplegable, un submenú o un menú de atajo). Para este último caso, la columna no se separa con una línea vertical.
MFT_OWNERDRAW Asigna la responsabilidad del trazado del ítem de menú a la ventana a la que pertenece el menú. La ventana recibe un mensaje WM_MEASUREITEM antes de que el menú se muestre por primera vez, y un mensaje WM_DRAWITEM cada vez que la apariencia del ítem de menú deba ser actualizada. Si este valor se especifica, el miembro dwTypeData contiene un valor de 32 bits definido por la aplicación.
MFT_RADIOCHECK Muestra los ítems marcados usando la marca del radio-button en lugar una marca de chequeo si el miembro hbmpChecked es NULL.
MFT_RIGHTJUSTIFY Justifica a la derecha el ítem de menú y los ítems siguientes. Este valor sólo es válido si el ítem de menú está en una barra de menú.
MFT_RIGHTORDER Windows 95/98/Me, Windows 2000/XP: especifica que los menús en cascada se muestran de derecha a izquierda (por defecto es de izquierda a derecha). Esta opción se usa para soportar lenguajes que se escriben de derecha a izquierda, como el árabe o el hebreo.
MFT_SEPARATOR Especifica que el ítem de menú es un separador. Un ítem de menú separador aparece como una línea horizontal divisora. Los miembros dwTypeData y cch son ignorados. Este valor es válido sólo en un menú desplegable, un submenú o un menú de atajo.
MFT_STRING Muestra el ítem de menú usando una cadena de texto. El miembro dwTypeData es el puntero a la cadena terminada en nulo, y el miembro cch es la longitud de la cadena.
Windows 98/Me, Windows 2000/XP: MFT_STRING se ha reemplazado por MIIM_STRING.

Asignar el valor MIIM_TYPE a fMask para usar fType.

Windows 98/Me y Windows 2000/XP: fType se usa sólo si fMask tiene el valor MIIM_FTYPE.

Los valores MFT_BITMAP, MFT_SEPARATOR y MFT_STRING no pueden ser combinados con ningún otro.

fState: estado del ítem de menú. Asignar MIIM_STATE a fMask para usar fState. Este miembro puede ser uno o más de estos valores:

Valor Significado
MFS_CHECKED Marca el ítem de menú. Para más información sobre ítems de menú marcados, ver el miembro hbmpChecked.
MFS_DEFAULT Especifica que el ítem de menú es el ítem por defecto. Un menú puede contener sólo un ítem de menú por defecto, que se muestra en negrita.
MFS_DISABLED Inhibe el ítem de menú de modo que no puede ser seleccionado, pero no lo oscurece.
MFS_ENABLED Desinhibe el ítem de menú de modo que pueda ser seleccionado. Este es el estado por defecto.
MFS_GRAYED Inhibe el ítem de menú y lo oscurece de modo que no puede ser seleccionado.
MFS_HILITE Resalta el ítem de menú.
MFS_UNCHECKED Quita la marca del ítem de menú. Para más información sobre ítems de menú marcados, ver el miembro hbmpChecked.
MFS_UNHILITE Elimina el resaltado del ítem de menú. Este es el estado por defecto.

wID: valor de 16 bits definido por la aplicación que identifica el ítem de menú. Asignar MIIM_ID a fMask para usar wID.

hSubMenu: manipulador a menú desplegable o submenú asociado con el ítem de menú. Si el ítem de menú no es un ítem que abre un menú desplegable o submenú, este miembro es NULL. Asignar MIIM_SUBMENU a fMask para usar hSubMenu.

hbmpChecked: manipulador al mapa de bits a mostrar junto al ítem si está marcadod. Si este miembro es NULL, se usa el mapa de bits por defecto. Si se especifica el valor de tipo MFT_RADIOCHECK, el mapa de bits por defecto es el círculo. En otro caso, es la marca de verificación. Asignar MIIM_CHECKMARKS a fMask para usar hbmpChecked.

hbmpUnchecked: manipulador al mapa de bits a mostrar junto al ítem si no está marcado. Si este miembro es NULL, no se usa mapa de bits.

dwItemData: valor definido por la aplicación asociado con el ítem de menú. Asignar MIIM_DATA a fMask para usar dwItemData.

dwTypeData: contenido del ítem de menú. El significado de este miembro depende del tipo de ítem de menú: los valores MFT_BITMAP, MFT_SEPARATOR o MFT_STRING; y se usa sólo si se activa la bandera MIIM_TYPE en el miembro fMask.

Para recuperar un ítem de menú de tipo MFT_STRING, primero calcular el tamaño de la cadena asignado NULL al miembro dwTypeData de MENUITEMINFO y llamando a GetMenuItemInfo. El valor de cch+1 es el tamaño necesario. Entonces reservar la memoria necesaria en un búfer, colocar el puntero al búfer en dwTypeData, incrementar cch y llamar a GetMenuItemInfo una vez más para rellenar el búfer con la cadena. Si el ítem de menú a recuperar es de otro tipo, entonce GetMenuItemInfo asigna al miembro dwTypeData el valor adecuado según el valor especificado por el miembro fType.

Cuando se usa con la función SetMenuItemInfo, este miembro suele contener un tipo de valor que se especifica en el miembro fType.

Windows 98/Me y Windows 2000/XP: dwTypeData sólo se usa si el meimbro fMask vale MIIM_STRING.

cch: longitud del texto del ítem de menú, cuando se recibe información sobre el ítem de menú del tipo MFT_STRING. Este valor es cero para otros tipos de ítems de menú. Este miembro se ignora cuando el contenido del ítem de menú es asignado.

Hay que tener en cuenta que antes de llamar a GetMenuItemInfo, la aplicación debe asignar al miembro cch la longitud del búfer apuntado por el miembro dwTypeData. Si el ítem de menú a recuperar es de tipo MFT_STRING (como se indica en el miembro fType), entonces GetMenuItemInfo cambia el valor de cch a la longitud del texto del ítem de menú. Si el ítem de menú a recuperar es de algún otro tipo, GetMenuItemInfo asigna cero al campo cch.

Windows 98/Me, Windows 2000/XP: el meimbro cch se usa cuando se asigna MIIM_STRING al miembro fMask.

hbmpItem: Windows 98/Me, Windows 2000/XP. Manipulador de mapa de bits a mostrar, o puede ser uno de los valores de la siguiente tabla. Se usa si el miembro fMask contiene el valor MIIM_BITMAP.

Valor Significado
HBMMENU_CALLBACK Se muestra un mapa de bits por la ventana a la que pertenece el menú. La aplicación debe procesar los mensajes WM_MEASUREITEM y WM_DRAWITEM.
HBMMENU_MBAR_CLOSE El botón de cerrar para barra de menú.
HBMMENU_MBAR_CLOSE_D El botón de cerrar inhibido para la barra de menú.
HBMMENU_MBAR_MINIMIZE El botón de minimizar para barra de menú.
HBMMENU_MBAR_MINIMIZE_D El botón de minimizar inhibido para barra de menú.
HBMMENU_MBAR_RESTORE El botón de restaurarr para barra de menú.
HBMMENU_POPUP_CLOSE El botón de cerrar para el submenú.
HBMMENU_POPUP_MAXIMIZE El botón de maximizar para el submenú.
HBMMENU_POPUP_MINIMIZE El botón de minimizar para el submenú.
HBMMENU_POPUP_RESTORE El botón de restaurar para el submenú.
HBMMENU_SYSTEM Icono de Windows o el icono de la ventana especificado en dwItemData.

Observaciones

La estructura MENUITEMINFO se usa con las funciones GetMenuItemInfo, InsertMenuItem y SetMenuItemInfo.