45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:如何在VC中实现动态菜单功能?

如何在VC中实现动态菜单功能?

2016-08-24 13:59:51 来源:www.45fan.com 【

如何在VC中实现动态菜单功能?

菜单项状态的维护是依赖于CN_UPDATE_COMMAND_UI消息,谁捕获CN_UPDATE_COMMAND_UI消息,MFC就在其中创建一个CCmdUI对象。我们可以通过手工或利用ClassWizard在消息映射中添加ON_UPDATE_COMMAND_UI宏来捕获CN_UPDATE_COMMAND_UI消息。

在后台所做的工作是:操作系统发出WM_INITMENUPOPUP消息,然后由MFC的基类如CFrameWnd接管。它创建一个CCmdUI对象,并与第一个菜单项相关联,调用对象的一个成员函数DoUpdate()。这个函数发出CN_UPDATE_COMMAND_UI消息,这条消息带有指向CCmdUI对象的指针。同一个CCmdUI对象就设置为与第二个菜单项相关联,这样顺序进行,直到完成所有菜单项。

更新命令UI处理程序仅应用于弹出式菜单项上的项目,不能应用于永久显示的顶级菜单项目。

----孙鑫

在菜单栏中根据内容插入一个动态的菜单分一下几个步骤

m_menu.CreatePopupMenu();//插入一个弹出式菜单
GetParent()->GetMenu()->AppendMenu(MF_POPUP,(UINT)m_menu.m_hMenu,"新菜单");
GetParent()->DrawMenuBar(); //重绘

GetMenu()->InsertMenu(3,MF_BYPOSITION | MF_POPUP,(UINT)menu.m_hMenu,"新项目");//在菜单栏中插入一个名称为“新项目”的菜单项

主要是对以上函数的处理,根据实际情况判断插入的条件即可以实现。

 


本文地址:http://www.45fan.com/a/question/66974.html
Tags: 实现 动态 菜单
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部