The layout I'm trying to achieve is:
Code: Select all
// ------------------------------------------------------------------------------
// | sizer_frame->sizer_frame_upper->sizer_panel_top_upper |
// |------------------------------------------------------------------------------|
// | sizer_frame->sizer_frame_upper->sizer_panel_top_lower |
// |------------------------------------------------------------------------------|
// | | |
// | | |
// | sizer_frame->sizer_frame_lower->sizer_frame_lower_left | canvas |
// | | |
// | | |
// | | |
// | | |
// ------------------------------------------------------------------------------
Code: Select all
// wxFrame constructor
sizer_frame = new wxBoxSizer (wxVERTICAL);
SetSizer (sizer_frame);
panel_top = new wxPanel (this);
sizer_frame_upper = new wxBoxSizer (wxVERTICAL);
panel_top->SetSizer (sizer_frame_upper);
sizer_frame_lower = new wxBoxSizer (wxHORIZONTAL);
canvas = new My_Canvas (this);
//sizer_frame->Add (sizer_frame_upper, 0, wxEXPAND); -- this crashes on exit
sizer_frame->Add (panel_top, 0, wxEXPAND); // Using this in place of the above doesn't crash
sizer_frame->Add (sizer_frame_lower, 1, wxEXPAND);
sizer_frame_lower->Add (canvas, 1, wxEXPAND);
In debugging this, I'm assuming it's ok to have empty sizers. Also it's not clear to me if wxSizer::Layout() needs to be called explicitly or whether this is done by the framework.
Rob.