// Create the main frame window
frame = new MyFrame(NULL, -1, "Sash Demo", wxPoint(0, 0), wxSize(500, 400),
- wxDEFAULT_FRAME_STYLE | wxHSCROLL | wxVSCROLL);
+ wxDEFAULT_FRAME_STYLE |
+ wxNO_FULL_REPAINT_ON_RESIZE |
+ wxHSCROLL | wxVSCROLL);
// Give it an icon (this is ignored in MDI mode: uses resources)
#ifdef __WXMSW__
// Create some dummy layout windows
// A window like a toolbar
- wxSashLayoutWindow* win = new wxSashLayoutWindow(this, ID_WINDOW_TOP, wxDefaultPosition, wxSize(200, 30), wxNO_BORDER|wxSW_3D);
+ wxSashLayoutWindow* win =
+ new wxSashLayoutWindow(this, ID_WINDOW_TOP,
+ wxDefaultPosition, wxSize(200, 30),
+ wxNO_BORDER | wxSW_3D | wxCLIP_CHILDREN);
+
win->SetDefaultSize(wxSize(1000, 30));
win->SetOrientation(wxLAYOUT_HORIZONTAL);
win->SetAlignment(wxLAYOUT_TOP);
m_topWindow = win;
// A window like a statusbar
- win = new wxSashLayoutWindow(this, ID_WINDOW_BOTTOM, wxDefaultPosition, wxSize(200, 30), wxNO_BORDER|wxSW_3D);
+ win = new wxSashLayoutWindow(this, ID_WINDOW_BOTTOM,
+ wxDefaultPosition, wxSize(200, 30),
+ wxNO_BORDER | wxSW_3D | wxCLIP_CHILDREN);
win->SetDefaultSize(wxSize(1000, 30));
win->SetOrientation(wxLAYOUT_HORIZONTAL);
win->SetAlignment(wxLAYOUT_BOTTOM);
m_bottomWindow = win;
// A window to the left of the client window
- win = new wxSashLayoutWindow(this, ID_WINDOW_LEFT1, wxDefaultPosition, wxSize(200, 30), wxNO_BORDER|wxSW_3D);
+ win = new wxSashLayoutWindow(this, ID_WINDOW_LEFT1,
+ wxDefaultPosition, wxSize(200, 30),
+ wxNO_BORDER | wxSW_3D | wxCLIP_CHILDREN);
win->SetDefaultSize(wxSize(120, 1000));
win->SetOrientation(wxLAYOUT_VERTICAL);
win->SetAlignment(wxLAYOUT_LEFT);
m_leftWindow1 = win;
// Another window to the left of the client window
- win = new wxSashLayoutWindow(this, ID_WINDOW_LEFT2, wxDefaultPosition, wxSize(200, 30), wxNO_BORDER|wxSW_3D);
+ win = new wxSashLayoutWindow(this, ID_WINDOW_LEFT2,
+ wxDefaultPosition, wxSize(200, 30),
+ wxNO_BORDER | wxSW_3D | wxCLIP_CHILDREN);
win->SetDefaultSize(wxSize(120, 1000));
win->SetOrientation(wxLAYOUT_VERTICAL);
win->SetAlignment(wxLAYOUT_LEFT);
void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event))
{
// Make another frame, containing a canvas
- MyChild *subframe = new MyChild(frame, "Canvas Frame", wxPoint(10, 10), wxSize(300, 300),
- wxDEFAULT_FRAME_STYLE);
+ MyChild *subframe = new MyChild(frame, "Canvas Frame",
+ wxPoint(10, 10), wxSize(300, 300),
+ wxDEFAULT_FRAME_STYLE |
+ wxNO_FULL_REPAINT_ON_RESIZE);
char titleBuf[100];
sprintf(titleBuf, "Canvas Frame %d", winNumber);
END_EVENT_TABLE()
// Define a constructor for my canvas
-MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size):
- wxScrolledWindow(parent, -1, pos, size, wxSUNKEN_BORDER)
+MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size)
+ : wxScrolledWindow(parent, -1, pos, size,
+ wxSUNKEN_BORDER | wxNO_FULL_REPAINT_ON_RESIZE)
{
+ SetBackgroundColour(* wxWHITE);
}
// Define the repainting behaviour
dc.DrawRoundedRectangle(150, 150, 100, 50, 20);
dc.DrawEllipse(250, 250, 100, 50);
+#if wxUSE_SPLINES
dc.DrawSpline(50, 200, 50, 100, 200, 10);
+#endif // wxUSE_SPLINES
dc.DrawLine(50, 230, 200, 230);
dc.DrawText("This is a test string", 50, 230);
ypos = pt.y;
}
-// Define the behaviour for the frame closing
-// - must delete all frames except for the main one.
-bool MyFrame::OnClose(void)
-{
- // Must delete children
- wxNode *node = my_children.First();
- while (node)
- {
- MyChild *child = (MyChild *)node->Data();
- wxNode *next = node->Next();
- child->OnClose();
- delete child;
- node = next;
- }
- return TRUE;
-}
-
void MyFrame::OnSize(wxSizeEvent& WXUNUSED(event))
{
wxLayoutAlgorithm layout;
canvas->SetFocus();
}
-bool MyChild::OnClose(void)
-{
- return TRUE;
-}
-
-