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



动态修改菜单项文本的问题


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


动态修改菜单项文本的问题[已结贴,结贴人:smjacky]
发表于:2008-02-19 17:46:33 楼主
我用modifymenu修改菜单文本,但是没有更新,不知道为什么,代码如下:
cmenu*   pmenu   =   cmenu::fromhandle(m_cmdbar-> getmenu());
cmenu*   psubmenu   =   pmenu-> getsubmenu(0);
if(psubmenu)
{
bool   ret   =   psubmenu-> modifymenu(id_main_start,   mf_string ¦mf_byposition,   id_main_start,   _t("停止"));

drawmenubar();   //加了drawmenubar(),还是没有用
}
modifymenu返回成功的,在代码里用getmenustring查看菜单文本,也确实已经修改了,但是在程序界面里,就是没更新。
我试着调研deletemenu等函数,也是相同的情况。

我用win32的api也试过,
hmenu   mainmenu   =   m_cmdbar-> getmenu();
hmenu   submenu   =   getsubmenu(mainmenu,   0);
modifymenu(submenu,   id_main_start,   mf_string ¦mf_bycommand,   id_main_start,   _t("停止"));
                drawmenubar();
也是失败!!!


发表于:2008-02-19 18:20:321楼 得分:5
mf_byposition改成mf_bycommand。
发表于:2008-02-19 18:21:592楼 得分:5
还有要调drawmenubar
发表于:2008-02-20 08:50:403楼 得分:0
mf_byposition是我发帖的时候写错了
mf_bycommand和mfposition两种方式我都试过了,修改是成功的
就是界面上的菜单没改过来
drawmenubar()已经加上去了
发表于:2008-02-20 09:58:504楼 得分:5
你的那段代码写在哪里的??
发表于:2008-02-20 12:56:545楼 得分:0
一个菜单项的触发事件函数中。就是比如,在菜单中有一项是“启动”,那么在改项的事件函数中做相应的启动处理后,要把菜单项的文本改成“停止”。
发表于:2008-02-20 15:18:396楼 得分:5
要确认一下,你该的这个菜单是不是显示的那个菜单


快速检索

最新资讯
热门点击