Получить список пунктов меню в Windows в переполнении стека

Я пытаюсь реализовать поиск пунктов меню внутри моего настольного приложения. Я хочу, чтобы пользователь мог вводить любую строку пункта меню в поле поиска и вызывать этот пункт меню непосредственно из результата поиска. Это было бы похоже на поиск меню внутри Mac. Как я могу получить список пунктов меню для моего приложения.

0

Решение

Вот фрагмент кода, который вы можете изменить в соответствии со своими потребностями:

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 **
}
}

Вызовите функцию с помощью ручки главного меню.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]