Advertisement
AntonioVillanueva

wxRadioBox

Jun 28th, 2018
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.81 KB | None | 0 0
  1. //Test wxRadioBox 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/radiobox.h>//wxRadioBox
  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.     wxRadioBox* RadioBox;
  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_RADIOBOX = wxWindow::NewControlId();
  82.  
  83. //Tabla de eventos para MiFrame DECLARE_EVENT_TABLE() en MiFrame
  84.  
  85. BEGIN_EVENT_TABLE ( MiFrame,wxFrame)
  86.      EVT_RADIOBOX(ID_RADIOBOX,MiFrame::OnCheckListBox)//Simple Click
  87. END_EVENT_TABLE()
  88.  
  89. void MiFrame::OnCheckListBox(wxCommandEvent& event)//simple click
  90. {
  91.     wxMessageBox( wxT("Elemento = ")+  RadioBox->GetString (event.GetSelection ())  );
  92. }
  93.  
  94. //Constructor de MiFrame implementa un icono una barra status y menu
  95. //wxID_ANY le dice a Widgets de generar un identificador por su cuenta
  96. MiFrame::MiFrame(const wxString& titulo):wxFrame(NULL,wxID_ANY,wxT("Barra Sup"))
  97. {
  98.     //Crea  wxPanel
  99.     wxPanel* ventana=new wxPanel(this,wxID_ANY);   
  100.  
  101.     //Crea Botones en el wxPanel
  102.     wxButton* boton1=new wxButton(ventana,wxID_OK,wxT("OK 1"));
  103.     wxButton* boton2=new wxButton(ventana,wxID_OK,wxT("OK 2"));
  104.     wxButton* boton3=new wxButton(ventana,wxID_OK,wxT("OK 3"));
  105.                  
  106.     //Crea Sizers wxBoxSizer VERTICAL HORIZONTAL    
  107.     wxBoxSizer* vbox  = new wxBoxSizer(wxVERTICAL);
  108.     wxBoxSizer* hbox1 = new wxBoxSizer(wxHORIZONTAL);
  109.     wxBoxSizer* hbox2 = new wxBoxSizer(wxHORIZONTAL);
  110.  
  111.     //Anade la wxBoxSizer hbox1 & los botones  
  112.     vbox->Add(hbox1);//Anade wxBoxSizer HORIZONTAL1 al VERTICAL
  113.     vbox->Add(hbox2);//Anade wxBoxSizer HORIZONTAL2 al VERTICAL  
  114.        
  115.     hbox1->Add(boton1);//Anade al wxBoxSizer HORIZONTAL1 botones..
  116.     hbox1->AddSpacer (boton1->GetSize ().GetWidth () );
  117.     hbox1->Add(boton2);
  118.     hbox1->AddSpacer (boton1->GetSize ().GetWidth () );
  119.     hbox1->Add(boton3);    
  120.  
  121.     //wxBoxSizer (vbox) empleado en el wxPanel (ventana) ,con (hbox1)
  122.     ventana->SetSizer(vbox);
  123.  
  124.     //Creamos una lista de strings para anadir al wxRadioBox
  125.     //wxArrayString cadenas;
  126.     cadenas.Add(wxT("&Uno"));
  127.     cadenas.Add(wxT("&Dos"));
  128.     cadenas.Add(wxT("&Tres"));
  129.     cadenas.Add(wxT("&Cuatro"));
  130.     cadenas.Add(wxT("&Cinco"));
  131.     cadenas.Add(wxT("&Seis")); 
  132.     cadenas.Add(wxT("&Siete"));
  133.     cadenas.Add(wxT("&Ocho")); 
  134.     cadenas.Add(wxT("&Nueve"));
  135.    
  136.     //wxRadioBox
  137.     RadioBox=new wxRadioBox(ventana,ID_RADIOBOX,wxT("Radio Box"),
  138.     wxDefaultPosition,wxDefaultSize,cadenas,3,wxRA_SPECIFY_COLS);
  139.  
  140.     //hbox1->Add(_RadioBox);   
  141.     hbox2->Add(RadioBox);
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement