VS2010动态添加菜单项
来源:互联网 发布:淘宝 userid 加密算法 编辑:程序博客网 时间:2024/04/30 18:38
在VC6.0和VS2010里面动态添加菜单项是不一样的,查看MSDN文档可知,VS2010采用的是MFC9.0版,其中有很多新增的项具体信息请查看http://msdn.microsoft.com/en-us/library/ws8s10w4.aspx,本文就根据自己的测试详细的比较一下二者的区别:
1.在VC6.0里面动态添加一个子菜单项:
在CMainFrame::OnCtreate()中添加代码,另外要在Resource.h里面添加#define ID_MENU_ADDMENUITEM 32773
CMainFrame::OnCtreate(){
//下面是添加的代码
CMenu *pMenu=AfxGetMainWnd()->GetMenu();CMenu *pmSub=pMenu->GetSubMenu(1);
pmSub->AppendMenu(MF_STRING,ID_MENU_ADDMENUITEM,L"Add Menu &Item");
}//效果是在“Edit”菜单最下面添加了一个"Add Menu Item"子项
2.在VS2010里面添加一个子菜单项:
要对CMainFrame类的OnShowPopupMenu()进行重载,另外要在Resource.h里面添加#define IDS_EDIT_MYITEM_1 32773
BOOL CMainFrame::OnShowPopupMenu(CMFCPopupMenu* pMenuPopup)
{
// TODO: Add your specialized code here and/or call the base class
int iIndex = -1;
if (!CMFCToolBar::IsCustomizeMode()&&(iIndex=pMenuPopup->GetMenuBar()->CommandToIndex(ID_EDIT_PASTE))>=0)
{
pMenuPopup->InsertSeparator(iIndex+1);
pMenuPopup->InsertItem(CMFCToolBarMenuButton(IDS_EDIT_MYITEM_1,NULL,-1,_T("&MyItem 1")),iIndex+2);
} //使用CommandToIndex()来获得菜单项的索引,然后根据索引来确定子菜单项的添加位置
return CFrameWndEx::OnShowPopupMenu(pMenuPopup);
}//效果是在“Edit”菜单最下面添加了一个分割线和一个"MyItem 1"子项
效果如图,因为还没有为其添加处理函数,所以呈灰色:
给添加的子菜单项添加消息处理函数:
在MainFrame.h里面添加消息处理函数声明:
class CMainFrame : public CFrameWnd{
//…
protected:
afx_msg void OnEditMyItem1 ();
}
然后在MainFrame.cpp消息映射里面添加消息映射项:
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//…
ON_COMMAND(IDS_EDIT_MYITEM_1, OnEditMyItem1)
END_MESSAGE_MAP()
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CMFCMenuBar的继承关系:
CObject
CCmdTarget
CWnd
CBasePane
CPane
CMFCBaseToolBar
CMFCToolBar
CMFCMenuBar
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- VS2010动态添加菜单项
- (MFC) VS2010、VS2012动态添加菜单
- 动态添加菜单项
- 动态添加菜单项
- 在vs2010+MFC中动态添加菜单选项
- 在vs2010+MFC中动态添加菜单选项
- [MFC] MDI框架下 vs2010 动态添加菜单
- VS2010 对话框添加菜单
- 动态添加菜单/菜单项、子菜单、右键菜单
- 如何动态添加菜单/菜单项、子菜单、右键菜单
- 如何动态添加菜单/菜单项、子菜单、右键菜单
- 如何动态添加菜单/菜单项、子菜单、右键菜单
- 如何动态添加菜单/菜单项、子菜单、右键菜单
- 如何动态添加菜单/菜单项、子菜单、右键菜单
- 如何动态添加菜单/菜单项、子菜单、右键菜单
- 如何动态添加菜单/菜单项、子菜单、右键菜单
- 动态添加菜单/菜单项、子菜单、右键菜单
- CMFCMenubar 动态添加菜单项
- Android下的多线程
- Android 2.2 API 中文文档系列 (15) —— GridView
- “存储过程”的定义及优点
- DP(最长公共子串问题)
- Accurately Profiling Direct3D API Calls (Direct3D 9) 翻译笔记
- VS2010动态添加菜单项
- Python 的枚举类型 enum 实现
- Hibernate中的Session
- 有关Android SQLite编程的一些知识
- 解决/usr/bin/ld: cannot find XXX
- 常用日期转换参数
- Scripting.FileSystemObject 文件操作
- 给iframe传参数
- PHP中的java方式重载