X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cd95f7e65c4e1ee61a5d90eb13687ff468cb13ad..fc85e0db36b368de041dfaffbd308d2f5c861a60:/samples/erase/erase.cpp?ds=inline diff --git a/samples/erase/erase.cpp b/samples/erase/erase.cpp index d35028c06f..138b3fa2bc 100644 --- a/samples/erase/erase.cpp +++ b/samples/erase/erase.cpp @@ -72,7 +72,6 @@ public: private: void OnPaint( wxPaintEvent &event ); - void OnChar( wxKeyEvent &event ); void OnEraseBackground( wxEraseEvent &event ); void DoPaint(wxDC& dc); @@ -97,7 +96,6 @@ private: } wxBitmap m_bitmap; - wxString m_text; // use wxMemoryDC in OnPaint()? bool m_useBuffer; @@ -141,6 +139,34 @@ private: DECLARE_EVENT_TABLE() }; +class ControlWithTransparency : public wxWindow +{ +public: + ControlWithTransparency(wxWindow *parent, + const wxPoint& pos, + const wxSize& size) + : wxWindow(parent, wxID_ANY, pos, size, wxBORDER_NONE) + { + Connect(wxEVT_PAINT, + wxPaintEventHandler(ControlWithTransparency::OnPaint)); + } + + virtual bool HasTransparentBackground() { return true; } + +private: + void OnPaint( wxPaintEvent& WXUNUSED(event) ) + { + wxPaintDC dc(this); + + dc.SetPen(*wxRED_PEN); + dc.SetBrush(*wxTRANSPARENT_BRUSH); + dc.DrawRectangle(GetClientSize()); + + dc.SetTextForeground(*wxBLUE); + dc.SetBackgroundMode(wxTRANSPARENT); + dc.DrawText("This is custom control with transparency", 0, 2); + } +}; // ---------------------------------------------------------------------------- // constants @@ -280,7 +306,6 @@ 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() @@ -302,33 +327,12 @@ MyCanvas::MyCanvas(wxFrame *parent) "right one drawn directly", wxPoint(150, 20)); + new ControlWithTransparency(this, wxPoint(65, 125), wxSize(300, 22)); + SetFocusIgnoringChildren(); SetBackgroundColour(*wxCYAN); } -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::DoPaint(wxDC& dc) { if ( m_eraseBgInPaint ) @@ -345,21 +349,10 @@ void MyCanvas::DoPaint(wxDC& dc) "display corruption", 65, 110); } - dc.SetBrush( *wxBLACK_BRUSH ); - dc.DrawRectangle( 10,10,60,50 ); - dc.DrawBitmap( m_bitmap, 20, 20, true ); dc.SetTextForeground(*wxRED); dc.DrawText("This text is drawn from OnPaint", 65, 65); - - wxString tmp; - tmp.Printf("Hit any key to display more text: %s", m_text); - - int w,h; - dc.GetTextExtent( tmp, &w, &h ); - dc.DrawRectangle( 65, 85, w, h ); - dc.DrawText( tmp, 65, 85 ); } void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )