Многоуровневое всплывающее меню Win32

Я пытаюсь создать многоуровневое всплывающее меню, используя win32 и следующий код:

HMENU CreateSubmenu(HMENU parentMenu, int index)
{
HMENU hSubMenu = CreatePopupMenu();
wchar_t buffer[256];
wsprintfW(buffer, L"%d", index);
AppendMenuW(parentMenu, MF_STRING | MF_POPUP, (UINT_PTR)hSubMenu, buffer);
return hSubMenu;
}

void AddMenus(HWND hwnd)
{
HMENU hMenubar = CreateMenu();
HMENU hMenu = CreateMenu();
HMENU hSubMenu = hMenu;

AppendMenuW(hMenu, MF_STRING, IDM_FILE_NEW, L"&New");

for (int index = 1; index <= 20; ++index)
{
hSubMenu = CreateSubmenu(hSubMenu, index);
}

AppendMenuW(hSubMenu, MF_STRING, IDM_IMPORT_MAIL, L"Import &mail");

AppendMenuW(hMenubar, MF_POPUP, (UINT_PTR)hMenu, L"&File");
SetMenu(hwnd, hMenubar);
}

Меню создано отлично. Но у меня проблема с выбором последнего элемента — он не подсвечен (когда мышь наведена) и недоступен для щелчка (всплывающее окно просто исчезает). Эта проблема не возникает, когда в меню меньше уровней подменю.

Есть ли известное ограничение для win32 api, или мне нужно сделать что-то еще, чтобы это работало?

Благодарю.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]