vs2015/mfc动态创建菜单

步骤1.创建一个基于对话框的程序。

2.在对话框的头文件中声明一个CMenu类对象m_Menu;

3.在资源头文件(Resource.h),定义命令ID:

#define ID_MENUCAT            1001      
#define ID_MENUDOG            1002 
#define ID_MENUMONKEY         1003

4.在对话框的源文件中的OnInItDialog方法中创建菜单,代码如下:

        m_Menu.CreateMenu();            //创建菜单窗口
	CMenu m_PopupMenu;              //定义菜单类对象
	m_PopupMenu.CreatePopupMenu();  //创建弹出菜单窗口
	m_Menu.AppendMenuW(MF_POPUP, (UINT)m_PopupMenu.m_hMenu, _T("动物"));//插入菜单
	m_PopupMenu.AppendMenuW(MF_POPUP, ID_MENUCAT, _T("猫"));            //插入子菜单
	m_PopupMenu.AppendMenuW(MF_POPUP, ID_MENUDOG, _T("狗"));            //插入子菜单
	m_PopupMenu.AppendMenuW(MF_POPUP, ID_MENUMONKEY, _T("猴"));         //插入子菜单
	m_PopupMenu.AppendMenuW(MF_POPUP, -1, _T("植物"));                  //插入兄弟菜单
	m_PopupMenu.Detach();                                               //分离菜单句柄
	SetMenu(&m_Menu);                                                   //将菜单和窗口进行关联
	m_Menus.LoadMenuW(IDR_MENU1);                                       //加载菜单资源
5.在对话框的头文件中声明菜单的消息处理函数:
        afx_msg void OnMenuCat();
	afx_msg void OnMenuDog();
	afx_msg void OnMenuMonkey();

6.在对话框的源文件中添加消息映射宏,将命令ID关联到消息处理函数中:

	ON_COMMAND(ID_MENUCAT,OnMenuCat)
	ON_COMMAND(ID_MENUDOG,OnMenuDog)
	ON_COMMAND(ID_MENUMONKEY,OnMenuMonkey)


7.在对话框源文件中添加消息处理函数的实现代码:

void CMenuDlg::OnMenuCat()
{
	MessageBox(_T("猫菜单被按下!"));
}
void CMenuDlg::OnMenuDog()
{
	MessageBox(_T("狗菜单被按下!"));
}
void CMenuDlg::OnMenuMonkey()
{
	MessageBox(_T("猴菜单被按下!"));
}




 

你可能感兴趣的:(vs2015/mfc动态创建菜单)