Вопрос

У меня есть приложение MFC, которое использует CMenu для строки главного меню.
Мне не удалось успешно создать подменю.

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

Например, я хотел бы иметь возможность перейти Файл-> Последние элементы->список элементов в подменю
Я могу сделать это достаточно легко с помощью редактора ресурсов в VS, но это должно выполняться динамически.

Использую ли я правильный класс в CMenu?Есть какие-нибудь предложения о том, что попробовать?
Я не нашел ни одного приличного учебного пособия.Даже указать мне на правильный вариант было бы полезно.

Это было полезно?

Решение

Используйте свой редактор ресурсов, чтобы добавить подменю, содержащее один элемент-заполнитель.Затем вы можете программно получить ссылку на это подменю, добавить в него элементы и удалить элемент-заполнитель:

CMenu *subMenu = mainMenu.GetSubMenu( menuPosition );

if( subMenu )
{
    for( unsigned i = 0; i < stringArray.size(); i++ )
    {
        subMenu->AppendMenu( MF_STRING, 400 + i, stringArray[i]);
    }

    subMenu->DeleteMenu( ID_SUBMENU_PLACEHOLDER, MF_BYCOMMAND );
}

Другие советы

Мне пришлось сделать то же самое сегодня, я на VS2008 с пакетом функций (новый пользовательский интерфейс) и просматривал образцы, и там есть пример того, как динамически добавлять пункты меню (http://msdn.microsoft.com/en-us/library/bb983167.aspx)

Вам необходимо переопределить метод CFrameWndEx::OnShowPopupMenu.

Макс.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top