如何使wxFrame的行为类似于模态wxDialog对象

dag*_*rym 8 c++ wxwidgets

是否可以使wxFrame对象的行为类似于模式对话框,因为创建wxFrame对象的窗口会停止执行,直到wxFrame对象退出?

我正在开发一款小游戏,遇到了以下问题.我有一个主程序窗口,主持主应用程序(战略部分).偶尔,我需要将控制转移到第二个窗口以解决部分游戏(战术部分).在第二个窗口中,我希望第一个窗口中的处理停止并等待在第二个窗口中完成的工作完成.

通常一个模态对话框可以解决这个问题,但我希望新窗口具有一些我无法通过wxDialog获得的功能,即底部的状态栏以及调整窗口大小/最大化/最小化的能力(这个应该是可能但不起作用,请参阅此问题如何使最小化和最大化按钮出现在wxDialog对象上).

作为补充说明,我希望第二个窗口的功能需要与主窗口完全分离,因为它最终会分离成一个单独的程序.

有没有人这样做或有任何建议?

mgh*_*hie 3

“停止执行”窗口实际上没有意义,因为窗口只处理发送给它的事件,例如鼠标、键盘或绘画事件,忽略它们会使程序看起来挂起。您应该做的是禁用框架中的所有控件,这将使它们变灰并使用户意识到此时无法与它们交互。

您还可以完全禁用父框架,而不是禁用其上的所有控件。查看wxWindowDisabler类,构造函数有一个参数表示可以交互的窗口,应用程序的所有其他窗口都将被禁用。

如果您稍后想要执行辅助程序,那么您可以使用wxExecute()函数来完成。