Advertisement
AntonioVillanueva

Hello Wordl en wxWidgets

Jun 20th, 2018
509
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.87 KB | None | 0 0
  1. //Test de un Hello World en 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. wxString title ("Barra Superior");
  13.  
  14. //Declaraciones
  15.  
  16. //Cada aplicacion wxWidget define una clase derivada de wxApp
  17. class MiApp:public wxApp
  18. {
  19.     public:
  20.     //Llamado al inicio startup, es como el main en c
  21.     virtual bool OnInit();//main wxWidgets , mas abajo se implementa
  22. };
  23.  
  24. //Declaracion de la clase frame principal
  25.  
  26. //----------------------------------------------------------------------
  27.  
  28. class MiFrame:public wxFrame
  29. {
  30.     public:
  31.     //Constructor de la clase
  32.     MiFrame(const wxString& titulo);
  33.    
  34.     // Dos "event handlers" , gestion de eventos
  35.     void OnQuit(wxCommandEvent& event);
  36.     void OnAbout(wxCommandEvent& event);   
  37.     void OnSize(wxSizeEvent& event);//Manipulacion del Frame
  38.     void OnButtonOk(wxCommandEvent& event);//Click boton OK
  39.    
  40.     private:
  41.     /*Macro para informar a wxWidgets de la gestion de eventos
  42.     *Declara la tabla de eventos en esta clase ,mas abajo
  43.     * la implemento entre BEGIN_ y END_EVENT_TABLE
  44.     */
  45.     DECLARE_EVENT_TABLE()
  46. };
  47.  
  48. //----------------------------------------------------------------------
  49.  
  50. /*Implementacion , MiApp
  51. *Cuando se crea el objeto MiApp se asigna a la variable global wxTheApp
  52. * pero mejor que hacer un CAST emplear el MACRO  DECLARE_APP despues de
  53. * la declaracion de la clase , wxGetApp retorna una ref. al objeto MiApp
  54. */
  55. DECLARE_APP(MiApp)
  56.  
  57. //Macro que Proporciona a wxWidgets los medios de crear el objeto MiApp
  58. IMPLEMENT_APP(MiApp)
  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 Mini 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. //Tabla de eventos para MiFrame DECLARE_EVENT_TABLE() en MiFrame
  81. //Deteccion de los clicks de raton con wxID_ABOUT y wxID_EXIT
  82. //Que se dirigen a MiFrame::OnAbout y OnQuit
  83. BEGIN_EVENT_TABLE (         MiFrame,wxFrame)
  84.     EVT_MENU(wxID_ABOUT,    MiFrame::OnAbout)
  85.     EVT_MENU(wxID_EXIT,     MiFrame::OnQuit)
  86.     EVT_SIZE(               MiFrame::OnSize)//No tiene argumento
  87.     EVT_BUTTON(wxID_OK,     MiFrame::OnButtonOk)
  88. END_EVENT_TABLE()
  89.  
  90. //Declaracion de OnAbout conectado al click del raton desde la EVENT_TABLE
  91. void MiFrame::OnAbout(wxCommandEvent& event)
  92. {
  93.     wxString mensaje;
  94.     //Contenido dentro de la ventana abierta
  95.     mensaje.Printf(wxT("La version wxWidgets es %s"),wxVERSION_STRING);
  96.     //Nombre de la barra de titulo Antonio Villanueva
  97.     wxMessageBox (mensaje,wxT("Antonio Villanueva"),wxOK | wxICON_INFORMATION,this);
  98. }
  99. //Declaracion de OnQuit conectado al click del raton desde la EVENT_TABLE
  100. void MiFrame::OnQuit(wxCommandEvent& event)
  101. {
  102.     //Destruccion del Frame , de hecho va generar un wxEVT_CLOSE_WINDOW
  103.     //wxWidgets gestiona por defecto este evento
  104.     Close();
  105. }
  106.  
  107. void MiFrame::OnSize(wxSizeEvent& event)//Manipulacion del Frame
  108. {
  109. //  wxMessageBox( wxT("Cambiando size de la ventana !") );
  110. }
  111.  
  112. void MiFrame::OnButtonOk(wxCommandEvent& event)//Manipula boton OK
  113. {
  114.     //Abre ventana informando ....
  115.     wxMessageBox( wxT("Has hecho click en el boton OK !") );
  116. }
  117.  
  118. //Constructor de MiFrame implementa un icono una barra status y menu
  119. //wxID_ANY le dice a Widgets de generar un identificador por su cuenta
  120. MiFrame::MiFrame(const wxString& titulo):wxFrame(NULL,wxID_ANY,title)
  121. {
  122.     //Define el icono del frame
  123.     //SetIcon(wxIcon(imagen_xpm));
  124.    
  125.     //Crea la barra de Menu
  126.     wxMenu *fileMenu=new wxMenu;
  127.    
  128.     //Crea el menu
  129.     wxMenu *menuAyuda=new wxMenu;
  130.    
  131.     //Anade el Acerca de en el menu de ayuda
  132.     menuAyuda->Append(wxID_ABOUT,wxT("&Acerca ...\tF1"),
  133.                         wxT("Muestra Dialogo Acerca de "));
  134.                            
  135.     //Anade el Salir en el fileMenu                    
  136.     fileMenu->Append(wxID_EXIT,wxT("E&xit\tALT+X"),
  137.                                 wxT("Salir "));
  138.     //Creamos la barra de menus
  139.     wxMenuBar *menuBar=new wxMenuBar();
  140.    
  141.     //Ahora los anadimos a la barra de menu
  142.     menuBar->Append(fileMenu,wxT("&File"));
  143.     menuBar->Append(menuAyuda,wxT("&Ayuda"));
  144.    
  145.     //Adjuntamos este Menu al Frame
  146.     SetMenuBar(menuBar);
  147.    
  148.    
  149.     //Crea una barra de estado inferior,solo para divertirnos
  150.     CreateStatusBar(2);
  151.     SetStatusText(wxT("Barra inferior"));//Inferior ventana
  152.    
  153.     //Crea un boton OK y lo coloca en el centro de la ventana
  154.     wxButton* boton=new wxButton(this,wxID_OK,wxT("OK"),wxPoint(150,100));
  155.    
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement