У меня есть фрейм верхнего уровня (класс MyFrame), который имеет дочернее дерево (класс MyTreeCtrl) и дочернюю панель (класс MyPanel). Объект MyPanel существует в MyTreeCtrl. Событие на узле в дереве должно заполнить панель. Я задаю размер панели с помощью панели, но она не устанавливается. Когда sizer настроен на панель во время установки sizer для родительского кадра, все в порядке. Но при попытке установить размер панели в отдельной функции она не работает.
void MyTreeCtrl::PopulateElementNode(wxTreeItemId &id)
{
//adding panel control elements and setting its sizer
wxBoxSizer *paneltopsizer = new wxBoxSizer(wxVERTICAL);
(this->mypanel)->SetSizer(paneltopsizer);
this->MyListCtrl=new wxListCtrl(this->mypanel,
wxID_LISTCTRL,wxDefaultPosition,wxSize(245,100),wxLC_REPORT);
wxButton *Add=new wxButton(this->mypanel,wxID_ADD,wxT("Add"));
wxButton *Delete=new wxButton(this->mypanel,wxID_DELETE,wxT("Delete"));
wxButton *ApplyChanges=new wxButton(this->mypanel,wxID_APPLYCHANGES,wxT("ApplyChanges"));
wxBoxSizer *panelbuttonsizer = new wxBoxSizer(wxHORIZONTAL);
panelbuttonsizer->Add(Add,0,wxALL|wxALIGN_RIGHT,5);
panelbuttonsizer->Add(Delete,0,wxALL|wxALIGN_RIGHT,5);
panelbuttonsizer->Add(ApplyChanges,0,wxALL|wxALIGN_RIGHT,5);
paneltopsizer->Add(this->MyListCtrl,1,wxALL|wxEXPAND,10);
paneltopsizer->Add(panelbuttonsizer,0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
//panel control ends
}