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...