Advertisement
AntonioVillanueva

Barra de menu wxMenuBar wxWidgets

Jul 10th, 2018
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.74 KB | None | 0 0
  1. //wxMenuBar  Antonio Villanueva segura
  2. //g++ -Wall -static-libstdc++ -std=c++11 -Wunused-but-set-variable `wx-config --cxxflags` -o hola *.cpp `wx-config --libs`
  3. //Declara la clase aplicacion
  4.  
  5. #include <iostream>
  6. #include "wx/wx.h"
  7. #include <wx/popupwin.h>
  8. #include <wx/menu.h> //menu en el frame
  9. #include <wx/event.h>
  10. //using namespace std;
  11.  
  12. //Declaraciones
  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();
  30.    
  31.     // "event handlers" , gestion de eventos
  32.     void OnOpen(wxCommandEvent& event);
  33.     void OnQuit(wxCommandEvent& event);
  34.     void OnAbout(wxCommandEvent& event);  
  35.     void OnButtonOk(wxCommandEvent& event);//Click boton OK
  36.    
  37.     private:
  38.     wxMenu* m_menu;//Crea menu ..
  39.     /*Macro para informar a wxWidgets de la gestion de eventos
  40.     *Declara la tabla de eventos en esta clase ,mas abajo
  41.     * la implemento entre BEGIN_ y END_EVENT_TABLE
  42.     */
  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. //Implementacion OnInit,Inicializa la aplicacion
  61.  
  62. bool MiApp::OnInit()
  63. {
  64.     //Crea la ventana principal , una instancia de nuestra clase MiFrame
  65.     //El titulo lo pasamos al constructor envuelto en el macro wxT
  66.     //macro de conversion de strings y char al tipo apropiado
  67.     MiFrame *frame=new MiFrame();
  68.    
  69.     //Mostrar la ventana
  70.     frame->Show(true);
  71.    
  72.     //Arranca el bucle de eventos
  73.     return true ;//Si false limpia sus estructuras y sale
  74. }
  75.  
  76. //----------------------------------------------------------------------
  77.  
  78. //Tabla de eventos para MiFrame DECLARE_EVENT_TABLE() en MiFrame
  79. //Deteccion de los clicks de raton con wxID_ABOUT y wxID_EXIT
  80. //Que se dirigen a MiFrame::OnAbout y OnQuit
  81. BEGIN_EVENT_TABLE ( MiFrame, wxFrame)
  82.     EVT_MENU(wxID_OPEN,    MiFrame::OnOpen)
  83.     EVT_MENU(wxID_ABOUT,    MiFrame::OnAbout)
  84.     EVT_MENU(wxID_EXIT,     MiFrame::OnQuit)
  85.     EVT_BUTTON(wxID_OK,     MiFrame::OnButtonOk)
  86.     //EVT_LEFT_DCLICK(MiFrame::EventosRaton)
  87. END_EVENT_TABLE()
  88.  
  89. //Declaracion de OnAbout conectado al click del raton desde la EVENT_TABLE
  90. void MiFrame::OnAbout(wxCommandEvent& event)
  91. {
  92.     wxMessageBox (wxT(" About "));
  93. }
  94.  
  95. void MiFrame::OnOpen(wxCommandEvent& event)
  96. {
  97.     wxMessageBox (wxT(" Open "));
  98. }
  99.  
  100. //Declaracion de OnQuit conectado al click del raton desde la EVENT_TABLE
  101. void MiFrame::OnQuit(wxCommandEvent& event)
  102. {
  103.     Close();
  104. }
  105.  
  106. void MiFrame::OnButtonOk(wxCommandEvent& event)//evento boton OK
  107. {
  108.     //Abre ventana informando ....
  109.     wxMessageBox( wxT("Has hecho click en el boton OK !") );
  110. }
  111.  
  112. //Constructor de MiFrame implementa un icono una barra status y menu
  113. //wxID_ANY le dice a Widgets de generar un identificador por su cuenta
  114. MiFrame::MiFrame():wxFrame(NULL,wxID_ANY,"Mi Ventana")
  115. {
  116.     //Barra de Menu en el parte superior del Frame
  117.     wxMenuBar* BarraDeMenu=new wxMenuBar;
  118.    
  119.     //Ficheros del Menu
  120.     wxMenu* FicherosMenu=new wxMenu;
  121.    
  122.     FicherosMenu->Append(wxID_OPEN,wxT("A&bre"),wxT("Abre un fichero"));
  123.     FicherosMenu->AppendSeparator();
  124.     FicherosMenu->Append(wxID_ABOUT,wxT("&Acerca de "),wxT("info about")); 
  125.     FicherosMenu->AppendSeparator();
  126.     FicherosMenu->Append(wxID_EXIT,wxT("&SALIR "),wxT("salir y cerrar"));  
  127.    
  128.     //Anade los Ficheros del Menu a la barra de Menu
  129.     BarraDeMenu-> Append(FicherosMenu,"Opciones Barra");
  130.    
  131.     //Anade esta barra al frame actual
  132.     SetMenuBar(BarraDeMenu);
  133.    
  134.     //Test wxBoxSizer wxPanel wxButton ....
  135.     //Crea un wxBoxSizer
  136.     wxBoxSizer* Box=new wxBoxSizer(wxHORIZONTAL);
  137.    
  138.     //Crea un wxPanel
  139.     wxPanel* Panel1=new wxPanel(this,wxEXPAND);    
  140.  
  141.     //Crea un boton OK y lo coloca en el centro de la ventana
  142.     wxButton* boton=new wxButton(Panel1,wxID_OK,wxT("1"));
  143.     wxButton* boton2=new wxButton(Panel1,wxID_OK,wxT("2"));    
  144.    
  145.     //Anade los bootones al sizer
  146.     Box->Add(boton);
  147.     Box->Add(boton2);
  148.    
  149.     //wxPanel (Panel1) utiliza el wxBoxSizer (Box)
  150.     Panel1->SetSizer(Box);    
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement