symbian 动态菜单(转帖加原创)

C无论是在UI还是在Container中,只需要继承DynInitMenuPaneL函数就可以实现动态菜单的效果。

首先要在rss中菜单资源进行改变MENU_PANE类型函数里定义出所有需要显示的项。然后在RESOURCE EIK_APP_INFO函数里,将该MENU_PANE所从属的menubar引入,并添加:

cba = R_AVKON_SOFTKEYS_OPTIONS_BACK;语句。

同时也可以根据需要添加多个MENU_PANE项,达到多级菜单的效果

接着在DynInitMenuPaneL函数实现菜单改变,例如,可以设置两个成员变量,分别设置相反值,达到动态位置不变值改变的效果
code:
ConstructL() { iMenu1 = EFalse; iMenu2 = ETrue; } HandleCommandL(TInt aCommand) { case ECommand1: iMenu1 = ETrue; iMenu2 = EFalse; case ECommand2: iMenu1 = EFalse; iMenu2 = ETrue; } DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane) //每一次的参数aResourceId都不一样。这是遍历你在rss里定义的MENU_PANE。 { if(R_MENU == aResourceId)//所以这里一定要用上if判断 { aMenuPane->SetItemDimmed(ECommand1, iMenu1);//SetItemDimmed()在各个平台上的实际效果各不相同 aMenuPane->SetItemDimmed(ECommand2, iMenu2);//S60平台上SetItemDimmed()会隐藏菜单项.UIQ会使菜单变灰而失效 } } 

如果希望更换整个左软键的选项菜单中的内容,可以再DynInitMenuPaneL外使用
iEikonEnv->AppUiFactory()->MenuBar()->SetMenuTitleResourceId(R_ADD_MENU);

或者

 


iView->ProcessCommandL(EAknSoftkeyOptions);

你可能感兴趣的:(symbian 动态菜单(转帖加原创))