Приложение 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();