步骤如下:
(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"猴子菜单被按下"); //菜单按下时弹出消息 }