0

我正在 Win32 App 中创建一个菜单。我想为子菜单创建 2 个项目,但它只显示一个。

BOOL foo;
hSubMenu = CreatePopupMenu();
if (!hSubMenu)
    return NULL;
InsertMenu(hMenu, 0, MF_BYCOMMAND | MF_STRING | MF_POPUP, (UINT)hSubMenu, L"1 sub");
HBITMAP hBitmap = (HBITMAP)LoadImage(hInst, MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 16, 16, LR_DEFAULTCOLOR);
MENUITEMINFO mii;
ZeroMemory(&mii, sizeof(MENUITEMINFO));
mii.cbSize = sizeof(MENUITEMINFO);
mii.fMask = MIIM_CHECKMARKS | MIIM_FTYPE | MIIM_ID | MIIM_STATE | MIIM_STRING;
mii.fType = MFT_STRING;
mii.fState = MFS_DEFAULT;
mii.wID = ID_FILE_QUIT;
mii.hbmpChecked = hBitmap;
mii.hbmpUnchecked = hBitmap;
mii.dwTypeData = L"Item";
mii.cch = 4;
foo = InsertMenuItem(hSubMenu, 0, TRUE, &mii);

ZeroMemory(&mii, sizeof(MENUITEMINFO));
mii.cbSize = sizeof(MENUITEMINFO);
mii.fMask = MIIM_CHECKMARKS | MIIM_FTYPE | MIIM_ID | MIIM_STATE | MIIM_STRING;
mii.fType = MFT_STRING;
mii.fState = MFS_DEFAULT;
mii.wID = ID_FILE_QUIT1;
mii.hbmpChecked = hBitmap;
mii.hbmpUnchecked = hBitmap;
mii.dwTypeData = L"Item abc";
mii.cch = 4;
foo = InsertMenuItem(hSubMenu, 1, TRUE, &mii);
TCHAR buff[256];
if (!foo)
{
    DWORD i = GetLastError();
    if (i)
    {
        FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, i, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buff, 256, NULL); // it says "The parameter is incorrect"
    }
}

在此处输入图像描述

我不知道问题出在哪里。有人可以帮我吗?您的建议将不胜感激!

4

1 回答 1

2

您只能有一个默认菜单项。但是,您为两者指定了 MFS_DEFAULT。尝试将其中一个更改为 MFS_ENABLED。

PS 当您复制/粘贴代码时会发生这种情况:-)

于 2013-06-16T18:14:44.940 回答