0
Win32 App에서 메뉴를 만들고 있습니다. 하위 메뉴에 2 개의 항목을 만들고 싶지만 하나만 표시합니다. 문제가 어디 WinAPI InsertMenuItem을 사용할 수 없습니다.
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"
}
}
나도 몰라. 누구든지 나를 도울 수 있을까? 귀하의 제안이 감사 될 것입니다!
결과가 변경되지 않습니다! ** GetLastError ** 메서드를 캡처했으며 항상 "The parameter is incorrect"라고 말합니다. – suti
물론 그렇습니다. – suti