2015-02-05 23 views
-1

我正在使用wxWidgets,在wxFrame中我處理了wxEVT_CLOSE事件,在我稱爲Iconize()的事件處理程序中。當按下關閉按鈕時,我的窗口將被最小化,它可以正常工作。但是,同時從我的系統菜單中單擊退出時,我的窗口也正在最小化。但在我的情況下,我想從系統菜單中關閉我的窗口,並希望最小化,同時單擊關閉按鈕。wxWidgets從系統菜單中關閉窗口

這是我的處理程序。

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

我建議你不要誤用關閉按鈕來最小化窗口。如果當我點擊關閉按鈕時窗口最小化,我認爲這將是違反直覺的。 – 2015-02-06 09:01:57

回答

1

您無法區分從系統菜單關閉窗口並在wxWidgets API級別使用關閉按鈕。但是,您可以使用特定於平臺的代碼來執行此操作。例如,對於MSW,您可以在您的wxFrame派生類中覆蓋MSWWindowProc(),並在那裏處理WM_SYSCOMMAND,並在接收到SC_CLOSE時明確退出應用程序,而不是僅將其圖標化。

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(); 
} 
相關問題