【问题标题】:WxWidgets Show form after first is closedWxWidgets 在第一次关闭后显示表单
【发布时间】:2014-11-19 10:03:54
【问题描述】:

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

我已经尝试将启动新窗口的代码放在 init 函数中:

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 表单仅在设置表单关闭时才显示,而无需关闭我的应用程序或同时启动两者?

【问题讨论】:

  • 你试过在 frame->Show(true) 和 start_ogre() 之间放置一个等待循环吗?类似于:while(NotConfigured) { sleep (10) } .
  • 我没试过这种等待循环。但是我尝试过使用 isShown 属性。我知道这可能是一个解决方案,但想知道是否没有更合适的方法。

标签: c++ wxwidgets


【解决方案1】:

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

【讨论】:

  • 谢谢克里斯蒂安,一旦我测试了这个答案,我就会把它标记为解决方案。这就是我要找的。​​span>
猜你喜欢
  • 2016-01-29
  • 2019-11-02
  • 2015-12-08
  • 2013-03-06
  • 2017-11-01
  • 2012-10-14
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
相关资源
最近更新 更多