menuitem.h

Clase wxMenuItem

Un elemento de menú representa un elemento de un menú.

Jerarquía:

Jerarquía de la clase wxMenuItem

Hay que tener en cuenta que normalmente no hay que tratar con él directamente ya que los métodos de wxMenu normalmente construyen un objeto de esta clase.

También hay que tener en cuenta que los métodos relacionados con fuentes y mapas de bits están actualmente implementados solo para Windows, Mac y GTK+.

Eventos emitidos por esta clase

Las siguientes macros manejadoras de eventos redirigen los eventos a manejadores de funciones miembro 'func' con prototipos como:

void handlerFuncName(wxCommandEvent& event) o void handlerFuncName(wxMenuEvent& event)

Macros para eventos emitidos por esta clase:

EVT_MENU(id, func)
Procesa un comando wxEVT_MENU, que es generado por un elemento de menú. Este tipo de evento se envía como wxCommandEvent.
EVT_MENU_RANGE(id1, id2, func)
Procesa un comando wxEVT_MENU, que es generado por un rango de elementos de menú. Este tipo de evento se envía como wxCommandEvent.
EVT_MENU_OPEN(func)
Un menú está a punto de abrirse. En Windows, esto solo se envía una vez por cada navegación de la barra de menús (hasta que todos los menús se hayan cerrado). Este tipo de evento se envía como wxMenuEvent.
EVT_MENU_CLOSE(func)
Se acaba de cerrar un menú. Este tipo de evento se envía como wxMenuEvent.
EVT_MENU_HIGHLIGHT(id, func)
El elemento de menú con el id especificado ha sido resaltado. Si el id es wxID_NONE, se ha eliminado el resaltado del elemento de menú previamente resaltado y ya no hay ningún elemento resaltado. wxFrame lo utiliza para mostrar mensajes de ayuda en la barra de estado. Este tipo de evento se envía como wxMenuEvent.
EVT_MENU_HIGHLIGHT_ALL(func)
Un elemento de menú ha sido resaltado, es decir, el elemento de menú actualmente seleccionado ha cambiado. Este tipo de evento se envía como wxMenuEvent.

Funciones miembro

wxMenuItem()

wxMenuItem::wxMenuItem( wxMenu * parentMenu = NULL, int id = wxID_SEPARATOR, const wxString & text = wxEmptyString, const wxString & helpString = wxEmptyString, wxItemKind kind = wxITEM_NORMAL, wxMenu * subMenu = NULL )

Construye un objeto wxMenuItem.

Los elementos de menú pueden ser estándar, o "elementos de menú de stock", o personalizados. Para los elementos de menú estándar (como los comandos para abrir un archivo, salir del programa, etc., véase Stock Items para la lista completa) basta con especificar solo el ID de stock y dejar el texto text y helpString vacíos. Algunas plataformas (actualmente solo wxGTK, y véase la observación en la documentación de SetBitmap()) también mostrarán mapas de bits estándar para los elementos de menú de acciones.

Dejar al menos el texto vacío para los elementos de menú estándar es muy recomendable ya que tendrán una apariencia y una interfaz de teclado (incluyendo aceleradores estándar) familiar para el usuario.

Para los elementos de menú personalizados (no stock), el texto debe ser especificado y mientras helpString puede dejarse vacío, se recomienda pasar la descripción del elemento (que se muestra automáticamente por la biblioteca en la barra de estado cuando se selecciona el elemento de menú) en este parámetro.

Por último, hay que tener en cuenta que se puede, por ejemplo, utilizar una etiqueta de menú de stock sin utilizar su cadena de ayuda de stock:

// utilizar todas las propiedades de stock:
helpMenu->Append(wxID_ABOUT);
 
// utilizar la etiqueta de stock y el acelerador de stock, pero no la cadena de ayuda de stock:
helpMenu->Append(wxID_ABOUT, "", "My custom help string");
 
// utilizar todas las propiedades de stock excepto el mapa de bits:
wxMenuItem *mymenu = new wxMenuItem(helpMenu, wxID_ABOUT);
mymenu->SetBitmap(wxArtProvider::GetBitmap(wxART_WARNING));
helpMenu->Append(mymenu);

es decir, las propiedades de las acciones se establecen independientemente unas de otras.

Parámetros
parentMenu
Menú al que pertenece el elemento de menú. Puede ser NULL si el elemento se va a añadir al menú más tarde.
id
Identificador de este elemento de menú. Puede ser wxID_SEPARATOR, en cuyo caso se ignora el tipo dado y se toma como wxITEM_SEPARATOR en su lugar.
text
Texto para el elemento de menú, tal y como se muestra en el menú. Véase SetItemLabel() para más información.
helpString
Cadena de ayuda opcional que se mostrará en la barra de estado.
kind Puede ser wxITEM_SEPARATOR, wxITEM_NORMAL, wxITEM_CHECK o wxITEM_RADIO.
subMenu
Si no es NULL, indica que el elemento de menú es un submenú.
~wxMenuItem()

virtual wxMenuItem::~wxMenuItem()

Destructor

AddExtraAccel()

virtual void wxMenuItem::AddExtraAccel(const wxAcceleratorEntry & accel)

Añade un acelerador adicional para este elemento de menú.

Los aceleradores adicionales no se muestran en la etiqueta del elemento, pero activarán el comando del menú al pulsarlos.

Pueden ser útiles para permitir el uso de múltiples teclas como aceleradores para el mismo comando, por ejemplo WXK_ADD y WXK_NUMPAD_ADD.

Disponibilidad: solo disponible para los ports wxMSW, wxGTK.

Check()

virtual void wxMenuItem::Check(bool check = true)

Activa o desactiva el elemento del menú.

Hay que tener en cuenta que esto solo funciona cuando el elemento ya está añadido a un menú.

ClearExtraAccels()

void wxMenuItem::ClearExtraAccels()

Borra la lista de aceleradores extra.

Esto no afecta al acelerador del elemento principal (si existe).

Enable()

virtual void wxMenuItem::Enable(bool enable = true)

Activa o desactiva la opción de menú.

GetAccel()

virtual wxAcceleratorEntry* wxMenuItem::GetAccel() const

Obtener nuestro acelerador o NULL (quien llama debe borrar el puntero)

GetAccelFromString()

static wxAcceleratorEntry* wxMenuItem::GetAccelFromString(const wxString & label)

Extrae el acelerador de la cadena de menú dada, devuelve NULL si no encuentra ninguno.

GetBackgroundColour()

wxColour& wxMenuItem::GetBackgroundColour() const

Devuelve el color de fondo asociado al elemento del menú.

Disponibilidad: sólo disponible para el puerto wxMSW.

GetBitmap()

wxBitmap wxMenuItem::GetBitmap() const

Devuelve el mapa de bits del elemento.

Este método existe solo por compatibilidad, por favor utilizar GetBitmapBundle() en el nuevo código.

GetBitmap()

wxBitmap wxMenuItem::GetBitmap(bool checked) const

Devuelve el mapa de bits marcado o no marcado.

Esta sobrecarga solo existe en wxMSW, evitar usarla en código portable.

GetBitmapBundle()

wxBitmapBundle wxMenuItem::GetBitmapBundle() const

Devuelve el paquete de mapas de bits que contiene el mapa de bits utilizado para este elemento.

El paquete devuelto no es válido, es decir, está vacío, si no hay ningún mapa de bits asociado al elemento.

GetDisabledBitmap()

virtual wxBitmap wxMenuItem::GetDisabledBitmap() const

Devuelve el mapa de bits utilizado para los elementos desactivados.

Disponibilidad: solo disponible para el port wxMSW.

GetFont()

wxFont& wxMenuItem::GetFont() const

Devuelve la fuente asociada al elemento de menú.

Disponibilidad: solo disponible para el port wxMSW.

GetHelp()

const wxString& wxMenuItem::GetHelp() const

Devuelve la cadena de ayuda asociada al elemento de menú.

GetId()

int wxMenuItem::GetId() const

Devuelve el identificador del elemento de menú.

GetItemLabel()

virtual wxString wxMenuItem::GetItemLabel() const

Devuelve el texto asociado con el elemento de menú, incluyendo cualquier carácter acelerador que se haya pasado al constructor o a SetItemLabel().

GetItemLabelText()

virtual wxString wxMenuItem::GetItemLabelText() const

Devuelve el texto asociado al elemento de menú, sin caracteres aceleradores.

GetKind()

wxItemKind wxMenuItem::GetKind() const

Devuelve el tipo de elemento, uno de wxITEM_SEPARATOR, wxITEM_NORMAL, wxITEM_CHECK o wxITEM_RADIO.

GetLabel()

wxString wxMenuItem::GetLabel() const

Devuelve el texto asociado al elemento de menú sin los caracteres aceleradores que pueda contener.

Obsoleto: Esta función está obsoleta en favor de GetItemLabelText().

GetLabelFromText()

static wxString wxMenuItem::GetLabelFromText(const wxString & text)

Obsoleta: Esta función está obsoleta; utilizar GetLabelText() en su lugar.

GetLabelText()

static wxString wxMenuItem::GetLabelText(const wxString & text)

Elimina todos los caracteres aceleradores y mnemotécnicos del texto dado.

Por ejemplo:

wxMenuItem::GetLabelText("&Hello\tCtrl-h");

devolverá solo "Hola".

GetMarginWidth()

int wxMenuItem::GetMarginWidth() const

Obtiene el ancho del bitmap de la marca de verificación del ítem de menú.

Disponibilidad: solo disponible para el port wxMSW.

GetMenu()

wxMenu* wxMenuItem::GetMenu() const

Devuelve el menú en el que se encuentra este elemento de menú, o NULL si este elemento de menú no está asociado.

GetName()

wxString wxMenuItem::GetName() const

Devuelve el texto asociado al elemento del menú.

Obsoleto: Esta función está obsoleta. Utilizar GetItemLabel() o GetItemLabelText() en su lugar.

GetSubMenu()

wxMenu* wxMenuItem::GetSubMenu() const

Devuelve el submenú asociado al elemento de menú, o NULL si no hay ninguno.

GetText()

const wxString& wxMenuItem::GetText() const

Devuelve el texto asociado al elemento de menú, tal y como fue pasado al constructor de wxMenuItem, es decir, con los caracteres aceleradores que pueda contener.

Obsoleto: Esta función está obsoleta en favor de GetItemLabel().

GetTextColour()

wxColour& wxMenuItem::GetTextColour() const

Devuelve el color del texto asociado al elemento de menú.

Disponibilidad: solo disponible para el port wxMSW.

IsCheck()

bool wxMenuItem::IsCheck() const

Devuelve true si el elemento es un elemento marcable.

A diferencia de IsCheckable() esto no devuelve true para los botones de radio.

IsCheckable()

bool wxMenuItem::IsCheckable() const

Devuelve true si el elemento es marcable.

Hay que tener en cuenta que los botones de radio también se consideran marcables, por lo que este método también devuelve verdadero para ellos. Utilizar IsCheck() si solo se desea comprobar los elementos que se pueden marcar.

IsChecked()

virtual bool wxMenuItem::IsChecked() const

Devuelve true si el elemento está marcado.

IsEnabled()

virtual bool wxMenuItem::IsEnabled() const

Devuelve true si el elemento está activado.

IsRadio()

bool wxMenuItem::IsRadio() const

Devuelve true si el elemento es un botón de radio.

IsSeparator()

bool wxMenuItem::IsSeparator() const

Devuelve true si el elemento es un separador.

IsSubMenu()

bool wxMenuItem::IsSubMenu() const

Devuelve true si el elemento es un submenú.

wxAcceleratorEntry()

virtual void wxMenuItem::SetAccel(wxAcceleratorEntry * accel)

Establecer el accelerador para este elemento - esto también se puede hacer indirectamente con SetText()

SetBackgroundColour()

void wxMenuItem::SetBackgroundColour(const wxColour & colour)

Establece el color de fondo asociado al elemento de menú.

Disponibilidad: solo disponible para el port wxMSW.

SetBitmap()

void wxMenuItem::SetBitmap(const wxBitmapBundle & bmp)

Establece el mapa de bits para el elemento de menú.

hay que tener en cuenta que GTK+ utiliza un ajuste global llamado gtk-menu-images para determinar si las imágenes deben mostrarse en los menús. Si está desactivado (que es el caso, por ejemplo, en Gnome 2.28 por defecto), no se mostrará ninguna imagen, en consonancia con el comportamiento nativo.

SetBitmap()

void wxMenuItem::SetBitmap( const wxBitmapBundle & bmp, bool checked )

Establece el bitmap marcado o no marcado para el elemento de menú.

Es equivalente a wxMenuItem::SetBitmaps(bmp, wxNullBitmap) si checked es true o SetBitmaps(wxNullBitmap, bmp) en caso contrario.

Hay que tener en cuenta que la mayoría de los ports no soportan diferentes mapas de bits para los estados de los elementos marcados y no marcados, mientras que todos soportan la configuración de un único mapa de bits utilizando la sobrecarga anterior.

Disponibilidad: solo disponible para el port wxMSW.

SetBitmaps()

void wxMenuItem::SetBitmaps( const wxBitmapBundle & checked, const wxBitmapBundle & unchecked = wxNullBitmap )

Establece los mapas de bits marcados/desmarcados para el elemento de menú.

El primer bitmap también se utiliza como bitmap único para los elementos de menú no seleccionables.

Disponibilidad: solo disponible para el port wxMSW.

SetDisabledBitmap()

void wxMenuItem::SetDisabledBitmap(const wxBitmapBundle & disabled)

Establece el que se utilizará para los elementos de menú desactivados.

Disponibilidad: solo disponible para el port wxMSW.

SetFont()

void wxMenuItem::SetFont(const wxFont & font)

Establece la fuente asociada al elemento de menú.

Disponibilidad: solo disponible para el port wxMSW.

SetHelp()

void wxMenuItem::SetHelp(const wxString & helpString)

Establece la cadena de ayuda.

SetItemLabel()

virtual void wxMenuItem::SetItemLabel(const wxString & label)

Establece la etiqueta asociada al elemento de menú.

Hay que tener en cuenta que si el ID de este elemento de menú corresponde a un ID de stock, entonces no es necesario especificar una etiqueta: wxWidgets utilizará automáticamente la etiqueta de elemento de stock asociada a ese ID. Ver el constructor para más información.

La cadena de etiquetas para los elementos de menú normales (no separadores) puede incluir el acelerador que se puede utilizar para activar el elemento de menú desde el teclado. Se puede especificar una tecla aceleradora utilizando el carácter ampersand &. Para incrustar un carácter ampersand en el texto del elemento de menú, el ampersand debe estar duplicado.

Opcionalmente, también se puede especificar una cadena aceleradora añadiendo un carácter de tabulación \t seguido de una combinación de teclas válida (por ejemplo, CTRL+V). Su sintaxis general es cualquier combinación de cadenas "CTRL", "RAWCTRL", "ALT" y "SHIFT" (no importa mayúsculas y minúsculas) separadas por caracteres '-' o '+' y seguidas por el acelerador propiamente dicho. Hay que tener en cuenta que CTRL corresponde a la tecla "Ctrl" en la mayoría de las plataformas, pero no en macOS, donde se asigna a la tecla "Cmd" del teclado Mac. Normalmente esto es exactamente lo que se quiere en código portable pero si realmente se necesita usar la tecla (raramente usada para este propósito) "Ctrl" incluso bajo Mac, se puede usar RAWCTRL para evitar este mapeo. Bajo las otras plataformas RAWCTRL es lo mismo que CTRL normal.

