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: