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