【发布时间】:2012-04-30 21:29:50
【问题描述】:
在我的 wxWidgets 应用程序中,我正在检查命令行参数,如果找到,我会执行一个操作,然后关闭窗口。但是,我似乎无法让应用程序正确关闭。我想用退出代码关闭程序,例如 3。当我检查 wxApp::OnInit 中的命令行参数时,我试图只调用 exit(3),但是,这似乎不合适,因为它会导致内存泄漏wxwidgets 中的某处。
然后我尝试存储退出代码,覆盖 OnRun 并返回那里,但是,当我这样做时,return wxTheApp->OnRun(); 上的 init.cpp 行 472 发生崩溃。
有谁知道在检测到应用程序应该关闭后,如何使用来自 wxApp 的自定义退出代码正确关闭应用程序?我还尝试重载wxApp::OnExit,但是,即使我没有重载OnRun,它也永远不会被调用。
http://codepad.org/WYiOJq55 的代码示例由于某种原因不允许在此帖子中使用代码
编辑代码粘贴:
int SomeApplication::OnRun()
{
if(mExitCode != 0)
{
ExitMainLoop();
return mExitCode;
}
else
return wxApp::OnRun();
}
【问题讨论】:
-
也许展示一个简单的独立示例来说明相关行为?
-
exit不允许堆栈展开,因此显然任何具有非平凡析构函数的对象都会“泄漏”。 -
我一直在尝试,但我一直收到错误消息说我的代码没有格式化,即使它是
-
附带说明,在 C++11 中,您可以调用
std::terminate和朋友而不是exit -
rubenvb:你碰巧知道使用 wxWidgets 的方法吗?
标签: c++ command-line initialization wxwidgets exit-code