]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/minimal/minimal.cpp
imagemap support (html)
[wxWidgets.git] / samples / minimal / minimal.cpp
index cb1b96765cac3f7b8c028f36e4a7572615a180b0..87122a4e3aa0090f788caa66d56f1136c868624e 100644 (file)
@@ -5,8 +5,8 @@
 // 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
 /////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
@@ -69,6 +69,9 @@ public:
     // 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
@@ -85,8 +88,7 @@ enum
     // 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,
@@ -102,6 +104,10 @@ enum
 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
@@ -149,22 +155,25 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
     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
 }
 
 
@@ -179,10 +188,10 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
 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
@@ -192,3 +201,72 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
 
     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);
+}