檢視原始碼 wxDialog (wx v2.4.3)
對話框是一個具有標題列,有時還有系統選單的視窗,它可以在螢幕上移動。
它可以包含控制項和其他視窗,並且通常用於允許使用者進行選擇或回答問題。
對於低解析度螢幕的電腦,對話框可以自動設定為可捲動:請參閱 overview_dialog_autoscrolling 以獲取更多詳細資訊。
對話框通常包含單個按鈕以允許關閉對話框,或兩個按鈕,一個接受變更,另一個捨棄變更(如果存在此類按鈕,則使用者按下 "Esc" 鍵時會自動啟用)。預設情況下,具有標準 wxID_OK 和 wxID_CANCEL 識別符號的按鈕會按預期的方式運作。從 wxWidgets 2.7 開始,也可以使用具有不同識別符號的按鈕,請參閱 setAffirmativeId/2
和 SetEscapeId()
(在 wx 中未實作)。
另請注意,應使用 createButtonSizer/2
來建立適合目前平台的按鈕,並正確放置它們(包括它們的順序,這取決於平台)。
強制回應和非強制回應
對話框有兩種,強制回應和非強制回應。強制回應對話框會封鎖程式流程和對其他視窗的使用者輸入,直到它被關閉為止,而非強制回應對話框的行為更像是一個框架,程式流程會繼續,並且仍然可以對其他視窗進行輸入。要顯示強制回應對話框,您應該使用 showModal/1
方法,而要以非強制回應方式顯示對話框,只需使用 show/2
,就像框架一樣。
請注意,強制回應對話框是少數幾個可以在堆疊上而非堆積上建立的 wxWindow 衍生物件範例之一。換句話說,雖然大多數視窗會像這樣建立
您可以使用更簡單的程式碼,對話框就可以達到相同的結果
應用程式可以為對話框定義 wxCloseEvent
處理常式,以回應系統關閉事件。
樣式
此類別支援下列樣式
wxCAPTION:在對話框上加上標題。
wxDEFAULT_DIALOG_STYLE:相當於 wxCAPTION、wxCLOSE_BOX 和 wxSYSTEM_MENU 的組合(最後一個在 Unix 下未使用)。
wxRESIZE_BORDER:在視窗周圍顯示可調整大小的框架。
wxSYSTEM_MENU:顯示系統選單。
wxCLOSE_BOX:在框架上顯示關閉方塊。
wxMAXIMIZE_BOX:在對話框上顯示最大化方塊。
wxMINIMIZE_BOX:在對話框上顯示最小化方塊。
wxTHICK_FRAME:在視窗周圍顯示粗框架。
wxSTAY_ON_TOP:對話框保持在所有其他視窗之上。
wxNO_3D:此樣式已過時,不再有任何作用,請勿在任何新程式碼中使用它。
wxDIALOG_NO_PARENT:預設情況下,使用 NULL 父視窗建立的對話框將被賦予
應用程式的頂層視窗
(在 wx 中未實作)作為父視窗。使用此樣式可防止這種情況發生並建立孤立的對話框。不建議對強制回應對話框使用此樣式。wxDIALOG_EX_CONTEXTHELP:在 Windows 下,在標題上放置一個查詢按鈕。按下後,Windows 將進入上下文相關的說明模式,如果使用者按一下應用程式視窗,wxWidgets 將傳送
wxEVT_HELP
事件。請注意,這是一個擴充樣式,必須在呼叫 Create 之前透過呼叫wxWindow:setExtraStyle/2
來設定(兩步驟建構)。wxDIALOG_EX_METAL:在 macOS 上,具有此樣式的框架將以金屬外觀顯示。這是一個額外的樣式。在 Unix 或 Linux 下,MWM (Motif Window Manager) 或其他可辨識 MHM 提示的視窗管理員應正在執行,這些樣式才能產生任何效果。
請參閱
此類別衍生自,並且可以使用下列函式
wxWidgets 文件:wxDialog
事件
從此類別發出的事件類型
摘要
函式
用於兩步驟對話框建構。
建立具有標準按鈕的 sizer。
銷毀物件
結束強制回應對話框,傳遞一個從 showModal/1
呼叫中傳回的值。
取得在此對話框中作用類似標準 OK 按鈕的按鈕識別符號。
取得此視窗的傳回碼。
如果對話框是強制回應,則傳回 true,否則傳回 false。
預設建構函式。
建構函式。
設定要用作 OK 按鈕的識別符號。
設定此視窗的傳回碼。
相當於 show(This, [])
。
隱藏或顯示對話框。
顯示應用程式強制回應對話框。
類型
-type wxDialog() :: wx:wx_object().
函式
-spec create(This, Parent, Id, Title) -> boolean() when This :: wxDialog(), Parent :: wxWindow:wxWindow(), Id :: integer(), Title :: unicode:chardata().
-spec create(This, Parent, Id, Title, [Option]) -> boolean() when This :: wxDialog(), Parent :: wxWindow:wxWindow(), Id :: integer(), Title :: unicode:chardata(), Option :: {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()}.
用於兩步驟對話框建構。
請參閱:new/4
-spec createButtonSizer(This, Flags) -> wxSizer:wxSizer() when This :: wxDialog(), Flags :: integer().
建立具有標準按鈕的 sizer。
flags
是下列旗標的位元清單:wxOK、wxCANCEL、wxYES、wxNO、wxAPPLY、wxCLOSE、wxHELP、wxNO_DEFAULT。
sizer 以適合平台的方式佈置按鈕。
此函式在內部對大多數平台使用 createStdDialogButtonSizer/2
,但對於具有硬體按鈕(例如智慧型手機)的平台,它完全不會建立 sizer,而會適當地設定硬體按鈕並傳回 NULL,因此請不要忘記測試傳回值是否有效再使用它。
-spec createStdDialogButtonSizer(This, Flags) -> wxStdDialogButtonSizer:wxStdDialogButtonSizer() when This :: wxDialog(), Flags :: integer().
建立具有標準按鈕的 wxStdDialogButtonSizer
。
flags
是下列旗標的位元清單:wxOK、wxCANCEL、wxYES、wxNO、wxAPPLY、wxCLOSE、wxHELP、wxNO_DEFAULT。
sizer 以適合平台的方式佈置按鈕。
-spec destroy(This :: wxDialog()) -> ok.
銷毀物件
結束強制回應對話框,傳遞一個從 showModal/1
呼叫中傳回的值。
請參閱
取得在此對話框中作用類似標準 OK 按鈕的按鈕識別符號。
取得此視窗的傳回碼。
附註:傳回碼通常與強制回應對話框相關聯,其中 showModal/1
將程式碼傳回給應用程式。
請參閱
如果對話框是強制回應,則傳回 true,否則傳回 false。
-spec new() -> wxDialog().
預設建構函式。
-spec new(Parent, Id, Title) -> wxDialog() when Parent :: wxWindow:wxWindow(), Id :: integer(), Title :: unicode:chardata().
-spec new(Parent, Id, Title, [Option]) -> wxDialog() when Parent :: wxWindow:wxWindow(), Id :: integer(), Title :: unicode:chardata(), Option :: {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()}.
建構函式。
請參閱:create/5
設定要用作 OK 按鈕的識別符號。
當按下具有此識別符號的按鈕時,對話框會呼叫 wxWindow:validate/1
和 wxWindow:transferDataFromWindow/1
,如果兩者都傳回 true,則會關閉對話框並傳回肯定識別碼傳回碼。
此外,當使用者按下具有一個的裝置上的硬體 OK 按鈕或 PocketPC 標題列中的特殊 OK 按鈕時,會產生具有此 ID 的事件。
預設情況下,肯定識別碼為 wxID_OK。
設定此視窗的傳回碼。
傳回碼通常與強制回應對話框相關聯,其中 showModal/1
將程式碼傳回給應用程式。函式 endModal/2
呼叫 setReturnCode/2
。
請參閱
相當於 show(This, [])
。
隱藏或顯示對話框。
關閉強制回應對話框的首選方式是使用 endModal/2
。
顯示應用程式強制回應對話框。
在對話框使用 endModal/2
關閉之前,程式流程不會傳回。
請注意,可以為先前使用 show/2
顯示的對話框呼叫 showModal/1
,這允許將現有的非強制回應對話框設為強制回應。但是,沒有介入的 endModal/2
呼叫,不能呼叫 showModal/1
兩次。
請注意,此函式會建立一個臨時事件迴圈,其優先於應用程式的主要事件迴圈(請參閱 wxEventLoopBase
(在 wx 中未實作)),並且在關閉對話框時會被銷毀。這也會導致呼叫 wxApp::ProcessPendingEvents()
(在 wx 中未實作)。
傳回值:使用 setReturnCode/2
設定的值。
請參閱