Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 带放射性元素的wxTaskBar_C++_Radio Button_Wxwidgets_System Tray - Fatal编程技术网

C++ 带放射性元素的wxTaskBar

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)

我正在尝试使用wxWidgets 2.8.12在系统托盘菜单中实现一个语言选择子菜单(放射性项)。但当我尝试检查活动语言时,该项仍处于未选中状态。下面是TrayIcon::CreatePopUpMenu()中的一段代码

活动:

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);
    }
}