msgbox控件¶
创建基本的msgbox控件¶
这个控件用于显示消息框,使用如下代码:
sgl_obj_t *msgbox = sgl_msgbox_create(NULL);
sgl_obj_set_size(msgbox, 200, 150);
sgl_obj_set_pos_align(msgbox, SGL_ALIGN_CENTER);
sgl_msgbox_set_font(msgbox, &consolas24_compress);
上面的代码中sgl_obj_set_pos_align函数设置了消息框的位置,SGL_ALIGN_CENTER表示居中,sgl_msgbox_set_font函数设置消息框的字体,consolas24_compress表示Consolas字体,24号,压缩字体。效果如下:

设置消息框的标题和内容¶
使用sgl_msgbox_set_title_text函数设置消息框的标题,使用sgl_msgbox_set_msg_text函数设置消息框的内容,如下:
sgl_obj_t *msgbox = sgl_msgbox_create(NULL);
sgl_obj_set_size(msgbox, 200, 150);
sgl_obj_set_pos_align(msgbox, SGL_ALIGN_CENTER);
sgl_msgbox_set_font(msgbox, &consolas24_compress);
sgl_msgbox_set_title_text(msgbox, "SGL");
sgl_msgbox_set_msg_text(msgbox, "SGL is cool");
效果如下:

设置消息框的圆角半径¶
使用sgl_msgbox_set_radius函数设置消息框的圆角半径,如下:
sgl_obj_t *msgbox = sgl_msgbox_create(NULL);
sgl_obj_set_size(msgbox, 200, 150);
sgl_obj_set_pos_align(msgbox, SGL_ALIGN_CENTER);
sgl_msgbox_set_font(msgbox, &consolas24_compress);
sgl_msgbox_set_title_text(msgbox, "SGL");
sgl_msgbox_set_msg_text(msgbox, "SGL is cool");
sgl_msgbox_set_radius(msgbox, 10);
上面使用sgl_msgbox_set_radius函数设置消息框的圆角半径为10,效果如下:

设置消息框的颜色¶
使用sgl_msgbox_set_color函数设置消息框的颜色,使用sgl_msgbox_set_left_btn_color函数设置消息框的按钮颜色,使用sgl_msgbox_set_right_btn_color函数设置消息框的关闭按钮颜色,如下:
sgl_obj_t *msgbox = sgl_msgbox_create(NULL);
sgl_obj_set_size(msgbox, 200, 150);
sgl_obj_set_pos_align(msgbox, SGL_ALIGN_CENTER);
sgl_msgbox_set_font(msgbox, &consolas24_compress);
sgl_msgbox_set_title_text(msgbox, "SGL");
sgl_msgbox_set_msg_text(msgbox, "SGL is cool");
sgl_msgbox_set_radius(msgbox, 10);
sgl_msgbox_set_color(msgbox, SGL_COLOR_RED_ORANGE);
sgl_msgbox_set_left_btn_color(msgbox, SGL_COLOR_GOLD);
sgl_msgbox_set_right_btn_color(msgbox, SGL_COLOR_BLUE);
效果如下:

设置消息框的按钮文本¶
使用sgl_msgbox_set_left_btn_text函数设置消息框的按钮文本,使用sgl_msgbox_set_right_btn_text函数设置消息框的关闭按钮文本,如下:
sgl_obj_t *msgbox = sgl_msgbox_create(NULL);
sgl_obj_set_size(msgbox, 200, 150);
sgl_obj_set_pos_align(msgbox, SGL_ALIGN_CENTER);
sgl_msgbox_set_font(msgbox, &consolas24_compress);
sgl_msgbox_set_title_text(msgbox, "SGL");
sgl_msgbox_set_msg_text(msgbox, "SGL is cool");
sgl_msgbox_set_radius(msgbox, 10);
sgl_msgbox_set_color(msgbox, SGL_COLOR_RED_ORANGE);
sgl_msgbox_set_left_btn_color(msgbox, SGL_COLOR_GOLD);
sgl_msgbox_set_right_btn_color(msgbox, SGL_COLOR_BLUE);
sgl_msgbox_set_left_btn_text(msgbox, "Know");
sgl_msgbox_set_right_btn_text(msgbox, "What?");
效果如下:

获取消息框退出状态¶
获取消息退出状态有两种方式,如下:
通过设置回调函数,使用sgl_msgbox_get_current_btn函数获取当前状态
void msgbox_event_cb(sgl_event_t *event)
{
sgl_obj_t *msgbox = event->obj;
if (strcmp(sgl_msgbox_get_current_btn(msgbox), "YES") == 0) {
SGL_LOG_INFO("msgbox_event_cb: OK\n");
}
else if (strcmp(sgl_msgbox_get_current_btn(msgbox), "NO") == 0) {
SGL_LOG_INFO("msgbox_event_cb: NO\n");
}
}
设置退出返回状态,使用sgl_msgbox_set_exit_answer函数设置退出返回状态,返回状态指向退出时的按钮文本,如下:
sgl_obj_t *msgbox = sgl_msgbox_create(NULL);
sgl_obj_set_size(msgbox, 300, 150);
sgl_obj_set_pos_align(msgbox, SGL_ALIGN_CENTER);
sgl_msgbox_set_font(msgbox, &consolas24_compress);
sgl_msgbox_set_exit_answer(msgbox, &exit);
sgl_msgbox_set_msg_x_offset(msgbox, 50);
按键切换状态¶
使用sgl_event_send_obj(msgbox, SGL_EVENT_OPTION_WALK)方式可切换当前选中的按钮,然后使用sgl_event_send_obj(msgbox, SGL_EVENT_OPTION_TAP)方式模拟点击按钮
sgl_event_send_obj(msgbox, SGL_EVENT_OPTION_WALK)
这个函数每发送一次,就会切换当前选中的按钮
sgl_event_send_obj(msgbox, SGL_EVENT_OPTION_TAP)
这个函数每发送一次,就会模拟点击按钮,msgbox就会退出