Advertisement
AntonioVillanueva

Test wxChoice gestion del evento en wxWidgets

Jun 27th, 2018
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.82 KB | None | 0 0
  1. //Test wxChoice gestion del evento en wxWidgets Antonio Villanueva
  2.  
  3. //g++ -Wall -static-libstdc++ -std=c++11 -Wunused-but-set-variable `wx-config --cxxflags` -o hola *.cpp `wx-config --libs`
  4. //Declara la clase aplicacion
  5.  
  6. //#include "imagen.xpm" //Imagen en formato xpm
  7. #include <iostream>
  8. #include "wx/wx.h"
  9.  
  10. //using namespace std;
  11.  
  12. #include <wx/stattext.h>
  13. #include <wx/sizer.h> //Layouts
  14.  
  15.  
  16. //Declaraciones
  17. //----------------------------------------------------------------------
  18. //Cada aplicacion wxWidget define una clase derivada de wxApp
  19. class MiApp:public wxApp
  20. {
  21.     public:
  22.     //Llamado al inicio startup, es como el main en c
  23.     virtual bool OnInit();//main wxWidgets , mas abajo se implementa
  24. };
  25.  
  26. //Declaracion de la clase frame principal
  27.  
  28. //----------------------------------------------------------------------
  29.  
  30. class MiFrame:public wxFrame
  31. {
  32.     public:
  33.     //Constructor de la clase
  34.     MiFrame(const wxString& titulo);
  35.    
  36.     // "event handlers" , gestion de eventos
  37.     void OnQuit(wxCommandEvent& event);
  38.     void OnAbout(wxCommandEvent& event);   
  39.     //void OnSize(wxSizeEvent& event);//Manipulacion del Frame
  40.     void OnButtonOk(wxCommandEvent& event);//Click boton OK
  41.     void OnChoice(wxCommandEvent& event);//Manipula choice 
  42.  
  43.    
  44.     private:
  45.     /*Macro para informar a wxWidgets de la gestion de eventos
  46.     *Declara la tabla de eventos en esta clase ,mas abajo
  47.     * la implemento entre BEGIN_ y END_EVENT_TABLE
  48.     */
  49.    
  50.     //Declaracion dinamica eventos no utilizo el macro
  51.     //Trabajaremos desde OnInit para eventos dinamicos
  52.     DECLARE_EVENT_TABLE()
  53. };
  54. //----------------------------------------------------------------------
  55. //----------------------------------------------------------------------
  56.  
  57. /*Implementacion , MiApp
  58. *Cuando se crea el objeto MiApp se asigna a la variable global wxTheApp
  59. * pero mejor que hacer un CAST emplear el MACRO  DECLARE_APP despues de
  60. * la declaracion de la clase , wxGetApp retorna una ref. al objeto MiApp
  61. */
  62. DECLARE_APP(MiApp)
  63.  
  64. //Macro que Proporciona a wxWidgets los medios de crear el objeto MiApp
  65. IMPLEMENT_APP(MiApp)
  66.  
  67. //----------------------------------------------------------------------
  68. //----------------------------------------------------------------------
  69. //----------------------------------------------------------------------
  70.  
  71. //Implementacion OnInit,Inicializa la aplicacion
  72.  
  73. bool MiApp::OnInit()
  74. {
  75.     //Crea la ventana principal , una instancia de nuestra clase MiFrame
  76.     //El titulo lo pasamos al constructor envuelto en el macro wxT
  77.     //macro de conversion de strings y char al tipo apropiado
  78.     MiFrame *frame=new MiFrame(wxT("Titulo Test wxWidgets"));
  79.    
  80.     //Mostrar la ventana
  81.     frame->Show(true);
  82.    
  83.     //Arranca el bucle de eventos
  84.     return true ;//Si false limpia sus estructuras y sale
  85. }
  86.  
  87. //----------------------------------------------------------------------
  88.  
  89.  
  90. const wxWindowIDRef ID_SELECCION = wxWindow::NewControlId();
  91.  
  92. //Tabla de eventos para MiFrame DECLARE_EVENT_TABLE() en MiFrame
  93. //Deteccion de los clicks de raton con wxID_ABOUT y wxID_EXIT
  94. //Que se dirigen a MiFrame::OnAbout y OnQuit
  95.  
  96. BEGIN_EVENT_TABLE (         MiFrame,wxFrame)
  97.     EVT_MENU(wxID_ABOUT,    MiFrame::OnAbout)
  98.     EVT_MENU(wxID_EXIT,     MiFrame::OnQuit)
  99.     EVT_BUTTON(wxID_OK,     MiFrame::OnButtonOk)
  100.     EVT_CHOICE(ID_SELECCION,MiFrame::OnChoice)//Empleado en wxChoice
  101. END_EVENT_TABLE()
  102.  
  103. //Declaracion de OnAbout conectado al click del raton desde la EVENT_TABLE
  104. void MiFrame::OnAbout(wxCommandEvent& event)
  105. {
  106.     wxString mensaje;
  107.     //Contenido dentro de la ventana abierta
  108.     mensaje.Printf(wxT("La version wxWidgets es %s"),wxVERSION_STRING);
  109.     //Nombre de la barra de titulo Antonio Villanueva
  110.     wxMessageBox (mensaje,wxT("Antonio Villanueva"),wxOK | wxICON_INFORMATION,this);
  111. }
  112. //Declaracion de OnQuit conectado al click del raton desde la EVENT_TABLE
  113. void MiFrame::OnQuit(wxCommandEvent& event)
  114. {
  115.     //Destruccion del Frame , de hecho va generar un wxEVT_CLOSE_WINDOW
  116.     //wxWidgets gestiona por defecto este evento
  117.     Close();
  118. }
  119.  
  120. void MiFrame::OnButtonOk(wxCommandEvent& event)//Manipula boton OK
  121. {
  122.     //Abre ventana informando ....
  123.     wxMessageBox( wxT("Has hecho click en el boton OK !") );
  124. }
  125.  
  126. void MiFrame::OnChoice(wxCommandEvent& event)//Manipula choice
  127. {
  128.     //Abre ventana informando ....
  129.     //Recupera del evento de wxChoice su string
  130.     //event.FindString GetClientData SetClientDat GetCount
  131.     wxMessageBox( wxT("Has hecho click en!")+event.GetString() );
  132. }
  133.  
  134. //Constructor de MiFrame implementa un icono una barra status y menu
  135. //wxID_ANY le dice a Widgets de generar un identificador por su cuenta
  136. MiFrame::MiFrame(const wxString& titulo):wxFrame(NULL,wxID_ANY,wxT("Barra Sup"))
  137. {
  138.  
  139.     //Crea  wxPanel
  140.     wxPanel* window1=new wxPanel(this,wxID_ANY);   
  141.  
  142.     //Crea Botones
  143.     //4 en el wxPanel window1
  144.     wxButton* boton1=new wxButton(window1,wxID_OK,wxT("OK 1"));
  145.     wxButton* boton2=new wxButton(window1,wxID_OK,wxT("OK 2"));
  146.     wxButton* boton3=new wxButton(window1,wxID_OK,wxT("OK 3"));
  147.                  
  148.     //Crea Sizers wxBoxSizer VERTICAL HORIZONTAL    
  149.     wxBoxSizer* vbox  = new wxBoxSizer(wxVERTICAL);
  150.     wxBoxSizer* hbox1 = new wxBoxSizer(wxHORIZONTAL);
  151.  
  152.     //Anade la wxBoxSizer hbox1 & los botones  
  153.     vbox->Add(hbox1);//Anade wxBoxSizer HORIZONTAL1 al VERTICAL  
  154.        
  155.     hbox1->Add(boton1);//Anade al wxBoxSizer HORIZONTAL1 botones..
  156.     hbox1->Add(boton2);
  157.     hbox1->Add(boton3);    
  158.  
  159.     //wxBoxSizer empleado en el wxPanel (window1) ,(vbox) con (hbox1)
  160.     window1->SetSizer(vbox);
  161.  
  162.     //wxChoice
  163.     //Crea cadenas de texto
  164.     wxArrayString cadenas;
  165.     cadenas.Add(wxT("uno"));
  166.     cadenas.Add(wxT("dos"));
  167.     cadenas.Add(wxT("tres"));
  168.     cadenas.Add(wxT("cuatro"));  
  169.  
  170.     //wxChoice
  171.     //Utilizo cadenas anteriores utilizo la ID_SELECCION que la asigno al
  172.     wxChoice *seleccion2 =new wxChoice(window1,ID_SELECCION,wxDefaultPosition,wxDefaultSize,cadenas);
  173.     hbox1->Add(seleccion2);//Anade a la primera ventana wxSizer hbox1
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement