mmi_frm_const_hilite_hdlr_table[]静态数组。
currParentID
当前父窗口全局变量
voidSetHiliteHandler(U16itemid,FuncPtrhiliteFuncPtr)
设置动态高亮数组的 MENUID 及它相对应的处理函数,一般用在自定义的菜单
项。比如在图片浏览、JAVA 应用、WAP 记录等不可预期菜单项数目的环境,
我们不可能做静态的 MENUID 和处理函数,就需要用到动态的实现方式。
hintData[][]
[待确认]:这是一个动态菜单的数据缓冲,和 MENUID 一一对应。通俗一点说,
就是菜单的显示字符串。网上有文章对此以及 ConstructHintsList()理解应该
有误,主要是因为代码里该函数注释说是处理静态的,应该是注释错了。引用
一段描述:
3、ConstructHintsList()
ConstructsHintListforastaticmenuscreen
voidConstructHintsList(U16parentID,U8**hintArray)
{。。。。。。
(*maxHiliteInfo[hiliteItemID[i]].hintFuncPtr)(idx);//SetHintHandler 注册的函数的
函数在此被执行
hintArray[idx]=hintData[idx];//该语句是该函数的核心,就是将全局变量
hintData[idx]数组地址
//赋给用户传过来的指针数组;至于 hintData[idx]中是否有数据不
//管;hintData[idx]的数据会在调用 SetHintHandler 注册的函数时对其
//进行初始化;要记住 SetHintHandler 注册的函数在 SetHiliteHandler 注册的
//函数之前执行。
我认为 ConstructHintsList()是创建动态菜单的,时间关系,待分析。
3 高亮机制说明:
3.1 使用流程
每个窗口进入后基本都有类似下面的一段程序:
。。。。。。
EntryNewScreen(EM_DEBUG_INFO_SCR,NULL,EntryEMDebugInfo,NULL);
guiBuffer=GetCurrGuiBuffer(EM_DEBUG_INFO_SCR);
nItems=GetNumOfChild(EM_DEBUG_INFO_MENUID);
GetSequenceStringIds(EM_DEBUG_INFO_MENUID,ItemList);
SetParentHandler(EM_DEBUG_INFO_MENUID);