menu.h

Clase wxMenu

Un menú es una lista desplegable de elementos, uno de los cuales puede seleccionarse antes de que el menú desaparezca (si se hace clic en otro lugar, el menú desaparece).

Jerarquía:

Los menús pueden utilizarse para construir barras de menú o menús emergentes.

Un elemento de menú tiene asociado un identificador entero que se puede utilizar para identificar la selección, o para cambiar el elemento de menú de alguna manera. Un elemento de menú con un identificador especial wxID_SEPARATOR es un elemento separador y no tiene un comando asociado, sino que simplemente hace que aparezca una línea separadora en el menú.

Nota: Hay que tener en cuenta que wxID_ABOUT y wxID_EXIT están predefinidos por wxWidgets y tienen un significado especial, ya que las entradas que utilicen estos IDs se sacarán de los menús normales en macOS y se insertarán en el menú del sistema (siguiendo la directriz de interfaz de macOS correspondiente).

Los elementos de menú pueden ser elementos normales, elementos de verificación o elementos de radio. Los elementos normales no tienen ninguna propiedad especial, mientras que los elementos de verificación tienen una bandera booleana asociada a ellos y muestran una marca de verificación en el menú cuando la bandera está activada. wxWidgets cambia automáticamente el valor de la bandera cuando se hace clic en el elemento y su valor puede ser recuperado utilizando wxMenu::IsChecked método de wxMenu o wxMenuBar o mediante el uso de wxEvent::IsChecked cuando se obtiene la notificación de menú para el elemento en cuestión.

Los elementos de radio son similares a los elementos de verificación, salvo que todos los demás elementos del mismo grupo de radio se desmarcan cuando se marca un elemento de radio. El grupo de radio está formado por un rango contiguo de elementos de radio, es decir, comienza en el primer elemento de este tipo y termina con el primer elemento de un tipo diferente (o el final del menú). hay que tener en cuenta que, dado que los grupos de radio se definen en función de las posiciones de los elementos, la inserción o eliminación de elementos en el menú que contiene los elementos de radio corre el riesgo de no funcionar correctamente.

Estrategia de asignación

Todos los menús deben ser creados en el heap porque todos los menús adjuntos a una barra de menú o a otro menú serán borrados por su padre cuando éste sea borrado. La única excepción a esta regla son los menús emergentes (es decir, los menús utilizados con wxWindow::PopupMenu()) ya que wxWidgets no los destruye para permitir reutilizar el mismo menú más de una vez. Pero la excepción solo se aplica a los propios menús y no a los submenús de los menús emergentes, que son destruidos por wxWidgets como de costumbre y por lo tanto deben ser asignados a la pila.

Como la barra de menús del marco es borrada por el propio marco, significa que normalmente todos los menús utilizados son borrados automáticamente.

Gestión de eventos

Los manejadores de eventos para los comandos generados por los elementos del menú pueden conectarse directamente al propio objeto menú utilizando wxEvtHandler::Bind(). Si este menú es un submenú de otro, los eventos de sus elementos también pueden ser procesados en el menú padre y así sucesivamente, de forma recursiva.

Si el menú forma parte de una barra de menús, los eventos también pueden ser tratados en el objeto wxMenuBar.

Finalmente, los eventos del menú también pueden ser gestionados en la ventana asociada, que puede ser el wxFrame asociado con la barra de menú a la que pertenece este menú o la ventana para la que se llamó a wxWindow::PopupMenu() para los menús emergentes.

Ver Manejo Dinámico de Eventos para saber cómo vincular manejadores de eventos a los distintos objetos.

Funciones miembro

wxMenu()

wxMenu::wxMenu()

Construye un objeto wxMenu.

wxMenu()

wxMenu::wxMenu(long style)

Construye un objeto wxMenu.

Parámetros
style
Si se establece a wxMENU_TEAROFF, el menú será desmontable (solo wxGTK y wxQT).
wxMenu()

wxMenu::wxMenu( const wxString & title, long style = 0 )

Construye un objeto wxMenu con un título.

Parámetros
title
Título en la parte superior del menú (no siempre soportado).
style
Si se establece a wxMENU_TEAROFF, el menú será desmontable (sólo wxGTK y wxQT).
~wxMenu()

virtual wxMenu::~wxMenu()

Destructor, que destruye el menú.

Nota: En Motif, un menú emergente debe tener un padre válido (la ventana en la que apareció por última vez) cuando se destruye. Por lo tanto, asegúrese de eliminar o reutilizar el menú emergente antes de destruir la ventana padre. La reutilización en este contexto significa abrir el menú en una ventana distinta de la última vez, lo que provoca una destrucción y recreación implícitas de las estructuras de datos internas.

Append()

wxMenuItem* wxMenu::Append( int id, const wxString & item, wxMenu * subMenu, const wxString & helpString = wxEmptyString )

Añade un submenú.

Obsoleto

Esta función está obsoleta, utilizar AppendSubMenu() en su lugar.

Parámetros
id
El identificador del comando de menú.
item
La cadena que aparecerá en el elemento del menú.
subMenu
Submenú desplegable a la derecha.
helpString
Cadena de ayuda opcional asociada al elemento. Por defecto, el manejador del evento wxEVT_MENU_HIGHLIGHT muestra esta cadena en la línea de estado.
Append()

wxMenuItem* wxMenu::Append( int id, const wxString & item = wxEmptyString, const wxString & helpString = wxEmptyString, wxItemKind kind = wxITEM_NORMAL )

Añade un elemento de menú.

Parámetros
id
El identificador del comando de menú. Consultar Identificadores de ventana para obtener más información sobre los identificadores (se aplican las mismas consideraciones a los identificadores de ventana y de elemento de menú).
item
La cadena que aparecerá en el elemento de menú. Ver wxMenuItem::SetItemLabel() para más detalles.
helpString
Cadena de ayuda opcional asociada al elemento. Por defecto, el manejador del evento wxEVT_MENU_HIGHLIGHT muestra esta cadena en la línea de estado.
kind
Puede ser wxITEM_SEPARATOR, wxITEM_NORMAL, wxITEM_CHECK o wxITEM_RADIO.

Ejemplo:

m_pFileMenu->Append(ID_NEW_FILE, "&New file\tCTRL+N", "Creates a new XYZ document");

o incluso mejor para los elementos de menú de stock (véase wxMenuItem::wxMenuItem):

m_pFileMenu->Append(wxID_NEW, "", "Creates a new XYZ document");
Observaciones

Este comando puede utilizarse después de que se haya mostrado el menú, así como en la creación inicial de un menú o una barra de menús.

Append()

wxMenuItem* wxMenu::Append(wxMenuItem * menuItem)

Añade un objeto de menú.

Esta es la variante más genérica del método Append() porque puede utilizarse tanto para ítems (incluyendo separadores) como para submenús y porque también puede especificar varias propiedades extra de un ítem de menú de esta forma, como mapas de bits y fuentes.

Parámetros
menuItem
Un objeto menuitem. Será propiedad del objeto wxMenu después de llamar a esta función, así que no hay que borrarlo.
Observaciones

Ver los comentarios para las otras sobrecargas de Append().

AppendCheckItem()

wxMenuItem* wxMenu::AppendCheckItem( int id, const wxString & item, const wxString & help = wxEmptyString )

Añade un elemento seleccionable al final del menú.

AppendRadioItem()

wxMenuItem* wxMenu::AppendRadioItem( int id, const wxString & item, const wxString & help = wxEmptyString )

Añade un elemento de opción al final del menú.

Todos los elementos de opción consecuentes forman un grupo y, cuando se marca un elemento del grupo, todos los demás se desmarcan automáticamente.

Nota: Los elementos de radio no son compatibles con wxMotif.

AppendSeparator()

wxMenuItem* wxMenu::AppendSeparator()

Añade un separador al final del menú.

AppendSubMenu()

wxMenuItem* wxMenu::AppendSubMenu( wxMenu * submenu, const wxString & text, const wxString & help = wxEmptyString )

Añade el submenú dado a este menú.

text es el texto que se muestra en el menú correspondiente y help es la cadena de ayuda que se muestra en la barra de estado cuando se selecciona el elemento del submenú.

Attach()

virtual void wxMenu::Attach(wxMenuBar * menubar)

?

Break()

virtual void wxMenu::Break()

Inserta una ruptura en un menú, haciendo que el siguiente elemento añadido aparezca en una nueva columna.

Esta función solo inserta una ruptura en wxMSW y no hace nada en las demás plataformas.

Check()

void wxMenu::Check( int id, bool check )

Comprueba o desactiva el elemento del menú.

Parámetros
id
Identificador del elemento de menú.
check
Si es true, el elemento se marcará, si no, se desmarcará.
Delete()

bool wxMenu::Delete(int id)

Elimina el elemento del menú.

Si el elemento es un submenú, no se borrará. Utilizar Destroy() si se desea eliminar un submenú.

Parámetros
id
Id del ítem de menú a borrar.
Delete()

bool wxMenu::Delete(wxMenuItem * item)

Elimina el elemento del menú.

Si el elemento es un submenú, no se borrará. Utilizar Destroy() si se desea eliminar un submenú.

Parámetros
item
Elemento de menú a eliminar.
Destroy()

bool wxMenu::Destroy(int id)

Elimina el elemento del menú.

Si el elemento es un submenú, se eliminará. Utilizar Remove() si se desea conservar el submenú (por ejemplo, para reutilizarlo más adelante).

Parámetros
id
Id del elemento de menú que se va a eliminar.
Destroy()

bool wxMenu::Destroy(wxMenuItem * item)

Elimina el elemento del menú.

Si el elemento es un submenú, se eliminará. Utilizar Remove() si se desea conservar el submenú (por ejemplo, para reutilizarlo más adelante).

Parámetros
item
Elemento de menú que desea borrar.
Detach()

virtual void wxMenu::Detach()

?

Enable()

void wxMenu::Enable( int id, bool enable )

Activa o desactiva (oscurece) un elemento del menú.

Parámetros
id
Identificador del elemento de menú.
enable
true para activar el elemento de menú, false para desactivarlo.
FindChildItem()

wxMenuItem* wxMenu::FindChildItem( int id, size_t * pos = NULL ) const

Busca el objeto de elemento de menú asociado con el identificador de elemento de menú dado y, opcionalmente, la posición del elemento en el menú.

A diferencia de FindItem(), esta función no es recursiva, sino que solo busca en los hijos directos de este menú.

Parámetros
id
El identificador del elemento de menú a buscar.
pos
Si el puntero no es NULL, se rellena con la posición del elemento si se ha encontrado o (size_t)wxNOT_FOUND en caso contrario.
FindItem()

virtual int wxMenu::FindItem(const wxString & itemString) const

Busca el id de menú para una cadena de elemento de menú.

Parámetros
itemString
Cadena de elementos de menú a buscar.
Valor de retorno

Identificador del elemento de menú, o wxNOT_FOUND si no se encuentra ninguno.

FindItem()

wxMenuItem* wxMenu::FindItem( int id, wxMenu ** menu = NULL ) const

Busca el objeto de elemento de menú asociado al identificador de elemento de menú dado y, opcionalmente, el (sub)menú al que pertenece.

Parámetros
id
Identificador del elemento de menú.
menu
Si el puntero no es NULL, se rellenará con el menú padre del elemento (si se ha encontrado el elemento).
Valor de retorno

Objeto de menú o NULL si no se encuentra ninguno.

FindItemByPosition()

wxMenuItem* wxMenu::FindItemByPosition(size_t position) const

Devuelve el wxMenuItem dada una posición en el menú.

GetHelpString()

virtual wxString wxMenu::GetHelpString(int id) const

Devuelve la cadena de ayuda asociada a un elemento del menú.

Parámetros
id
Identificador del elemento de menú.
Valor de retorno

