wxWidgets从系统菜单关闭窗口

时间:2015-02-05 12:48:52

标签: wxwidgets

我正在研究wxWidgets,在wxFrame中我处理了wxEVT_CLOSE事件,在事件处理程序中我调用了Iconize()。当按下关闭按钮时,我的窗口将被最小化以使其正常工作。但是,当我从系统菜单中单击退出时,我的窗口也在最小化。但在我的场景中,我想从系统菜单关闭我的窗口,并希望在点击关闭按钮时最小化。

这是我的经纪人。

    void Frame::OnClose(wxCloseEvent& event)
{
        Iconize(true);
}

2 个答案:

答案 0 :(得分:1)

您无法区分关闭窗口与系统菜单以及使用wxWidgets API级别的关闭按钮。但是,您可以使用特定于平台的代码来执行此操作。例如,对于MSW,您可以覆盖MSWWindowProc()派生类中的wxFrame并在那里处理WM_SYSCOMMAND并明确退出应用程序,而不仅仅是SC_CLOSE是{{1}}接收。

答案 1 :(得分:0)

只需在其他处理程序中处理菜单命令并直接调用Destroy。

BEGIN_EVENT_TABLE(wxMyFrame,wxFrame)
    EVT_MENU(wxMyFrame::idMenuQuit, wxMyFrame::OnMenuClose) // sample for using event table
END_EVENT_TABLE()

void wxMyFrame::OnMenuClose(wxCommandEvent& event)
{
    Destroy();
}