目录
- 一、概述
- 二、消息框
- 1、创建消息框
- 2、获取消息框的组成部分
- 3、关闭消息框部件
- 4、消息框部件事件
- 5、API 函数
 
一、概述
消息框部件是由多个小部件构建而成的,包括:lv_obj、lv_btn、lv_label 和 lv_btnmatrix 部件,示意图如下所示:

消息框充当弹出窗口。它们由一个内容区域构建而成,该区域有一个辅助工具用于添加文本,一个可选的头部(可以包含标题、关闭按钮和其他按钮),以及一个可选的底部配有按钮。
文本将被自动折行为多行,并且高度将被自动设置。如果手动设置了高度,内容将变为可滚动的。
消息框可以是模态的(阻止对屏幕其余部分的单击) 或者不是模态的。
二、消息框
1、创建消息框
用户需要创建消息框部件,可以调用 lv_msgbox_create 函数,该函数具有五个形参,如下所示:
- parent:父对象,如果该形参为 NULL,则该消息框部件为模态;
- title:消息框的标题;
- txt:消息框的文本;
- btn_txts[]:按钮文本的数组;
- add_close_btn:添加/不添加关闭按钮。
接下来,我们以简单示例来理解消息框的创建,示例代码如下所示:
static const char *btns[] = { "Apply", "Close", "" };
void my_gui(void)
{
    lv_obj_t *lv_msgbox = lv_msgbox_create(lv_scr_act(), "Title", "Context", btns, true);
    lv_obj_center(lv_msgbox);
}

模态与非模态
模态就是阻止对屏幕其余部分的单击,反之,非模态就是不阻止。下面看例子:
static const char *btns[] = { "Apply", "Close", "" };
void my_gui(void)
{
    lv_obj_t *lv_msgbox = lv_msgbox_create(lv_scr_act(), "Title", "Context", btns, true);
    lv_obj_t *btn = lv_btn_create(lv_scr_act());
    lv_obj_set_pos(btn, 400, 100);
    lv_obj_center(lv_msgbox);
}

 这个时候还能点击上面的蓝色的按钮,所以此消息框是非模态的。
而做出如下修改后:
lv_obj_t *lv_msgbox = lv_msgbox_create(NULL, "Title", "Context", btns, true);

除消息框的其它地方都加了一层灰色的阴影,而上面的按钮也无法点击了。这个时候,这个消息框就是模态的。
2、获取消息框的组成部分
前面讲了消息框的组成部分。如果用户需要设置这些组成部分的样式,则需要先将它们获取回来,获取组成部分的相关函数如下:
lv_obj_t * lv_msgbox_get_title(lv_obj_t * mbox);
lv_obj_t * lv_msgbox_get_close_btn(lv_obj_t * mbox);
lv_obj_t * lv_msgbox_get_text(lv_obj_t * mbox);
lv_obj_t * lv_msgbox_get_btns(lv_obj_t * mbox);
3、关闭消息框部件
如果用户想手动关闭消息框,可调用 lv_msgbox_close 函数进行设置。
4、消息框部件事件
消息框部件常用的事件类型为 LV_EVENT_VALUE_CHANGED。
5、API 函数
| 函数 | 描述 | 
|---|---|
| lv_msgbox_create() | 创建消息框部件 | 
| lv_msgbox_get_title() | 获取消息框标题文本对象 | 
| lv_msgbox_get_close_btn() | 获取关闭按钮对象 | 
| lv_msgbox_get_text() | 获取提示文本对象 | 
| lv_msgbox_get_content() | 获取消息框内容对象 | 
| lv_msgbox_get_btns() | 获取按键矩阵对象 | 
| lv_msgbox_get_active_btn() | 获取当前按下的按钮索引 | 
| lv_msgbox_get_active_btn_text() | 获取当前按下的按钮文本 | 
| lv_msgbox_close() | 关闭消息框 | 
| lv_msgbox_close_async() | 异步关闭消息框 | 
















![[LLM 学习笔记] Transformer 基础](https://i-blog.csdnimg.cn/direct/4b3335aae0e840e884d9f4450fc02c97.png)


