在vs2010+MFC中动态添加菜单选项
来源:互联网 发布:新型网络搜索引擎 编辑:程序博客网 时间:2024/04/30 10:32
因为微软买了BCG那些东西,所以现在的MFC动态添加菜单选项和以前VC6.0上的不一样,需要在
BOOL CMainFrame::OnShowPopupMenu(CMFCPopupMenu *pMenuPopup)
中处理。
我新建了一个单文档工程来测试,下面是添加步骤:
0.在Resource.h文件中添加菜单选项的ID:
#define IDS_EDIT_MYITEM 1002
1.在CMainFrame的声明文件中添加函数声明:
BOOL OnShowPopupMenu(CMFCPopupMenu* pMenuPopup);
2.在CMainFrame类中添加函数实现:
- // CFrameWndEx::OnShowPopupMenu 的解释:Called by the framework when it displays a pop-up menu.
- BOOL CMainFrame::OnShowPopupMenu(CMFCPopupMenu *pMenuPopup)
- {
- // 在“Edit”菜单最下面添加了一个分割线和一个"MyItem"子项
- int iIndex = -1;
- // 使用CommandToIndex()来获得菜单项的索引,然后根据索引来确定子菜单项的添加位置
- if (!CMFCToolBar::IsCustomizeMode() && (iIndex = pMenuPopup->GetMenuBar()->CommandToIndex(ID_EDIT_PASTE)) >= 0)
- {
- pMenuPopup->InsertSeparator(iIndex + 1);
- pMenuPopup->InsertItem(CMFCToolBarMenuButton(IDS_EDIT_MYITEM, NULL, -1, L"&MyItem "), iIndex + 2);
- }
- return CFrameWndEx::OnShowPopupMenu(pMenuPopup);
- }
================================================================
为了响应刚刚添加的那个菜单子项的命令消息,需要这样做:
3.在CMainFrame声明中添加函数声明:
afx_msg void OnEditMyItem();
4.在CMainFrame实现中添加命令消息映射:
ON_COMMAND(IDS_EDIT_MYITEM, &CMainFrame::OnEditMyItem)
这里为什么用ON_COMMAND呢?因为它是一种命令消息,windows有3种消息:标准消息、命令消息、通告消息。它们的处理彼此有异,请自行查阅更多资料,我在这里不多说了。
5.在CMainFrame实现中添加函数的实现:
void CMainFrame::OnEditMyItem(){ MessageBox(L"You cilcked EditMyItem");}
PS:当然,新建项目的时候可以选择“Standard MFC”,那样就可以用以前VC6.0和以前MFC那一套东西了~~~
在这里我们用到了一个类:CMFCMenuBar
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CMFCMenuBar的继承关系:
CObject
CCmdTarget
CWnd
CBasePane
CPane
CMFCBaseToolBar
CMFCToolBar
CMFCMenuBar
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 在vs2010+MFC中动态添加菜单选项
- 在vs2010+MFC中动态添加菜单选项
- (MFC) VS2010、VS2012动态添加菜单
- 如何在MFC中动态添加菜单/菜单项、子菜单、右键菜单
- MFC如何动态给单文档菜单选项添加标记~~
- [MFC] MDI框架下 vs2010 动态添加菜单
- vs2010 mfc 添加下拉菜单
- MFC 添加动态菜单
- 读书笔记一 在系统菜单中添加菜单选项
- 在MFC对话框中添加菜单
- mfc在窗口中添加右键菜单
- 在MFC(VS2013)对话框中添加菜单
- MFC中动态添加菜单项和响应菜单事件
- MFC中动态添加菜单项和响应菜单事件
- VS2010动态添加菜单项
- 在VB中动态添加弹出菜单
- MFC 添加右键菜单选项功能
- 在option下拉菜单选项中添加图片
- 自卑一阵子
- 嵌入式Linux下基于FFmpeg的视频硬件编解码
- GeoServer+OpenLayers发布下载的Google卫星影像
- Axis-1.1 webService实现跨project传递参数入
- 一个游戏程序员的学习资料
- 在vs2010+MFC中动态添加菜单选项
- 计算出二进制数中有多少个1
- 第九周实验报告2
- VPN
- 宏定义之“#”
- 4秒100万条数据导入SQL数据库
- [php笔记]session
- 第九周实验报告1
- cglib动态代理介绍