Приложение MFC SDI, как изменить заголовок пункта меню?

Целый день я пытаюсь решить эту простую проблему, но безуспешно. Я нашел много подсказок в интернете, но, похоже, ни один из них не подходит для моей проблемы.

Моя проблема довольно проста: я хочу изменить заголовок элемента меню во время выполнения

Но, похоже, все решения, которые я нашел, очень специфичны.

Мои требования следующие: - это приложение MFC (VS2010) - это приложение SDI, а не MDI - я хочу изменить заголовок пункта главного меню (например, "Файл"), а не запись в подменю.

Из-за основного элемента ввода, нет идентификатора для элемента меню. Поэтому решения с ON_UPDATE_COMMAND_UI не будут работать!

Мои проблемы: - либо код, который я пробовал, генерирует утверждение или исключение - либо вызов функции возвращается с false - или функция, кажется, работает хорошо, но я не вижу никакого результата (заголовок все еще остается неизменным)

Возможно, я использую неправильные функции или неправильное место для вызова функций. У кого-нибудь есть пример, который будет работать в рамках моих предварительных условий?

Большое большое спасибо!

Ричард

1 ответ

Windows ловко скрывает функцию, чтобы изменить меню под загадочным именем ModifyMenu, Я ненавижу, когда они делают такие вещи. Действительно заставляет меня хотеть Linux/Unix, с хорошими ясными именами, такими как shmdt а также mvwaddchnstr, Во всяком случае, сойдя с моей мыльницы, вы бы назвали это примерно так:

GetParentFrame()->GetMenu()->ModifyMenuW(1, MF_BYPOSITION, 0, L"New Item");
GetParentFrame()->Invalidate();
Другие вопросы по тегам