walk库的使用方法
1、MsgBox()
MsgBox用来显示消息窗口,可用于提示确认等,定义在walk/messagebox.go中,语法如下:
func MsgBox(owner Form, title, message string, style MsgBoxStyle) int {}
- owner:一般是指当前父窗口,比如MainWindow
- title:指定消息弹窗的标题
- message:弹出的消息内容
- style:指定弹窗风格,有多个参数可选,参考如下
style的值可使用如下:
MsgBoxOK:仅包含“确定”按钮
MsgBoxOKCancel:包含“确定”和“取消”按钮
MsgBoxAbortRetryIgnore:包含“中止”、“重试”和“忽略”三个按钮
MsgBoxYesNoCancel:包含“是”、“否”和“取消”三个按钮
MsgBoxYesNo:包含“是”和“否”两个按钮
MsgBoxRetryCancel:包含“重试”和“取消”两个按钮
MsgBoxCancelTryContinue:包含“取消”、“重试”和“继续”三个按钮
MsgBoxIconHand:使用“手”图标表示错误消息
MsgBoxIconQuestion:使用“问号”图标表示疑问消息
MsgBoxIconExclamation:使用“感叹号”图标表示警告消息
MsgBoxIconAsterisk:使用“星号”图标表示信息消息
MsgBoxUserIcon:使用用户自定义图标表示消息
MsgBoxIconWarning:使用“警告”图标表示警告消息
MsgBoxIconError:使用“错误”图标表示错误消息
MsgBoxIconInformation:使用“信息”图标表示信息消息
MsgBoxIconStop:使用“停止”图标表示停止消息
MsgBoxDefButton1:指定第一个按钮为默认按钮
MsgBoxDefButton2:指定第二个按钮为默认按钮
MsgBoxDefButton3:指定第三个按钮为默认按钮
MsgBoxDefButton4:指定第四个按钮为默认按钮
MsgBoxApplModal:对话框在应用程序模态下显示,禁止用户切换到其他窗口
MsgBoxSystemModal:对话框在系统模态下显示,禁止用户切换到其他应用程序
MsgBoxTaskModal:对话框在任务模态下显示,禁止用户切换到其他任务
MsgBoxHelp:显示帮助按钮
MsgBoxSetForeground:使对话框突出显示并获得焦点
MsgBoxDefaultDesktopOnly:只在默认桌面上显示对话框
MsgBoxTopMost:使对话框始终处于顶层
MsgBoxRight:将对话框放置在父窗口的右侧
MsgBoxRTLReading:以从右到左的阅读顺序显示文本
MsgBoxServiceNotification:允许对话框在Windows服务中显示
walk.MsgBox的返回值为一个整数值int,表示用户选择的对话框指令,实际返回的是walk.DlgCmd类型的枚举值,DlgCmd位于walk/diglog.go文件中,含义如下:
DlgCmdNone:未选择任何命令(默认值)
DlgCmdOK:用户点击了“确定”按钮
DlgCmdCancel:用户点击了“取消”按钮
DlgCmdAbort:用户点击了“中止”按钮
DlgCmdRetry:用户点击了“重试”按钮
DlgCmdIgnore:用户点击了“忽略”按钮
DlgCmdYes:用户点击了“是”按钮
DlgCmdNo:用户点击了“否”按钮
DlgCmdClose:用户点击了“关闭”按钮
DlgCmdHelp:用户点击了“帮助”按钮
DlgCmdTryAgain:用户点击了“重试”按钮
DlgCmdContinue:用户点击了“继续”按钮
DlgCmdTimeout:对话框超时
举例:下面例子表示关闭主窗口的时候弹出消息框,点击确认关闭,点击取消不关闭
mw := walk.MainWindow
mw.Closing().Attach(func(canceled *bool, reason walk.CloseReason) {
if msg := "你确定要关闭窗口?"; walk.MsgBox(mw, msg, "", walk.MsgBoxOKCancel) != int(walk.DlgCmdOK) {
*canceled = true
} else {
*canceled = false
}
})
注意:主窗口需要调用位于walk.form.go中的Closing()方法,返回CloseEvent(walk.closeevent.go中),然后哦调用Attach方法,此方法的参数为一个函数,在函数中进行msgbox的判断,如果canceled的值为true,说明不关闭窗口,如果为false表示关闭窗口

如果在关闭窗口的时候还需要执行一些代码来删除文件或者其余操作,可以在canceled上面或下面写即可,下图表示关闭窗口后执行删除文件的命令,如图:

2、GroupBox和Composite控件的区别:
GroupBox 是一个容器控件,它的主要作用是对相关控件进行分组和排列。与此相反,Composite 则是一个通用的容器控件,可以将其他控件放置在其中,GroupBox 控件默认情况下不支持使用 ToolBar 控件,而 Composite 控件则允许在其内部放置任意子控件,包括 ToolBar,如果想在GroupBox中使用ToolBar,那么可以在GroupBox和ToolBar中嵌套一层Composite


