einfaches zeichnen mit wxWidgets



  • Hallo,
    ich habe erst kürzlich mit wxWidgets angefangen zu Programmieren. Nun wollte ich in mein Panel etwas zeichnen, was aber nicht funktioniert.
    Mein bisheriges Programm sieht so aus:

    Headerdatei:

    #ifndef BASIC_H
    #define BASIC_H
    
    class Appl : public wxApp
    {
        public:
        virtual bool OnInit();
    };
    
    class BasicFrame : public wxFrame
    {
        private:
        wxPanel* panel;
        DECLARE_EVENT_TABLE();
        public:
        BasicFrame(const wxChar *title, int xpos, int ypos, int width, int height);
        ~BasicFrame();
        void OnPaint(wxPaintEvent &event);
    };
    
    #endif
    

    cpp Datei:

    #include <wx/wx.h>
    #include "base.h"
    
    IMPLEMENT_APP(Appl)
    
    bool Appl::OnInit()
    {
        BasicFrame *frame=new BasicFrame(wxT("Titel des Fensters"), 0,0,1024,768);
        frame->Show(true);
        SetTopWindow(frame);
        return TRUE;
    }
    
    BasicFrame::BasicFrame(const wxChar *title, int xpos, int ypos, int width, int height)
               :wxFrame((wxFrame *) NULL, -1, title, wxPoint(xpos,ypos), wxSize(width,height))
    {
        panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(1024,768));
    }
    
    BasicFrame::~BasicFrame()
    {
    }
    
    BEGIN_EVENT_TABLE(BasicFrame, wxFrame)
        EVT_PAINT(BasicFrame::OnPaint)
    END_EVENT_TABLE()
    
    void BasicFrame::OnPaint(wxPaintEvent& event)
    {
        wxPaintDC dc(this);
        wxPen pen = *wxRED_PEN;
        pen.SetStyle(wxSOLID);
        pen.SetWidth(4);
        dc.SetPen(pen);
        dc.DrawLine(0,0,100,100);
    
    }
    

    Danke schonmal für eure Hilfe!!!



  • Entschuldigung, dass ich hier so vorschnell gepostet habe. Ich habe den Fehler inzwischen gefunden.

    Es fehlt folgende Zeile: (in der cpp-Datei im Konstruktor)
    panel->Connect(wxEVT_PAINT,wxPaintEventHandler(BasicFrame::OnPaint));

    Zumindest ist das schonmal ein Programm, das anderen Anfängern, die das gleiche Problem haben helfen könnte... 😃


Anmelden zum Antworten