3.1. wxApp, wxFrame y wxButton

wxApp

Todas las aplicaciones de wxWidgets están definidas en clases derivadas de la clase wxApp. Una aplicación en ejecución no es más que una instancia de ella.

Como ya hemos visto en el capítulo anterior, cada clase que definamos derivada de wxApp debe de tener un método OnInit() que será llamado cuando wxWidgets esté listo para ejecutar el código. Sería equivalente a las funciónes main() de C o WinMain() de Win32.

Aquí tenemos un ejemplo de como se definiría una clase desde wxApp:

class MyApp : public wxApp
{
public:
virtual bool OnInit();
};

La implementación del método OnInit() contendrá las sentencias que deseamos que se ejecuten al cargar la aplicación, o sea, lo que podríamos llamar "la configuración inicial" de la aplicación. Esta función devolverá un valor booleano en función de si se ha ejecutado correctamente o no.

Entonces, ¿en qué parte del código debemos decir que creamos una instancia de esta clase? wxWidgets la crea internamente, pero nosotros debemos decirle que clase de objeto deseamos crear. Por lo que debemos utilizar una macro en nuestro fichero de código, IMPLEMENT_APP(nombre_clase).

Cuando wxWidgets crea un objeto aplicación derivado de wxApp se le asigna el resultado a la variable global wxTheApp. Esta se puede usar en la aplicación, pero no es conveniente. Para ello podemos insertar la macro DECLARE_APP(nombre_clase) después de la definición de la clase en el fichero de cabecera. Esto nos permite usar la función wxGetApp() que nos devuelve una referencia al objeto aplicación que hemos creado.

wxFrame

Es una ventana de bajo nivel, una clase derivada de wxWindow. Puede contener otras ventanas y suele tener barra de menú y barra de título.

Su definición sería de la siguiente manera:

class MyFrame : public wxFrame
{
public:
//Constructor.
//Manejadores de eventos.
private:
DECLARE_EVENT_TABLE()
};

El prototipo del constructor es:

wxFrame(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& position, const wxSize& size, long style, const wxString& name);

Los eventos que genera esta clase son los siguientes:

Algunos de los principales métodos de la clase wxFrame son:

wxButton