|
控件應(yīng)用編程舉例
在各種菜單控件中,文本圖標(biāo)列表菜單是比較典型、使用比較廣泛的.我接下來以該控件為例對(duì)它的編程過程進(jìn)行詳細(xì)的講解。
.1 文本圖標(biāo)列表菜單使用的步驟,有以下三步:
1、創(chuàng)建:基本上就是創(chuàng)建一個(gè)此控件的結(jié)構(gòu)體對(duì)象,一般都是申明一個(gè)全局對(duì)象,我們很少用動(dòng)態(tài)對(duì)象,一是我們
系統(tǒng)動(dòng)態(tài)內(nèi)存管理不是很成熟,二是因?yàn)槲覀兊钠聊恢幸话憧丶䲠?shù)量比較少,用全局的比較方便。另外要注意一點(diǎn),我們系統(tǒng)中控件一般都會(huì)有一個(gè)類如gui_create_control_name()的函數(shù),此函數(shù)不是用來創(chuàng)建控件,而是初始
化控件對(duì)象的。
2、設(shè)置:形如gui_create_XXX,gui_set_XXX,gui_resize_XXX 之類的都是控件設(shè)置類接口。
3、顯示:顯示接口一般都類似于gui_show_control_name()。
注意:
菜單是由菜單框架及n 個(gè)菜單項(xiàng)組成,所以“文本圖標(biāo)列表菜單”要?jiǎng)?chuàng)建兩種控件:Fixed list menu 及Fixed icontext menuitem。
.2 一步步編寫文本圖標(biāo)列表菜單
第一步創(chuàng)建:
- 創(chuàng)建前的準(zhǔn)備
構(gòu)建一個(gè)函數(shù),讓它輸出以下畫面,
如下圖6.38所示:

圖運(yùn)行效果
函數(shù)代碼如下:
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);
}
- 構(gòu)建菜單框架
我們先需要?jiǎng)?chuàng)建一個(gè)列表菜單框架:
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;
//顯示菜單結(jié)束
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 是一個(gè)全局標(biāo)志,用來標(biāo)志當(dāng)前菜單顯示風(fēng)格(雖然有點(diǎn)多此一舉,但代碼中一定要有,否則會(huì)顯示不正常)。
菜單框架顯示效果如下圖6.39所示:

菜單框架顯示效果
3、創(chuàng)建菜單項(xiàng)公共屬性
|
|