我正在研究wxWidgets,在wxFrame中我处理了wxEVT_CLOSE事件,在事件处理程序中我调用了Iconize()。当按下关闭按钮时,我的窗口将被最小化以使其正常工作。但是,当我从系统菜单中单击退出时,我的窗口也在最小化。但在我的场景中,我想从系统菜单关闭我的窗口,并希望在点击关闭按钮时最小化。
这是我的经纪人。
void Frame::OnClose(wxCloseEvent& event)
{
Iconize(true);
}
答案 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();
}