文档介绍:一个初始化函数去注册不同的event handlers
Highlight handlers 进行函数注册 主要是选中菜单后调用该注册函数,即该菜单对应的操作。
完成入口函数Entry functions
完成退出函数Exit functions
完成business logic去进行不同entry functions 之间的调用
MMI 采用screen流的方式进行屏幕之间的转换,进入新的screen之前,执行被覆盖screen的exit函数,并将相关信息存入历史记录,然后进入新的screen, 从新的screen退出后从history数据库取出上一screen的信息,进入其entry函数。
以下代码片段的API都是系统提供的,可在头文件中找到其原形。
初始化函数代码片断:
//以下两个API参考eventGproth
Void MyInitialization(void)
{
//设事件处理函数 如下闹钟超时处理时间
SetProtocolEventHandler(AlmExpiryHandler, MSG_ID_MMI_EQ_ALARM_IND);
//设置Highlight Handler函数 当点mms菜单后调用相应函数HighlightMMSHandler
SetHiliteHandler (MESSAGES_MENU_MMS_MENUID, HighlightMMSHandler);
}
入口函数代码片断:
// 本例为进入短信主菜单的处理函数 相关接口函数可在对应的头文件中查找
void EntrySMSMainMenuList (void)
{
U8* guiBuffer;
U16 nStrItemList[MAX_SUB_MENUS];
U16 numItems;
U16 itemIcons[MAX_SUB_MENUS];
U8* popUpList[MAX_SUB_MENUS];
U32 menuItemId=-1;
U32 menuItemId1=-1;
U32 maskingByte=-1;
U8** pPopUpList=NULL;
//进入入口函数必须首先调用EntryNewScreen, 该函数执行上一屏幕的退出函数,并记录当前屏幕的入口和退出函数
EntryNewScreen(SCR_ID_MSG_SMS_MAIN_MENU, mmi_msg_exit_generic, EntrySMSMainMenuList, NULL);
//设置当前screen ID
SetMessagesCurrScrnID(SCR_ID_MSG_SMS_MAIN_MENU);
//获取当前screen 的gui buffer,用于被当前screen被覆盖后存入历史记录
guiBuffer = GetCurrGuiBuffer (SCR_ID_MSG_SMS_MAIN_MENU);
//设置当前screen的父menu ID
SetParentHandler (MESSAGES_MENU_SMS_MENUID);
//注册Highlighthandler处理函数
Re