    01: #include <wx/wx.h>
    02:
    03: const int ID_SAY_HELLO = 1000;
    04: const int ID_SAY_GOODBYE = 1001;
    05:
    06: /**
    07:    A frame with a simple menu that adds greetings to a
    08:    text control.
    09: */
    10: class EventFrame : public wxFrame
    11: {
    12: public:
    13:    /**
    14:       Constructs the menu and text control.
    15:    */
    16:    EventFrame();
    17:    /**
    18:       Adds a "Hello, World!" message to the text control.
    19:       @param event the event descriptor
    20:    */
    21:    void OnSayHello(wxCommandEvent& event);
    22:    /**
    23:       Adds a "Goodbye, World!" message to the text control.
    24:       @param event the event descriptor
    25:    */
    26:    void OnSayGoodbye(wxCommandEvent& event);
    27: private:
    28:    wxTextCtrl* text;
    29:    DECLARE_EVENT_TABLE()
    30: };
    31:
    32: /**
    33:    An application to demonstrate the handling of menu events.
    34: */
    35: class EventApp : public wxApp
    36: {
    37: public:
    38:    /**
    39:       Constructs the frame.
    40:    */
    41:    EventApp();
    42:    /**
    43:       Shows the frame.
    44:       @return true
    45:    */
    46:    virtual bool OnInit();
    47: private:
    48:    EventFrame* frame;
    49: };
    50:
    51: DECLARE_APP(EventApp)
    52:
    53: IMPLEMENT_APP(EventApp)
    54:
    55: BEGIN_EVENT_TABLE(EventFrame, wxFrame)
    56:    EVT_MENU(ID_SAY_HELLO, EventFrame::OnSayHello)
    57:    EVT_MENU(ID_SAY_GOODBYE, EventFrame::OnSayGoodbye)
    58: END_EVENT_TABLE()
    59:
    60: EventFrame::EventFrame()
    61:    : wxFrame(NULL, -1, "EventFrame")
    62: {
    63:    text = new wxTextCtrl(this, -1, "",
    64:       wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE);
    65:
    66:    // initialize menu
    67:    wxMenu* menu = new wxMenu();
    68:    menu->Append(ID_SAY_HELLO, "Hello");
    69:    menu->Append(ID_SAY_GOODBYE, "Goodbye");
    70:
    71:    // add menu to menu bar
    72:    wxMenuBar* menuBar = new wxMenuBar();
    73:    SetMenuBar(menuBar);
    74:    menuBar->Append(menu, "Say");
    75: }
    76:
    77: void EventFrame::OnSayHello(wxCommandEvent& event)
    78: {
    79:    text->AppendText("Hello, World!\n");
    80: }
    81:
    82: void EventFrame::OnSayGoodbye(wxCommandEvent& event)
    83: {
    84:    text->AppendText("Goodbye, World!\n");
    85: }
    86:
    87: EventApp::EventApp()
    88: {
    89:    frame = new EventFrame();
    90: }
    91:
    92: bool EventApp::OnInit()
    93: {
    94:    frame->Show(true);
    95:    return true;
    96: }
    97:
    98: