Как добавить подменю в CMenu в MFC?

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

У меня может быть первый уровень File, Edit, View и т. Д. И их подменю, но я не могу создать подменю из одного из этих меню.

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

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

2 ответа

Решение

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

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 с Feature Pack (новый интерфейс) и смотрю примеры, и есть пример того, как динамически добавлять пункты меню ( http://msdn.microsoft.com/en-us/library/bb983167.aspx)

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

Максимум.

Другие вопросы по тегам