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

问题描述 投票:0回答:1

我正在寻找退出 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 有时被调用,有时不被调用。

我做错了什么?

windows wxwidgets
1个回答
0
投票

首先,当最后一帧关闭时,您根本不需要调用

ExitMainLoop()
,因为默认情况下,无论如何关闭它都会执行此操作。

但是无论你是否这样做,

OnExit()
仍然应该被调用,所以如果没有被调用,那是由于这里没有显示的其他原因。像往常一样,调试此类神秘问题的最佳方法是从有效的事情开始,例如wxWidgets 源代码分发的
samples/minimal
子目录中的最小样本,并尝试通过逐步修改它以执行实际程序的操作来重现其中的问题。

© www.soinside.com 2019 - 2024. All rights reserved.