一、main.h
#include <wx/wx.h>
class MyApp:public wxApp
{
public:
virtual bool OnInit();
};
二、main.cpp
#include "main.h"
#include "MyFrame.h"
wxIMPLEMENT_APP(MyApp);
bool MyApp::OnInit()
{
MyFrame *frame = new MyFrame("my frame");
frame->Show(true);
return true;
}
三、myframe.h
class MyFrame:public wxFrame
{
public:
MyFrame(const wxString &title);
protected:
void OnAbout(wxCommandEvent &event);//1声明事件处理函数
void OnExit(wxCommandEvent &event);
};
四、myframe.cpp
#include <wx/wx.h>
#include "myframe.h"
MyFrame::MyFrame(const wxString &title)
:wxFrame(NULL,wxID_ANY,title,wxDefaultPosition,wxSize(200,150))
{
wxPanel *panel = new wxPanel(this,wxID_ANY,wxDefaultPosition,wxSize(100,100));
//*** 2 事件动态绑定按钮
wxButton *button = new wxButton;
button->Create(panel,wxID_ABOUT,"a button");//wxID_ABOUT也要可以用wxID_ANY
//***button事件动态绑定方法1***
button->Bind(wxEVT_COMMAND_BUTTON_CLICKED,MyFrame::OnAbout,this);
//*** 2-4事件静态绑定按钮 ***
wxButton *btnExit = new wxButton;
btnExit->Create(panel,wxID_EXIT,"Exit"
,wxPoint(0,button->GetPosition().y + button->GetSize().GetHeight())
);
//** button事件动态绑定方式2 ***
// Bind(wxEVT_COMMAND_BUTTON_CLICKED,MyFrame::OnAbout,this,wxID_EXIT);
Centre();
}
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
wxMessageBox("this is a message.");
}
void MyFrame::OnExit(wxCommandEvent &event)
{
Close(true);
}