windows 退出WxWidgets应用程序的正确方法

qyswt5oh  于 2023-10-22  发布在  Windows
关注(0)|答案(1)|浏览(261)

我正在寻找退出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有时会被调用,有时不会。
我做错了什么?

4jb9z9bj

4jb9z9bj1#

首先,当最后一帧关闭时,您根本不需要调用ExitMainLoop(),因为默认情况下关闭它就是这样做的。
但是不管你是否这样做,OnExit()仍然肯定会被调用,所以如果没有,那是因为这里没有显示的其他东西。像往常一样,调试这种神秘问题的最佳方法是从一些工作开始,例如。从wxWidgets源代码发行版的samples/minimal中提取最小样本,并尝试通过逐步修改它来重现其中的问题,使其与您的真实的程序一样。

相关问题