#include "holamundo.h"
#define ID_ABOUT 2
#define ID_QUIT 3
/*esta macro es necesaria para que el metodo OnInit() cumpla la funcion de main*/
IMPLEMENT_APP(MiAplicacion)
bool MiAplicacion::OnInit()
{
// se crea una instancia de la clase MiVentana
MiVentana *ventana = new MiVentana("Rodrigo Loyola", wxDefaultPosition, wxDefaultSize);
ventana->Show(TRUE);
return TRUE;
}
//la primera macro recibe 2 parametros el primero es el nombre de la clase que quiere manejar los eventos y el segundo es el
» nombre de la clase de la cual se hereda el comportamiento
BEGIN_EVENT_TABLE(MiVentana,wxFrame)
EVT_MENU(ID_ABOUT,MiVentana::OnAbout)//captura el evento ID_ABOUT y llama al metodo OnAbout de MiVentana
EVT_MENU(ID_QUIT,MiVentana::OnQuit)
EVT_CLOSE(MiVentana::OnCloseWindow)//captura el evento de cerrar la ventana
END_EVENT_TABLE()
//constructor de mi ventana, el primer parametro de wxFrame es un puntero a la ventana padre 8objeto de tipo wxWindow), el segundo
» es un identificador de la ventana(wxIdWindows) le pasamos -1 y la biblioteca le asigna un identificador por defecto, el resto
» ya se vieron
MiVentana::MiVentana(const wxString& titulo, const wxPoint& posicion, const wxSize& tam):wxFrame(NULL, -1, titulo, posicion, tam)
{
//menu con su titulo y estilo que indica que se puede desvincular el menu de la ventana
wxMenu *mi_menu = new wxMenu("titulo de menu",wxMENU_TEAROFF);
//despues se crea una barra de menu con su titulo y tambien flotante
wxMenuBar *mi_barra_de_menu = new wxMenuBar(wxMB_DOCKABLE);
//se crean 2 opciones al menu con su identificador, nombre y texto en la barra de estado
mi_menu->Append(ID_QUIT,"Cerrar","Cierra la aplicacion");
mi_menu->Append(ID_ABOUT,"Acerca de","Muestra el dialogo");
mi_barra_de_menu->Append(mi_menu,"Menu");
this->SetMenuBar(mi_barra_de_menu);
this->CreateStatusBar(2);
this->SetStatusText("Bienvenido a wxWidgets!");
}
//maneja el evento de la opcion salir
void MiVentana::OnQuit(wxCommandEvent& event)
{
//Close no no cierra la ventana sino que genera el metodo wxCloseEvent, pero se ha sobreescrito el metodo OnCloseWindow
this->Close(TRUE);
}
//esta es una funcion virtual que hemos sobreescrito (para mostrar un mensaje al cerrar la ventana
void MiVentana::OnCloseWindow(wxCommandEvent& event)
{
//muestra un dialogo con un mensaje pasado al primer parametro, el titulo corresponde al segundo, el tercero es el estilo de
» dialogo y el ultimo es la ventana padre, en este caso MiVentana
wxMessageBox("Adios mundo!","Bye bye",wxOK|wxICON_INFORMATION,this);
//el metodo destroy no genera ningun evento solo cierra la ventana. wxWidgets se encarga de todo el proceso de destruir todos los
» objetos
this->Destroy();
}
//Muestra el mensaje hola mundo
void MiVentana::OnAbout(wxCommandEvent& event)
{
wxMessageBox("Hola mundo!","Bienvenido a wxwidgets!",wxOK|wxICON_INFORMATION,this);
}
syntax highlighted by Code2HTML, v. 0.9.1