У меня в заявлении есть следующие зависимости от родителей:
Проблема в том, что в wxScrolledWindow нет видимой (или работающей) полосы прокрутки.
Код:
wxCollapsiblePane* collpane = new wxCollapsiblePane(this, ID_COLLPANE, "Tiles\t\t\t\t", wxDefaultPosition, wxDefaultSize, wxCP_NO_TLW_RESIZE);
wxSizer* sz = new wxBoxSizer(wxVERTICAL);
sz->Add(collpane,0,wxALIGN_RIGHT,10);
SetSizer(sz);
wxWindow* cPane = collpane->GetPane();
wxSizer* panesz = new wxBoxSizer(wxVERTICAL);
wxBitmap pic("test.bmp",wxBITMAP_TYPE_BMP);
wxScrolledWindow* scr = new wxScrolledWindow(cPane,ID_PANEL,wxDefaultPosition, wxSize(150,300));
scr->SetScrollbars(2,2,10,10);
wxClientDC dc(this);
scr->DoPrepareDC(dc);
panesz->Add( new wxBitmapButton(scr,-1,pic, wxDefaultPosition, wxSize(50,50) ), 1, wxALIGN_CENTER, 0 );
/* more button adding here */
cPane->SetSizer(panesz);
panesz->SetSizeHints(cPane);
Как я могу заставить полосу прокрутки показывать и прокручивать кнопки?
Чтобы иметь полосы прокрутки, вы должны указать wxScrolledWindow
его полный логический (в отличие от возможно меньшего физического) размер с использованием SetVirtualSize()
метод. Это можно сделать, просто вызвав его напрямую или связав sizer с прокручиваемым окном, добавив элементы в этот sizer и вызвав FitInside()
,
В состоянии по умолчанию для отображения полос прокрутки виртуальный размер окна должен быть больше, чем фактический размер окна.
scr->SetVirtualSize(wxSize(2000,2000));
Однако в версии 3.1 этого недостаточно для отображения полос прокрутки. Также необходимо установить скорость прокрутки. (Для меня это похоже на ошибку, так как кажется, что должна быть настройка по умолчанию, которая работает.)
scr->SetScrollRate(1, 1);
Вы должны изменить
wxWindow* cPane = collpane->GetPane();
wxSizer* panesz = new wxBoxSizer(wxVERTICAL);
wxBitmap pic("test.bmp",wxBITMAP_TYPE_B ...
Вы должны поставить JPG. После изменения это будет работать точно;) Поверь мне.