问:
symbian 60的程序默认都是左键可以弹出菜单,右键一般是 back 或者 cancel , 也就是在资源文件中使用标准控件, 例如在.rss文件中添加下面的几句话: RESOURCE EIK_APP_INFO { menubar = r_mydialogtest_menubar; cba = R_AVKON_SOFTKEYS_OPTIONS_CANCEL ; }
但我现在想要让左右键都能弹出菜单,我该怎么实现呢?
答:
看SDK根目录"\Series60Ex\menu\"这个例子,注意一下"aknexmenuokcontainer.cpp",它实现了一个很不错的功能:在按下导航键"OK"时能弹出菜单。可以看出主要是它的OfferKeyEventL()函数在起作用,所以试试把相关代码移到HandleCommandL()函数中应该就可以实现你要的功能。
TKeyResponse CAknExMenuOkContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ) { TKeyResponse keyResponce( EKeyWasNotConsumed );
keyResponce = iLowerText->OfferKeyEventL( aKeyEvent, aType );
if ( keyResponce == EKeyWasNotConsumed ) { if ( ( aType == EEventKey ) && ( aKeyEvent.iCode == EKeyOK ) ) { // 从这儿 iParent->MenuBar()-> SetMenuTitleResourceId( R_AKNEXMENU_MENUBAR_OK_TEST );
if ( iParent->MenuBar() ) { iParent->MenuBar()->StopDisplayingMenuBar(); } if (iParent->MenuBar()) { iParent->MenuBar()->TryDisplayMenuBarL(); } } iParent->MenuBar()-> SetMenuTitleResourceId( R_AKNEXMENU_MENUBAR_OK_MENU ); // 到这儿 return EKeyWasConsumed; }
return keyResponce;
}
|