Advertisement
AntonioVillanueva

wxListBox gestion del evento en wxWidgets

Jun 28th, 2018
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.77 KB | None | 0 0
  1. //Test wxListBox gestion del evento en wxWidgets Antonio Villanueva
  2. //g++ -Wall -static-libstdc++ -std=c++11 -Wunused-but-set-variable `wx-config --cxxflags` -o hola *.cpp `wx-config --libs`
  3. #include <iostream>
  4. #include "wx/wx.h"
  5. #include <wx/stattext.h>
  6. #include <wx/sizer.h> //Layouts
  7. #include <wx/listbox.h>//wxListBox
  8.  
  9. //using namespace std;
  10.  
  11. //Declaraciones
  12. //----------------------------------------------------------------------
  13. //Cada aplicacion wxWidget define una clase derivada de wxApp
  14. class MiApp:public wxApp
  15. {
  16.     public:
  17.     //Llamado al inicio startup, es como el main en c
  18.     virtual bool OnInit();//main wxWidgets , mas abajo se implementa
  19. };
  20.  
  21. //Declaracion de la clase frame principal
  22.  
  23. //----------------------------------------------------------------------
  24.  
  25. class MiFrame:public wxFrame
  26. {
  27.     public:
  28.     //Constructor de la clase
  29.     MiFrame(const wxString& titulo);
  30.    
  31.     // "event handlers" , gestion de eventos
  32.     void OnListBox(wxCommandEvent& event);//Manipula Simple click
  33.     void OnListBoxDC(wxCommandEvent& event);//Manipula Doble click
  34.            
  35.     private:
  36.     /*Macro para informar a wxWidgets de la gestion de eventos
  37.     *Declara la tabla de eventos en esta clase ,mas abajo
  38.     * la implemento entre BEGIN_ y END_EVENT_TABLE
  39.     */
  40.    
  41.     //Declaracion dinamica eventos no utilizo el macro
  42.     //Trabajaremos desde OnInit para eventos dinamicos
  43.     DECLARE_EVENT_TABLE()
  44. };
  45. //----------------------------------------------------------------------
  46. //----------------------------------------------------------------------
  47.  
  48. /*Implementacion , MiApp
  49. *Cuando se crea el objeto MiApp se asigna a la variable global wxTheApp
  50. * pero mejor que hacer un CAST emplear el MACRO  DECLARE_APP despues de
  51. * la declaracion de la clase , wxGetApp retorna una ref. al objeto MiApp
  52. */
  53. DECLARE_APP(MiApp)
  54.  
  55. //Macro que Proporciona a wxWidgets los medios de crear el objeto MiApp
  56. IMPLEMENT_APP(MiApp)
  57.  
  58. //----------------------------------------------------------------------
  59. //----------------------------------------------------------------------
  60. //----------------------------------------------------------------------
  61.  
  62. //Implementacion OnInit,Inicializa la aplicacion
  63.  
  64. bool MiApp::OnInit()
  65. {
  66.     //Crea la ventana principal , una instancia de nuestra clase MiFrame
  67.     //El titulo lo pasamos al constructor envuelto en el macro wxT
  68.     //macro de conversion de strings y char al tipo apropiado
  69.     MiFrame *frame=new MiFrame(wxT("Titulo Test wxWidgets"));
  70.    
  71.     //Mostrar la ventana
  72.     frame->Show(true);
  73.    
  74.     //Arranca el bucle de eventos
  75.     return true ;//Si false limpia sus estructuras y sale
  76. }
  77.  
  78. //----------------------------------------------------------------------
  79.  
  80. const wxWindowIDRef ID_LISTBOX = wxWindow::NewControlId();
  81.  
  82. //Tabla de eventos para MiFrame DECLARE_EVENT_TABLE() en MiFrame
  83.  
  84. BEGIN_EVENT_TABLE ( MiFrame,wxFrame)
  85.     //EVT_LISTBOX(ID_LISTBOX,MiFrame::OnListBox)//Simple Click
  86.     EVT_LISTBOX_DCLICK(ID_LISTBOX,MiFrame::OnListBoxDC)//Double Click  
  87. END_EVENT_TABLE()
  88.  
  89.  
  90. void MiFrame::OnListBox(wxCommandEvent& event)//simple click
  91. {
  92.     wxString check;
  93.     //check=  wxString::Format(wxT("%i"),event.GetSelection ());
  94.     check=event.GetString();
  95.     wxMessageBox( wxT("Sel. simple click = ")+ check  );
  96. }
  97.  
  98. void MiFrame::OnListBoxDC(wxCommandEvent& event)//doble click
  99. {
  100.     wxString check;
  101.     check=event.GetString();
  102.     wxMessageBox( wxT("Sel. Doble click = ")+ check  );
  103. }
  104.  
  105. //Constructor de MiFrame implementa un icono una barra status y menu
  106. //wxID_ANY le dice a Widgets de generar un identificador por su cuenta
  107. MiFrame::MiFrame(const wxString& titulo):wxFrame(NULL,wxID_ANY,wxT("Barra Sup"))
  108. {
  109.     //Crea  wxPanel
  110.     wxPanel* ventana=new wxPanel(this,wxID_ANY);   
  111.  
  112.     //Crea Botones en el wxPanel
  113.     wxButton* boton1=new wxButton(ventana,wxID_OK,wxT("OK 1"));
  114.     wxButton* boton2=new wxButton(ventana,wxID_OK,wxT("OK 2"));
  115.     wxButton* boton3=new wxButton(ventana,wxID_OK,wxT("OK 3"));
  116.                  
  117.     //Crea Sizers wxBoxSizer VERTICAL HORIZONTAL    
  118.     wxBoxSizer* vbox  = new wxBoxSizer(wxVERTICAL);
  119.     wxBoxSizer* hbox1 = new wxBoxSizer(wxHORIZONTAL);
  120.  
  121.     //Anade la wxBoxSizer hbox1 & los botones  
  122.     vbox->Add(hbox1);//Anade wxBoxSizer HORIZONTAL1 al VERTICAL  
  123.        
  124.     hbox1->Add(boton1);//Anade al wxBoxSizer HORIZONTAL1 botones..
  125.     hbox1->Add(boton2);
  126.     hbox1->Add(boton3);    
  127.  
  128.     //wxBoxSizer (vbox) empleado en el wxPanel (ventana) ,con (hbox1)
  129.     ventana->SetSizer(vbox);
  130.  
  131.     //Creamos una lista de strings para anadir al wxListBox
  132.     wxArrayString cadenas;
  133.     cadenas.Add(wxT("UFO"));
  134.     cadenas.Add(wxT("O.V.N.I"));
  135.     cadenas.Add(wxT("Platillo volante"));
  136.     cadenas.Add(wxT("Gris"));
  137.     cadenas.Add(wxT("Hombre de negro"));
  138.    
  139.     //wxListBox
  140.     wxListBox* listbox=new wxListBox(ventana,ID_LISTBOX,wxDefaultPosition,
  141.                         wxDefaultSize,cadenas,wxLB_SINGLE | wxLB_ALWAYS_SB);
  142.  
  143.     hbox1->Add(listbox);   
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement