实现类似QQ中的自定义菜单

菜单需要两个类:

1.CMenu: 菜单,相当于菜单的一个容器,框!
2.CMenuItem:菜单项,也是我们滚动焦点来选中的菜单项,还可以相应事件

 

使用方法:
继承 MMenuObserver 接口

初始化:
iMenu = new (ELeave) CMenu(*this);
设置位置:
if (iMenu)
                iMenu->SetRect(TRect(aRect.iTl.iX, aRect.Height() - iMenu->GetHeight() + aRect.iTl.iY - iSoftKeyBar->GetHeight(), aRect.iTl.iX
                                + iMenu->GetWidth() + 20, aRect.iBr.iY - iSoftKeyBar->GetHeight()));

绘制:
if (iMenu && iMenu->IsVisible())
                iMenu->Draw(gc);

响应按键:
if (iMenu && !iMenu->IsVisible())
                                {
                                iMenu->SetVisible(ETrue);
                                return EKeyWasConsumed;
                                }
                        else if (iMenu->IsVisible())
                                {
                                TKeyEvent event;
                                event.iCode = EKeyOK;
                                return OfferKeyEventL(event, aType);
                                }
添加菜单项:
iMenu->RemoveAllMenuItem();

        CMenuItem* itemOpen = new (ELeave) CMenuItem(_L("Open"), 0);
        iMenu->AddMenuItem(itemOpen);

        CMenuItem* itemSetting = new (ELeave) CMenuItem(_L("Setting"), 1);
        iMenu->AddMenuItem(itemSetting);

        CMenuItem* itemHelp = new (ELeave) CMenuItem(_L("Help"), 2);
        iMenu->AddMenuItem(itemHelp);

        CMenuItem* itemAbout = new (ELeave) CMenuItem(_L("About"), 3);
        iMenu->AddMenuItem(itemAbout);

        CMenuItem* itemExit = new (ELeave) CMenuItem(_L("Exit"), 4);
        iMenu->AddMenuItem(itemExit);
        iMenu->SetVisible(EFalse);
析构:
delete iMenu;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值