檢視原始碼 wxCloseEvent (wx v2.4.3)
這個事件類別包含視窗和會話關閉事件的資訊。
當使用者嘗試使用視窗管理員 (X) 或系統選單 (Windows) 關閉框架或對話方塊時,會呼叫 EVT_CLOSE 的處理函式。應用程式本身也可以透過程式方式呼叫它,例如呼叫 wxWindow:close/2
函式。
您應該使用 canVeto/1
來檢查應用程式是否正在強制刪除視窗。如果這個值為 false,您必須
使用 wxWindow:'Destroy'/1
函式來銷毀視窗。
如果傳回值為 true,是否銷毀視窗取決於您。
如果您不銷毀視窗,您應該呼叫 veto/2
來通知呼叫程式碼您沒有銷毀視窗。這允許 wxWindow:close/2
函式根據關閉指令是否被執行來傳回 true 或 false。
wxCloseEvent
處理函式的範例
EVT_END_SESSION 事件稍微不同,因為它是系統在使用者會話結束時(例如,因為登出或關機)發送的,因此所有視窗都被強制關閉。至少在 MSW 下,在執行此事件的處理函式後,程式會被系統直接終止。因此,wxWidgets 提供的此事件的預設處理函式會呼叫所有常用的清除程式碼(包括 wxApp::OnExit()
(在 wx 中未實作)),以便它可以執行並自行退出進程,而無需等待被終止。如果這種行為由於某種原因是不需要的,請確保您在 wxApp 衍生類別中定義此事件的處理函式,並且不要在其中呼叫 event.Skip()
(但請注意,系統仍然會終止您的應用程式)。
參見
這個類別是衍生而來的,可以使用來自
wxWidgets 文件:wxCloseEvent
事件
使用 wxEvtHandler:connect/3
和 wxCloseEventType
來訂閱此類型的事件。
摘要
函式
如果可以否決系統關機或視窗關閉事件,則傳回 true。
如果使用者只是登出,則傳回 true;如果系統正在關機,則傳回 false。
設定「可以否決」標誌。
設定「登出」標誌。
等同於 veto(This, [])
。
從您的事件處理函式中呼叫此函式以否決系統關機,或向呼叫應用程式發出視窗關閉沒有發生的訊號。
類型
-type wxClose() :: #wxClose{type :: wxCloseEvent:wxCloseEventType()}.
-type wxCloseEvent() :: wx:wx_object().
-type wxCloseEventType() :: close_window | end_session | query_end_session.
函式
-spec canVeto(This) -> boolean() when This :: wxCloseEvent().
如果可以否決系統關機或視窗關閉事件,則傳回 true。
如果呼叫程式碼希望強制應用程式退出,則無法否決視窗關閉事件,因此必須呼叫此函式來檢查這一點。
-spec getLoggingOff(This) -> boolean() when This :: wxCloseEvent().
如果使用者只是登出,則傳回 true;如果系統正在關機,則傳回 false。
此方法只能針對會話結束和查詢會話結束事件呼叫,對關閉視窗事件沒有意義。
-spec setCanVeto(This, CanVeto) -> ok when This :: wxCloseEvent(), CanVeto :: boolean().
設定「可以否決」標誌。
-spec setLoggingOff(This, LoggingOff) -> ok when This :: wxCloseEvent(), LoggingOff :: boolean().
設定「登出」標誌。
-spec veto(This) -> ok when This :: wxCloseEvent().
等同於 veto(This, [])
。
-spec veto(This, [Option]) -> ok when This :: wxCloseEvent(), Option :: {veto, boolean()}.
從您的事件處理函式中呼叫此函式以否決系統關機,或向呼叫應用程式發出視窗關閉沒有發生的訊號。
只有在 canVeto/1
傳回 true 時,您才能否決關機。