MFC文档之菜单项操作

17 篇文章 0 订阅

         首先弄清楚菜单命令消息路由的具体过程:当点击某个菜单项时,最先接收到这个菜单命令消息的是框架类。框架类将把接收到的这个消息交给它的子窗口,即视类,由视类首先进行处理。视类首先根据命令消息映射机制查找自身是否对此消息进行了响应,如果响应了,就调用相应的响应函数对这个消息进行处理,消息路由过程结束;如果视类没有对此命令消息作出响应,就交由文档类,文档类同样查找自身是否对这个菜单命令进行了响应,如果响应了,就由文档类的命令消息响应函数进行处理,路由过程结束。如果文档类也未作出响应,就把这个命令消息交还视类,后者又把该消息交还框架类。框架类查看自己是否对这个命令消息进行了响应,如果它也没有作出响应,就把这个菜单命令消息交给应用程序类,由后者进行处理。

        如果要对菜单栏中某一个子菜单进行诸如标记,加粗显示等操作时候,该如何得到这些子菜单项呢?(注:由于主菜单是属于框架窗口,所以需要在框架窗口创建完成之后再去访问菜单对象)

        方法有两种:

        第一种    通过位置索引来获得要操作的菜单位置。

        例如:GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION|MF_CHECKED)(给主菜单第一个子菜单的第一项操作)

          GetMenu() 得到框架窗口指向菜单栏的指针

          GetSubMenu(Index)获得子菜单项  通过Index来索引得到的

          CheckMenuItem(Index    , 操作)  对得到的子菜单项 的对象 进行操作。  Index 是通过位置索引找到的对象索引号 它必须要和MF_BYPOSITION搭配使用

 

      第二种方法   通过标识符来获得要操作的菜单位置

   例如:GetMenu()->GetSubMenu(0)->CheckMenuItem(IDC_FILE_NEW,MF_BYCOMMAND|MF_CHECKED)

    CheckMenuItem(IDC_FILE_NEW,MF_BYCOMMAND)  标识符查找必须要和MF_BYCOMMAND来搭配使用

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值