0

我在 Windows 上使用带有 wxTaskBarIcon 的弹出菜单(wxWidgets-2.8.9)。如果我用单选项目填充弹出菜单,单击时它们不会改变状态。弹出菜单列表中的第一项被标记为选中。但是选择任何其他项目不会改变这一点。

目前没有项目点击事件处理程序(应用程序更像是 UI 原型)。我应该手动更新此处理程序中的项目检查状态还是仍然是框架职责?

4

1 回答 1

1

您应该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);
}

在这种情况下,仅当变量为假时才会检查第一个单选项目,而当变量为真时将检查第二个单选项目。

您也可以使用计算条件而不是存储变量,例如

void OnRadio2UpdateUI(wxUpdateUIEvent & event)
{
    // Item will be enabled only when text control has non-empty value
    event.Enabled(!m_SomeTextCtrl->GetValue().Trim().IsEmpty());
}
于 2009-03-10T18:19:46.393 回答