mit wxWidgets zeichnen...



  • Hallo, ich habe, nachdem ich das Tut part I hier aus dem Magazin gemacht habe, versuche ich nun das Programm aus part II ein wenig meinen Bedürfnisen anzupassen.

    Dazu versuche ich mit nur einem Panel auszukommen, selbiges direkt auf die Oberfläche zu werfen und zu "bezeichnen".

    Dazu der Code der Panel.cpp:

    #include "FieldPanel.hpp"
    
    // << constructor >>
    
    FieldPanel::FieldPanel(wxWindow* parent): wxPanel(parent,wxNewId(),wxDefaultPosition,wxDefaultSize,wxFULL_REPAINT_ON_RESIZE){
    
    	Connect(wxEVT_PAINT,wxPaintEventHandler(FieldPanel::OnPaint));
    
    	Connect(wxEVT_LEFT_DOWN,wxMouseEventHandler(FieldPanel::OnLeftClick));
    
    }
    
    // << destructor >>
    
    FieldPanel::~FieldPanel(){
    
    }
    
    void FieldPanel::OnPaint(wxPaintEvent& event){
    
    	wxPaintDC dc(this);
    
    	dc.DrawRectangle(2, 2, GetSize().GetWidth()-2, GetSize().GetHeight()-2);
    
    	int abstand = 10;
    
    	pen.SetStyle(wxSOLID);
    
    	pen.SetWidth(4);
    
    	dc.SetPen(pen);
    
    	dc.DrawLine(abstand,abstand,GetSize().GetWidth()-abstand,GetSize().GetHeight()-abstand);
    
    	dc.DrawLine(GetSize().GetWidth()-abstand,abstand,abstand,GetSize().GetHeight()-abstand);
    
    }
    
    void FieldPanel::OnLeftClick(wxMouseEvent& event){
    
    }
    

    die zugehörige .hpp:

    #ifndef FieldPanel_hpp
    
    #define FieldPanel_hpp
    
    #include <wx/panel.h>
    
    #include <vector>
    
    #include <wx/stattext.h>
    
    class FieldPanel : public wxPanel{
    
    	protected:
    
    	public:
    
    		FieldPanel(wxWindow* parent);
    
    		virtual ~FieldPanel();
    
    		void OnPaint(wxPaintEvent& event);
    
    		void OnLeftClick(wxMouseEvent& event);
    
    };
    
    #endif
    

    In der main.cpp wird das ganze im Konstruktor dann so aufgerufen:

    FieldPanel* fieldpanel = new FieldPanel(this);
    

    Wenn ich das ganze kompiliere bekomme ich folgende Fehlermeldung:

    jan@jan-laptop:/media/My Passport/C++/wxw/tuts/drawing$ g++ app.cpp main.cpp FieldPanel.cpp `wx-config --libs` `wx-config --cxxflags` -o prog
    FieldPanel.cpp: In member function »void FieldPanel::OnPaint(wxPaintEvent&)«:
    FieldPanel.cpp:20: Fehler: »wxPaintDC« wurde in diesem Gültigkeitsbereich nicht definiert
    FieldPanel.cpp:20: Fehler: expected `;' before »dc«
    FieldPanel.cpp:21: Fehler: »dc« wurde in diesem Gültigkeitsbereich nicht definiert
    FieldPanel.cpp:23: Fehler: »pen« wurde in diesem Gültigkeitsbereich nicht definiert
    jan@jan-laptop:/media/My Passport/C++/wxw/tuts/drawing$

    Achja wie man sieht arbeite ich in Linux und mit g++
    Kann mir jemand erklären was das Problem ist?



  • #include <wx/dcclient.h>
    für wxPaintDC

    und

    wxPen pen;



  • Include für wxPaintDC vergessen?
    rya



  • Dankeschön!!

    Klappt endlich... so im nachhinein schäm ich mich das nicht gesehen zu haben *dough*


Anmelden zum Antworten