Pregunta

Estoy usando un menú emergente con wxTaskBarIcon en Windows (wxWidgets-2.8.9). Si lleno el menú emergente con elementos de radio, no cambian de estado cuando se hace clic. El primer elemento en la lista del menú emergente se marca como seleccionado. Pero seleccionar cualquier otro elemento no cambia esto.

Actualmente no hay un controlador de eventos de clic de elemento (la aplicación es más como un prototipo de interfaz de usuario). ¿Debo actualizar manualmente el estado de verificación de elementos en este controlador o todavía es un deber marco?

¿Fue útil?

Solución

Debe usar EVT_UPDATE_UI (yourCommandID, yourEventHandler) para marcar / desmarcar y habilitar / deshabilitar elementos del menú. En su controlador de eventos UpdateUI, debe especificar los casos en que su elemento está habilitado P.ej. tiene un grupo de botones de radio con los comandos ID_RADIO_1 e ID_RADIO_2 y deben verificarse según la condición bool m_SomeConditionVariable , luego debe crear 2 controladores de eventos para ellos como

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

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

y en este caso, el primer elemento de radio se comprobará solo cuando la variable sea falsa y el segundo se comprobará cuando la variable sea verdadera.

Puede usar también la condición calculada en lugar de almacenar la variable, por ejemplo,

void OnRadio2UpdateUI(wxUpdateUIEvent & event)
{
    // Item will be enabled only when text control has non-empty value
    event.Enabled(!m_SomeTextCtrl->GetValue().Trim().IsEmpty());
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top