|
控件应用编程举例
在各种菜单控件中,文本图标列表菜单是比较典型、使用比较广泛的.我接下来以该控件为例对它的编程过程进行详细的讲解。 文本图标列表菜单使用的步骤,有以下三步:
1、创建:基本上就是创建一个此控件的结构体对象,一般都是申明一个全局对象,我们很少用动态对象,一是我们
系统动态内存管理不是很成熟,二是因为我们的屏幕中一般控件数量比较少,用全局的比较方便。另外要注意一点,我们系统中控件一般都会有一个类如gui_create_control_name()的函数,此函数不是用来创建控件,而是初始
化控件对象的。
2、设置:形如gui_create_XXX,gui_set_XXX,gui_resize_XXX 之类的都是控件设置类接口。
3、显示:显示接口一般都类似于gui_show_control_name()。
注意:
菜单是由菜单框架及n 个菜单项组成,所以“文本图标列表菜单”要创建两种控件:Fixed list menu 及Fixed icontext menuitem。
6.3.2 一步步编写文本图标列表菜单
第一步创建:
函数代码如下:
void mmi_myapp_entry(void)
{
S32 x, y, w, h;
color text_color = {255, 255, 0, 100};
EntryNewScreen(SCR_MYAPP_MAIN, mmi_myapp_exit, NULL, NULL);
gui_lock_double_buffer();
entry_full_screen();
clear_screen();
gui_set_text_color(text_color);
gui_set_text_border_color(UI_COLOR_GREEN);
gui_measure_string((UI_string_type)GetString(STR_MYAPP_HELLO), &w, &h);
x = (UI_device_width - w) / 2;
y = MMI_title_y;
gui_move_text_cursor(x, y);
gui_print_bordered_text((UI_string_type)GetString(STR_MYAPP_HELLO));
gui_unlock_double_buffer();
gui_BLT_double_buffer(0, 0, UI_device_width - 1, UI_device_height - 1);
SetKeyHandler(GoBackHistory, KEY_RSK, KEY_EVENT_UP);
}
构建菜单框架
我们先需要创建一个列表菜单框架:
fixed_list_menu My_fixed_list_menu; //列表菜单框架
void mmi_myapp_entry(void)
{
… …
gui_move_text_cursor(x, y);
gui_print_bordered_text((UI_string_type)GetString(STR_MYAPP_HELLO));
//开始显示菜单
memset(&My_fixed_list_menu, 0, sizeof(fixed_list_menu));
gui_create_fixed_list_menu(&My_fixed_list_menu, 20, MMI_content_y + 5, 136, MMI_content_height - 50);
MMI_current_menu_type = LIST_MENU;
//显示菜单结束
gui_BLT_double_buffer(0, 0, UI_device_width - 1, UI_device_height - 1);
SetKeyHandler(GoBackHistory, KEY_RSK, KEY_EVENT_UP);
}
gui_create_fixed_list_menu 用来初始菜单框架的一些基本属性。MMI_current_menu_type 是一个全局标志,用来标志当前菜单显示风格(虽然有点多此一举,但代码中一定要有,否则会显示不正常)。
|
|