C++ 带放射性元素的wxTaskBar
我正在尝试使用wxWidgets 2.8.12在系统托盘菜单中实现一个语言选择子菜单(放射性项)。但当我尝试检查活动语言时,该项仍处于未选中状态。下面是TrayIcon::CreatePopUpMenu()中的一段代码 活动:C++ 带放射性元素的wxTaskBar,c++,radio-button,wxwidgets,system-tray,C++,Radio Button,Wxwidgets,System Tray,我正在尝试使用wxWidgets 2.8.12在系统托盘菜单中实现一个语言选择子菜单(放射性项)。但当我尝试检查活动语言时,该项仍处于未选中状态。下面是TrayIcon::CreatePopUpMenu()中的一段代码 活动: BEGIN_EVENT_TABLE(SystemTrayIcon, wxTaskBarIcon) EVT_MENU_RANGE(ID_Locale, ID_Locale + LANGUAGES_COUNT, TrayIcon::ChangeAppLocale)
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::onMenuiLocaleChange中,该项被取消选中(我知道这有点重复,但至少我可以看到检查值)
当对应用程序菜单(添加语言子菜单)执行相同操作时,检查处于活动状态
我已经看到了,但是那里的建议没有帮助。谢谢附加后也尝试过检查-仍然不工作更新:我可以更改任务栏菜单中的任何检查项,但无法更改放射性项这看起来像是wxWidgets错误。如果您可以用3.0.1复制它,请在上打开一个票证,理想情况下只需对任务栏示例进行最小的修补。
void TrayIcon::OnMenuUILocaleChange(wxUpdateUIEvent &event)
{
int id = locale->GetLanguage();
if (id == (event.GetId() - ID_Locale))
{
event.Check(true);
}
}