动态创建菜单
来源:互联网 发布:网络职业技术学校 编辑:程序博客网 时间:2024/05/01 03:47
动态创建菜单
1:在对话框中定义菜单对象CMenu m_MainMenu;在初始化函数中使用CreateMenu()创建菜单
2:对于每个层次定义一个临时惨淡变量popMenu,调用CreatePopMenu()方法创建弹出式菜单。
3:调用m_MainMenu对象的AppendMenu()将popMenu弹出式菜单插入到m_MainMenu中,
这就完成了一个顶层菜单的创建
4调用popMenu的AppendMenu()方法创建菜单项
注意:在从低层次转到高层次时需要调用Detach()方法分离菜单句柄,
5利用SetMenu()设置对话框菜单,千万别忘记这一步
6:在对话框消息映射部分添加命令消息映射宏,使相应的方法与命令ID关联
只需添加ON_COMMAND(菜单的ID,函数名)就可以了
Example
/*在初始化函数中*/
m_MainMenu.CreateMenu(); //创建菜单
CMenu popMenu; //定义一个弹出式菜单
popMenu.CreatePopupMenu(); //创建弹出式菜单
m_MainMenu.AppendMenu(MF_POPUP,(UINT)popMenu.m_hMenu,"系统");
CMenu subMenu;
subMenu.CreateMenu();//再次创建弹出式菜单
popMenu.AppendMenu(MF_POPUP,(UINT)subMenu.m_hMenu,"系统登录");
subMenu.AppendMenu(MF_STRING,ID_ADMINILOGIN,"管理员登录");
subMenu.AppendMenu(MF_SEPARATOR,0,"");//创建分隔条
subMenu.AppendMenu(MF_STRING,ID_COMMONLOGIN,"普通用户登录");
popMenu.Detach();//分离菜单句柄
popMenu.CreatePopupMenu();//重新创建弹出式菜单
m_MainMenu.AppendMenu(MF_STRING,(UINT)popMenu.m_hMenu,"帮助");
SetMenu(&m_MainMenu); //设置对话框菜单
BEGIN_MESSAGE_MAP(CDymanicMenuDlg, CDialog)
//{{AFX_MSG_MAP(CDymanicMenuDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_COMMAND(ID_ADMINILOGIN,OnAdminiLogin)
ON_COMMAND(102,OnCommonLogin)//id也可以用数值表示
END_MESSAGE_MAP()
- 如何动态创建菜单
- 动态菜单的创建
- Delphi动态创建菜单
- 动态创建菜单
- 动态创建菜单
- C#动态创建菜单
- 动态创建Menu 菜单
- MFC动态创建菜单
- 动态创建菜单
- 动态创建菜单
- C#动态创建菜单
- 动态创建菜单
- 动态创建级联菜单
- 动态创建级联菜单
- VC 动态创建菜单
- MFC动态创建菜单
- delphi创建动态菜单
- MFC动态创建菜单
- 求解21位花朵数的解法
- C++系统相关:简单的多线程编程
- 原创(SEO角度)内容的获取思路
- Android手机无法使用debug解决方法
- 关于结构体的大小
- 动态创建菜单
- V4L2视频采集操作流程和接口说明
- 获取位图资源句柄
- liunx下vi命令详解
- 公司散伙啦。杯具!反思!
- 转--一些mfc-cwnd
- Javascript的this用法
- linux中常见的信号
- VC++中数据类型的转换