Advertisement
AntonioVillanueva

wxCheckBox gestion del evento 2 y 3 estadps

Jun 27th, 2018
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.71 KB | None | 0 0
  1. //Test wxCheckBox 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/checkbox.h>//CheckBox
  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 OnCheck(wxCommandEvent& event);//Manipula CB
  33.            
  34.     private:
  35.     wxCheckBox* checkbox;
  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_CHECKBOX = wxWindow::NewControlId();
  81.  
  82. //Tabla de eventos para MiFrame DECLARE_EVENT_TABLE() en MiFrame
  83.  
  84. BEGIN_EVENT_TABLE ( MiFrame,wxFrame)
  85.     EVT_CHECKBOX(ID_CHECKBOX,MiFrame::OnCheck)//Empleado en wxComboBox
  86. END_EVENT_TABLE()
  87.  
  88.  
  89. void MiFrame::OnCheck(wxCommandEvent& event)//Manipula CheckBox 3 y 2 s
  90. {
  91.     //event.IsChecked() devuelve true si es checkeado .... 
  92.         wxString check;
  93.     if (checkbox->Is3State()){//This not cause a wxEVT_CHECKBOX event
  94.         switch (checkbox->Get3StateValue()){
  95.             case wxCHK_UNCHECKED:check=" ";break;
  96.             case wxCHK_CHECKED:check=" V ";break;          
  97.             case wxCHK_UNDETERMINED:check=" ? ";break;         
  98.         }      
  99.     }else {//No es un check de 3 estados
  100.         check= checkbox->GetValue() ?  " 1 " : " 0 " ;
  101.     }  
  102.     wxMessageBox( wxT(" Check = ")+ check  );
  103. }
  104.  
  105.  
  106. //Constructor de MiFrame implementa un icono una barra status y menu
  107. //wxID_ANY le dice a Widgets de generar un identificador por su cuenta
  108. MiFrame::MiFrame(const wxString& titulo):wxFrame(NULL,wxID_ANY,wxT("Barra Sup"))
  109. {
  110.     //Crea  wxPanel
  111.     wxPanel* ventana=new wxPanel(this,wxID_ANY);   
  112.  
  113.     //Crea Botones en el wxPanel
  114.     wxButton* boton1=new wxButton(ventana,wxID_OK,wxT("OK 1"));
  115.     wxButton* boton2=new wxButton(ventana,wxID_OK,wxT("OK 2"));
  116.     wxButton* boton3=new wxButton(ventana,wxID_OK,wxT("OK 3"));
  117.                  
  118.     //Crea Sizers wxBoxSizer VERTICAL HORIZONTAL    
  119.     wxBoxSizer* vbox  = new wxBoxSizer(wxVERTICAL);
  120.     wxBoxSizer* hbox1 = new wxBoxSizer(wxHORIZONTAL);
  121.  
  122.     //Anade la wxBoxSizer hbox1 & los botones  
  123.     vbox->Add(hbox1);//Anade wxBoxSizer HORIZONTAL1 al VERTICAL  
  124.        
  125.     hbox1->Add(boton1);//Anade al wxBoxSizer HORIZONTAL1 botones..
  126.     hbox1->Add(boton2);
  127.     hbox1->Add(boton3);    
  128.  
  129.     //wxBoxSizer (vbox) empleado en el wxPanel (ventana) ,con (hbox1)
  130.     ventana->SetSizer(vbox);
  131.  
  132.     //wxCheckBox  control de 2 estados ON/OFF o 3State
  133.     checkbox=new wxCheckBox(ventana,ID_CHECKBOX,wxT("Checkeame"),
  134.         wxDefaultPosition,wxDefaultSize,wxCHK_3STATE | wxCHK_ALLOW_3RD_STATE_FOR_USER);//3 estados
  135.       //wxDefaultPosition,wxDefaultSize);//2 estados                       
  136.  
  137.     //checkbox->SetValue(true);
  138.     hbox1->Add(checkbox);  
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement