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