看流星社区

 找回密码
 注册账号
查看: 1916|回复: 3

VC++,如何动态修改菜单文字,谢谢。

[复制链接]

该用户从未签到

发表于 2014-7-15 10:22:52 | 显示全部楼层 |阅读模式
看图,比如说查看菜单的工具栏项,在程序中怎么修改。
ModifyMenu(ID_SUBMENU_CN,MF_BYCOMMAND,ID_SUBMENU_CN,_T("chinese"));
这个可以修改,子菜单项,比如,标准按钮,地址栏等。 现在我要修改的是工具栏,工具栏有个子项,它本身的ID已经不存在。
  请问如何修改它的文字。 能实现的,小弟不胜感激。 分数回报优厚。
我是以图片的工具栏距离。1L的方法还是根据ID修改。不行。
2L的方式我之前也用过,不行。

该用户从未签到

发表于 2014-7-15 10:23:01 | 显示全部楼层
你可以遍历一下“查看”菜单下的所有子菜单项,应该是GetSubMenu函数,获取各个菜单的名称,如果等于“工具栏”,再调用ModifyMenu函数修改该菜单项。

该用户从未签到

发表于 2014-7-15 10:23:08 | 显示全部楼层
CMenu *pSubMenu=m_toolMenu.GetSubMenu(0);
pSubMenu->ModifyMenu(0,MF_BYPOSITION,0,_T("ri"));可以。

该用户从未签到

发表于 2014-7-15 10:24:54 | 显示全部楼层
static bool m_Hide=false;
    m_Hide=!m_Hide;
    //获取工具栏指针
    CWnd* pWndToolBar=(CWnd*)GetDescendantWindow(AFX_IDW_TOOLBAR);
    //获取状态栏指针
    CWnd* pWndStatusBar=(CWnd*)GetDescendantWindow(AFX_IDW_STATUS_BAR);
    CMenu* pMenu=GetMenu();
    CMenu* pSubMenu=pMenu->GetSubMenu(2);
    if(m_Hide)
    {
        pSubMenu->ModifyMenu(ID_HIDE,MF_BYCOMMAND,ID_HIDE,"显示工具栏");
        if(pWndStatusBar!=NULL)    pWndStatusBar->SetWindowText("隐藏工具栏");
        if(pWndToolBar!=NULL)    pWndToolBar->ShowWindow(SW_HIDE);
    }
    else
    {
        pSubMenu->ModifyMenu(ID_HIDE,MF_BYCOMMAND,ID_HIDE,"隐藏工具栏");
        if(pWndStatusBar!=NULL)    pWndStatusBar->SetWindowText("显示工具栏");
        if(pWndToolBar!=NULL)    pWndToolBar->ShowWindow(SW_SHOW);
    }

该用户从未签到

发表于 2014-7-15 10:25:03 | 显示全部楼层
你不需要非使用ID啊,可以用索引啊---MF_BYPOSITION;
例如现在修改程序菜单:
AfxGetMainWnd()->GetMenu()->ModifyMenu(0,MF_BYPOSITION,NULL,_T("123"));

如果改自己的工具栏,就找到它的指针,比如是:ptool,那么就可以:
ptool->ModifyMenu(0,MF_BYPOSITION,NULL,_T("123"));
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-20 04:41

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表