Как добавить подменю в CMenu в MFC? - PullRequest
1 голос
/ 21 июля 2009

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 21 июля 2009

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

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 );
}
0 голосов
/ 21 июля 2009

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

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

Макс.

...