Dav*_*jak 8 user-interface mfc visual-studio-2003 menu menuitem
我有一个菜单,其中包含各种菜单项,正如您通常所做的那样.每个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);
Run Code Online (Sandbox Code Playgroud)
这(对ModifyMenu方法的调用)会抛出调试断言错误.请注意,我不知道nIDNewItem是什么.
您应首先获取菜单项的命令ID.试试这个:
tr = L"Foo";
CMenu * pMenu = m_wndToolBar.GetMenu();
MENUITEMINFO info;
info.cbSize = sizeof(MENUITEMINFO);
info.fMask = MIIM_ID;
VERIFY(pMenu->GetMenuItemInfo(1, &info, TRUE));
pMenu->ModifyMenuW(info.wID, MF_BYCOMMAND | MF_STRING, info.wID, tr);
Run Code Online (Sandbox Code Playgroud)