查看源代码 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 窗口管理器)或其他识别 MHM 提示的窗口管理器应正在运行,这些样式才能生效。

请参阅

此类派生自以下类,并且可以使用以下类的函数:

wxWidgets 文档: wxDialog

事件

此类发出的事件类型

摘要

函数

用于两步对话框构造。

使用标准按钮创建大小器。

销毁对象

结束模态对话框,传递一个值,该值将从 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().

使用标准按钮创建大小器。

flags 是以下标志的位列表:wxOK、wxCANCEL、wxYES、wxNO、wxAPPLY、wxCLOSE、wxHELP、wxNO_DEFAULT。

大小器以适合平台的方式布局按钮。

此函数在大多数平台上内部使用 createStdDialogButtonSizer/2,但对于带有硬件按钮(如智能手机)的平台,它根本不创建大小器,而是适当地设置硬件按钮并返回 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。

大小器以适合平台的方式布局按钮。

-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,则使用肯定 ID 返回代码关闭对话框。

此外,当用户在具有一个硬件 OK 按钮的设备上或在 PocketPC 标题栏中的特殊 OK 按钮上按下硬件 OK 按钮时,将生成具有此 ID 的事件。

默认情况下,肯定 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 设置的值。

请参阅