Pergunta

Eu estou usando um menu com wxTaskBarIcon no Windows (wxWidgets-2.8.9). Se eu preencher menu com itens de rádio, eles não mudam de estado quando clicado. Primeiro item na lista do menu pop-up é marcado como selecionado. Mas selecionando qualquer outro item não muda isso.

Atualmente não há nenhuma manipulador de eventos item de clique (aplicação é mais como protótipo UI). Devo atualizar manualmente o status de seleção do item neste manipulador ou ainda é dever quadro?

Foi útil?

Solução

Você deve usar EVT_UPDATE_UI(yourCommandID, yourEventHandler) para verificação / desmarcando e ativar / desativar itens do menu. Em seu manipulador de eventos updateUI você deve especificar os casos em que o item é habilitado Por exemplo. você tem grupo radiobutton com comandos ID_RADIO_1 e ID_RADIO_2 e eles devem ser verificados dependendo da condição bool m_SomeConditionVariable então você deve criar 2 manipuladores de eventos para eles como

void OnRadio1UpdateUI(wxUpdateUIEvent & event)
{
    event.Checked(m_SomeConditionVariable == true);
}

void OnRadio2UpdateUI(wxUpdateUIEvent & event)
{
    event.Checked(m_SomeConditionVariable == false);
}

e neste primeiro item de rádio caso será verificado apenas quando a variável é falsa e segundo será verificada quando variável é verdadeira.

Você pode usar condição também calculado instaed de armazenar variável por exemplo.

void OnRadio2UpdateUI(wxUpdateUIEvent & event)
{
    // Item will be enabled only when text control has non-empty value
    event.Enabled(!m_SomeTextCtrl->GetValue().Trim().IsEmpty());
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top