git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31997
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
MyCanvas( wxFrame *parent );
void UseBuffer(bool useBuffer) { m_useBuffer = useBuffer; Refresh(); }
MyCanvas( wxFrame *parent );
void UseBuffer(bool useBuffer) { m_useBuffer = useBuffer; Refresh(); }
+ void EraseBg(bool eraseBg) { m_eraseBg = eraseBg; Refresh(); }
private:
void OnPaint( wxPaintEvent &event );
private:
void OnPaint( wxPaintEvent &event );
// use wxMemoryDC in OnPaint()?
bool m_useBuffer;
// use wxMemoryDC in OnPaint()?
bool m_useBuffer;
+ // paint custom background in OnEraseBackground()?
+ bool m_eraseBg;
+
+
MyFrame();
void OnUseBuffer(wxCommandEvent& event);
MyFrame();
void OnUseBuffer(wxCommandEvent& event);
+ void OnEraseBg(wxCommandEvent& event);
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
{
// menu items
Erase_Menu_UseBuffer = 100,
{
// menu items
Erase_Menu_UseBuffer = 100,
Erase_Menu_Exit = wxID_EXIT,
Erase_Menu_About = wxID_ABOUT
};
Erase_Menu_Exit = wxID_EXIT,
Erase_Menu_About = wxID_ABOUT
};
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(Erase_Menu_UseBuffer, MyFrame::OnUseBuffer)
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(Erase_Menu_UseBuffer, MyFrame::OnUseBuffer)
+ EVT_MENU(Erase_Menu_EraseBg, MyFrame::OnEraseBg)
EVT_MENU(Erase_Menu_Exit, MyFrame::OnQuit)
EVT_MENU(Erase_Menu_About, MyFrame::OnAbout)
END_EVENT_TABLE()
EVT_MENU(Erase_Menu_Exit, MyFrame::OnQuit)
EVT_MENU(Erase_Menu_About, MyFrame::OnAbout)
END_EVENT_TABLE()
wxMenu *menuFile = new wxMenu(_T(""), wxMENU_TEAROFF);
menuFile->AppendCheckItem(Erase_Menu_UseBuffer, _T("&Use memory DC\tCtrl-M"));
wxMenu *menuFile = new wxMenu(_T(""), wxMENU_TEAROFF);
menuFile->AppendCheckItem(Erase_Menu_UseBuffer, _T("&Use memory DC\tCtrl-M"));
+ menuFile->AppendCheckItem(Erase_Menu_EraseBg, _T("Custom &background\tCtrl-B"));
menuFile->AppendSeparator();
menuFile->Append(Erase_Menu_Exit, _T("E&xit\tAlt-X"), _T("Quit this program"));
menuFile->AppendSeparator();
menuFile->Append(Erase_Menu_Exit, _T("E&xit\tAlt-X"), _T("Quit this program"));
m_canvas->UseBuffer(event.IsChecked());
}
m_canvas->UseBuffer(event.IsChecked());
}
+void MyFrame::OnEraseBg(wxCommandEvent& event)
+{
+ m_canvas->EraseBg(event.IsChecked());
+}
+
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
Close(true);
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
Close(true);
: wxScrolledWindow( parent, wxID_ANY, wxDefaultPosition, wxDefaultSize,
wxScrolledWindowStyle | wxSUNKEN_BORDER )
{
: wxScrolledWindow( parent, wxID_ANY, wxDefaultPosition, wxDefaultSize,
wxScrolledWindowStyle | wxSUNKEN_BORDER )
{
m_useBuffer = false;
SetScrollbars( 10, 10, 40, 100, 0, 0 );
m_useBuffer = false;
SetScrollbars( 10, 10, 40, 100, 0, 0 );
void MyCanvas::OnEraseBackground( wxEraseEvent& event )
{
void MyCanvas::OnEraseBackground( wxEraseEvent& event )
{
+ if ( !m_eraseBg )
+ {
+ event.Skip();
+ return;
+ }
+
wxDC& dc = *event.GetDC();
dc.SetPen(*wxGREEN_PEN);
wxDC& dc = *event.GetDC();
dc.SetPen(*wxGREEN_PEN);