我正在 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"
}
}
我不知道问题出在哪里。有人可以帮我吗?您的建议将不胜感激!