## dialog\_t ### 概述 ![image](images/dialog_t_0.png) 对话框。 对话框是一种特殊的窗口,大小和位置可以自由设置。 AWTK中的对话框可以是模态的,也可以是非模态的。 如果dialog有透明或半透效果则不支持窗口动画。 > 由于浏览器中无法实现主循环嵌套,因此无法实现模态对话框。 如果希望自己写的AWTK应用程序可以在浏览器(包括各种小程序)中运行或演示, 请避免使用模态对话框。 对话框通常由对话框标题和对话框客户区两部分组成: ![image](images/dialog_t_1.png) dialog\_t是[window\_base\_t](window_base_t.md)的子类控件,window\_base\_t的函数均适用于dialog\_t控件。 在xml中使用"dialog"标签创建对话框。如: ```xml ``` 如果你不需要对话框的标题,可以这样写: ```xml ``` 打开非模态对话框时,其用法与普通窗口一样。打开非模态对话框时,还需要调用dialog\_modal。 ```c widget_t* dlg = dialog_open(name); ret = dialog_modal(dlg); ``` 关闭模态对话框用dialog\_quit ```c static ret_t on_dialog_btn_click(void* ctx, event_t* evt) { widget_t* win = widget_get_window(WIDGET(evt->target)); int code = (char*)ctx - (char*)NULL; dialog_quit(win, code); return RET_OK; } ``` 关闭非模态对话框用window\_close。 ```c static ret_t on_dialog_btn_click(void* ctx, event_t* evt) { widget_t* win = widget_get_window(WIDGET(evt->target)); int code = (char*)ctx - (char*)NULL; window_close(win); return RET_OK; } ``` > 更多用法请参考: [dialog.xml](https://github.com/zlgopen/awtk/blob/master/design/default/ui/) > 完整C代码示例请参考: * [非模态对话框](https://github.com/zlgopen/awtk-c-demos/blob/master/demos/dialog.c) * [模态对话框](https://github.com/zlgopen/awtk-c-demos/blob/master/demos/dialog_modal.c) 可用通过style来设置控件的显示风格,如字体的大小和颜色等等。如: ```xml ``` > 更多用法请参考: [theme default] (https://github.com/zlgopen/awtk/blob/master/design/default/styles/default.xml#L324) ---------------------------------- ### 函数

| 函数名称 | 说明 | | -------- | ------------ | | dialog\_cast | 转换dialog对象(供脚本语言使用)。 | | dialog\_confirm | 显示『确认』对话框。 | | dialog\_create | 创建dialog对象。 | | dialog\_create\_simple | 创建dialog对象,同时创建title/client。 | | dialog\_create\_with\_ok\_cancel | 创建一个带有OK/Cancel按钮的对话框。 | | dialog\_get\_client | 获取client控件。 | | dialog\_get\_title | 获取title控件。 | | dialog\_get\_widget\_vtable | 获取 dialog 虚表。 | | dialog\_info | 显示『提示信息』对话框。 | | dialog\_is\_modal | 检查对话框是否为模态对话框。 | | dialog\_is\_quited | 检查对话框是否已经退出模态。 | | dialog\_modal | 模态显示对话框。 | | dialog\_open | 从资源文件中加载并创建Dialog对象。 | | dialog\_quit | 退出模态显示,关闭对话框。 | | dialog\_set\_title | 设置对话框的标题文本。 | | dialog\_simple\_show | 根据所选标题,内容与主题等创建一个对话框。 | | dialog\_toast | 显示『短暂提示信息』对话框。 | | dialog\_warn | 显示『警告』对话框。 | ### 属性

| 属性名称 | 类型 | 说明 | | -------- | ----- | ------------ | | highlight | char* | 对话框高亮策略。 | #### dialog\_cast 函数 ----------------------- * 函数功能: >

转换dialog对象(供脚本语言使用)。 * 函数原型: ``` widget_t* dialog_cast (widget_t* widget); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | widget\_t* | dialog对象。 | | widget | widget\_t* | dialog对象。 | #### dialog\_confirm 函数 ----------------------- * 函数功能: >

显示『确认』对话框。 窗体样式由dialog_confirm.xml文件决定。 * 函数原型: ``` ret_t dialog_confirm (const char* title, const char* text); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示确认,否则表示取消。 | | title | const char* | 标题。 | | text | const char* | 文本内容。 | #### dialog\_create 函数 ----------------------- * 函数功能: >

创建dialog对象。 * 函数原型: ``` widget_t* dialog_create (widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | widget\_t* | dialog对象。 | | parent | widget\_t* | 父控件 | | x | xy\_t | x坐标 | | y | xy\_t | y坐标 | | w | wh\_t | 宽度 | | h | wh\_t | 高度 | #### dialog\_create\_simple 函数 ----------------------- * 函数功能: >

创建dialog对象,同时创建title/client。 * 函数原型: ``` widget_t* dialog_create_simple (widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | widget\_t* | dialog对象。 | | parent | widget\_t* | 父控件 | | x | xy\_t | x坐标 | | y | xy\_t | y坐标 | | w | wh\_t | 宽度 | | h | wh\_t | 高度 | #### dialog\_create\_with\_ok\_cancel 函数 ----------------------- * 函数功能: >

创建一个带有OK/Cancel按钮的对话框。 * 函数原型: ``` widget_t* dialog_create_with_ok_cancel (const char* stitle, uint32_t w, uint32_t h); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | widget\_t* | 成功返回dialog对象,失败返回NULL。 | | stitle | const char* | 标题。 | | w | uint32\_t | 宽度。 | | h | uint32\_t | 高度。 | #### dialog\_get\_client 函数 ----------------------- * 函数功能: >

获取client控件。 * 函数原型: ``` widget_t* dialog_get_client (widget_t* widget); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | widget\_t* | client对象。 | | widget | widget\_t* | dialog对象。 | #### dialog\_get\_title 函数 ----------------------- * 函数功能: >

获取title控件。 * 函数原型: ``` widget_t* dialog_get_title (widget_t* widget); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | widget\_t* | title对象。 | | widget | widget\_t* | dialog对象。 | #### dialog\_get\_widget\_vtable 函数 ----------------------- * 函数功能: >

获取 dialog 虚表。 * 函数原型: ``` const widget_vtable_t* dialog_get_widget_vtable (); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | const widget\_vtable\_t* | 成功返回 dialog 虚表。 | #### dialog\_info 函数 ----------------------- * 函数功能: >

显示『提示信息』对话框。 窗体样式由dialog_info.xml文件决定。 * 函数原型: ``` ret_t dialog_info (const char* title, const char* text); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | title | const char* | 标题。 | | text | const char* | 文本内容。 | #### dialog\_is\_modal 函数 ----------------------- * 函数功能: >

检查对话框是否为模态对话框。 * 函数原型: ``` bool_t dialog_is_modal (widget_t* widget); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | bool\_t | 返回TRUE表示是模态对话框,否则表示不是。 | | widget | widget\_t* | dialog对象。 | #### dialog\_is\_quited 函数 ----------------------- * 函数功能: >

检查对话框是否已经退出模态。 * 函数原型: ``` bool_t dialog_is_quited (widget_t* widget); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | bool\_t | 返回TRUE表示已经退出,否则表示没有。 | | widget | widget\_t* | dialog对象。 | #### dialog\_modal 函数 ----------------------- * 函数功能: >

模态显示对话框。 dialog_modal返回后,dialog对象将在下一个idle函数中回收。 也就是在dialog_modal调用完成后仍然可以访问dialog中控件,直到本次事件结束。 调用该函数会使线程进入阻塞状态,需要调用dialog_quit来解除阻塞。 * 函数原型: ``` dialog_quit_code_t dialog_modal (widget_t* widget); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | dialog\_quit\_code\_t | 返回退出码,值为dialog\_quit函数中传入的参数。 | | widget | widget\_t* | dialog对象。 | #### dialog\_open 函数 ----------------------- * 函数功能: >

从资源文件中加载并创建Dialog对象。 本函数在ui\_loader/ui\_builder_default里实现。 * 函数原型: ``` widget_t* dialog_open (const char* name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | widget\_t* | 对象。 | | name | const char* | dialog的名称。 | #### dialog\_quit 函数 ----------------------- * 函数功能: >

退出模态显示,关闭对话框。 > 比如,在对话框中关闭按钮的事件处理函数中,调用本函数关闭对话框。 * 函数原型: ``` ret_t dialog_quit (widget_t* widget, uint32_t code); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | widget | widget\_t* | dialog对象。 | | code | uint32\_t | 退出码,作为dialog\_modal的返回值(参考:[dialog\_quit\_code\_t](dialog\_quit\_code\_t.md))。 | #### dialog\_set\_title 函数 ----------------------- * 函数功能: >

设置对话框的标题文本。 * 函数原型: ``` ret_t dialog_set_title (widget_t* widget, const char* title); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | widget | widget\_t* | dialog对象。 | | title | const char* | 标题。 | #### dialog\_toast 函数 ----------------------- * 函数功能: >

显示『短暂提示信息』对话框。 窗体样式由dialog_toast.xml文件决定。 * 函数原型: ``` ret_t dialog_toast (const char* text, uint32_t duration); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | text | const char* | 文本内容。 | | duration | uint32\_t | 显示时间(单位为毫秒)。 | #### dialog\_warn 函数 ----------------------- * 函数功能: >

显示『警告』对话框。 窗体样式由dialog_warn.xml文件决定。 * 函数原型: ``` ret_t dialog_warn (const char* title, const char* text); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | title | const char* | 标题。 | | text | const char* | 文本内容。 | #### highlight 属性 ----------------------- >

对话框高亮策略。 > 请参考 [对话框高亮策略](https://github.com/zlgopen/awtk/blob/master/docs/dialog_highlight.md) * 类型:char* | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | | 可持久化 | 是 | | 可脚本化 | 是 | | 可在IDE中设置 | 是 | | 可在XML中设置 | 是 | | 可通过widget\_get\_prop读取 | 是 | | 可通过widget\_set\_prop修改 | 是 |