|
控件應用編程舉例
在各種菜單控件中,文本圖標列表菜單是比較典型、使用比較廣泛的.我接下來以該控件為例對它的編程過程進行詳細的講解。 文本圖標列表菜單使用的步驟,有以下三步:
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 是一個全局標志,用來標志當前菜單顯示風格(雖然有點多此一舉,但代碼中一定要有,否則會顯示不正常)。
|
|