VC 动态创建菜单

步骤如下:

(1)创建一个基于对话框的应用程序

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

(3)在工作区窗口中选择FileView选项卡,打开资源头文件(Resource.h),在该文件中定义命令ID

#define ID_MENUCAT						1001	//定义菜单命令ID
#define ID_MENUDOG						1002	//定义菜单命令ID
#define ID_MENUMONKEY					1003	//定义菜单命令ID
(4)在对话框的OnInitDialog方法中创建菜单

	m_Menu.CreateMenu();											//创建菜单窗口
	CMenu m_PopMenu;												//定义菜单类对象
	m_PopMenu.CreatePopupMenu();									//创建弹出菜单窗口
	m_Menu.AppendMenu(MF_POPUP,(UINT)m_PopMenu.m_hMenu,L"动物");	//插入菜单
	m_PopMenu.AppendMenu(MF_STRING,ID_MENUCAT,L"猫");				//插入子菜单
	m_PopMenu.AppendMenu(MF_STRING,ID_MENUDOG,L"狗");				//插入子菜单
	m_PopMenu.AppendMenu(MF_STRING,ID_MENUMONKEY,L"猴子");			//插入子菜单
	m_Menu.AppendMenu(MF_POPUP,-1,L"植物");							//插入兄弟菜单
	m_PopMenu.Detach();												//分离菜单句柄
	SetMenu(&m_Menu);												//将菜单和窗口进行关联

注意:由于动态创建菜单是通过代码创建菜单项,所以不需要加载菜单资源

(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 CMy81Dlg::OnMenucat()			//"猫"菜单消息处理函数
{
	MessageBox(L"猫菜单被按下");	//菜单按下时弹出消息
}

void CMy81Dlg::OnMenudog()			//"狗"菜单消息处理函数
{
	MessageBox(L"狗菜单被按下");	//菜单按下时弹出消息
}

void CMy81Dlg::OnMenumonkey()		//"猴子"菜单消息处理函数
{
	MessageBox(L"猴子菜单被按下");	//菜单按下时弹出消息
}

运行结果如下:





  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值