对于MTK平台中高亮事件的简单分析,仅涉及MMI层的应用
牵涉函数:
void SetHiliteHandler( U16 itemid, FuncPtr hiliteFuncPtr );
void RegisterHighlightHandler( void (*f)(S32 item_index) );
void ExecuteCurrHiliteHandler( S32 hiliteid );
原理: 1. RegisterHighlightHandler(ExecuteCurrHiliteHandler)
A. ExecuteCurrHiliteHandler函数
通过当前高亮菜单的ID : hiliteItemID
执行与此ID关联的执行函数: maxHiliteInfo[hiliteItemID].entryFuncPtr
B. RegisterHighlightHandler函数
将上述函数指针(句柄)传给全局变量 MMI_list_highlight_handler 以便调用
2. 这里就有两个问题:
A. 高亮ID与高亮执行函数怎么关联的?
B. 全局的高亮句柄是怎么执行的?
3. 关联高亮ID与执行函数
SetHiliteHandler
该函数将ID与函数关联:
maxHiliteInfo[itemid].entryFuncPtr = hiliteFuncPtr ;
itemid是传入的菜单ID, hiliteFuncPtr是传入的高亮执行函数
4. 全局的高亮句柄的执行
由于暂时未涉及,没有具体分析。