Как добавить подменю в 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.
Максимум.