【发布时间】:2011-09-17 00:50:10
【问题描述】:
我有一个包含各种菜单项的菜单,就像您通常那样。每个 MenuItem(按钮)都有一个标题,我想在运行时更改该标题。在一个没有问题的普通按钮上,我只需调用GetDlgItem(ID)->SetWindowText(CString);
但是我不能在菜单项上执行此操作,因为我无法为其中任何一个分配 ID。属性编辑器中的 ID 字段实际上是“无法编辑 ID”。
那么如何在运行时更改菜单项文本?
编辑:我曾尝试使用 CMenu::ModifyMenu,但没有成功。我不知道如何指定要更改的按钮(元素)。另外,我怀疑我将 CString 作为参数传递的方式的正确性。
这是我的(失败的)尝试:
CString str = "Foo";
CMenu * pMenu = m_wndToolBar.GetMenu();
pMenu->ModifyMenu(1, MF_BYPOSITION | MF_STRING, 0 /*Don't know what to pass as nIDNewItem */, str);
这(对 ModifyMenu 方法的调用)会引发调试断言错误。请不要说我不知道 nIDNewItem 是什么。
【问题讨论】:
标签: user-interface mfc menu menuitem visual-studio-2003