我正在寻找退出WxWidgets应用程序的正确方法。现在要退出,我在主wxFrame关闭时调用wxGetApp().ExitMainLoop()。然后我希望调用我的应用程序OnExit方法,以便我可以正确地终止应用程序。
在代码方面,它看起来像:
void MainFrame::onClose(wxCloseEvent& ev)
{
wxGetApp().ExitMainLoop();
}
//...
int MyApp::OnExit()
{
wxBusyCursor wait;
/* Free all non-wxWidgets memory here*/
return 0;
}
当用户请求关闭应用程序时,成功调用MainFrame::onClose。
但是MyApp::OnExit有时会被调用,有时不会。
我做错了什么?
1条答案
按热度按时间4jb9z9bj1#
首先,当最后一帧关闭时,您根本不需要调用
ExitMainLoop()
,因为默认情况下关闭它就是这样做的。但是不管你是否这样做,
OnExit()
仍然肯定会被调用,所以如果没有,那是因为这里没有显示的其他东西。像往常一样,调试这种神秘问题的最佳方法是从一些工作开始,例如。从wxWidgets源代码发行版的samples/minimal
中提取最小样本,并尝试通过逐步修改它来重现其中的问题,使其与您的真实的程序一样。