// Modified by:
// Created: 04/01/98
// RCS-ID: $Id$
-// Copyright: (c) Julian Smart and Markus Holzem
-// Licence: wxWindows license
+// Copyright: (c) Julian Smart
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// ============================================================================
// event handlers (these functions should _not_ be virtual)
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
+ void OnTest(wxCommandEvent& event);
+
+ void OnPaint(wxPaintEvent& event);
private:
// any class wishing to process wxWindows events must use this macro
// menu items
Minimal_Quit = 1,
Minimal_About,
- Minimal_Test1,
- Minimal_Test2,
+ Minimal_Test,
// controls start here (the numbers are, of course, arbitrary)
Minimal_Text = 1000,
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(Minimal_Quit, MyFrame::OnQuit)
EVT_MENU(Minimal_About, MyFrame::OnAbout)
+
+ EVT_MENU(Minimal_Test, MyFrame::OnTest)
+
+ EVT_PAINT(MyFrame::OnPaint)
END_EVENT_TABLE()
// Create a new application object: this macro will allow wxWindows to create
SetIcon(wxICON(mondrian));
// create a menu bar
- wxMenu *menuFile = new wxMenu;
+ wxMenu *menuFile = new wxMenu("", wxMENU_TEAROFF);
- menuFile->Append(Minimal_About, "&About...");
+ menuFile->Append(Minimal_About, "&About...\tCtrl-A", "Show about dialog");
+ menuFile->Append(Minimal_Test, "&Test...\tCtrl-T", "Test");
menuFile->AppendSeparator();
- menuFile->Append(Minimal_Quit, "E&xit");
+ menuFile->Append(Minimal_Quit, "E&xit\tAlt-X", "Quit this program");
// now append the freshly created menu to the menu bar...
- wxMenuBar *menuBar = new wxMenuBar;
+ wxMenuBar *menuBar = new wxMenuBar();
menuBar->Append(menuFile, "&File");
// ... and attach this menu bar to the frame
SetMenuBar(menuBar);
+#if wxUSE_STATUSBAR
// create a status bar just for fun (by default with 1 pane only)
CreateStatusBar(2);
SetStatusText("Welcome to wxWindows!");
+#endif // wxUSE_STATUSBAR
}
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
wxString msg;
- msg.Printf("This is the about dialog of minimal sample.\n"
- "Welcome to %s"
+ msg.Printf( _T("This is the about dialog of minimal sample.\n")
+ _T("Welcome to %s")
#ifdef wxBETA_NUMBER
- " (beta %d)!"
+ _T(" (beta %d)!")
#endif // wxBETA_NUMBER
, wxVERSION_STRING
#ifdef wxBETA_NUMBER
wxMessageBox(msg, "About Minimal", wxOK | wxICON_INFORMATION, this);
}
+
+struct Foo
+{
+ Foo(int n_) { n = n_; }
+
+ int n;
+};
+
+WX_DECLARE_LIST(Foo, FooList);
+
+#include <wx/listimpl.cpp>
+
+WX_DEFINE_LIST(FooList);
+
+int FooSort(const Foo **item1, const Foo **item2)
+{
+ return (*item2)->n - (*item1)->n;
+}
+
+void ShowList(const FooList& list)
+{
+ wxString msg, str;
+ msg = "The list elements: (";
+ for ( FooList::Node *node = list.GetFirst(); node; node = node->GetNext() )
+ {
+ if ( !!str )
+ msg += ", ";
+ str.Printf("%d", node->GetData()->n);
+ msg += str;
+ }
+
+ msg += ')';
+
+ wxMessageBox(msg, "List contents", wxOK | wxICON_INFORMATION);
+}
+
+void MyFrame::OnTest(wxCommandEvent& event)
+{
+ FooList list;
+ list.Append(new Foo(12));
+ list.Append(new Foo(3));
+ list.Append(new Foo(1));
+ list.Append(new Foo(7));
+ list.Append(new Foo(4));
+ ShowList(list);
+ list.Sort(FooSort);
+ ShowList(list);
+}
+
+void MyFrame::OnPaint(wxPaintEvent& event)
+{
+ wxPaintDC dc(this);
+
+ wxMemoryDC dcMem;
+ wxSize size(GetClientSize());
+ dcMem.SelectObject(wxBitmap(size.x, size.y, -1));
+
+ dcMem.SetBackground(wxBrush(wxColour(0, 0, 255), wxSOLID));
+ dcMem.SetTextForeground(wxColour(0, 255, 0));
+ dcMem.SetTextBackground(wxColour(0, 0, 0));
+ dcMem.SetBackgroundMode(wxSOLID);
+ dcMem.Clear();
+ dcMem.DrawText("Hello, wxWindows!", 10, 10);
+
+ wxPoint ptOrig(0, 0);
+ dc.Blit(ptOrig, size, &dcMem, ptOrig);
+
+ dcMem.SelectObject(wxNullBitmap);
+}