Advertisement
AntonioVillanueva

Dibujando el wxFrame simple en wxWidgets en modo Dragging

Jul 11th, 2018
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.23 KB | None | 0 0
  1. //Dibujando en wxWidgets 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. #include <wx/pen.h> //lapiz
  11. #include <wx/dcmemory.h>
  12. #include <wx/sizer.h>
  13. #include <wx/button.h>
  14. #include <wx/dc.h>
  15. //using namespace std;
  16.  
  17. //Declaraciones
  18.  //Cada aplicacion wxWidget define una clase derivada de wxApp
  19. class MiApp:public wxApp
  20. {
  21.     public:
  22.     //Llamado al inicio startup, es como el main en c
  23.     virtual bool OnInit();//main wxWidgets , mas abajo se implementa
  24.    
  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();
  36.     // "event handlers" , gestion de evento
  37.    void EnMovimiento (wxMouseEvent& event);//Evento raton ...
  38.  
  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();
  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.  const wxWindowIDRef ID_BUTTON1=wxWindow::NewControlId();
  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_MOTION(MiFrame::EnMovimiento) //Evento raton en movimiento
  85. END_EVENT_TABLE()
  86.  
  87. //Constructor de MiFrame
  88. MiFrame::MiFrame():wxFrame(NULL,wxID_ANY,"Mi Ventana")
  89. {
  90. }
  91.  
  92. void MiFrame::EnMovimiento (wxMouseEvent& event){//Evento raton ...
  93.      // wxMessageBox( wxT("En movimiento !") );
  94.     if (event.Dragging()){//Mueve con boton apretado
  95.         wxClientDC dc(this);//Crea un wxClient sobre MiFrame
  96.         wxPen lapiz(wxT ("RED"),1);//Crea un lapiz rojo 1
  97.         dc.SetPen(lapiz);//wxClient utiliza el lapiz
  98.         dc.DrawPoint(event.GetPosition());//Dibuja un punto desde la posicion del evento
  99.         dc.SetPen(wxNullPen);//anula lapiz del wxClient    
  100.     }  
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement