读书人

怎的动态的添加和删除菜单栏的选项

发布时间: 2012-07-30 16:19:05 作者: rapoo

怎样动态的添加和删除菜单栏的选项

在编程的时候我们经常遇到在程序中运行的过程中动态的变化或者删除菜单栏的某几项,或者在某些操作的时候让某些选项不要显示,怎么做呢?

1、创建MFC AppWizard(exe)工程,名称随便写

2、选择单文档工程,点击完成。

3、在资源视图对menu进行如下设置

怎的动态的添加和删除菜单栏的选项怎的动态的添加和删除菜单栏的选项

其中增加的ID设为IDM_CONTROL_PLUS,恢复的ID设为IDM_CONTRON_RESTORE,原有菜单项的ID为IDM_ITEM_ORIGN

4、在String Table中双击最后以后空白栏,进行如下设置

怎的动态的添加和删除菜单栏的选项

5、添加消息映射,在建立类向导中在Class Name 中CMyView(即自己工程产生的一个类),在Object IDs中分别选择IDM_CONTROL_PLUS和IDM_CONTRON_RESTORE,将其在Message中全部设置成Commend点击Add Function。

6、在新产生的两个函数中添加如下代码

void CMyView::OnControlPlus()
{
// TODO: Add your command handler code here
CMenu *pTopMenu,*pNewMenu;
pTopMenu=AfxGetMainWnd()->GetMenu();
pNewMenu=pTopMenu->GetSubMenu(4);
pNewMenu->AppendMenu(MF_SEPARATOR);
CString newMenuName;
newMenuName.LoadString(IDM_ITEM_NEW);
pNewMenu->AppendMenu(MF_STRING,IDM_ITEM_NEW,newMenuName);
}

void CMyView::OnContronRestore()
{
// TODO: Add your command handler code here
CMenu *pTopMenu,*pNewMenu;
pTopMenu=AfxGetMainWnd()->GetMenu();
pNewMenu=pTopMenu->GetSubMenu(4);
pNewMenu->DeleteMenu(2,MF_BYPOSITION);
pNewMenu->DeleteMenu(1,MF_BYPOSITION);
}

然后运行一下试试效果吧。。。

读书人网 >编程

热点推荐