Clase wxFrame
Jerarquía:

Un marco (frame) es una ventana cuyo tamaño y posición pueden (normalmente) ser modificados por el usuario.
Suele tener bordes gruesos y una barra de título, y puede contener opcionalmente una barra de menú, una barra de herramientas y una barra de estado. Un marco puede contener cualquier ventana que no sea un marco o un cuadro de diálogo.
Un marco que tiene una barra de estado y una barra de herramientas, creadas mediante las funciones CreateStatusBar() y CreateToolBar(), gestiona estas ventanas y ajusta el valor devuelto por GetClientSize() para reflejar el tamaño restante disponible para las ventanas de la aplicación.
Si se va a utilizar un marco como formulario de entrada, los controles no deben crearse como sus hijos. En su lugar, debe crearse un wxPanel como único hijo del marco, sirviendo como padre de los controles reales (el marco dimensionará el panel para que siempre llene su área de cliente). Esto asegurará que el tabulador entre los controles funcione y que el fondo del marco tenga el color esperado. Además, como un marco es por defecto redimensionable, podría ser mejor utilizar wxScrolledWindow en lugar de wxPanel, para asegurarse de que los controles son fácilmente accesibles independientemente del tamaño del marco. Sin embargo, por favor, se debe considerar si no sería mejor utilizar wxDialog en lugar de wxFrame, donde el uso de un panel como este no es necesario y wxDialog también ofrece otros beneficios como la creación de sizers especializados (por ejemplo, para los botones, con su orden correcto para la plataforma).
Una aplicación debería normalmente definir un manejador wxCloseEvent para que el marco responda a los eventos de cierre del sistema, por ejemplo para que los datos relacionados y las subventanas puedan ser limpiados.
Procesamiento de eventos por defecto
wxFrame procesa los siguientes eventos:
- wxEVT_SIZE: si el marco tiene exactamente una ventana hija, sin contar el estado y la barra de herramientas, esta hija se redimensiona para ocupar toda el área cliente del marco. Si hay dos o más ventanas, deben ser distribuidas explícitamente, ya sea manejando manualmente wxEVT_SIZE o utilizando sizers.
- wxEVT_MENU_HIGHLIGHT: la implementación por defecto muestra la cadena de ayuda asociada al elemento seleccionado en el primer panel de la barra de estado, si existe.
Estilos
Esta clase admite los siguientes estilos:
- wxDEFAULT_FRAME_STYLE:
- Definido como wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxRESIZE_BORDER | wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX | wxCLIP_CHILDREN.
- wxICONIZE:
- Muestra el marco iconizado (minimizado). Sólo para Windows.
- wxCAPTION:
- Pone un título en el marco. Hay que tener en cuenta que esta bandera es necesaria para wxMINIMIZE_BOX, wxMAXIMIZE_BOX y wxCLOSE_BOX en la mayoría de los sistemas, ya que los botones correspondientes no se pueden mostrar si la ventana no tiene barra de título. Es decir, si no se especifica wxCAPTION estos estilos simplemente se ignorarán.
- wxMINIMIZE:
- Idéntico a wxICONIZE. Sólo para Windows.
- wxMINIMIZE_BOX:
- Muestra una caja de minimización en el marco.
- wxMAXIMIZE:
- Muestra el marco maximizado. Sólo para Windows y GTK+.
- wxMAXIMIZE_BOX:
- Muestra una caja de maximización en el marco. Nótese que bajo wxGTK wxRESIZE_BORDER debe ser usado también o este estilo es ignorado.
- wxCLOSE_BOX:
- Muestra una caja de cierre en el marco.
- wxSTAY_ON_TOP:
- Permanece encima de todas las demás ventanas, ver también wxFRAME_FLOAT_ON_PARENT.
- wxSYSTEM_MENU:
- Muestra un menú de sistema que contiene la lista de varios comandos de Windows en la barra de título de la ventana. A diferencia de los estilos wxMINIMIZE_BOX, wxMAXIMIZE_BOX y wxCLOSE_BOX este estilo puede ser utilizado sin wxCAPTION, al menos bajo Windows, y hace que el menú del sistema esté disponible sin mostrarlo en pantalla en este caso. Sin embargo, se recomienda utilizarlo únicamente junto con wxCAPTION para obtener un comportamiento coherente en todas las plataformas.
- wxRESIZE_BORDER:
- Muestra un borde redimensionable alrededor de la ventana.
- wxFRAME_TOOL_WINDOW:
- Hace que se cree un marco con una pequeña barra de título; el marco no aparece en la barra de tareas bajo Windows o GTK+.
- wxFRAME_NO_TASKBAR:
- Crea un marco normal, pero no aparece en la barra de tareas bajo Windows o GTK+ (tenga en cuenta que se minimizará a la ventana del escritorio bajo Windows, lo que puede parecer extraño a los usuarios y por lo tanto podría ser mejor utilizar este estilo sólo sin el estilo wxMINIMIZE_BOX). En wxGTK, la bandera sólo se respeta si el gestor de ventanas soporta la sugerencia _NET_WM_STATE_SKIP_TASKBAR.
- wxFRAME_FLOAT_ON_PARENT:
- El marco siempre estará encima de su padre (a diferencia de wxSTAY_ON_TOP). Un marco creado con este estilo debe tener un padre no NULL.
- wxFRAME_SHAPED:
- A las ventanas con este estilo se les permite cambiar su forma con el método SetShape().
El estilo de marco por defecto es para marcos normales y redimensionables. Para crear un marco que no pueda ser redimensionado por el usuario, puede utilizar la siguiente combinación de estilos:
wxDEFAULT_FRAME_STYLE & ~(wxRESIZE_BORDER | wxMAXIMIZE_BOX)
Véase también estilos de ventana.
Estilos extra
Esta clase admite los siguientes estilos adicionales:
- wxFRAME_EX_CONTEXTHELP:
- En Windows, pone un botón de consulta en la leyenda. Cuando se pulsa, Windows entrará en un modo de ayuda sensible al contexto y wxWidgets enviará un evento wxEVT_HELP si el usuario hizo clic en una ventana de la aplicación. Hay que tener en cuenta que este es un estilo extendido y debe establecerse llamando a SetExtraStyle antes de llamar a Create (construcción en dos pasos). No puede utilizar este estilo junto con wxMAXIMIZE_BOX o wxMINIMIZE_BOX, por lo que debe utilizar wxDEFAULT_FRAME_STYLE ~ (wxMINIMIZE_BOX | wxMAXIMIZE_BOX) para los marcos que tengan este estilo (los cuadros de diálogo no tienen un cuadro de minimizar o maximizar por defecto).
- wxFRAME_EX_METAL:
- En macOS, los marcos con este estilo se mostrarán con un aspecto metálico. Este es un estilo extra.
Eventos emitidos por esta clase
Macros para eventos emitidos por esta clase:
- EVT_CLOSE(func):
- Procesa un evento wxEVT_CLOSE_WINDOW cuando el marco está siendo cerrado por el usuario o mediante programación (ver wxWindow::Close). El usuario puede generar este evento pulsando el botón de cerrar (típicamente la 'X' en la parte superior derecha de la barra de título) si está presente (ver el estilo wxCLOSE_BOX). Ver wxCloseEvent.
- EVT_ICONIZE(func):
- Procesa un evento wxEVT_ICONIZE. Ver wxIconizeEvent.
- EVT_MENU_OPEN(func):
- Un menú está a punto de abrirse. VerwxMenuEvent.
- EVT_MENU_CLOSE(func):
- Un menú se acaba de cerrar. Ver wxMenuEvent.
- EVT_MENU_HIGHLIGHT(id, func):
- El elemento de menú con el id especificado ha sido resaltado: utilizado para mostrar avisos de ayuda en la barra de estado por wxFrame. Ver wxMenuEvent.
- EVT_MENU_HIGHLIGHT_ALL(func):
- Se ha resaltado un elemento de menú, es decir, ha cambiado el elemento de menú seleccionado actualmente. Ver wxMenuEvent.
Funciones miembro públicas
wxFrame()
wxFrame::wxFrame()
Constructor por defecto.
wxFrame()
wxFrame::wxFrame(wxWindow * parent, wxWindowID id, const wxString & title, const wxPoint & pos = wxDefaultPosition, const wxSize & size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString & name = wxFrameNameStr )
Constructor, creando la ventana.
Parámetros
- parent
- La ventana padre. Puede ser, y a menudo es, NULL. Si no es NULL, el marco se minimizará cuando se minimice su padre y se restaurará cuando se restaure (aunque seguirá siendo posible minimizar y restaurar sólo este marco).
- id
- Identificador de la ventana. Puede tomar el valor -1 para indicar un valor por defecto.
- title
- El título que se mostrará en la barra de título del marco.
- pos
- La posición de la ventana. El valor wxDefaultPosition indica una posición por defecto, elegida por el sistema de ventanas o por wxWidgets, dependiendo de la plataforma.
- size
- El tamaño de la ventana. El valor wxDefaultSize indica un tamaño por defecto, elegido por el sistema de ventanas o por wxWidgets, dependiendo de la plataforma.
- style
- El estilo de la ventana. Ver descripción de la clase wxFrame.
- name
- El nombre de la ventana. Este parámetro se utiliza para asociar un nombre al elemento, permitiendo al usuario de la aplicación establecer valores de recursos Motif para ventanas individuales.
Observaciones
En el caso de Motif, MWM (el gestor de ventanas de Motif) debe estar ejecutándose para que funcione cualquier estilo de ventana (de lo contrario, todos los estilos tienen efecto).
~wxFrame()
virtual wxFrame::~wxFrame()
Destruye todas las ventanas hijas y la barra de menú si está presente.
Centre()
void wxFrame::Centre(int direction = wxBOTH)
Centra el marco en la pantalla.
Parámetros
- dirección
- El parámetro puede ser wxHORIZONTAL, wxVERTICAL o wxBOTH.
Create()
bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString & title, const wxPoint & pos = wxDefaultPosition, const wxSize & size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString & name = wxFrameNameStr )
Se utiliza en la construcción de marcos en dos pasos.
Ver el constructor wxFrame() para más detalles.
CreateStatusBar()
virtual wxStatusBar* wxFrame::CreateStatusBar( int number = 1, long style = wxSTB_DEFAULT_STYLE, wxWindowID id = 0, const wxString & name = wxStatusBarNameStr )
Crea una barra de estado en la parte inferior del marco.
Parámetros
- number
- El número de campos a crear. Especificar un valor superior a 1 para crear una barra de estado con varios campos.
- style
- El estilo de la barra de estado. Ver wxStatusBar para una lista de estilos válidos.
- id
- El identificador de la ventana de la barra de estado. Si -1, un identificador será elegido por wxWidgets.
- name
- El nombre de la ventana de la barra de estado.
Valor de retorno
Un puntero a la barra de estado si se ha creado correctamente, NULL en caso contrario.
Observaciones
La anchura de la barra de estado es toda la anchura del marco (ajustada automáticamente al redimensionar), y la altura y el tamaño del texto son elegidos por el sistema de ventanas anfitrión.
Ver también
CreateToolBar()
virtual wxToolBar* wxFrame::CreateToolBar( long style = wxTB_DEFAULT_STYLE, wxWindowID id = wxID_ANY, const wxString & name = wxToolBarNameStr )
Crea una barra de herramientas en la parte superior o izquierda del marco.
Parámetros
- style
- El estilo de la barra de herramientas. Ver wxToolBar para una lista de estilos válidos.
- id
- El identificador de la ventana de la barra de herramientas. Si -1, un identificador será elegido por wxWidgets.
- name
- El nombre de la ventana de la barra de herramientas.
Valor de retorno
Un puntero a la barra de herramientas si se ha creado correctamente, NULL en caso contrario.
Observaciones
Por defecto, la barra de herramientas es una instancia de wxToolBar. Para utilizar una clase diferente, anular OnCreateToolBar(). Cuando se ha creado una barra de herramientas con esta función, o se ha dado a conocer al marco con wxFrame::SetToolBar(), el marco gestionará la posición de la barra de herramientas y ajustará el valor de retorno de wxWindow::GetClientSize() para reflejar el espacio disponible para las ventanas de la aplicación. En Pocket PC, debería utilizar siempre esta función para crear la barra de herramientas que gestionará el marco, de forma que wxWidgets pueda utilizar una barra de herramientas y una barra de menús combinadas. Cuando se gestionen barras de herramientas propias, crear una wxToolBar como de costumbre.
Ver también
CreateStatusBar(), OnCreateToolBar(), SetToolBar(), GetToolBar().
DoGiveHelp()
virtual void wxFrame::DoGiveHelp( const wxString & text, bool show )
Método utilizado para mostrar la ayuda del elemento seleccionado en la barra de herramientas.
Este método es llamado por el manejador de eventos por defecto wxEVT_MENU_HIGHLIGHT y también por wxToolBar para mostrar la cadena de ayuda opcional asociada con el elemento seleccionado del menú o de la barra de herramientas. Puede anularse si el comportamiento por defecto de mostrar esta cadena en la barra de estado del marco no es apropiado.
Parámetros
- text
- La cadena de ayuda a mostrar, puede estar vacía. La implementación por defecto simplemente muestra esta cadena en la barra de estado del marco (después de recordar su texto anterior para restaurarlo más tarde).
- show
- Si la ayuda debe mostrarse u ocultarse. La implementación por defecto restaura el texto de la barra de estado previamente guardado cuando es falso.
Ver también
GetClientAreaOrigin()
virtual wxPoint wxFrame::GetClientAreaOrigin() const
Devuelve el origen del área cliente del marco (en coordenadas cliente).
Puede ser diferente de (0, 0) si el marco tiene una barra de herramientas.
Reimplementado de wxWindow.
GetMenuBar()
virtual wxMenuBar* wxFrame::GetMenuBar() const
Devuelve un puntero a la barra de menú asociada actualmente al marco (si existe).
Ver también
GetStatusBar()
virtual wxStatusBar* wxFrame::GetStatusBar() const
Devuelve un puntero a la barra de estado asociada actualmente al marco (si existe).
Ver también
GetStatusBarPane()
int wxFrame::GetStatusBarPane() const
Devuelve el panel de la barra de estado utilizado para mostrar la ayuda del menú y de la barra de herramientas.
Ver también
GetToolBar()
virtual wxToolBar* wxFrame::GetToolBar() const
Devuelve un puntero a la barra de herramientas asociada actualmente al marco (si existe).
Ver también
OnCreateStatusBar()
virtual wxStatusBar* wxFrame::OnCreateStatusBar( int number, long style, wxWindowID id, const wxString & name )
Función virtual llamada cuando una barra de estado es solicitada por CreateStatusBar().
Parámetros
- number
- El número de campos a crear.
- style
- El estilo de la ventana. Ver wxStatusBar para una lista de estilos válidos.
- id
- El identificador de la ventana. Si es -1, wxWidgets elegirá un identificador.
- name
- El nombre de la ventana.
Valor de retorno
Un objeto barra de estado.
Observaciones
Una aplicación puede sobreescribir esta función para devolver un tipo diferente de barra de estado. La implementación por defecto devuelve una instancia de wxStatusBar.
Ver también
OnCreateToolBar()
virtual wxToolBar* wxFrame::OnCreateToolBar( long style, wxWindowID id, const wxString & name )
Función virtual llamada cuando una barra de herramientas es solicitada por CreateToolBar().
Parámetros
- style
- El estilo de la barra de herramientas. Ver wxToolBar para una lista de estilos válidos.
- id
- El identificador de la ventana de la barra de herramientas. Si es -1, wxWidgets elegirá un identificador.
- name
- El nombre de la ventana de la barra de herramientas.
Valor de retorno
Un objeto barra de herramientas.
Observaciones
Una aplicación puede sobrescribir esta función para devolver un tipo diferente de barra de herramientas. La implementación por defecto devuelve una instancia de wxToolBar.
Ver también
ProcessCommand()
bool wxFrame::ProcessCommand(int id)
Simula un comando de menú.
Parámetros
- id
- El identificador de un elemento de menú.
SetMenuBar()
virtual void wxFrame::SetMenuBar(wxMenuBar * menuBar)
Indica al marco que muestre la barra de menú dada.
Parámetros
- menuBar
- La barra de menú a asociar con el marco.
Observaciones
Si el marco se destruye, la barra de menú y sus menús también se destruirán, así que no se debe eliminar la barra de menú explícitamente (excepto restableciendo la barra de menú del marco a otro marco o a NULL). En Windows, se genera un evento de tamaño, así que hay que asegurarse de inicializar correctamente los miembros de datos antes de llamar a SetMenuBar(). Hay que tener en cuenta que en algunas plataformas, no es posible llamar a esta función dos veces para el mismo objeto marco.
Ver también
GetMenuBar(), wxMenuBar, wxMenu.
Reimplementado en wxAuiMDIParentFrame.
SetStatusBar()
virtual void wxFrame::SetStatusBar(wxStatusBar * statusBar)
Asocia una barra de estado al marco.
Si statusBar es NULL, la barra de estado, si está presente, se separa del marco, pero no se borra.
Ver también
SetStatusBarPane()
void wxFrame::SetStatusBarPane(int n)
Establece el panel de la barra de estado utilizado para mostrar la ayuda de los menús y de la barra de herramientas.
Con -1 se desactiva la ayuda.
SetStatusText()
virtual void wxFrame::SetStatusText( const wxString & text, int number = 0 )
Establece el texto de la barra de estado y actualiza su visualización.
Esta es una simple envoltura para wxStatusBar::SetStatusText() que no hace nada si el marco no tiene barra de estado, es decir, GetStatusBar() devuelve NULL.
Parámetros
- text
- El texto para el campo de estado.
- number
- El campo de estado (empezando por cero).
Observaciones
Utilizar una cadena vacía para borrar la barra de estado.
Ver también
SetStatusWidths()
virtual void wxFrame::SetStatusWidths( int n, const int * widths_field )
Establece la anchura de los campos de la barra de estado.
Parámetros
- n
- El número de campos de la barra de estado. Debe ser el mismo utilizado en CreateStatusBar.
- widths_field
- Debe contener una matriz de n enteros, cada uno de los cuales es un ancho de campo de estado en píxeles. Un valor de -1 indica que el campo es de anchura variable; al menos un campo debe ser -1. Se debe borrar esta matriz después de llamar a SetStatusWidths().
Observaciones
Las anchuras de los campos variables se calculan a partir de la anchura total de todos los campos, menos la suma de las anchuras de los campos no variables, dividida por el número de campos variables.
Nota wxPerl: En wxPerl este método toma las anchuras de los campos como parámetros.
SetToolBar()
virtual void wxFrame::SetToolBar(wxToolBar * toolBar)
Asocia una barra de herramientas al marco.
MSWGetTaskBarButton()
wxTaskBarButton* wxFrame::MSWGetTaskBarButton()
Función específica de MSW para acceder al botón de la barra de tareas en Windows 7 o posterior.
Devuelve un puntero wxTaskBarButton que representa el botón de la barra de tareas de la ventana bajo Windows 7 o posterior. El wxTaskBarButton devuelto puede utilizarse, si no es NULL, para acceder a la funcionalidad que incluye representaciones en miniatura, barras de herramientas en miniatura, superposiciones de notificación y estado e indicadores de progreso.
El puntero devuelto no debe borrarse, es propiedad del marco y sólo se borrará cuando se destruya el propio marco.
Esta función no está disponible en los otros ports por diseño, cualquier aparición de la misma en el código portable debe estar protegida por
#ifdef __WXMSW__
del preprocesador.
PopStatusText()
void wxFrame::PopStatusText(int number = 0)
PushStatusText()
void wxFrame::PushStatusText( const wxString & text, int number = 0 )
Métodos y datos heredados
Por supuesto, ya que esta clase hereda de wxTopLevelWindow, dispone de los métodos y datos miembro públicos y protegidos de ella, además de las clases que a su vez hereda de wxNonOwnedWindow, wxWindow, wxEvtHandler, .wxWindow, wxEvtHandler, y wxObject, wxTrackable,