Para finalizar este primer capítulo en el que hemos tratado los conceptos básicos de wxWidgets, trabajaremos en un ejemplo simple, que nos servirá como introducción a la programación con wxWidgets.
El ejemplo consistirá en una ventana que contendrá una etiqueta y dos botones. La etiqueta estará inicialmente vacía, aunque tendrá aplicado un estilo. El primer botón se utilizará para mostrar en la etiqueta anterior el mensaje "¡Hola mundo!", mientras que el segundo botón nos permitirá salir de la aplicación.
El primer punto a tener en cuenta es que utilizaremos dos ficheros (un fichero de cabecera ".h" y un fichero de código ".cpp"), ya que tenemos una única ventana. El segundo punto será que los tamaños de la ventana y los componentes no son importantes en este ejemplo. Se utilizarán unos por defecto, pudiéndose modificar siempre que el usuario lo desee.
Empezaremos definiendo las clases que necesitaremos en el archivo de cabecera, en este caso necesitaremos dos, una clase que modelará la aplicación en sí, y otra que modelará la ventana. Cómo definir estas clases, sus atributos y sus métodos se verán con más claridad en el siguiente capítulo.
En la clase que modela la aplicación (MyApp) necesitamos un método que "arranque" la aplicación y en la clase que modela la ventana (MyFrame) necesitamos un constructor y un método por cada manejador de evento que debamos programar dentro de esta ventana. Además, dentro de la clase MyFrame, debemos definir los componentes que vayamos a modelar dentro de la ventana, en este caso, una etiqueta y dos botones.
Por último, dos cosas muy importantes. La primera, debemos declarar la tabla de eventos para esta ventana, en la parte privada de la clase, utilizando la macro DECLARE_EVENT_TABLE(). La segunda, debemos declarar la aplicación, fuera de cualquier clase y como última instrucción del fichero, utilizando la macro DECLARE_APP(nombre_clase).
Ahora debemos implementar todo esto en el fichero ".cpp", pero antes debemos declarar siempre la implementación de la aplicación con la macro IMPLEMENT_APP(nombre_clase) y la tabla de eventos, donde debemos enlazar cada uno de los eventos con su correspondiente manejador.
A continuación, implementamos todos y cada uno de los métodos de las clases que hayamos definido anteriormente.