檢視原始碼 wxDialog (wx v2.4.3)

對話框是一個具有標題列,有時還有系統選單的視窗,它可以在螢幕上移動。

它可以包含控制項和其他視窗,並且通常用於允許使用者進行選擇或回答問題。

對於低解析度螢幕的電腦,對話框可以自動設定為可捲動:請參閱 overview_dialog_autoscrolling 以獲取更多詳細資訊。

對話框通常包含單個按鈕以允許關閉對話框,或兩個按鈕,一個接受變更,另一個捨棄變更(如果存在此類按鈕,則使用者按下 "Esc" 鍵時會自動啟用)。預設情況下,具有標準 wxID_OK 和 wxID_CANCEL 識別符號的按鈕會按預期的方式運作。從 wxWidgets 2.7 開始,也可以使用具有不同識別符號的按鈕,請參閱 setAffirmativeId/2SetEscapeId()(在 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().

函式

此函式的連結

create(This, Parent, Id, Title)

檢視原始碼
-spec create(This, Parent, Id, Title) -> boolean()
                when
                    This :: wxDialog(),
                    Parent :: wxWindow:wxWindow(),
                    Id :: integer(),
                    Title :: unicode:chardata().

相當於 create(This, Parent, Id, Title, [])

-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

此函式的連結

createButtonSizer(This, Flags)

檢視原始碼
-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,因此請不要忘記測試傳回值是否有效再使用它。

此函式的連結

createStdDialogButtonSizer(This, Flags)

檢視原始碼
-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.

銷毀物件

此函式的連結

endModal(This, RetCode)

檢視原始碼
-spec endModal(This, RetCode) -> ok when This :: wxDialog(), RetCode :: integer().

結束強制回應對話框,傳遞一個從 showModal/1 呼叫中傳回的值。

請參閱

此函式的連結

getAffirmativeId(This)

檢視原始碼
-spec getAffirmativeId(This) -> integer() when This :: wxDialog().

取得在此對話框中作用類似標準 OK 按鈕的按鈕識別符號。

請參閱:setAffirmativeId/2

-spec getReturnCode(This) -> integer() when This :: wxDialog().

取得此視窗的傳回碼。

附註:傳回碼通常與強制回應對話框相關聯,其中 showModal/1 將程式碼傳回給應用程式。

請參閱

-spec isModal(This) -> boolean() when This :: wxDialog().

如果對話框是強制回應,則傳回 true,否則傳回 false。

-spec new() -> wxDialog().

預設建構函式。

此函式的連結

new(Parent, Id, Title)

檢視原始碼
-spec new(Parent, Id, Title) -> wxDialog()
             when Parent :: wxWindow:wxWindow(), Id :: integer(), Title :: unicode:chardata().

相當於 new(Parent, Id, Title, [])

-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

此函式的連結

setAffirmativeId(This, Id)

檢視原始碼
-spec setAffirmativeId(This, Id) -> ok when This :: wxDialog(), Id :: integer().

設定要用作 OK 按鈕的識別符號。

當按下具有此識別符號的按鈕時,對話框會呼叫 wxWindow:validate/1wxWindow:transferDataFromWindow/1,如果兩者都傳回 true,則會關閉對話框並傳回肯定識別碼傳回碼。

此外,當使用者按下具有一個的裝置上的硬體 OK 按鈕或 PocketPC 標題列中的特殊 OK 按鈕時,會產生具有此 ID 的事件。

預設情況下,肯定識別碼為 wxID_OK。

請參閱:getAffirmativeId/1

此函式的連結

setReturnCode(This, RetCode)

檢視原始碼
-spec setReturnCode(This, RetCode) -> ok when This :: wxDialog(), RetCode :: integer().

設定此視窗的傳回碼。

傳回碼通常與強制回應對話框相關聯,其中 showModal/1 將程式碼傳回給應用程式。函式 endModal/2 呼叫 setReturnCode/2

請參閱

-spec show(This) -> boolean() when This :: wxDialog().

相當於 show(This, [])

-spec show(This, [Option]) -> boolean() when This :: wxDialog(), Option :: {show, boolean()}.

隱藏或顯示對話框。

關閉強制回應對話框的首選方式是使用 endModal/2

-spec showModal(This) -> integer() when This :: wxDialog().

顯示應用程式強制回應對話框。

在對話框使用 endModal/2 關閉之前,程式流程不會傳回。

請注意,可以為先前使用 show/2 顯示的對話框呼叫 showModal/1,這允許將現有的非強制回應對話框設為強制回應。但是,沒有介入的 endModal/2 呼叫,不能呼叫 showModal/1 兩次。

請注意,此函式會建立一個臨時事件迴圈,其優先於應用程式的主要事件迴圈(請參閱 wxEventLoopBase(在 wx 中未實作)),並且在關閉對話框時會被銷毀。這也會導致呼叫 wxApp::ProcessPendingEvents()(在 wx 中未實作)。

傳回值:使用 setReturnCode/2 設定的值。

請參閱