如何使用CMenu类创建菜单
2015-04-01 14:35
260 查看
如果你不知道怎么用菜单类为对话框创建菜单,那么你就不算掌握了MFC
通过菜单编辑器,用户可以方便地设计菜单;通过类向导也可以直接编写菜单项的命令处理函数。那么,如何在程序中动态地创建菜单并相应其命令呢?
1、创建一个菜单,步骤如下:
1.1、在对话框中定义一个菜单对象,调用CreateMenu方法创建菜单资源。
1.2、调用AppendMenu或InsertMenu方法创建菜单项,设置菜单文本和ID命令。
2、为菜单项关联命令消息处理函数,具体步骤如下:
2.1、在对话框类中添加一个消息处理函数。
2.2、在对话框类的消息映射部分添加ON_COMMAND消息映射宏,将菜单项的命令ID与自定义的消息处理函数相关联。
实例如下:
1、创建一个基于对话框的MFC应用程序。命名为Exam1
2、在主窗口类Exam1Dlg.cpp中定义一个菜单成员变量。
CMenu m_Menu;
3、在Resource.h中定义两个菜单的消息命令。
#define ID_MENUHELP 35610
#define ID_MENUTELL 35611
4、在主窗口的头文件Exam1Dlg.h中添加消息处理函数:
afx_msg void help(); //这里是先声明help()响应函数,下同
afx_msg void tell();
5、在主窗口的源文件ExamDlg.Cpp中编写上面创建的两个函数的实现:
void Exam1Dlg::help()
{
MessageBox("帮助命令","提示");
}
void Exam1Dlg::tell()
{
MessageBox("介绍命令","提示");
}
6、在Exam1Dlg.cpp的消息映射部分添加命令消息映射宏,将菜单项的ID和对应的消息处理函数关联。
7、在主窗口Exam1Dlg.cpp中的OnInitDialog方法中编写代码,创建菜单项。
// TODO: Add extra initialization here
m_Menu.CreateMenu();
m_Menu.AppendMenu(MF_STRING,-1,"关于软件");
CMenu subMenu;
subMenu.CreatePopupMenu();
subMenu.AppendMenu(MF_STRING,ID_Help,"帮助");
subMenu.AppendMenu(MF_STRING,ID_Tell,"介绍");
m_Menu.AppendMenu(MF_POPUP,(UINT)subMenu.m_hMenu,"提示");
subMenu.Detach();
SetMenu(&m_Menu);
return TRUE; // return TRUE unless you set the focus to a control
8、运行如下:
通过菜单编辑器,用户可以方便地设计菜单;通过类向导也可以直接编写菜单项的命令处理函数。那么,如何在程序中动态地创建菜单并相应其命令呢?
1、创建一个菜单,步骤如下:
1.1、在对话框中定义一个菜单对象,调用CreateMenu方法创建菜单资源。
1.2、调用AppendMenu或InsertMenu方法创建菜单项,设置菜单文本和ID命令。
2、为菜单项关联命令消息处理函数,具体步骤如下:
2.1、在对话框类中添加一个消息处理函数。
2.2、在对话框类的消息映射部分添加ON_COMMAND消息映射宏,将菜单项的命令ID与自定义的消息处理函数相关联。
实例如下:
1、创建一个基于对话框的MFC应用程序。命名为Exam1
2、在主窗口类Exam1Dlg.cpp中定义一个菜单成员变量。
CMenu m_Menu;
3、在Resource.h中定义两个菜单的消息命令。
#define ID_MENUHELP 35610
#define ID_MENUTELL 35611
4、在主窗口的头文件Exam1Dlg.h中添加消息处理函数:
afx_msg void help(); //这里是先声明help()响应函数,下同
afx_msg void tell();
5、在主窗口的源文件ExamDlg.Cpp中编写上面创建的两个函数的实现:
void Exam1Dlg::help()
{
MessageBox("帮助命令","提示");
}
void Exam1Dlg::tell()
{
MessageBox("介绍命令","提示");
}
6、在Exam1Dlg.cpp的消息映射部分添加命令消息映射宏,将菜单项的ID和对应的消息处理函数关联。
7、在主窗口Exam1Dlg.cpp中的OnInitDialog方法中编写代码,创建菜单项。
// TODO: Add extra initialization here
m_Menu.CreateMenu();
m_Menu.AppendMenu(MF_STRING,-1,"关于软件");
CMenu subMenu;
subMenu.CreatePopupMenu();
subMenu.AppendMenu(MF_STRING,ID_Help,"帮助");
subMenu.AppendMenu(MF_STRING,ID_Tell,"介绍");
m_Menu.AppendMenu(MF_POPUP,(UINT)subMenu.m_hMenu,"提示");
subMenu.Detach();
SetMenu(&m_Menu);
return TRUE; // return TRUE unless you set the focus to a control
8、运行如下:
相关文章推荐
- 使用jQuery+CSS如何创建流动导航菜单-Fluid Navigation
- 如何使用C#与XML创建动态分层菜单
- (CEGUI)如何创建控件 ------菜单MenuBar的使用
- 如何使用TrackPopupMenu创建菜单
- 使用Jquery+CSS如何创建流动导航菜单-Fluid Navigation
- 使用Unity+HTC VIVE做VR时如何创建用户体验较强的菜单
- 使用Jquery+CSS如何创建流动导航菜单-Fluid Navigation
- 使用Jquery+CSS如何创建流动导航菜单-Fluid Navigation 推荐
- 如何使用Extentions创建菜单
- 如何使用VS创建SharePoint自定义Ribbon菜单(图文和代码)
- 使用FileSystemWatcher监测大文件时,如何判断文件已经创建完成?
- 如何使用SetWindowRgn函数创建异形窗口
- 如何使用SetWindowRgn函数创建异形窗口 选择自 ghj1976 的 Blog
- 如何使用 Forms 身份验证创建 GenericPrincipal 对象
- 如何在VB6.0中创建和使用文本资源文件
- 如何创建和使用哈希表
- 如何使用JSP+MySQL创建留言本
- 使用Popup窗口创建无限级Web页菜单(7)
- 使用Popup窗口创建无限级Web页菜单(6)
- 使用Popup窗口创建无限级Web页菜单(1)