我有菜单,我需要动态放置少量项目(我不知道有多少项,直到应用程序启动;-)。将项目放入菜单并将其事件连接到某个功能是没有问题的。但我需要检查菜单中的哪个项目被选中。我可以通过单击菜单项来发送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?
}
有什么想法吗?
答案 0 :(得分:1)
如何为此菜单分配一系列ID?然后,当您将项目附加到菜单时,您可以每次增加ID,因此每个项目都会获得唯一的ID。然后为每个ID创建一个事件处理程序,并使用ID作为参数调用公共处理程序。或者,您可以使用
wxEvent::GetId()
如果字符串在运行时变化,则必须将字符串存储在数组中,并使用ID减去范围ID的开头作为数组的索引从那里调用它们。
答案 1 :(得分:0)
使用GetString()查看用户选择的内容:
wxString GetString()const 返回列表框或选择选择事件的项字符串。