wxTaskBar с радиоэлементами

Я пытаюсь реализовать подменю выбора языка (радиоэлементы) в меню панели задач с помощью wxWidgets 2.8.12. Но когда я пытаюсь проверить активный язык, пункт все еще не проверен. Вот фрагмент кода из TrayIcon :: CreatePopUpMenu ()

info = locale->FindLanguageInfo(languages[i]);  //  languages - array of strings
wxMenuItem *item = menuLanguage->AppendRadioItem(ID_Locale + info->Language, info->Description);
if (locale->GetLanguage() == (item->GetId() - ID_Locale)))
item->Check(true);

События:

BEGIN_EVENT_TABLE(SystemTrayIcon, wxTaskBarIcon)
EVT_MENU_RANGE(ID_Locale, ID_Locale + LANGUAGES_COUNT, TrayIcon::ChangeAppLocale)
EVT_UPDATE_UI_RANGE(ID_Locale, ID_Locale + LANGUAGES_COUNT, TrayIcon::UISelectLocale)
END_EVENT_TABLE()

Действие:

void TrayIcon::OnMenuUILocaleChange(wxUpdateUIEvent &event)
{
int id = locale->GetLanguage();
if (id == (event.GetId() - ID_Locale))
{
event.Check(true);
}
}

Поэтому, когда я нажимаю на радиоэлемент, выполняются действия, определенные в TrayIcon :: ChangeAppLocale, но кнопка не проверяется при создании меню. Во время отладки я вижу, что item-> Check (true) имеет место и item-> Checkable () становится true. Но позже в TrayIcon :: OnMenuUILocaleChange элемент не проверяется (я знаю, что здесь немного сложнее, но, по крайней мере, я могу посмотреть значение проверки)

Когда выполняются те же действия для меню приложения (добавление языкового подменю), проверка активна.

я видел Проверка радиопрограммы во всплывающем меню но советы оттуда не помогли. Спасибо

0

Решение

Задача ещё не решена.

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


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