У меня есть меню со всеми видами пунктов меню, как обычно. Каждый элемент меню (кнопка) имеет заголовок, и я хотел бы изменить этот заголовок во время выполнения. На обычной кнопке, которая на самом деле не проблема, я просто вызываю GetDlgItem(ID)->SetWindowText(CString);
Однако я не могу сделать это в пунктах меню, так как не могу назначить идентификатор ни одному из них. Поле идентификатора в редакторе свойств на самом деле говорит: «ID не может быть отредактирован».
Итак, как мне изменить текст пунктов меню во время выполнения?
EDIT: я пытался использовать 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.