檢視原始碼 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/3wxCloseEventType 來訂閱此類型的事件。

摘要

函式

如果可以否決系統關機或視窗關閉事件,則傳回 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。

此方法只能針對會話結束和查詢會話結束事件呼叫,對關閉視窗事件沒有意義。

連結到此函式

setCanVeto(This, CanVeto)

檢視原始碼
-spec setCanVeto(This, CanVeto) -> ok when This :: wxCloseEvent(), CanVeto :: boolean().

設定「可以否決」標誌。

連結到此函式

setLoggingOff(This, LoggingOff)

檢視原始碼
-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 時,您才能否決關機。