Здравствуйте, Faust, Вы писали:
F>пытаюсь изменить строковое описание пункта меню следующим образом:
F>F>//HMENU hMenu = CommandBar_GetMenu(hwndCB, 0);
F>HMENU hMenu = SendMessage(hwndCB, SHCMBM_GETMENU, 0, 0);
F>HMENU hSubMenu = GetSubMenu(hMenu, 0);
F>TCHAR szItemName[128] = { 0 };
F>MENUITEMINFO mii = { 0 };
F>mii.cbSize = sizeof(MENUITEMINFO);
F>mii.fMask = MIIM_TYPE;
F>mii.fType = MFT_STRING;
F>mii.dwTypeData = szItemName;
F>mii.cch = 128;
F>GetMenuItemInfo(hMenu, IDM_BLABLABLA, FALSE, &mii);
F>wcscpy(szItemName, L"bla-bla-bla");
F>mii.cch = wcslen(szItemName);
F>SetMenuItemInfo(hMenu, IDM_BLABLABLA, FALSE, &mii);
F>
F>на эмуляторе все работает, на устройстве hMenu равен NULL...
F>помогите плиз!
Изминения нужно делать в обработчике сообщения WM_INITMENUPOPUP, также в нём можно енеблить/дисеблить пункты и ставить чексы.
Пример:
LRESULT SettingsForm::OnInitMenuPopup(HMENU p_hMenuPopup, UINT p_nIndex, BOOL p_bSysMenu)
{
if (m_bTranslateMenu)
{
// Localization Menu
MENUITEMINFO oMenuInfo = {0, };
oMenuInfo.cbSize = sizeof(MENUITEMINFO);
oMenuInfo.fMask = MIIM_TYPE;
oMenuInfo.fType = MFT_STRING;
oMenuInfo.dwTypeData = (LPWSTR) LNGSTR(L"MENU_EXIT");
oMenuInfo.cch = wcslen(LNGSTR(L"MENU_EXIT"));
::SetMenuItemInfo(p_hMenuPopup, IDM_SETTINGSMENU_EXIT, FALSE, &oMenuInfo);
oMenuInfo.dwTypeData = (LPWSTR) LNGSTR(L"MENU_ABOUT");
oMenuInfo.cch = wcslen(LNGSTR(L"MENU_ABOUT"));
::SetMenuItemInfo(p_hMenuPopup, IDM_SETTINGSMENU_ABOUT, FALSE, &oMenuInfo);
m_bTranslateMenu = false;
}
return 0;
}
пытаюсь изменить строковое описание пункта меню следующим образом:
//HMENU hMenu = CommandBar_GetMenu(hwndCB, 0);
HMENU hMenu = SendMessage(hwndCB, SHCMBM_GETMENU, 0, 0);
HMENU hSubMenu = GetSubMenu(hMenu, 0);
TCHAR szItemName[128] = { 0 };
MENUITEMINFO mii = { 0 };
mii.cbSize = sizeof(MENUITEMINFO);
mii.fMask = MIIM_TYPE;
mii.fType = MFT_STRING;
mii.dwTypeData = szItemName;
mii.cch = 128;
GetMenuItemInfo(hMenu, IDM_BLABLABLA, FALSE, &mii);
wcscpy(szItemName, L"bla-bla-bla");
mii.cch = wcslen(szItemName);
SetMenuItemInfo(hMenu, IDM_BLABLABLA, FALSE, &mii);
на эмуляторе все работает, на устройстве hMenu равен NULL...
помогите плиз!
Мой компьютер прогоняет бесконечный цикл за 9 секунд, но, мне кажется, он мог бы сделать это быстрее...
Мой компьютер прогоняет бесконечный цикл за 9 секунд, но, мне кажется, он мог бы сделать это быстрее...