El acelerador puede ser cualquier carácter alfanumérico, cualquier tecla de función (de F1 a F12), cualquier tecla de dígitos del teclado numérico que utilice el prefijo KP_ (es decir, de KP_0 a KP_9) o una de las cadenas especiales enumeradas a continuación (de nuevo, no importa el caso) correspondiente al código de tecla especificado:

  • Del o Delete: WXK_DELETE
  • Back: WXK_BACK
  • Ins o Insert: WXK_INSERT
  • Enter o Return: WXK_RETURN
  • PgUp o PageUp: WXK_PAGEUP
  • PgDn o PageDown: WXK_PAGEDOWN
  • Left: WXK_LEFT
  • Right: WXK_RIGHT
  • Up: WXK_UP
  • Down: WXK_DOWN
  • Home: WXK_HOME
  • End: WXK_END
  • Space: WXK_SPACE
  • Tab: WXK_TAB
  • Esc o Escape: WXK_ESCAPE
  • Cancel: WXK_CANCEL
  • Clear: WXK_CLEAR
  • Menu: WXK_MENU
  • Pause: WXK_PAUSE
  • Capital: WXK_CAPITAL
  • Select: WXK_SELECT
  • Print: WXK_PRINT
  • Execute: WXK_EXECUTE
  • Snapshot: WXK_SNAPSHOT
  • Help: WXK_HELP
  • Add: WXK_ADD
  • Separator: WXK_SEPARATOR
  • Subtract: WXK_SUBTRACT
  • Decimal: WXK_DECIMAL
  • Divide: WXK_DIVIDE
  • Num_lock: WXK_NUMLOCK
  • Scroll_lock: WXK_SCROLL
  • KP_Space: WXK_NUMPAD_SPACE
  • KP_Tab: WXK_NUMPAD_TAB
  • KP_Enter: WXK_NUMPAD_ENTER
  • KP_Home: WXK_NUMPAD_HOME
  • KP_Left: WXK_NUMPAD_LEFT
  • KP_Up: WXK_NUMPAD_UP
  • KP_Right: WXK_NUMPAD_RIGHT
  • KP_Down: WXK_NUMPAD_DOWN
  • KP_PageUp: WXK_NUMPAD_PAGEUP
  • KP_PageDown: WXK_NUMPAD_PAGEDOWN
  • KP_Prior: WXK_NUMPAD_PAGEUP
  • KP_Next: WXK_NUMPAD_PAGEDOWN
  • KP_End: WXK_NUMPAD_END
  • KP_Begin: WXK_NUMPAD_BEGIN
  • KP_Insert: WXK_NUMPAD_INSERT
  • KP_Delete: WXK_NUMPAD_DELETE
  • KP_Equal: WXK_NUMPAD_EQUAL
  • KP_Multiply: WXK_NUMPAD_MULTIPLY
  • KP_Add: WXK_NUMPAD_ADD
  • KP_Separator: WXK_NUMPAD_SEPARATOR
  • KP_Subtract: WXK_NUMPAD_SUBTRACT
  • KP_Decimal: WXK_NUMPAD_DECIMAL
  • KP_Divide: WXK_NUMPAD_DIVIDE
  • Windows_Left: WXK_WINDOWS_LEFT
  • Windows_Right: WXK_WINDOWS_RIGHT
  • Windows_Menu: WXK_WINDOWS_MENU
  • Command: WXK_COMMAND

Ejemplos:

m_pMyMenuItem->SetItemLabel("My &item\tCTRL+I");
m_pMyMenuItem2->SetItemLabel("Clean && build\tF7");
m_pMyMenuItem3->SetItemLabel("Simple item");
m_pMyMenuItem4->SetItemLabel("Item with &accelerator");

Nota:En wxGTK usar "SHIFT" con caracteres no alfabéticos actualmente no funciona, incluso en combinación con otros modificadores, debido a la limitación de GTK+. Por ejemplo, Shift+Ctrl+A funciona pero Shift+Ctrl+1 o Shift+/ no, así que evita usar aceleradores de esta forma en código portable.

En wxGTk, las teclas de flecha izquierda/derecha/arriba/abajo no funcionan como teclas aceleradoras de un elemento de menú a menos que se utilice una tecla modificadora. Además, los siguientes códigos de teclas no son compatibles como teclas aceleradoras de menú:

  • WXK_COMMAND/WXK_CONTROL
  • WXK_SHIFT
  • WXK_ALT
  • WXK_SCROLL
  • WXK_CAPITAL
  • WXK_NUMLOCK
  • WXK_NUMPAD_TAB
  • WXK_TAB
  • WXK_WINDOWS_LEFT
  • WXK_WINDOWS_RIGHT
  • WXK_ADD
  • WXK_SEPARATOR
  • WXK_SUBTRACT
  • WXK_DECIMAL
  • WXK_DIVIDE
  • WXK_SNAPSHOT
SetMarginWidth()

void wxMenuItem::SetMarginWidth(int width)

Establece la anchura del bitmap de la marca de verificación del elemento de menú.

Disponibilidad: solo disponible para el port wxMSW.

SetMenu()

void wxMenuItem::SetMenu(wxMenu * menu)

Establece el menú padre que contendrá este elemento de menú.

SetSubMenu()

void wxMenuItem::SetSubMenu(wxMenu * menu)

Establece el submenú de este elemento de menú.

SetText()

virtual void wxMenuItem::SetText(const wxString & text)

Establece el texto asociado al elemento de menú.

Obsoleto: Esta función está obsoleta en favor de SetItemLabel().

SetTextColour()

void wxMenuItem::SetTextColour(const wxColour & colour)

Establece el color del texto asociado al elemento del menú.

Disponibilidad: sólo disponible para el por wxMSW.

Métodos y datos heredados

Esta clase hereda los métodos y datos miembro públicos y protegidos de wxObject.