SDL2中想要展示对话框有两种办法:使用SDL_ShowSimpleMessageBox()
来显示一个简单的对话框,或者使用SDL_ShowMessageBox()
来显示一个自定义对话框。
SDL2中只能展示模态对话框(就是如果你不点掉它你原本的窗体就不会有响应的对话框)。
SDL_ShowSimpleMessageBox()
|
|
flag
:是一个SDL_MessageBoxFlags
枚举类型,可以是SDL_MESSAGEBOX_ERROR, SDL_MESSAGEBOX_WARNING, SDL_MESSAGEBOX_INFORMATION
其中的一个,用于表示错误信息,警告信息和普通信息(相应的对话框icon和按钮也会改变)title
:UTF-8的对话框标题message
:UTF-8的对话框内容window
:对话框所属的父窗体
这个函数很简单,没什么其他可说的。也是为了简单产生一个对话框。
需要注意的是:这个函数在使用SDL_Init()
函数之前就可以使用了,也就是说你可以使用这个函数来显示初始化SDL或者OpenGL是否成功
SDL_ShowMessageBox()
|
|
这个函数可以让你自己定义对话框,其中buttonid
参数会存储最后按下的按钮的id。
这里主要需要介绍的结构体就是SDL_MessageBoxData
:
|
|
这里其他的都比较好理解,想要对对话框进行自定义主要还是SDL_MessageBoxButtonData
和SDL_MessageBoxColorScheme
两个结构体:
|
|
这里需要说明一下的是SDL_MessageBoxColorScheme
类型,这个类型其实就是一个包含5个SDL_MessageBoxColor
元素的数组。而每一个SDL_MessageBoxColor
又是存储颜色的结构体。那么这5个SDL_MessageBoxColor
分别代表什么呢?看下方:
|
|
没错分别是背景颜色,文本颜色,按钮框颜色,按钮背景颜色,按钮按下颜色五个颜色。 所以你到时候自定义就需要按照这五个值的顺序来定义颜色了。
需要注意的是:你也可以给SDL_MessageBoxColorScheme*成员赋值NULL,这样系统会采用默认配色。而且有些系统是不能够改变配色的(比如说我的Mac。。。)
这里就给一个官方的例子吧,比较清晰明了:
|
|