Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Bind wxMouseEvent EVT_LEFT_DCLICK a un wxFrame Antonio Villanueva segura
- //g++ -Wall -static-libstdc++ -std=c++11 -Wunused-but-set-variable `wx-config --cxxflags` -o hola *.cpp `wx-config --libs`
- //Declara la clase aplicacion
- //#include "imagen.xpm" //Imagen en formato xpm
- #include <iostream>
- #include "wx/wx.h"
- #include <wx/popupwin.h>
- #include <wx/menu.h>
- #include <wx/event.h>
- //using namespace std;
- //Declaraciones
- //Cada aplicacion wxWidget define una clase derivada de wxApp
- class MiApp:public wxApp
- {
- public:
- //Llamado al inicio startup, es como el main en c
- virtual bool OnInit();//main wxWidgets , mas abajo se implementa
- };
- //Declaracion de la clase frame principal
- //----------------------------------------------------------------------
- class MiFrame:public wxFrame
- {
- public:
- //Constructor de la clase
- MiFrame();
- // Dos "event handlers" , gestion de eventos
- void OnQuit(wxCommandEvent& event);
- void OnAbout(wxCommandEvent& event);
- void OnButtonOk(wxCommandEvent& event);//Click boton OK
- void EventosRaton (wxMouseEvent& event);//Eventos de raton Doble Click
- private:
- wxMenu* m_menu;//Crea menu ..
- /*Macro para informar a wxWidgets de la gestion de eventos
- *Declara la tabla de eventos en esta clase ,mas abajo
- * la implemento entre BEGIN_ y END_EVENT_TABLE
- */
- DECLARE_EVENT_TABLE()
- };
- //----------------------------------------------------------------------
- /*Implementacion , MiApp
- *Cuando se crea el objeto MiApp se asigna a la variable global wxTheApp
- * pero mejor que hacer un CAST emplear el MACRO DECLARE_APP despues de
- * la declaracion de la clase , wxGetApp retorna una ref. al objeto MiApp
- */
- DECLARE_APP(MiApp)
- //Macro que Proporciona a wxWidgets los medios de crear el objeto MiApp
- IMPLEMENT_APP(MiApp)
- //----------------------------------------------------------------------
- //Implementacion OnInit,Inicializa la aplicacion
- bool MiApp::OnInit()
- {
- //Crea la ventana principal , una instancia de nuestra clase MiFrame
- //El titulo lo pasamos al constructor envuelto en el macro wxT
- //macro de conversion de strings y char al tipo apropiado
- MiFrame *frame=new MiFrame();
- //Mostrar la ventana
- frame->Show(true);
- //Arranca el bucle de eventos
- return true ;//Si false limpia sus estructuras y sale
- }
- //----------------------------------------------------------------------
- //Tabla de eventos para MiFrame DECLARE_EVENT_TABLE() en MiFrame
- //Deteccion de los clicks de raton con wxID_ABOUT y wxID_EXIT
- //Que se dirigen a MiFrame::OnAbout y OnQuit
- BEGIN_EVENT_TABLE ( MiFrame, wxFrame)
- //EVT_MENU(wxID_ABOUT, MiFrame::OnAbout)
- //EVT_MENU(wxID_EXIT, MiFrame::OnQuit)
- EVT_BUTTON(wxID_OK, MiFrame::OnButtonOk)
- //EVT_LEFT_DCLICK(MiFrame::EventosRaton)
- END_EVENT_TABLE()
- //Declaracion de OnAbout conectado al click del raton desde la EVENT_TABLE
- void MiFrame::OnAbout(wxCommandEvent& event)
- {
- wxString mensaje;
- //Contenido dentro de la ventana abierta
- mensaje.Printf(wxT("La version wxWidgets es %s"),wxVERSION_STRING);
- //Nombre de la barra de titulo Antonio Villanueva
- wxMessageBox (mensaje,wxT("Antonio Villanueva"),wxOK | wxICON_INFORMATION,this);
- }
- //Declaracion de OnQuit conectado al click del raton desde la EVENT_TABLE
- void MiFrame::OnQuit(wxCommandEvent& event)
- {
- //Destruccion del Frame , de hecho va generar un wxEVT_CLOSE_WINDOW
- //wxWidgets gestiona por defecto este evento
- Close();
- }
- void MiFrame::OnButtonOk(wxCommandEvent& event)//Manipula boton OK
- {
- //Abre ventana informando ....
- wxMessageBox( wxT("Has hecho click en el boton OK !") );
- }
- //Constructor de MiFrame implementa un icono una barra status y menu
- //wxID_ANY le dice a Widgets de generar un identificador por su cuenta
- MiFrame::MiFrame():wxFrame(NULL,wxID_ANY,"Mi Ventana")
- {
- //Test wxBoxSizer wxPanel wxButton ....
- //Crea un wxBoxSizer
- wxBoxSizer* Box=new wxBoxSizer(wxHORIZONTAL);
- //Crea un wxPanel
- wxPanel* Panel1=new wxPanel(this,wxEXPAND);
- //Crea un boton OK y lo coloca en el centro de la ventana
- wxButton* boton=new wxButton(Panel1,wxID_OK,wxT("1"));
- wxButton* boton2=new wxButton(Panel1,wxID_OK,wxT("2"));
- //Anade los bootones al sizer
- Box->Add(boton);
- Box->Add(boton2);
- //wxPanel (Panel1) utiliza el wxBoxSizer (Box)
- Panel1->SetSizer(Box);
- //Bind evento de RATON DOBLE CLICK
- Panel1->Bind(wxEVT_LEFT_DCLICK,&MiFrame::EventosRaton,this);
- }
- void MiFrame::EventosRaton(wxMouseEvent& event){// Evento raton Doble Click
- wxMessageBox( wxT("Raton ") );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement