主页:Code-By.Org
转载请注明出处
Win32::GUI::Tutorial Part 3
什么是 DialogBox(对话框)?
- 我们在之前的教程中提到过使用 Win32::GUI::Window->new() 创造一个主窗口。事实上 Win32::GUI
提供了两种窗体类型。分别是 Win32::GUI::Window 以及 Win32::GUI::DialogBox。
为什么是两种类型?
DialogBox 比默认的 Window 窗体多一些扩展功能,但这些扩展功能将带来开销,所以我们为那些不需要扩展
功能或者不想产生额外开销的用户保留了默认窗体。(事实上 Win32::GUI::DialogBox 也缺少 Win32::GUI::Window 的部分灵活性,这是目前的局限,可能在未来的版本中得到改善)
- 当你使用 DialogBox ,它会自动对按键事件作出响应,Tab 键用来在不同控件之间切换,Shift+Tab 移到上一
个选项,Escape 取消对话,Enter 键执行默认操作。
Tab 和 Shift+Tab- 为控件设置 -tabstop => 1 以使控件支持 tab 切换。(未设定该参数的控件将被排除)
- 通过对控件设置 -cancel 选项来使 escape 奏效。当用户按下 Esc 键,触发该控件的单击事件
具体操作取决于你的 Click 响应函数。
- 为控件设置 -ok => 1 以使其支持回车键。在按下 Enter 时自动触发该控件的 Click 事件。如果选中了其他按钮,则按下 Enter 时响应的是其他选中按钮的 Click 事件。
还有一些其他的按键行为,这些行为要么无法编辑修改,要么无关紧要。( What? )
- 类似按键处理,DialogBox 和 基础窗体 的主要区别是
* DialogBox 没有最小化最大化图标
* DialogBox 有一个 "?" (帮助)图标
* DialogBox 看上去不太一样
* DialogBox 不能用鼠标调整大小
当前版本的 Win32::GUI 模块提供 -dialoggui 选项来开启/关闭 默认按键响应机制。在 Window 窗体
中 设置 -dialoggui 为 1 以开启按键响应。在 DialogBox 窗体中设置 -dialoggui 为 0 以关闭按键响应。
在下一章,我们将进一步介绍如何为应用程序增加功能。
- 两种窗体类型的创建:
or$main = Win32::GUI::Window->new()
$main = Win32::GUI::DialogBox->new()