X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/788233da909b0f6bc684a99200c614e3dee2aa20..33971536c5f047ee95ec7376fd84b5f7054c05e1:/samples/erase/erase.cpp?ds=sidebyside diff --git a/samples/erase/erase.cpp b/samples/erase/erase.cpp index 1eeba32d3a..cd9c9f8ac2 100644 --- a/samples/erase/erase.cpp +++ b/samples/erase/erase.cpp @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// // Name: erase.cpp -// Purpose: Erase wxWindows sample +// Purpose: Erase wxWidgets sample // Author: Robert Roebling // Modified by: // Created: 04/01/98 @@ -30,7 +30,7 @@ #endif // for all others, include the necessary headers (this file is usually all you -// need because it includes almost all "standard" wxWindows headers) +// need because it includes almost all "standard" wxWidgets headers) #ifndef WX_PRECOMP #include "wx/wx.h" #endif @@ -73,9 +73,11 @@ public: MyCanvas( MyFrame *parent ); void OnPaint( wxPaintEvent &event ); + void OnChar( wxKeyEvent &event ); void OnEraseBackground( wxEraseEvent &event ); wxBitmap m_bitmap; + wxString m_text; private: DECLARE_EVENT_TABLE() @@ -103,9 +105,9 @@ bool MyApp::OnInit() MyFrame *frame = new MyFrame(_T("Erase sample"), wxPoint(50, 50), wxSize(450, 340)); - frame->Show(TRUE); + frame->Show(true); - return TRUE; + return true; } // ---------------------------------------------------------------------------- @@ -119,11 +121,11 @@ END_EVENT_TABLE() // frame constructor MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) - : wxFrame((wxFrame *)NULL, -1, title, pos, size) + : wxFrame((wxFrame *)NULL, wxID_ANY, title, pos, size) { SetIcon(wxICON(mondrian)); - wxMenu *menuFile = new wxMenu("", wxMENU_TEAROFF); + wxMenu *menuFile = new wxMenu(_T(""), wxMENU_TEAROFF); wxMenu *helpMenu = new wxMenu; helpMenu->Append(wxID_ABOUT, _T("&About...\tCtrl-A"), _T("Show about dialog")); @@ -139,7 +141,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) #if wxUSE_STATUSBAR // create a status bar just for fun (by default with 1 pane only) CreateStatusBar(2); - SetStatusText(_T("Welcome to wxWindows erase sample!")); + SetStatusText(_T("Welcome to wxWidgets erase sample!")); #endif // wxUSE_STATUSBAR (void)new MyCanvas( this ); @@ -148,7 +150,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) { - Close(TRUE); + Close(true); } void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) @@ -160,11 +162,12 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) EVT_PAINT( MyCanvas::OnPaint) + EVT_CHAR( MyCanvas::OnChar) EVT_ERASE_BACKGROUND( MyCanvas::OnEraseBackground) END_EVENT_TABLE() MyCanvas::MyCanvas( MyFrame *parent ) - : wxScrolledWindow( parent, -1, wxDefaultPosition, wxDefaultSize, + : wxScrolledWindow( parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxScrolledWindowStyle | wxNO_FULL_REPAINT_ON_RESIZE| wxSUNKEN_BORDER ) @@ -173,10 +176,34 @@ MyCanvas::MyCanvas( MyFrame *parent ) m_bitmap = wxBitmap( wxICON(mondrian) ); - new wxStaticBitmap( this, -1, m_bitmap, wxPoint(80,20) ); + new wxStaticBitmap( this, wxID_ANY, m_bitmap, wxPoint(80,20) ); } -void MyCanvas::OnPaint( wxPaintEvent &event ) +void MyCanvas::OnChar( wxKeyEvent &event ) +{ +#if wxUSE_UNICODE + if (event.m_uniChar) + { + m_text += event.m_uniChar; + Refresh(); + return; + } +#endif + + // some test cases + switch (event.m_keyCode) + { + case WXK_UP: m_text += wxT( "" ); break; + case WXK_LEFT: m_text += wxT( "" ); break; + case WXK_RIGHT: m_text += wxT( "" ); break; + case WXK_DOWN: m_text += wxT( "" ); break; + case WXK_RETURN: m_text += wxT( "" ); break; + default: m_text += (wxChar)event.m_keyCode; break; + } + +} + +void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) ) { wxPaintDC dc(this); PrepareDC( dc ); @@ -184,16 +211,24 @@ void MyCanvas::OnPaint( wxPaintEvent &event ) dc.SetBrush( *wxBLACK_BRUSH ); dc.DrawRectangle( 0,0,200,50 ); - dc.DrawBitmap( m_bitmap, 10, 20, TRUE ); + dc.DrawBitmap( m_bitmap, 10, 20, true ); dc.SetTextForeground(*wxBLUE); dc.DrawText(_T("This text is drawn from OnPaint"), 65, 65); + wxString tmp; + tmp.Printf( _T("Hit any key to display more text: %s"), m_text.c_str() ); + int w,h; + dc.GetTextExtent( tmp, &w, &h ); + dc.SetBrush( *wxWHITE_BRUSH ); + dc.DrawRectangle( 65, 85, w, h ); + dc.DrawText( tmp, 65, 85 ); + #if 0 wxRegionIterator upd( GetUpdateRegion() ); while (upd) { - wxLogDebug( "Paint: %d %d %d %d", upd.GetX(), upd.GetY(), upd.GetWidth(), upd.GetHeight() ); + wxLogDebug( _T("Paint: %d %d %d %d"), upd.GetX(), upd.GetY(), upd.GetWidth(), upd.GetHeight() ); upd ++; } #endif @@ -201,7 +236,7 @@ void MyCanvas::OnPaint( wxPaintEvent &event ) #if 0 wxSize size = GetSize(); wxSize client_size = GetClientSize(); - wxLogDebug( "size %d %d client_size %d %d", size.x, size.y, client_size.x, client_size.y ); + wxLogDebug( _T("size %d %d client_size %d %d"), size.x, size.y, client_size.x, client_size.y ); #endif #if 0