Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /Test wxSlider en wxWidgets Antonio Villanueva
- //g++ -Wall -static-libstdc++ -std=c++11 -Wunused-but-set-variable `wx-config --cxxflags` -o hola *.cpp `wx-config --libs`
- #include <iostream>
- #include "wx/wx.h"
- #include <wx/stattext.h>
- #include <wx/sizer.h> //Layouts
- #include <wx/slider.h> //wxSlider
- //using namespace std;
- //Declaraciones
- //----------------------------------------------------------------------
- //Cada aplicacion wxWidget define una clase derivada de wxApp
- class MiApp:public wxApp
- {
- public:
- //Llamado al inicio startup, es como el main en c
- virtual bool OnInit();//main wxWidgets , mas abajo se implementa
- };
- //Declaracion de la clase frame principal
- //----------------------------------------------------------------------
- class MiFrame:public wxFrame
- {
- public:
- //Constructor de la clase
- MiFrame(const wxString& titulo);
- void OnButtonOk(wxCommandEvent& event);//Manipula boton OK
- // "event handlers" , gestion de eventos
- void OnSlider(wxScrollEvent& event);//Manipula eventors wxSlider
- private:
- wxPanel* ventana;
- wxStaticText* label;
- wxStaticText* datos;
- wxSlider *slider;
- /*Macro para informar a wxWidgets de la gestion de eventos
- *Declara la tabla de eventos en esta clase ,mas abajo
- * la implemento entre BEGIN_ y END_EVENT_TABLE
- */
- //Declaracion dinamica eventos no utilizo el macro
- //Trabajaremos desde OnInit para eventos dinamicos
- DECLARE_EVENT_TABLE()
- };
- //----------------------------------------------------------------------
- //----------------------------------------------------------------------
- /*Implementacion , MiApp
- *Cuando se crea el objeto MiApp se asigna a la variable global wxTheApp
- * pero mejor que hacer un CAST emplear el MACRO DECLARE_APP despues de
- * la declaracion de la clase , wxGetApp retorna una ref. al objeto MiApp
- */
- DECLARE_APP(MiApp)
- //Macro que Proporciona a wxWidgets los medios de crear el objeto MiApp
- IMPLEMENT_APP(MiApp)
- //----------------------------------------------------------------------
- //----------------------------------------------------------------------
- //----------------------------------------------------------------------
- //Implementacion OnInit,Inicializa la aplicacion
- bool MiApp::OnInit()
- {
- //Crea la ventana principal , una instancia de nuestra clase MiFrame
- //El titulo lo pasamos al constructor envuelto en el macro wxT
- //macro de conversion de strings y char al tipo apropiado
- MiFrame *frame=new MiFrame(wxT("Titulo Test wxWidgets"));
- //Mostrar la ventana
- frame->Show(true);
- //Arranca el bucle de eventos
- return true ;//Si false limpia sus estructuras y sale
- }
- //----------------------------------------------------------------------
- const wxWindowIDRef ID_SLIDER = wxWindow::NewControlId();
- //Tabla de eventos para MiFrame DECLARE_EVENT_TABLE() en MiFrame
- BEGIN_EVENT_TABLE ( MiFrame,wxFrame)
- EVT_COMMAND_SCROLL(ID_SLIDER,MiFrame::OnSlider)//Down Up arrow event
- EVT_BUTTON(wxID_OK, MiFrame::OnButtonOk)
- END_EVENT_TABLE()
- //wxID_ANY le dice a Widgets de generar un identificador por su cuenta
- MiFrame::MiFrame(const wxString& titulo):wxFrame(NULL,wxID_ANY,wxT("Barra Sup"))
- {
- //Crea wxPanel
- //Create (wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTAB_TRAVERSAL, const wxString &name=wxPanelNameStr)
- ventana=new wxPanel(this,wxID_ANY);
- //Crea Sizers wxBoxSizer VERTICAL HORIZONTAL
- wxBoxSizer* vbox = new wxBoxSizer(wxVERTICAL); //sizer Vertical
- wxBoxSizer* hbox1 = new wxBoxSizer(wxHORIZONTAL);//sizer Horizontal
- wxBoxSizer* hbox2 = new wxBoxSizer(wxHORIZONTAL);//sizer Horizontal
- //Anade la wxBoxSizer los dos wxSizer horizontales hbox1 & hbox2
- vbox->Add(hbox1);//Anade wxBoxSizer HORIZONTAL1 al VERTICAL
- vbox->Add(hbox2);//Anade wxBoxSizer HORIZONTAL2 al VERTICAL
- ventana->SetSizer(vbox);//wxPanel utiliza el wxSizer vertical
- //inicializa wxStaticText como labels
- label = new wxStaticText( ventana, wxID_ANY, " BARRA -> ");
- datos = new wxStaticText( ventana, wxID_ANY, " VALOR = ");
- #define VALOR_INICIAL "5"
- #define MIN 1
- #define MAX 10
- #define INITIAL 5
- //wxSpinCtrlsolo soporta vertical
- slider=new wxSlider(ventana,ID_SLIDER,16,0,40,
- wxDefaultPosition,wxSize(200,-1),
- wxSL_HORIZONTAL | wxSL_AUTOTICKS | wxSL_LABELS
- );
- wxButton* boton1=new wxButton(ventana,wxID_OK,wxT("OK 1"));
- hbox1->Add(boton1);
- //Anade componentes a los wxSizer
- hbox1->Add(datos);//Barra superior datos
- hbox2->Add(label);//Barra inferior una etiqueta
- hbox2->Add(slider);//y el scrollbar
- }
- void MiFrame::OnSlider(wxScrollEvent& event){//Manipula Slider
- datos->SetLabel(" VALOR = " + wxString::Format(wxT("%i"), event.GetPosition() ));
- // wxMessageBox( wxT("wxSlider ") );
- }
- void MiFrame::OnButtonOk(wxCommandEvent& event)//Manipula boton OK
- {
- //Abre ventana informando ....
- wxMessageBox( wxT("Has hecho click en el boton OK !") );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement