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号,压缩字体。效果如下:
alt text

设置消息框的标题和内容

使用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");

效果如下:
alt text

设置消息框的圆角半径

使用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,效果如下:
alt text

设置消息框的颜色

使用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);

效果如下:
alt text

设置消息框的按钮文本

使用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?");

效果如下:
alt text

获取消息框退出状态

获取消息退出状态有两种方式,如下:

  1. 通过设置回调函数,使用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");
    }
}
  1. 设置退出返回状态,使用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就会退出