我正在尝试使用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有一些已知限制,还是我需要做些其他事情才能使其正常工作?
感谢。