lunes, 19 de septiembre de 2011

Capítulo 2 - Primeros Pasos

En este capítulo vamos a hacernos una idea de cual es la estructura de un programa simple en wxWidgets, para lo que usaremos un pequeño ejemplo. Veremos cómo y donde comienza y termina una aplicación en wxWidgets, como mostrar la ventana principal, y como responder a algunas peticiones del usuario. Seguiremos la filosofía wxWidgets de hacerlo simple y bonito. Quizás, antes de comenzar, quieras echarle un vistazo al apéndice A, “Instalando wxWidgets”.

Un pequeño ejemplo con wxWidgets

La figura 2-1 muestra como se ve nuestro ejemplo corriendo en Windows

figura 2-1 Ejemplo Mínimo en Windows

Esta aplicación mínima de wxWidgets muestra una ventana principal (una wxFrame) con una barra de menú y una barra de estado. Los menús te permiten mostrar un cuadro informativo o cerrar el programa. No es precisamente una súper aplicación, pero basta para mostrar algunos de los principios básicos de wxWidgets, a la vez que te familiarizas con el código, entras en confianza y adquieres experiencia.

La clase Aplicación

Toda aplicación en wxWidgets define una clase aplicación, derivada de wxApp. Nuestra clase será una instancia de ésta y representará a nuestra aplicación ejecutable. Esta clase deberá, por lo menos, definir una función OnInit, que es la que será llamada cuando wxWidgets esté listo para correr tu código (es el equivalente de main o WinMain en una aplicación en C o en Win32).

La siguiente es la declaración más pequeña que se puede declarar:

//Declaración de la clase aplicación

class MyApp : public wxApp

{

public:

    //Llamado al iniciar la aplicación

    virtual bool OnInit();

};

En la implementación de OnInit() usualmente se crea, al menos, una ventana, interpreta los argumentos de línea de comando, establece los datos y lleva a cabo cualquier acción requerida para la inicialización de la aplicación. Si la función devuelve true, wxWidgets inicia el bucle de eventos, que procesa los requerimientos del usuario y ejecuta los controladores de eventos cuando sea necesario. Si la respuesta es false, wxWidget limpiará las estructuras internas y finalizará la aplicación.