VC++ 深入详解 学习笔记(3) 动态创建菜单

首先强调一点, Menu是归属在MainFrame中的。

 

所以动态创建菜单需要在MainFrame中完成,当然也不是必须的。 只是这样比较方便而已。

 

在CMainFrame的OnCreate事件处理函数中添加以下代码:

 

CMenu menu;
menu.CreatePopupMenu();
GetMenu()->AppendMenuW(MF_POPUP,(UINT) menu.m_hMenu, _T("VC++"));
menu.AppendMenuW(MF_STRING, 111, _T("Hello"));
menu.AppendMenuW(MF_STRING, 112, _T("World"));
menu.Detach();

//将菜单装配到菜单栏,解除与CMenu对象的绑定。
//或者将CMenu的对象声明到CMainFrame的头文件中,否则会因为
//CMainFrame::OnCreate方法执行结束,CMenu对象被销毁,而产生程序错误。

 因为菜单为动态添加,所以这些子菜单的事件处理程序需要自己手动添加。

1. 定义子菜单ID。 在CMainFrame的头文件中,定义一个宏。

#define IDM_HELLO 111

 2. 在头文件中,声明事件处理函数:

afx_msg void OnHello();

 3, 在MainFrame源文件的事件映射中,添加菜单与事件处理函数的映射:

ON_COMMAND(IDM_HELLO, &CMainFrame::OnHello)

 4. 在MainFrame源文件,定义事件处理函数

void CMainFrame::OnHello()
{
	MessageBox(_T("Hello"));
}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值