如何检查菜单中的哪个项目被选中?如何通过选择菜单项发送int / wxstring?

时间:2012-03-12 06:48:59

标签: c++ wxwidgets

我有菜单,我需要动态放置少量项目(我不知道有多少项,直到应用程序启动;-)。将项目放入菜单并将其事件连接到某个功能是没有问题的。但我需要检查菜单中的哪个项目被选中。我可以通过单击菜单项来发送int或wxString吗?怎么样?

wxMenu *MyTaskBarIcon::CreatePopupMenu(){
        wxMenu *menu = new wxMenu;

        menu->Append(ITEM1, _("Item1"));
        Connect(ITEM1,wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MyTaskBarIcon::Check));

        menu->Append(ITEM2, _("Item2"));
        Connect(ITEM2,wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MyTaskBarIcon::CheckMenu));

        menu->AppendSeparator();
        menu->Append(PU_EXIT, wxT("E&xit"));
    }

void MyTaskBarIcon::Check(wxCommandEvent& event){
    //How to send int/wxString to this method?
}

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如何为此菜单分配一系列ID?然后,当您将项目附加到菜单时,您可以每次增加ID,因此每个项目都会获得唯一的ID。然后为每个ID创建一个事件处理程序,并使用ID作为参数调用公共处理程序。或者,您可以使用

wxEvent::GetId()

如果字符串在运行时变化,则必须将字符串存储在数组中,并使用ID减去范围ID的开头作为数组的索引从那里调用它们。

答案 1 :(得分:0)

使用GetString()查看用户选择的内容:

wxString GetString()const     返回列表框或选择选择事件的项字符串。