La cadena de ayuda, o la cadena vacía si no hay cadena de ayuda o no se encontró el elemento.

GetInvokingWindow()
GetLabel()

wxString wxMenu::GetLabel(int id) const

Devuelve la etiqueta de un elemento de menú.

Parámetros
id
El identificador del elemento de menú.
Valor de retorno

La etiqueta del elemento, o una cadena vacía si no se encuentra el elemento.

GetLabelText()

wxString wxMenu::GetLabelText(int id) const

Devuelve la etiqueta de un elemento de menú, sin ninguno de los mnemónicos y aceleradores originales.

Parámetros
id
El identificador del elemento de menú.
Valor de retorno

La etiqueta del elemento, o una cadena vacía si no se encuentra el elemento.

GetMenuItemCount()

size_t wxMenu::GetMenuItemCount() const

Devuelve el número de elementos del menú.

GetMenuItems()

wxMenuItemList& wxMenu::GetMenuItems()

Devuelve la lista de elementos del menú.

wxMenuItemList es una clase de lista pseudo-plantilla que contiene punteros wxMenuItem, ver wxList.

GetMenuItems()

const wxMenuItemList& wxMenu::GetMenuItems() const

Devuelve la lista de elementos del menú.

wxMenuItemList es una clase de lista pseudo-plantilla que contiene punteros wxMenuItem, ver wxList.

GetParent()

wxMenu* wxMenu::GetParent() const

?

GetStyle()

long wxMenu::GetStyle() const

?

GetTitle()

const wxString& wxMenu::GetTitle() const

Devuelve el título del menú.

GetWindow()

wxWindow* wxMenu::GetWindow() const

?

Insert()

wxMenuItem* wxMenu::Insert( size_t pos, int id, const wxString & item = wxEmptyString, const wxString & helpString = wxEmptyString, wxItemKind kind = wxITEM_NORMAL )

Inserta el elemento dado antes de la posición pos.

Insertar el elemento en la posición GetMenuItemCount() es lo mismo que añadirlo.

Insert()

wxMenuItem* wxMenu::Insert( size_t pos, int id, const wxString & text, wxMenu * submenu, const wxString & help = wxEmptyString )

Inserta el submenú dado antes de la posición pos.

text es el texto que se muestra en el menú correspondiente y help es la cadena de ayuda que se muestra en la barra de estado cuando se selecciona el elemento del submenú.

Insert()

wxMenuItem* wxMenu::Insert( size_t pos, wxMenuItem * menuItem )

Inserta el elemento dado antes de la posición pos.

Insertar el elemento en la posición GetMenuItemCount() es lo mismo que añadirlo.

InsertCheckItem()

wxMenuItem* wxMenu::InsertCheckItem( size_t pos, int id, const wxString & item, const wxString & helpString = wxEmptyString )

Inserta un elemento marcable en la posición dada.

InsertRadioItem()

wxMenuItem* wxMenu::InsertRadioItem( size_t pos, int id, const wxString & item, const wxString & helpString = wxEmptyString )

Inserta un elemento de radio en la posición dada.

InsertSeparator()

wxMenuItem* wxMenu::InsertSeparator(size_t pos)

Inserta un separador en la posición dada.

IsAttached()

bool wxMenu::IsAttached() const

?

IsChecked()

bool wxMenu::IsChecked(int id) const

Determina si un elemento del menú está marcado.

Parámetros
id
El identificador del elemento de menú.
Valor de retorno

true si el elemento de menú está marcado, false en caso contrario.

IsEnabled()

bool wxMenu::IsEnabled(int id) const

Determina si un elemento del menú está activado.

Parámetros
id
El identificador del elemento de menú.
Valor de retorno

true si el elemento de menú está habilitado, false en caso contrario.

MSWCommand()

virtual bool wxMenu::MSWCommand( WXUINT param, WXWORD id )

Permite manejar mensajes nativos MSW de comando de menú.

Esta es una función de bajo nivel que permite manejar mensajes MSW WM_COMMAND generados cuando se seleccionan elementos del menú. Es particularmente útil para los menús emergentes, ya que el manejo específico puede definirse en una clase derivada de wxMenu directamente, en lugar de en la clase propietaria derivada de wxWindow.

La versión de la clase base de esta función genera eventos de comando wxEVT_MENU.

Parámetros
param
El parámetro del comando MSW.
id
El id del comando.
Valor de retorno

true si el comando fue manejado, false en caso contrario.

Disponibilidad: solo disponible para el port wxMSW.

Prepend()

wxMenuItem* wxMenu::Prepend( int id, const wxString & item = wxEmptyString, const wxString & helpString = wxEmptyString, wxItemKind kind = wxITEM_NORMAL )

Inserta el elemento dado en la posición 0, es decir, antes de todos los demás elementos existentes.

Prepend()

wxMenuItem* wxMenu::Prepend( int id, const wxString & text, wxMenu * submenu, const wxString & help = wxEmptyString )

Inserta el submenú dado en la posición 0.

Prepend()

wxMenuItem* wxMenu::Prepend(wxMenuItem * item)

Inserta el elemento dado en la posición 0, es decir, antes de todos los demás elementos existentes.

PrependCheckItem()

wxMenuItem* wxMenu::PrependCheckItem( int id, const wxString & item, const wxString & helpString = wxEmptyString )

Inserta un elemento marcable en la posición 0.

PrependRadioItem()

wxMenuItem* wxMenu::PrependRadioItem( int id, const wxString & item, const wxString & helpString = wxEmptyString )

Inserta un elemento de radio en la posición 0.

PrependSeparator()

wxMenuItem* wxMenu::PrependSeparator()

Inserta un separador en la posición 0.

Remove()

wxMenuItem* wxMenu::Remove(int id)

Elimina el elemento del menú pero no borra el objeto C++ asociado.

Esto le permite reutilizar el mismo elemento más tarde añadiéndolo de nuevo al menú (especialmente útil con submenús).

Parámetros
id
El identificador del elemento de menú que se va a eliminar.
Valor de retorno

Un puntero al elemento que se ha eliminado del menú.

Remove()

wxMenuItem* wxMenu::Remove(wxMenuItem* item)

Elimina el elemento del menú pero no borra el objeto C++ asociado.

Esto le permite reutilizar el mismo elemento más tarde añadiéndolo de nuevo al menú (especialmente útil con submenús).

Parámetros
item
El ítem de menú a eliminar.
Valor de retorno

Un puntero al elemento que se ha eliminado del menú.

SetHelpString()

virtual void wxMenu::SetHelpString( int id, const wxString & helpString )

Establece la cadena de ayuda de un elemento.

Parámetros
id
Identificador del elemento de menú.
helpString
La cadena de ayuda a establecer.
SetInvokingWindow()

void wxMenu::SetInvokingWindow(wxWindow * win)

?

SetLabel()

void wxMenu::SetLabel( int id, const wxString & label )

Establece la etiqueta de un elemento de menú.

Parámetros
id
Identificador del elemento de menú.
label
La etiqueta del elemento de menú que se va a establecer.
SetParent()

void wxMenu::SetParent(wxMenu * parent)

?

SetTitle()

virtual void wxMenu::SetTitle(const wxString & title)

Establece el título del menú.

Parámetros
title
El título a establecer.
Observaciones

Hay que tener en cuenta que solo puede llamar a este método directamente para los menús emergentes, para cambiar el título de un menú que forma parte de una barra de menús es necesario utilizar wxMenuBar::SetLabelTop().

UpdateUI()

void wxMenu::UpdateUI(wxEvtHandler * source = NULL)

Actualiza el estado de todos los elementos del menú, recursivamente, generando eventos wxEVT_UPDATE_UI para ellos.

Esta es una función interna de wxWidgets y normalmente no debería ser llamada desde fuera de la librería. Si se llama, el argumento source no debe ser utilizado, es obsoleto y solo existe para compatibilidad con versiones anteriores.

Métodos y datos heredados

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