WxAuiManager
Example
아래와 같이 사용한다.
m_mgr.SetManagedWindow(this);
wxTextCtrl* text1 = new wxTextCtrl(this, -1);
wxTextCtrl* text2 = new wxTextCtrl(this, -1);
m_mgr.AddPane(text1, wxLEFT, "Pane Caption");
m_mgr.AddPane(text2, wxBOTTOM, "Pane Caption");
m_mgr.Update();
생성자에서 사용할 경우 주의할 점으로 레이아웃을 구축하기 전(wxSizer등을 적용하기 전)에 사용하면 프로그램이 죽는다. 따라서 wxWindowBase의 <span style="color:red"><- 이 내용은 잘못된 정보이다. 프로그램 구조에 따라서 죽을 수도 있고 그렇지 않을 수도 있다. Centre()
를 사용하기 직전에 사용하는 것이 좋다.
참고로 Centre()
를 사용한 직후에도 사용할 수 있으며, 이 경우 GetPosition()
등을 사용할 수 있다. 다만 SetSizer()
등을 직접적으로 parent window에 widget을 추가하지 말고 아래와 같이 wxAuiManager
에 추가해야 한다.
_media_panel = new MediaPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize);
_aui_manager.AddPane(_media_panel, wxCENTER, wxT("main"));
사용을 마친 후 (소멸자 등에서)아래와 같이 UnInit()
해야 한다.
Flip Show/Hide Panel
보이기/숨기기를 뒤집는 방법은 아래와 같이 적용하면 된다.
void MainFrame::flipShowAndHidePanel(wxString const & name)
{
wxAuiPaneInfo & info = _aui_manager.GetPane(name);
if (info.IsOk() == false) {
return;
}
if (info.IsShown() == true) {
info.Hide();
} else {
info.Show();
}
_aui_manager.Update();
}