X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b5a49d4c5267d4eb933d45ec615ac2ed374750dc..d38e8d5f34262fa688cd0e5d397a2201978e5fa7:/samples/erase/erase.cpp diff --git a/samples/erase/erase.cpp b/samples/erase/erase.cpp index d9f5cfc041..1eeba32d3a 100644 --- a/samples/erase/erase.cpp +++ b/samples/erase/erase.cpp @@ -17,7 +17,7 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(__APPLE__) #pragma implementation "erase.cpp" #pragma interface "erase.cpp" #endif @@ -71,10 +71,10 @@ class MyCanvas : public wxScrolledWindow { public: MyCanvas( MyFrame *parent ); - + void OnPaint( wxPaintEvent &event ); void OnEraseBackground( wxEraseEvent &event ); - + wxBitmap m_bitmap; private: @@ -88,8 +88,7 @@ private: enum { // menu items - Minimal_Quit = 1, - Minimal_About + ID_MENU_QUIT = 1, }; @@ -101,11 +100,11 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { - MyFrame *frame = new MyFrame("Minimal wxWindows App", + MyFrame *frame = new MyFrame(_T("Erase sample"), wxPoint(50, 50), wxSize(450, 340)); frame->Show(TRUE); - + return TRUE; } @@ -114,37 +113,33 @@ bool MyApp::OnInit() // ---------------------------------------------------------------------------- BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(Minimal_Quit, MyFrame::OnQuit) - EVT_MENU(Minimal_About, MyFrame::OnAbout) + EVT_MENU(ID_MENU_QUIT, MyFrame::OnQuit) + EVT_MENU(wxID_ABOUT, MyFrame::OnAbout) END_EVENT_TABLE() // frame constructor MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) : wxFrame((wxFrame *)NULL, -1, title, pos, size) { -#ifdef __WXMAC__ - wxApp::s_macAboutMenuItemId = Minimal_About; -#endif - SetIcon(wxICON(mondrian)); wxMenu *menuFile = new wxMenu("", wxMENU_TEAROFF); wxMenu *helpMenu = new wxMenu; - helpMenu->Append(Minimal_About, "&About...\tCtrl-A", "Show about dialog"); + helpMenu->Append(wxID_ABOUT, _T("&About...\tCtrl-A"), _T("Show about dialog")); - menuFile->Append(Minimal_Quit, "E&xit\tAlt-X", "Quit this program"); + menuFile->Append(ID_MENU_QUIT, _T("E&xit\tAlt-X"), _T("Quit this program")); wxMenuBar *menuBar = new wxMenuBar(); - menuBar->Append(menuFile, "&File"); - menuBar->Append(helpMenu, "&Help"); + menuBar->Append(menuFile, _T("&File")); + menuBar->Append(helpMenu, _T("&Help")); SetMenuBar(menuBar); #if wxUSE_STATUSBAR // create a status bar just for fun (by default with 1 pane only) CreateStatusBar(2); - SetStatusText("Welcome to wxWindows!"); + SetStatusText(_T("Welcome to wxWindows erase sample!")); #endif // wxUSE_STATUSBAR (void)new MyCanvas( this ); @@ -158,11 +153,8 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { - wxString msg; - msg.Printf( _T("This is the about dialog of the Erase sample.\n") - _T("Welcome to %s"), wxVERSION_STRING); - - wxMessageBox(msg, "About Erase", wxOK | wxICON_INFORMATION, this); + wxMessageBox(_T("This sample shows how you can draw custom background."), + _T("About Erase Sample"), wxOK | wxICON_INFORMATION, this); } @@ -172,13 +164,15 @@ BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) END_EVENT_TABLE() MyCanvas::MyCanvas( MyFrame *parent ) - : wxScrolledWindow( parent, -1, wxDefaultPosition, wxDefaultSize, - wxScrolledWindowStyle|wxNO_FULL_REPAINT_ON_RESIZE|wxSUNKEN_BORDER ) + : wxScrolledWindow( parent, -1, wxDefaultPosition, wxDefaultSize, + wxScrolledWindowStyle | + wxNO_FULL_REPAINT_ON_RESIZE| + wxSUNKEN_BORDER ) { SetScrollbars( 10, 10, 40, 100, 0, 0 ); - - m_bitmap = wxBitmap( mondrian_xpm ); - + + m_bitmap = wxBitmap( wxICON(mondrian) ); + new wxStaticBitmap( this, -1, m_bitmap, wxPoint(80,20) ); } @@ -186,13 +180,16 @@ void MyCanvas::OnPaint( wxPaintEvent &event ) { wxPaintDC dc(this); PrepareDC( dc ); - + dc.SetBrush( *wxBLACK_BRUSH ); dc.DrawRectangle( 0,0,200,50 ); - + dc.DrawBitmap( m_bitmap, 10, 20, TRUE ); - -#if 0 + + dc.SetTextForeground(*wxBLUE); + dc.DrawText(_T("This text is drawn from OnPaint"), 65, 65); + +#if 0 wxRegionIterator upd( GetUpdateRegion() ); while (upd) { @@ -207,27 +204,28 @@ void MyCanvas::OnPaint( wxPaintEvent &event ) wxLogDebug( "size %d %d client_size %d %d", size.x, size.y, client_size.x, client_size.y ); #endif +#if 0 int i; dc.SetPen( *wxWHITE_PEN ); for (i = 0; i < 20; i += 2) dc.DrawLine( i,i, i+100,i ); - + dc.SetPen( *wxWHITE_PEN ); for (i = 200; i < 220; i += 2) dc.DrawLine( i-200,i, i-100,i ); - + wxRegion region( 110, 110, 80, 80 ); wxRegion hole( 130, 130, 40, 1 ); region.Intersect( hole ); dc.SetClippingRegion( region ); - + dc.SetBrush( *wxRED_BRUSH ); dc.DrawRectangle( 100, 100, 200, 200 ); - + dc.DestroyClippingRegion(); dc.SetPen( *wxTRANSPARENT_PEN ); - + wxRegion strip( 110, 200, 30, 1 ); wxRegionIterator it( strip ); while (it) @@ -235,10 +233,29 @@ void MyCanvas::OnPaint( wxPaintEvent &event ) dc.DrawRectangle( it.GetX(), it.GetY(), it.GetWidth(), it.GetHeight() ); it ++; } +#endif // 0 } -void MyCanvas::OnEraseBackground( wxEraseEvent &event ) +void MyCanvas::OnEraseBackground( wxEraseEvent& event ) { - event.Skip( TRUE ); + wxDC& dc = *event.GetDC(); + dc.SetPen(*wxGREEN_PEN); + + // this line is needed, otherwise the junk is left on win the background + dc.Clear(); + + wxSize size = GetClientSize(); + for ( int x = 0; x < size.x; x+= 10 ) + { + dc.DrawLine(x, 0, x, size.y); + } + + for ( int y = 0; y < size.y; y+= 10 ) + { + dc.DrawLine(0, y, size.x, y); + } + + dc.SetTextForeground(*wxRED); + dc.DrawText(_T("This text is drawn from OnEraseBackground"), 60, 60); }