X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/98dd66cf4ff5d41643bafdb510ec9b0e4d544062..b657b4c98646c607bb5e0c825ee05fb0744cd44b:/samples/erase/erase.cpp?ds=sidebyside diff --git a/samples/erase/erase.cpp b/samples/erase/erase.cpp index 3e3d9635a6..307035e068 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 @@ -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() @@ -88,8 +90,7 @@ private: enum { // menu items - Minimal_Quit = 1, - Minimal_About + ID_MENU_QUIT = 1, }; @@ -101,7 +102,7 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { - MyFrame *frame = new MyFrame(_T("Minimal wxWindows App"), + MyFrame *frame = new MyFrame(_T("Erase sample"), wxPoint(50, 50), wxSize(450, 340)); frame->Show(TRUE); @@ -114,26 +115,22 @@ 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, _T("&About...\tCtrl-A"), _T("Show about dialog")); + helpMenu->Append(wxID_ABOUT, _T("&About...\tCtrl-A"), _T("Show about dialog")); - menuFile->Append(Minimal_Quit, _T("E&xit\tAlt-X"), _T("Quit this program")); + menuFile->Append(ID_MENU_QUIT, _T("E&xit\tAlt-X"), _T("Quit this program")); wxMenuBar *menuBar = new wxMenuBar(); menuBar->Append(menuFile, _T("&File")); @@ -165,6 +162,7 @@ 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() @@ -181,6 +179,30 @@ MyCanvas::MyCanvas( MyFrame *parent ) new wxStaticBitmap( this, -1, m_bitmap, wxPoint(80,20) ); } +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 += event.m_keyCode; break; + } + +} + void MyCanvas::OnPaint( wxPaintEvent &event ) { wxPaintDC dc(this); @@ -193,6 +215,14 @@ void MyCanvas::OnPaint( wxPaintEvent &event ) 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() );