首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> Symbian >> 用户界面 >> 正文
symbian 60 开发的一个问题-让左右键都能弹出菜单
作者:m(整理)    文章来源:csdn    更新时间:2005-11-7 12:00:48

问:

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;

    }

相关文章:
如何在一个视图上增加菜单
自定义 CAknMarkableListDialog
C++ Builder 初学问与答(16)
Series 60中手动加载菜单
C++ Builder 处理控件中的文本
C++ Builder 合并菜单
将菜单保存为菜单模板
C++ Builder 使用菜单设计器上下文菜单
 

站点地图 | 加入收藏 | 联系站长 | 广告服务 |
QQ:280529124  Tel:0592-8271361 辽ICP备05021703号