如何动态更改没有 ID 的 MENU 文本

Posted

技术标签:

【中文标题】如何动态更改没有 ID 的 MENU 文本【英文标题】:How do I dynamic change MENU text which without ID 【发布时间】:2013-11-25 07:30:55 【问题描述】:

我尝试按照代码更改菜单文本,在命令窗口中显示正确的活动,更改菜单文本,但 UI 没有变化。

另外,我的菜单在对话框中,填写在对话框参数的菜单字段中

老问题是

How do I change POPUP Text of Menu without ID

谁来帮帮我!

HMENU hMenu;
hMenu=LoadMenu(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MENU));
CMenu* pMenu = CMenu::FromHandle(hMenu);
int i, nCou = pMenu->GetMenuItemCount();
UINT uID;
CString ss;
for (i = 0; i < nCou; i++)
   
    uID = pMenu->GetMenuItemID(i);
    if (uID == 0) // separator
       
        TRACE(_T("----------------------\n"));
        continue;
    
    pMenu->GetMenuString(i, ss, MF_BYPOSITION);
    if (uID == (UINT)-1)
       
        TRACE(_T("Popup '%s' "), ss);
        ss += _T("-Modified");
        //pMenu->ModifyMenu(i, MF_BYPOSITION|MF_STRING|MF_ENABLED, 0, ss);
        //pMenu->ModifyMenu(i, MF_BYPOSITION|MF_STRING|MF_ENABLED, i, ss);
        //pMenu->ModifyMenu(0, MF_BYPOSITION|MF_STRING|MF_ENABLED, i, ss);
        //pMenu->ModifyMenu(0, MF_BYPOSITION|MF_STRING|MF_ENABLED, 0, ss);
        //pMenu->ModifyMenu(0, MF_BYPOSITION|MF_STRING|MF_ENABLED|MF_CHANGE, 0, ss);
        //pMenu->ModifyMenu(i, MF_BYPOSITION, 0, ss);
        pMenu->ModifyMenu(i, MF_BYPOSITION|MF_CHANGE, 0, ss);
        TRACE(_T("modified to '%s' "), ss);
    
    else
        TRACE(_T("Item  '%s', ID=%d "), ss, uID);

    TRACE(_T("\n"));

【问题讨论】:

你的问题是什么?您是否将此菜单分配给框架/对话框?如果没有,你的改变没有任何效果...... 我的菜单在对话框中,没有id的菜单文本没有变化 但是您有一个循环并使用 MF_BYPOSITION 进行修改。当您使用此菜单时,您发布的代码应该可以工作... 【参考方案1】:

我回答我的问题,更改代码

CMenu* pMenu = CMenu::FromHandle(hMenu); 

CMenu* pMenu = GetMenu();

它会起作用的!非常感谢!

【讨论】:

另外,菜单不能重绘,必须使用setmenu()来重绘。

以上是关于如何动态更改没有 ID 的 MENU 文本的主要内容,如果未能解决你的问题,请参考以下文章

如何使用javascript动态更改html中svg的文本内容

如何动态更改android标签文本?

如何更改系统警报设置文本动态

如何动态更改多个TextView中的文本? [重复]

如何更改移动视图菜单中最后一个按钮的文本颜色?

动态更改内容