I am creating a complex layout and I don't find the way to show the scrollbar on the window that I want.
It shows the place for the scrollbar, but no scrollbar.
I have tried with simpler layouts and I was able to get it work, but now I don't find where is the error.
I don't know if there's a bug or I am doing something wrong (I suppose that's). Any help would be appreciated.
The code is down, under the screenshot.
I am using wxWidgets-3.1.2, windows 10 and Codeblocks.
Thanks!
Code: Select all
// For compilers that support precompilation, includes "wx/wx.h".
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
class MyApp: public wxApp
{
public:
virtual bool OnInit();
};
class MyFrame: public wxFrame
{
public:
MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size): wxFrame(NULL, wxID_ANY, title, pos, size){};
};
wxIMPLEMENT_APP(MyApp);
bool MyApp::OnInit()
{
MyFrame *frame = new MyFrame( "Hello World", wxPoint(50, 50), wxSize(850, 640) );
wxInitAllImageHandlers();
wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL);
wxBoxSizer *MainSizer = new wxBoxSizer(wxHORIZONTAL);
wxBoxSizer *subSizerH = new wxBoxSizer(wxHORIZONTAL);
wxBoxSizer *subSizerV = new wxBoxSizer(wxVERTICAL);
wxBoxSizer *subSubSizerV1 = new wxBoxSizer(wxHORIZONTAL);
wxBoxSizer *subSubSizerV2 = new wxBoxSizer(wxHORIZONTAL);
wxBoxSizer* sizerFour = new wxBoxSizer(wxVERTICAL);
wxBoxSizer* sizerTwo = new wxBoxSizer(wxHORIZONTAL);
wxBoxSizer* sizerFive = new wxBoxSizer(wxHORIZONTAL);
wxScrolledWindow* panelOne = new wxScrolledWindow(frame, wxID_ANY); // ### THE SUPERIOR PANEL
wxScrolledWindow* panelTwo = new wxScrolledWindow(frame, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL); // ### THE CENTER LEFT PANEL
wxScrolledWindow* panelThree = new wxScrolledWindow(frame, wxID_ANY); //### THE CENTER RIGHT PANEL
wxScrolledWindow* panelFour = new wxScrolledWindow(frame, wxID_ANY); //### THE BOTTOM LEFT PANEL
wxScrolledWindow* panelFive = new wxScrolledWindow(frame, wxID_ANY); //### THE BOTTOM RIGHT PANEL
panelOne->SetMinSize(wxSize(0, 80));
panelOne->SetMaxSize(wxSize(2048, 80));
panelTwo->SetMinSize(wxSize(0, 480)); //0, 480
panelTwo->SetMaxSize(wxSize(2048, 1600)); //2048, 1600
panelThree->SetMinSize(wxSize(200, 480)); //480
panelThree->SetMaxSize(wxSize(200, 1600));
panelFour->SetMinSize(wxSize(0, 100));
panelFour->SetMaxSize(wxSize(2048, 800));
panelFive->SetMinSize(wxSize(200, 100));
panelFive->SetMaxSize(wxSize(200, 800));
subSizerV->Add(panelOne, -1, wxALL|wxEXPAND, 0);
subSizerV->Add(subSubSizerV1, 1, wxALL|wxEXPAND, 0);
subSizerV->Add(subSubSizerV2, -1, wxALL|wxEXPAND, 0);
subSubSizerV1->Add(panelTwo, -1, wxALL|wxEXPAND, 0);
subSubSizerV1->Add(panelThree, -1, wxALL|wxEXPAND, 0);
subSubSizerV2->Add(panelFour, -1, wxALL|wxEXPAND, 0);
subSubSizerV2->Add(panelFive, -1, wxALL|wxEXPAND, 0);
MainSizer->Add(subSizerV, -1, wxALL|wxEXPAND,0);
MainSizer->Add(subSizerH, -1, wxALL|wxEXPAND,0);
panelTwo->SetSizerAndFit(sizerTwo);
panelFour->SetSizer(sizerFour);
panelFive->SetSizer(sizerFive);
frame->SetSizer(MainSizer);
panelTwo->SetScrollbars(500, 20, 10, 50, 0, 0);
panelTwo->ShowScrollbars(wxSHOW_SB_ALWAYS, wxSHOW_SB_NEVER);
panelOne->SetBackgroundColour(*wxBLACK);
panelTwo->SetBackgroundColour(*wxBLUE);
panelThree->SetBackgroundColour(*wxGREEN);
panelFour->SetBackgroundColour(*wxRED);
panelFive->SetBackgroundColour(*wxYELLOW);
frame->Show( true );
return true;
}