MFC应用实例:[11]动态添加菜单
1、新建一个单文档的MFC应用,工程的名字为AddMenu
![MFC应用实例:[11]动态添加菜单](https://exp-picture.cdn.bcebos.com/9881b1fce186242fecbf7cac35e434daf15ee860.jpg)
2、在工作区选择classview标签,展开AddMenu classes,右击CAddMenuView类,在弹出的菜单中选择add Windows Message Handler 命令,在弹出的对话框中的新建windows消息/事件列表框中选择WM_RBUTTONDOWN选项,单击add and Edit
![MFC应用实例:[11]动态添加菜单](https://exp-picture.cdn.bcebos.com/359bee5e4a237971b5d07e6b93196120a6cde360.jpg)
3、在工作区选择classview标签,展开AddMenuclasses,右击CAddMenuView类,在弹出的菜单中选择add Member Function 命令,在弹出的对话框中添加函数:如下
![MFC应用实例:[11]动态添加菜单](https://exp-picture.cdn.bcebos.com/6061b9cd0c6efbf2507e9d64127bbbf4db58da60.jpg)
4、在CAddMenuView.cpp添加一下代码:ON_COMMAND(IDM_ACTION_MENU, OnActionMenu)
![MFC应用实例:[11]动态添加菜单](https://exp-picture.cdn.bcebos.com/bab5c45872dade4938c263e526042e6816e9d560.jpg)
5、在添加的OnRButtonDown()、OnActionMenu()的函数中添加如下的代码:void CAddMenuView::OnRButtonDown(UINT nFlags, CPoint point){ CMenu *pMenu = AfxGetMainWnd()->GetMenu(); //得到主框架菜单 pMenu->GetSubMenu(2)->AppendMenu(MF_SEPARATOR); //添加菜单分隔符 pMenu->GetSubMenu(2)->AppendMenu(MF_STRING, IDM_ACTION_MENU, "动态菜单(&A)"); //添加菜单 MessageBox("添加菜单到“查看”菜单下成功", "信息提示", MB_OK); //提示信息 CView::OnRButtonDown(nFlags, point);}void CAddMenuView::OnActionMenu(){ MessageBox("动态添加的菜单", "信息提示", MB_OK); //菜单响应信息}
![MFC应用实例:[11]动态添加菜单](https://exp-picture.cdn.bcebos.com/16a84fe10ef85856b4f0409753e9ccd2ba66cd60.jpg)
6、运行程序动态的添加一个菜单结果如下:
![MFC应用实例:[11]动态添加菜单](https://exp-picture.cdn.bcebos.com/ba274f598540102a6d2fd611b142a07aa110c560.jpg)
![MFC应用实例:[11]动态添加菜单](https://exp-picture.cdn.bcebos.com/a13bbe10bc33ec384476f15c295f0c14c37b3c61.jpg)