C++ WxWidgets在第一个窗口关闭后显示窗体

C++ WxWidgets在第一个窗口关闭后显示窗体,c++,wxwidgets,C++,Wxwidgets,我目前正在做一个项目,涉及到OGRE的3D部分和WXWidgets的用户界面。我遵循了hello world教程,能够创建应用程序、窗口和消息映射。目标是在启动时显示一个窗口,您可以在其中选择一些特定设置,如全屏、纹理质量和其他一些特定于应用程序的设置。选择设置后,窗口需要关闭,然后使用窗口中的设置启动食人魔部分 我已经尝试在init函数中输入启动ogre新窗口的代码: bool MyApp::OnInit() { MyFrame *frame = new MyFrame( "Settings"

我目前正在做一个项目,涉及到OGRE的3D部分和WXWidgets的用户界面。我遵循了hello world教程,能够创建应用程序、窗口和消息映射。目标是在启动时显示一个窗口,您可以在其中选择一些特定设置,如全屏、纹理质量和其他一些特定于应用程序的设置。选择设置后,窗口需要关闭,然后使用窗口中的设置启动食人魔部分

我已经尝试在init函数中输入启动ogre新窗口的代码:

bool MyApp::OnInit() {
MyFrame *frame = new MyFrame( "Settings", wxPoint(50, 50), wxSize(640, 480) );
frame->Show( true );
start_ogre();
return true;
}
问题是两种形式同时显示。应用程序、框架和窗口在我的代码中分为不同的类。 我还尝试将代码放在wxwidget代码之后的main.cpp中:

wxIMPLEMENT_APP(MyApp);
start_ogre();
这就产生了同样的问题。我也试过在接近的事件中,但那没有任何作用


有没有一种简单的方法可以使OGRE表单仅在设置表单关闭时显示,而不关闭我的应用程序或同时启动两者?

您可以使用对话框而不是框架,并使用
showmodel()
来显示它。这将一直阻止,直到用户取消或关闭对话框。您需要从
wxDialog
派生对话框,并且需要添加一些具有适当ID的按钮来关闭或关闭对话框。为此,您可以使用对话框从
wxDialog

继承的
CreateStdDialogButtonSizer(long)
方法。您是否尝试在frame->Show(true)和start_ogre()之间放置等待循环?类似于:while(NotConfigured){sleep(10)}。我还没有尝试过这种等待循环。然而,我已经尝试与财产显示。我知道这可能是一个问题,但我想知道是否有更合适的方法来解决这个问题。谢谢你,克里斯蒂安,一旦我测试了这个答案,我会把它标记为解决方案。这就是我要找的。