+
+
+// Define a new frame type: this is going to be our main frame
+ class MyFrame : public wxFrame
+ {
+ public:
+ // ctor(s)
+ MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
+
+ // event handlers (these functions should _not_ be virtual)
+ void OnQuit(wxCommandEvent& event);
+ void OnHelp(wxCommandEvent& event);
+ void OnClose(wxCloseEvent& event);
+ private:
+ wxHtmlHelpController help;
+
+ // any class wishing to process wxWidgets events must use this macro
+ DECLARE_EVENT_TABLE()
+ };
+
+// ----------------------------------------------------------------------------
+// constants
+// ----------------------------------------------------------------------------
+
+// IDs for the controls and the menu commands
+ enum
+ {
+ // menu items
+ Minimal_Quit = 1,
+ Minimal_Help
+ };
+
+// ----------------------------------------------------------------------------
+// event tables and other macros for wxWidgets
+// ----------------------------------------------------------------------------
+
+// the event tables connect the wxWidgets events with the functions (event
+// handlers) which process them. It can be also done at run-time, but for the
+// simple menu events like this the static method is much simpler.
+ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
+ EVT_MENU(Minimal_Quit, MyFrame::OnQuit)
+ EVT_MENU(Minimal_Help, MyFrame::OnHelp)
+ EVT_CLOSE(MyFrame::OnClose)
+ END_EVENT_TABLE()
+
+ // Create a new application object: this macro will allow wxWidgets to create
+ // the application object during program execution (it's better than using a
+ // static object for many reasons) and also declares the accessor function
+ // wxGetApp() which will return the reference of the right type (i.e. MyApp and
+ // not wxApp)