【发布时间】:2015-09-28 17:22:39
【问题描述】:
当我关闭所有窗口(框架/对话框)时,调试器会保持程序运行。这就是问题所在。
我希望程序在对话框关闭时关闭。
我想两者都做:
1. 以对话框作为主窗口运行程序,并在我关闭该对话框时退出程序。
2. 运行一个带有可以弹出一个或多个对话框的窗口框架的程序,并在所有对话框关闭后关闭该程序。 (目前,关闭表单会关闭所有对话框,但不会关闭应用程序)
如果只有一个框架,它会很好地关闭。
如何关闭(空父)对话框,以便在关闭所有窗口后它不会保持程序运行(消息循环运行)。我不需要对话框来导致程序退出,只是不阻止程序退出。
在下面的示例中,如果表单是一个对话框,或者如果从表单中创建一个对话框(ok 对话框)然后关闭,则程序会在所有窗口关闭的情况下继续运行。
class MyApp : public wxApp
{
public:
bool OnInit();
private:
void OnAboutClicked(wxCommandEvent &evt);
MyFrame1 *myF;
};
bool MyApp::OnInit()
{
if (!wxApp::OnInit())
return false;
myF = new MyFrame1(NULL);
myF->Show();
return true;
}
这些没有帮助。
MyDialog1::~MyDialog1()
{
//this->Destroy();
//delete this;
}
【问题讨论】:
-
阅读 wxWidgets 中的对话框以及有关对话框的几个类似问题。我读到程序将在所有(顶级)窗口关闭后结束。表单,是的,对话框,不是。我不知道到底是什么让程序继续运行。
-
默认情况下,程序在最后一个顶级窗口、框架或对话框关闭时退出。如果需要,可以更改此设置,但我认为默认行为记录得很清楚。
-
This question 可能暗示我正在对话框上创建一些对象,并且那些(窗口)仍然存在(不被解构函数破坏)。我得看看我是孤立按钮还是什么。
-
剩余说明:在打开多个 NULL 父对话框的情况下,关闭 MyApp 中创建的框架会隐藏这些对话框,因此很难关闭它们,这可能/将终止程序。