Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 带有wxSizer、wxSashWindow的GUI布局_C++_Wxwidgets_Codeblocks - Fatal编程技术网

C++ 带有wxSizer、wxSashWindow的GUI布局

C++ 带有wxSizer、wxSashWindow的GUI布局,c++,wxwidgets,codeblocks,C++,Wxwidgets,Codeblocks,我试图在mainwindow中创建一个窗口,该窗口被拆分为2、3、4个etcc不同的可调整大小的视图,我想用C::B中的wxWidgets来实现它。实际上,画布本身按照请求的数量拆分窗口,但是它没有在视图的边界上放置任何窗框,因此很难注意到哪个视图从哪里开始,在哪里结束 我在运行时创建所有内容,并计划在视图边界周围放置窗扇或面板,希望在我的情况下也能工作,但主框架不愿意将面板和窗扇放置在正确的位置,并停止处理OnSize事件。这是以前的工作代码是不能正常工作,如果我添加以下代码与大小调整和面板期

我试图在mainwindow中创建一个窗口,该窗口被拆分为2、3、4个etcc不同的可调整大小的视图,我想用C::B中的wxWidgets来实现它。实际上,画布本身按照请求的数量拆分窗口,但是它没有在视图的边界上放置任何窗框,因此很难注意到哪个视图从哪里开始,在哪里结束

我在运行时创建所有内容,并计划在视图边界周围放置窗扇或面板,希望在我的情况下也能工作,但主框架不愿意将面板和窗扇放置在正确的位置,并停止处理OnSize事件。这是以前的工作代码是不能正常工作,如果我添加以下代码与大小调整和面板期间

MainFrame *frame = new MainFrame(NULL, wxT("wxWidgets OSG Sample"),
        wxDefaultPosition, wxSize(width, height));

wxToolBar* toolbar = new wxToolBar(frame, wxID_ANY,wxDefaultPosition, wxDefaultSize, wxTB_HORIZONTAL);

    //wxSashLayoutWindow* win = new wxSashLayoutWindow(frame, ID_WINDOW_TOP,wxPoint(50,10), wxSize(200, 30),
     //                         wxSW_3D | wxCLIP_CHILDREN);
     wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
     wxPanel* panel = new wxPanel(frame, ID_TBbutton, wxPoint(300,0), wxSize(5,500));
     panel->SetWindowStyle(wxDOUBLE_BORDER);
//   panel->SetStyle(wx_3D)
     wxPanel* panel1 = new wxPanel(frame, ID_TBbutton);
     sizer->Add( panel, 0, wxALL, 0 );
     frame->SetSizer(sizer);             
     frame->SetToolBar(toolbar);

请查看以下MDI表单的基本示例:


为了有一个完全工作的窗扇窗口,您的框架必须根据代码作出反应,我应该在同一个MDI中看到黄色和绿色的背景窗口,但这不会发生。@SonyaBlade您看到了什么?您使用哪个版本的wxWidgets?你的平台是什么?以下是我看到的,wxWidgets 3.0.1;Win64;C::B 13.12;MinGW 4.7.1;具有Nvidia GeForce 610M图形card@SonyaBlade我用gtk2库在Linuxx64上测试了这个。另一个想法——这里是wxWidgets存储库中的一个示例应用程序。请检查:
bool SashWindowTestApp::OnInit()
{
    wxMDIParentFrame* mainFrame = new wxMDIParentFrame(NULL, ID_TEST_FRAME,
                      wxT("Sash window test"), wxPoint(0, 0), wxSize(500, 400),
                      wxDEFAULT_FRAME_STYLE);

    // top window
    wxSashLayoutWindow* topWindow = new wxSashLayoutWindow(mainFrame,
                        ID_WINDOW_TOP, wxDefaultPosition, wxSize(200, 100),
                        wxSW_3D);

    topWindow->SetDefaultSize(wxSize(1000, 100));
    topWindow->SetAlignment(wxLAYOUT_TOP);
    topWindow->SetBackgroundColour(*wxGREEN);
    topWindow->SetSashVisible(wxSASH_BOTTOM, true);

    // bottom window
    wxSashLayoutWindow* bottomWindow = new wxSashLayoutWindow(mainFrame,
                        ID_WINDOW_BOTTOM, wxDefaultPosition, wxSize(200, 200),
                        wxSW_3D);

    bottomWindow->SetDefaultSize(wxSize(1000, 200));
    bottomWindow->SetAlignment(wxLAYOUT_BOTTOM);
    bottomWindow->SetBackgroundColour(*wxYELLOW);
    bottomWindow->SetSashVisible(wxSASH_TOP, true);

    wxLayoutAlgorithm layout;
    layout.LayoutMDIFrame(mainFrame);
    mainFrame->Show(true);
    return true;
}