Advertisement
AntonioVillanueva

wxCheckLisBox gestion del evento

Jun 28th, 2018
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.78 KB | None | 0 0
  1. //Test wxCheckLisBox 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/checklst.h>//wxCheckListBox
  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 OnCheckListBox(wxCommandEvent& event);//Manipula Simple click
  33.            
  34.     private:
  35.     wxArrayString cadenas;
  36.     wxCheckListBox* listCheckBox;
  37.     /*Macro para informar a wxWidgets de la gestion de eventos
  38.     *Declara la tabla de eventos en esta clase ,mas abajo
  39.     * la implemento entre BEGIN_ y END_EVENT_TABLE
  40.     */
  41.    
  42.     //Declaracion dinamica eventos no utilizo el macro
  43.     //Trabajaremos desde OnInit para eventos dinamicos
  44.     DECLARE_EVENT_TABLE()
  45. };
  46. //----------------------------------------------------------------------
  47. //----------------------------------------------------------------------
  48.  
  49. /*Implementacion , MiApp
  50. *Cuando se crea el objeto MiApp se asigna a la variable global wxTheApp
  51. * pero mejor que hacer un CAST emplear el MACRO  DECLARE_APP despues de
  52. * la declaracion de la clase , wxGetApp retorna una ref. al objeto MiApp
  53. */
  54. DECLARE_APP(MiApp)
  55.  
  56. //Macro que Proporciona a wxWidgets los medios de crear el objeto MiApp
  57. IMPLEMENT_APP(MiApp)
  58.  
  59. //----------------------------------------------------------------------
  60. //----------------------------------------------------------------------
  61. //----------------------------------------------------------------------
  62.  
  63. //Implementacion OnInit,Inicializa la aplicacion
  64.  
  65. bool MiApp::OnInit()
  66. {
  67.     //Crea la ventana principal , una instancia de nuestra clase MiFrame
  68.     //El titulo lo pasamos al constructor envuelto en el macro wxT
  69.     //macro de conversion de strings y char al tipo apropiado
  70.     MiFrame *frame=new MiFrame(wxT("Titulo Test wxWidgets"));
  71.    
  72.     //Mostrar la ventana
  73.     frame->Show(true);
  74.    
  75.     //Arranca el bucle de eventos
  76.     return true ;//Si false limpia sus estructuras y sale
  77. }
  78.  
  79. //----------------------------------------------------------------------
  80.  
  81. const wxWindowIDRef ID_CLISTBOX = wxWindow::NewControlId();
  82.  
  83. //Tabla de eventos para MiFrame DECLARE_EVENT_TABLE() en MiFrame
  84.  
  85. BEGIN_EVENT_TABLE ( MiFrame,wxFrame)
  86.      EVT_CHECKLISTBOX(ID_CLISTBOX,MiFrame::OnCheckListBox)//Simple Click
  87. END_EVENT_TABLE()
  88.  
  89. void MiFrame::OnCheckListBox(wxCommandEvent& event)//simple click
  90. {
  91.     wxString check;
  92.     for (unsigned int i=0;i<cadenas.GetCount();i++){
  93.         if (listCheckBox->IsChecked(i)){
  94.             check+=  wxString::Format(wxT("%i"),i)+',';
  95.         }
  96.     }  
  97.     wxMessageBox( wxT("Elementos seleccionados = ")+ check  );
  98. }
  99.  
  100. //Constructor de MiFrame implementa un icono una barra status y menu
  101. //wxID_ANY le dice a Widgets de generar un identificador por su cuenta
  102. MiFrame::MiFrame(const wxString& titulo):wxFrame(NULL,wxID_ANY,wxT("Barra Sup"))
  103. {
  104.     //Crea  wxPanel
  105.     wxPanel* ventana=new wxPanel(this,wxID_ANY);   
  106.  
  107.     //Crea Botones en el wxPanel
  108.     wxButton* boton1=new wxButton(ventana,wxID_OK,wxT("OK 1"));
  109.     wxButton* boton2=new wxButton(ventana,wxID_OK,wxT("OK 2"));
  110.     wxButton* boton3=new wxButton(ventana,wxID_OK,wxT("OK 3"));
  111.                  
  112.     //Crea Sizers wxBoxSizer VERTICAL HORIZONTAL    
  113.     wxBoxSizer* vbox  = new wxBoxSizer(wxVERTICAL);
  114.     wxBoxSizer* hbox1 = new wxBoxSizer(wxHORIZONTAL);
  115.     wxBoxSizer* hbox2 = new wxBoxSizer(wxHORIZONTAL);
  116.  
  117.     //Anade la wxBoxSizer hbox1 & los botones  
  118.     vbox->Add(hbox1);//Anade wxBoxSizer HORIZONTAL1 al VERTICAL
  119.     vbox->Add(hbox2);//Anade wxBoxSizer HORIZONTAL2 al VERTICAL  
  120.        
  121.     hbox1->Add(boton1);//Anade al wxBoxSizer HORIZONTAL1 botones..
  122.     hbox1->Add(boton2);
  123.     hbox1->Add(boton3);    
  124.  
  125.     //wxBoxSizer (vbox) empleado en el wxPanel (ventana) ,con (hbox1)
  126.     ventana->SetSizer(vbox);
  127.  
  128.     //Creamos una lista de strings para anadir al wxCheckLisBox
  129.     //wxArrayString cadenas;
  130.     cadenas.Add(wxT("UFO"));
  131.     cadenas.Add(wxT("O.V.N.I"));
  132.     cadenas.Add(wxT("Platillo volante"));
  133.     cadenas.Add(wxT("Gris"));
  134.     cadenas.Add(wxT("Hombre de negro"));
  135.    
  136.     //wxCheckLisBox
  137.     listCheckBox=new wxCheckListBox(ventana,ID_CLISTBOX,wxDefaultPosition,
  138.                         wxDefaultSize,cadenas,wxLB_SINGLE | wxLB_ALWAYS_SB);
  139.  
  140.     //hbox1->Add(listCheckBox);
  141.     hbox2->Add(listCheckBox);
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement