Вы должны использовать EVT_UPDATE_UI(yourCommandID, yourEventHandler)
для проверки / снятия отметки и включения / выключения пунктов меню.
В вашем обработчике события UpdateUI вы должны указать случаи, когда ваш элемент включен
Например. у вас есть группа радиокнопок с командами ID_RADIO_1 и ID_RADIO_2, и они должны быть проверены в зависимости от условия bool m_SomeConditionVariable
, тогда вы должны создать для них 2 обработчика событий, например
void OnRadio1UpdateUI(wxUpdateUIEvent & event)
{
event.Checked(m_SomeConditionVariable == true);
}
void OnRadio2UpdateUI(wxUpdateUIEvent & event)
{
event.Checked(m_SomeConditionVariable == false);
}
, и в этом случае первый радиоэлемент будет проверяться, только если переменная равна false, а второй будет проверяться, когда переменная равна true.
Вы также можете использовать вычисленное условие для хранения переменной, например,
void OnRadio2UpdateUI(wxUpdateUIEvent & event)
{
// Item will be enabled only when text control has non-empty value
event.Enabled(!m_SomeTextCtrl->GetValue().Trim().IsEmpty());
}