【发布时间】:2020-05-14 15:17:25
【问题描述】:
#include "wx/wx.h"
class MyFrame : public wxFrame{
public:
MyFrame();
~MyFrame();
private:
//DECLARE_EVENT_TABLE()
};
class MyWindow : public wxWindow{
public:
void OnPaint(wxPaintEvent& event);
private:
DECLARE_EVENT_TABLE()
};
class MyApp : public wxApp
{
public:
MyApp();
~MyApp();
virtual bool OnInit();
void DrawSimpleShapes(wxDC& dc);
private:
MyFrame* m_frame = NULL;
//MyWindow* w = NULL;
};
MyFrame::MyFrame() : wxFrame(nullptr,wxID_ANY,"Rectangle",wxPoint(30,30),wxSize(800,600))
{
}
bool MyApp :: OnInit()
{
m_frame = new MyFrame();
m_frame->Show();
//w = new MyWindow();
//w->Show();
return true;
}
wxIMPLEMENT_APP(MyApp);
wxBEGIN_EVENT_TABLE(MyWindow,wxWindow)
EVT_PAINT(MyWindow::OnPaint)
wxEND_EVENT_TABLE()
MyFrame::~MyFrame()
{
}
MyApp::MyApp()
{
}
MyApp::~MyApp()
{
}
void MyWindow :: OnPaint(wxPaintEvent& event)
{
wxPaintDC dc(this);
dc.SetPen(*wxBLACK_PEN);
dc.SetBrush(*wxRED_BRUSH);
wxSize sz = GetClientSize();
wxCoord w = 100, h = 50;
int x = wxMax(0,(sz.x-w)/2);
int y = wxMax(0,(sz.y - h)/2);
wxRect recToDraw(x,y,w,h);
dc.DrawRectangle(recToDraw);
}
我需要一些学习 wxWidgets 的指导。我的代码有什么问题?当我运行此代码时,它不会打印任何矩形。相反,它只打印窗口。我是 wxWidgets 库的新手,所以我很难找到任何错误。我无法在 wxWidgets 中进行任何错误处理。
【问题讨论】:
-
欢迎来到 Stack Overflow。请阅读the help pages、the SO tour、阅读how to ask good questions,以及this question checklist。另请了解如何创建minimal reproducible example。最后,请不要用无法阅读的文字墙发送垃圾邮件。用适当的句子和段落清楚地解释问题是什么,你尝试了什么,你在调试程序时发现了什么。
-
至于你的问题,为什么你把创建窗口注释掉了?如果您没有窗口,则不会调用
OnPaint函数。