菜单学习和动态创建菜单

//菜单命令范围

    /*

    0X8000~0X8FFFF ClassWizard将次范围用于应用程序定义的菜单

    0X9000~0XDFFFF 本范围内的命令ID可供使用

    0XE000~0XFFFFF MFC将这一范围用于自身目的

    */

    //获取与框架窗口相链接的菜单项

    CMenu*pMenu=GetMenu();

    //获取字菜单指针

    CMenu*pmSub=pMenu->GetSubMenu(1);

 

    //常见的菜单函数;

    pMenu->AppendMenu();//将新菜单项添加到现有彩电末尾或者添加到新菜单中

    pMenu->CheckMenuItem();//设置或者清楚菜单对号,一般可以提供一个UPDATW_COMMAND_UI来代替

    pMenu->GetMenuItemID();//查询一个菜单项的命令ID

    pMenu->GetMenuString();//查询菜单项的文本标签

    pMenu->EnableMenuItem();//启用或者禁用菜单项(只有在CFrameWnd::m_bAutoMenuEnable=FALSE时才有效)为了替换次函数,可提供一个UPDATW_COMMAND_UI映射消息

    pMenu->InsertMenu();//在现有菜单内的指定位置插入一个菜单项

    pMenu->RemoveMenu();//删除一个指定的菜单项

 

 

    //给动态创建菜单提供提示信息(Prompt)

//可以通过重载GetMessageString取代CFrameWndGetMessageString函数,对于静态创建的菜单项,可调用默认的程序,否则,调用自己的函数

 

 

 

 

 

动态创建菜单

void CMenuTestView::OnRButtonDown(UINT nFlags, CPoint point)

{

    // TODO: 在此添加消息处理程序代码和/或调用默认值

    ClientToScreen(&point);

    if (NULL==m_menu)

    {

       m_menu=new CMenu();

       if (!m_menu)

       {

           return;

       }

       if(!m_menu->LoadMenu(IDR_MYMENU))

       {

           return;

       }

    }

    CMenu*pmSub=m_menu->GetSubMenu(0);

    pmSub->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,

       point.x,point.y,this);

 

    CView::OnRButtonDown(nFlags, point);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值