2013-09-03 3 views
0

내 데스크톱 응용 프로그램 내에서 메뉴 항목 검색을 구현하려고합니다. 사용자가 검색 상자 안에 메뉴 항목 문자열을 입력하고 검색 결과에서 해당 메뉴 항목을 직접 호출 할 수있게하려고합니다. 이것은 Mac 내의 메뉴 검색과 유사합니다. 내 응용 프로그램의 메뉴 항목 목록을 검색하려면 어떻게해야합니까?C++에서 Windows의 메뉴 항목 목록 검색

void InterateMenu(HMENU hMenu) 
{ MENUITEMINFO mii; 
    int i, nCount = GetMenuItemCount(hMenu); 

    for (i = 0; i < nCount; i++) 
    { memset (&mii, 0, sizeof(mii)); 
     mii.cbSize = sizeof(mii); 
     mii.fMask = MIIM_SUBMENU | MIIM_TYPE | MIIM_ID; // | MIIM_STATE 
     if (!GetMenuItemInfo(hMenu, i, TRUE, &mii)) 
      continue; 
     if ((mii.fType & MFT_STRING) != 0 && mii.cch > 0) 
     { mii.cch++; 
      TCHAR *pString = (TCHAR *) malloc(mii.cch * sizeof(TCHAR)); 
      if (pString != NULL) 
      { if (!GetMenuItemInfo(hMenu, i, TRUE, &mii)) 
       { free(pString); 
        continue; 
       } 
       TRACE(_T("ID = %u, string = %s\n"), mii.wID, pString); 
       free(pString); 
      } 
     } 
     if (mii.hSubMenu != NULL) 
      InterateMenu(mii.hSubMenu); // ** recursive ** 
    } 
} 

전화 메인 메뉴 핸들 기능 :

+0

응용 프로그램에 어떤 언어를 사용합니까? 그리고 어떤 개발 환경/컴파일러? MFC 또는 C/C++을 사용합니까? [질문의 태그에 추가하십시오] –

+0

나는 똑 바른 C++를 사용하고 있습니다. 태그와 제목을 업데이트했습니다. – mukesh

답변

2

다음은 사용자의 필요에 따라 수정할 수있는 코드입니다.

+0

MIIM_TYPE을 MIIM_FTYPE으로 바꿉니다. – parzival