您的位置:程序门 -> vc/mfc -> 界面



如果取得当前窗口的菜单


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如果取得当前窗口的菜单
发表于:2008-01-14 10:34:49 楼主
cmenu   *menu   =   getmenu();
menu-> getsubmenu(0);就会报错!
不知道是为什么~无论放在doc,frame,view都这样
menu的指针是获取到了~高手来说1下啊
还有即使我用loadmenu()直接load我想要改的菜单~getsubmenu还是会报错
发表于:2008-01-14 10:44:541楼 得分:0
cmenu       *menu       =       getmenu();  
menu->   getsubmenu(0);
这代码是放在那里面的??
初始化函数?
发表于:2008-01-14 10:55:262楼 得分:0
如果取得…………怎么样?
发表于:2008-01-14 11:15:593楼 得分:0
以前我也遇到过这个问题。我当时的问题是:插入了一个菜单资源,然后只加进去了一个顶层菜单,然后执行getsubmenu(0)函数时就报错;然后我没有找到问题的原因。后来我又用到一个右键菜单,就又加进去了一个顶层菜单。这时候问题就消失了。
另外,如果你这个菜单是在程序启动时就要加载的,那么你应该把这几句代码放在初始化窗口函数的默认函数后面。

源码是一样的:
cmenu   m_menu;
m_menu.loadmenu(idr_your_menu);
cmenu   *psub=(cmenu*)m_menu.getsubmenu(0);
发表于:2008-01-14 11:20:344楼 得分:0
要在窗口创建之后,菜单创建之后才能得到menu。
发表于:2008-01-14 11:28:285楼 得分:0
无论是初始化函数还是放在功能函数里都报错啊
我放在右键的响应函数里还会报错
发表于:2008-01-14 11:35:556楼 得分:0
3楼~用你的方法不会报错...可我appendmenu却没有效果
我不知道获取的是不是那个menu
发表于:2008-01-14 11:43:447楼 得分:0
哦?sdi还是mdi?
发表于:2008-01-14 11:49:428楼 得分:0
mdi的
发表于:2008-01-14 12:11:279楼 得分:0
我是在初始化函数中postmessage一个自定一消息到mainframe,就是让其初始化结束,再对菜单进行操作

我也在找好的方法,因为那样实在太不和谐了
前不久发的帖子
发表于:2008-01-14 13:37:3810楼 得分:0
貌似还是不行啊
getsubmenu(i);
i是不是就是菜单的第几个位置?
我想插入个项应该是appendmenu还是insertmenu
发表于:2008-01-14 14:25:2611楼 得分:0
可以阿
我用appendmenu就可以,insert应该一样
你再看看
不幸把代码发给我
发表于:2008-01-14 14:35:5212楼 得分:0
在mainfram中一定是可以的   楼主再调试一下
可能程序的错误本来不在这里
你可建一个新的mdi程序,在那里面测试一下,找到问题的根本所在
发表于:2008-01-14 15:09:5613楼 得分:0
问题好像找到了
似乎是修改了没显示
可我调用了drawmenubar为什么没用的?
显示指定的menu需要用别的函数吗
发表于:2008-01-14 15:54:4614楼 得分:0
就是drawmenubar();阿
发表于:2008-01-14 16:04:3115楼 得分:0
可drawmenubar了还是没用啊
发表于:2008-01-14 16:12:0216楼 得分:0
...
你是在哪里drawmenubar?
用哪个类?
不幸发给我看看
发表于:2008-01-14 16:19:3717楼 得分:0
你可以用trackpopupmenu函数先把这个菜单弹出来试试看看。
发表于:2008-01-14 16:20:5618楼 得分:0
int   ctestframe::oncreate(lpcreatestruct   lpcreatestruct)  
{
if   (cmdichildwnd::oncreate(lpcreatestruct)   ==   -1)
return   -1;

cmenu   mymenu;
mymenu.loadmenu(idr_chart_type);
cstring   aaaa;
cmenu   *pmenu   =   mymenu.getsubmenu(3)-> getsubmenu(0);
cmenu   *pp   =   pmenu;
for   (int   i=0;i   <   (int)   pmenu-> getmenuitemcount();i++)
{
pp   =   pmenu-> getsubmenu(i);
pp-> appendmenu(mf_string,id_mymenu+i,"aaa");
}
drawmenubar();
showwindow(sw_maximize);
return   0;
}

代码是这样的
发表于:2008-01-14 16:26:1219楼 得分:0
代码发给我,有些我也说不清楚...


快速检索

最新资讯
热门点击