| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1123 人关注过本帖
标题:求助 (关于MFC的菜单问题)
只看楼主 加入收藏
windyfzz
Rank: 2
等 级:禁止访问
帖 子:90
专家分:12
注 册:2010-7-25
结帖率:68%
收藏
已结贴  问题点数:20 回复次数:9 
求助 (关于MFC的菜单问题)
我在CMainFrame的OnCreate()函数添加了如下代码   


    CMenu menu;
    menu.CreatePopupMenu();
    GetMenu()->AppendMenu(MF_POPUP, (UINT)menu.m_hMenu,"声明");
    menu.AppendMenu(MF_STRING, 111, "版本");
    menu.AppendMenu(MF_STRING, 112, "说明");
   
    GetMenu()->InsertMenu(2, MF_BYPOSITION| MF_POPUP, (UINT)menu.m_hMenu,"联系");
    GetMenu()->GetSubMenu(2)->AppendMenu(MF_STRING, 113, "邮件");
    GetMenu()->GetSubMenu(2)->AppendMenu(MF_STRING, 114, "网址");
    menu.Detach();

我的意思是先创建一个"声明"子菜单,在其中添加"版本"和"说明"两个菜单项。
然后在"编辑"后在插入一个"联系"子菜单,在其中添加"邮件"和"网址"两个菜单项。

可为什么运行程序后"声明"和"联系"这两个子菜单的菜单项都变成了4个(版本""说明""邮件""网址")?
搜索更多相关主题的帖子: MFC 菜单 
2010-08-08 09:54
红色警戒
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:19
帖 子:444
专家分:2967
注 册:2005-11-20
收藏
得分:5 
    CMenu menu, menu2;
    menu.CreatePopupMenu();
    menu2.CreatePopupMenu();
    menu2.AppendMenu(0, ID_POPUP_MENU3, "版本");
    menu2.AppendMenu(0, ID_POPUP_MENU4, "说明");   
    menu.InsertMenu(0, MF_BYPOSITION|MF_POPUP|MF_STRING, (UINT)menu2.m_hMenu, "子菜单"); //添加子菜单
     menu.AppendMenu(1, ID_POPUP_MENU2, "联系");
    CPoint Pos;
    GetCursorPos(&Pos);
    menu.TrackPopupMenu(TPM_RIGHTALIGN, Pos.x, Pos.y, this);
    menu.DestroyMenu();
    menu2.DestroyMenu();

[ 本帖最后由 红色警戒 于 2010-8-8 12:53 编辑 ]

2010-08-08 11:52
windyfzz
Rank: 2
等 级:禁止访问
帖 子:90
专家分:12
注 册:2010-7-25
收藏
得分:0 
回复 2楼 红色警戒
不行啊
2010-08-08 12:37
红色警戒
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:19
帖 子:444
专家分:2967
注 册:2005-11-20
收藏
得分:0 
改好了,试试吧

2010-08-08 12:54
windyfzz
Rank: 2
等 级:禁止访问
帖 子:90
专家分:12
注 册:2010-7-25
收藏
得分:0 
回复 4楼 红色警戒
呵呵,我是这个意思。
图片附件: 游客没有浏览图片的权限,请 登录注册

2010-08-08 15:47
bydzyj
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:38
专家分:123
注 册:2010-8-8
收藏
得分:10 
这个问题比较简单 !!建完一个按钮重新建一个不就OK了。
    CMenu menu;
    menu.CreatePopupMenu();
    GetMenu()->AppendMenu(MF_POPUP, (UINT)menu.m_hMenu,"声明");
    menu.AppendMenu(0, 111, "版本");
    menu.AppendMenu(0, 112, "说明");
    menu.Detach();
    menu.CreatePopupMenu();//重新创建菜单
    GetMenu()->InsertMenu(2, MF_BYPOSITION| MF_POPUP, (UINT)menu.m_hMenu,"联系");
    GetMenu()->GetSubMenu(2)->AppendMenu(1, 113, "邮件");
    GetMenu()->GetSubMenu(2)->AppendMenu(1, 114, "网址");
    menu.Detach();
2010-08-08 16:28
bydzyj
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:38
专家分:123
注 册:2010-8-8
收藏
得分:0 
我试了效果可以!
2010-08-08 16:29
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:5 
6楼的方法可行.
不过注意资源释放.
 
程序代码:
   CMenu menu;
    menu.CreatePopupMenu();
    GetMenu()->AppendMenu(MF_POPUP, (UINT)menu.m_hMenu,"声明");
    menu.AppendMenu(MF_STRING, 111, "版本");
    menu.AppendMenu(MF_STRING, 112, "说明");
    menu.Detach();
    menu.DestroyMenu();  //Free Resource
   
    menu.CreatePopupMenu();
    GetMenu()->InsertMenu(2, MF_BYPOSITION| MF_POPUP, (UINT)menu.m_hMenu,"联系");
    GetMenu()->GetSubMenu(2)->AppendMenu(MF_STRING, 113, "邮件");
    GetMenu()->GetSubMenu(2)->AppendMenu(MF_STRING, 114, "网址");

    menu.Detach();


举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-08-08 16:38
windyfzz
Rank: 2
等 级:禁止访问
帖 子:90
专家分:12
注 册:2010-7-25
收藏
得分:0 
回复 6楼 bydzyj
可以,谢谢!
2010-08-09 09:47
bydzyj
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:38
专家分:123
注 册:2010-8-8
收藏
得分:0 
回复 9楼 windyfzz
不用共同学习!
2010-08-11 19:18
快速回复:求助 (关于MFC的菜单问题)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022565 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved