X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0731c594f499c9ca2e1ea8a4599c20409a407569..b231914f6abe2c148193b006a0919d60575f9a20:/samples/minimal/minimal.cpp diff --git a/samples/minimal/minimal.cpp b/samples/minimal/minimal.cpp index b2ee183574..59e20e6ca9 100644 --- a/samples/minimal/minimal.cpp +++ b/samples/minimal/minimal.cpp @@ -18,8 +18,8 @@ // ---------------------------------------------------------------------------- #ifdef __GNUG__ - #pragma implementation "minimal.cpp" - #pragma interface "minimal.cpp" +// #pragma implementation "minimal.cpp" +// #pragma interface "minimal.cpp" #endif // For compilers that support precompilation, includes "wx/wx.h". @@ -35,11 +35,15 @@ #include "wx/wx.h" #endif +#include "wx/dynarray.h" + +WX_DEFINE_ARRAY(wxWindow *, wxArrayLboxes); + // ---------------------------------------------------------------------------- // resources // ---------------------------------------------------------------------------- // the application icon -#if defined(__WXGTK__) || defined(__WXMOTIF__) +#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) #include "mondrian.xpm" #endif @@ -70,8 +74,13 @@ public: // event handlers (these functions should _not_ be virtual) void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); + void OnCreateLbox(wxCommandEvent& event); + void OnDeleteLbox(wxCommandEvent& event); private: + wxArrayLboxes m_lboxes; + wxCoord m_pos; + // any class wishing to process wxWindows events must use this macro DECLARE_EVENT_TABLE() }; @@ -85,9 +94,14 @@ enum { // menu items Minimal_Quit = 1, - Minimal_About + Minimal_About, + Minimal_CreateLbox, + Minimal_DeleteLbox, }; +static const size_t NUM_LBOXES = 10; +static const wxCoord POS_STEP = 5; + // ---------------------------------------------------------------------------- // event tables and other macros for wxWindows // ---------------------------------------------------------------------------- @@ -98,6 +112,8 @@ enum BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(Minimal_Quit, MyFrame::OnQuit) EVT_MENU(Minimal_About, MyFrame::OnAbout) + EVT_MENU(Minimal_CreateLbox, MyFrame::OnCreateLbox) + EVT_MENU(Minimal_DeleteLbox, MyFrame::OnDeleteLbox) END_EVENT_TABLE() // Create a new application object: this macro will allow wxWindows to create @@ -140,6 +156,8 @@ bool MyApp::OnInit() MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) : wxFrame((wxFrame *)NULL, -1, title, pos, size) { + m_pos = 0; + #ifdef __WXMAC__ // we need this in order to allow the about menu relocation, since ABOUT is // not the default id of the about menu @@ -149,12 +167,15 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // set the frame icon SetIcon(wxICON(mondrian)); +#if wxUSE_MENUS // create a menu bar wxMenu *menuFile = new wxMenu("", wxMENU_TEAROFF); // the "About" item should be in the help menu wxMenu *helpMenu = new wxMenu; helpMenu->Append(Minimal_About, "&About...\tCtrl-A", "Show about dialog"); + helpMenu->Append(Minimal_CreateLbox, "&Create 10 listboxes\tCtrl-C"); + helpMenu->Append(Minimal_DeleteLbox, "&Delete 10 listboxes\tCtrl-D"); menuFile->Append(Minimal_Quit, "E&xit\tAlt-X", "Quit this program"); @@ -165,6 +186,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // ... and attach this menu bar to the frame SetMenuBar(menuBar); +#endif // wxUSE_MENUS #if wxUSE_STATUSBAR // create a status bar just for fun (by default with 1 pane only) @@ -190,3 +212,28 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) wxMessageBox(msg, "About Minimal", wxOK | wxICON_INFORMATION, this); } + +void MyFrame::OnCreateLbox(wxCommandEvent& WXUNUSED(event)) +{ + for ( size_t n = 0; n < NUM_LBOXES; n++ ) + { + m_lboxes.Add(new wxListBox(this, -1, wxPoint(m_pos, m_pos))); + m_pos += POS_STEP; + } +} + +void MyFrame::OnDeleteLbox(wxCommandEvent& WXUNUSED(event)) +{ + size_t count = m_lboxes.GetCount(); + if ( count < NUM_LBOXES ) + return; + + for ( size_t n = 0; n < NUM_LBOXES; n++ ) + { + delete m_lboxes[--count]; + m_lboxes.RemoveAt(count); + + m_pos -= POS_STEP; + } +} +