您的位置:首页 > 其它

动态菜单 动态地决定某个菜单项的显示与否(From Forum Nokia Wiki)

2008-02-20 15:59 288 查看

在S60平台上处理菜单项的显示与隐藏是十分容易的事情,我们只需要在应用程序的APPUI层继承DynInitMenuPaneL函数,在这个函数中处理菜单项的现实即可。下面的代码演示了如何在实现DynInitMenuPaneL()这个函数:

void CMyAppUi::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)

请注意,当你修改菜单窗口的时候,我们需要确认需要修改的菜单的确是当前显示的菜单窗口;进行此项确认,仅仅需要检查函数参数的资源ID和我们需要修改的菜单的资源ID是否一致即可。另外还要注意MENU_PANE的资源ID和MENU_BAR的资源ID并不是一致的,这点要特别注意。

这个DynInitMenuPaneL函数是在菜单窗口被显示之前被调用的,所以调用SetItemDimmed()函数,将某项菜单的隐藏值设置为ETrue的话就可以将某一个菜单项从菜单列表中隐藏起来,这样的话用户就等于无法使用该菜单项了。

如果你想在菜单列表中添加某一个菜单项,你可以在DynInitMenuPaneL函数中,创建一个CEikMenuPane类的对象,然后如下例所示,将这个菜单项添加到菜单列表中。

菜单项和菜单窗口的资源文件定义如下:

RESOURCE MENU_BAR r_main_menubar

RESOURCE MENU_PANE r_main_menu

RESOURCE MENU_PANE r_add_menu

动态地更换整个选项菜单

如果你希望更换整个左软键的选项菜单中的内容,你可以在代码中使用下面的函数:

iEikonEnv->AppUiFactory()->MenuBar()->SetMenuTitleResourceId(R_ADD_MENU);

但是请注意,使用这个函数的时候,一定不要在DynInitMenuPaneL()函数中进行钓用,否则将会导致十分奇怪的后果 ;P 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