Win32多级弹出菜单

时间:2017-12-12 11:57:38

标签: c++ winapi popupmenu

我正在尝试使用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 个答案:

没有答案