2013-06-16 1 views
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" 
    } 
} 

enter image description here

나도 몰라. 누구든지 나를 도울 수 있을까? 귀하의 제안이 감사 될 것입니다!

+0

결과가 변경되지 않습니다! ** GetLastError ** 메서드를 캡처했으며 항상 "The parameter is incorrect"라고 말합니다. – suti

+0

물론 그렇습니다. – suti

답변

2

하나의 기본 메뉴 항목 만 가질 수 있습니다. 그러나 둘 모두에 대해 MFS_DEFAULT를 지정했습니다. 그 중 하나를 MFS_ENABLED로 변경해보십시오.

P. 코드를 복사/붙여 넣을 때 발생합니다 :

+0

대단히 감사합니다! 내 문제가 해결되었습니다. – suti