Advertisement
AntonioVillanueva

Test wxSizer wxPanel wxButton wxWidgets

Jun 26th, 2018
291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.37 KB | None | 0 0
  1. //wxSizer wxPanel wxButton wxWidgets Antonio Villanueva
  2.  
  3. //g++ -Wall -static-libstdc++ -std=c++11 -Wunused-but-set-variable `wx-config --cxxflags` -o hola *.cpp `wx-config --libs`
  4. //Declara la clase aplicacion
  5.  
  6. //#include "imagen.xpm" //Imagen en formato xpm
  7. #include <iostream>
  8. #include "wx/wx.h"
  9. //#include <wx/app.h>
  10. //using namespace std;
  11.  
  12.  
  13. #include <wx/popupwin.h>
  14.  
  15. wxString title ("Barra Superior");
  16.  
  17. //Declaraciones
  18.  
  19. //Cada aplicacion wxWidget define una clase derivada de wxApp
  20. class MiApp:public wxApp
  21. {
  22.     public:
  23.     //Llamado al inicio startup, es como el main en c
  24.     virtual bool OnInit();//main wxWidgets , mas abajo se implementa
  25. };
  26.  
  27. //Declaracion de la clase frame principal
  28.  
  29. //----------------------------------------------------------------------
  30.  
  31. class MiFrame:public wxFrame
  32. {
  33.     public:
  34.     //Constructor de la clase
  35.     MiFrame(const wxString& titulo);
  36.    
  37.     // Dos "event handlers" , gestion de eventos
  38.     void OnQuit(wxCommandEvent& event);
  39.     void OnAbout(wxCommandEvent& event);  
  40.     void OnButtonOk(wxCommandEvent& event);//Click boton OK
  41.    
  42.     private:
  43.     /*Macro para informar a wxWidgets de la gestion de eventos
  44.     *Declara la tabla de eventos en esta clase ,mas abajo
  45.     * la implemento entre BEGIN_ y END_EVENT_TABLE
  46.     */
  47.     DECLARE_EVENT_TABLE()
  48. };
  49.  
  50. //----------------------------------------------------------------------
  51.  
  52. /*Implementacion , MiApp
  53. *Cuando se crea el objeto MiApp se asigna a la variable global wxTheApp
  54. * pero mejor que hacer un CAST emplear el MACRO  DECLARE_APP despues de
  55. * la declaracion de la clase , wxGetApp retorna una ref. al objeto MiApp
  56. */
  57. DECLARE_APP(MiApp)
  58.  
  59. //Macro que Proporciona a wxWidgets los medios de crear el objeto MiApp
  60. IMPLEMENT_APP(MiApp)
  61.  
  62. //----------------------------------------------------------------------
  63.  
  64. //Implementacion OnInit,Inicializa la aplicacion
  65.  
  66. bool MiApp::OnInit()
  67. {
  68.     //Crea la ventana principal , una instancia de nuestra clase MiFrame
  69.     //El titulo lo pasamos al constructor envuelto en el macro wxT
  70.     //macro de conversion de strings y char al tipo apropiado
  71.     MiFrame *frame=new MiFrame(wxT("Titulo Mini wxWidgets"));
  72.    
  73.     //Mostrar la ventana
  74.     frame->Show(true);
  75.    
  76.     //Arranca el bucle de eventos
  77.     return true ;//Si false limpia sus estructuras y sale
  78. }
  79.  
  80. //----------------------------------------------------------------------
  81.  
  82. //Tabla de eventos para MiFrame DECLARE_EVENT_TABLE() en MiFrame
  83. //Deteccion de los clicks de raton con wxID_ABOUT y wxID_EXIT
  84. //Que se dirigen a MiFrame::OnAbout y OnQuit
  85. BEGIN_EVENT_TABLE (         MiFrame,wxFrame)
  86.     EVT_MENU(wxID_ABOUT,    MiFrame::OnAbout)
  87.     EVT_MENU(wxID_EXIT,     MiFrame::OnQuit)
  88.     EVT_BUTTON(wxID_OK,     MiFrame::OnButtonOk)
  89. END_EVENT_TABLE()
  90.  
  91. //Declaracion de OnAbout conectado al click del raton desde la EVENT_TABLE
  92. void MiFrame::OnAbout(wxCommandEvent& event)
  93. {
  94.     wxString mensaje;
  95.     //Contenido dentro de la ventana abierta
  96.     mensaje.Printf(wxT("La version wxWidgets es %s"),wxVERSION_STRING);
  97.     //Nombre de la barra de titulo Antonio Villanueva
  98.     wxMessageBox (mensaje,wxT("Antonio Villanueva"),wxOK | wxICON_INFORMATION,this);
  99.    
  100. }
  101. //Declaracion de OnQuit conectado al click del raton desde la EVENT_TABLE
  102. void MiFrame::OnQuit(wxCommandEvent& event)
  103. {
  104.     //Destruccion del Frame , de hecho va generar un wxEVT_CLOSE_WINDOW
  105.     //wxWidgets gestiona por defecto este evento
  106.     Close();
  107. }
  108.  
  109.  
  110. void MiFrame::OnButtonOk(wxCommandEvent& event)//Manipula boton OK
  111. {
  112.     //Abre ventana informando ....
  113.     wxMessageBox( wxT("Has hecho click en el boton OK !") );
  114. }
  115.  
  116. //Constructor de MiFrame implementa un icono una barra status y menu
  117. //wxID_ANY le dice a Widgets de generar un identificador por su cuenta
  118. MiFrame::MiFrame(const wxString& titulo):wxFrame(NULL,wxID_ANY,title)
  119. {
  120.     //Define el icono del frame
  121.     //SetIcon(wxIcon(imagen_xpm));
  122.    
  123.     //Crea la barra de Menu
  124.     wxMenu *fileMenu=new wxMenu;
  125.    
  126.     //Crea el menu
  127.     wxMenu *menuAyuda=new wxMenu;
  128.    
  129.     //Anade el Acerca de en el menu de ayuda
  130.     menuAyuda->Append(wxID_ABOUT,wxT("&Acerca ...\tF1"),
  131.                         wxT("Muestra Dialogo Acerca de "));
  132.                            
  133.     //Anade el Salir en el fileMenu                    
  134.     fileMenu->Append(wxID_EXIT,wxT("E&xit\tALT+X"),
  135.                                 wxT("Salir "));
  136.     //Creamos la barra de menus
  137.     wxMenuBar *menuBar=new wxMenuBar();
  138.    
  139.     //Ahora los anadimos a la barra de menu
  140.     menuBar->Append(fileMenu,wxT("&File"));
  141.     menuBar->Append(menuAyuda,wxT("&Ayuda"));
  142.    
  143.     //Adjuntamos este Menu al Frame
  144.     SetMenuBar(menuBar);
  145.    
  146.    
  147.     //Crea una barra de estado inferior,solo para divertirnos
  148.     CreateStatusBar(2);
  149.     SetStatusText(wxT("Barra inferior"));//Inferior ventana
  150.    
  151.    
  152.     //Test wxBoxSizer wxPanel wxButton ....
  153.     //Crea un wxBoxSizer
  154.     wxBoxSizer* Box=new wxBoxSizer(wxHORIZONTAL);
  155.    
  156.     //Crea un wxPanel
  157.     wxPanel* Panel1=new wxPanel(this,wxEXPAND);    
  158.  
  159.     //Crea un boton OK y lo coloca en el centro de la ventana
  160.     wxButton* boton=new wxButton(Panel1,wxID_OK,wxT("1"));
  161.     wxButton* boton2=new wxButton(Panel1,wxID_OK,wxT("2"));    
  162.    
  163.  
  164.     //Anade los bootones al sizer
  165.     Box->Add(boton);
  166.     Box->Add(boton2);
  167.    
  168.     //wxPanel (Panel1) utiliza el wxBoxSizer (Box)
  169.     Panel1->SetSizer(Box);    
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement