2009-07-20 4 views
1

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

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

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

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

+0

Какой язык программирования вы используете? – sth

+0

MFC, вероятно, C++. – Max

+0

Правильно, я использую C++. – CodeFusionMobile

ответ

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); 
} 
0

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

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

Макс.