2012-03-12 48 views
0

我有菜單,我需要動態地放幾個項目(我不知道有多少,直到應用程序啓動;-)。將項目放入菜單並不是問題,並將它的事件連接到某個功能。但我需要檢查菜單中的哪個項目被選中。我可以通過單擊菜單項發送int或wxString嗎?怎麼樣?如何檢查菜單中的哪個項目被選中?如何通過選擇菜單項發送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? 
} 

任何想法?

回答

1

如何分配一系列的ID到這個菜單?然後,當您將這些項目追加到菜單中時,您可以每次增加該ID,因此每個項目都會獲得唯一的ID。然後,爲每個ID創建一個事件處理程序,並將該ID作爲參數調用一個通用處理程序。或者,你可以使用

wxEvent::GetId() 

如果字符串在運行時會發生變化,那麼你必須將字符串存儲在數組中,並使用該ID減去範圍ID作爲索引,開始從那裏調用它們陣列。

+0

我花了幾乎整整一天的時間閱讀wxwidgets的文檔並在谷歌。這就像使用GetId()一樣簡單!非常感謝你! – anonim1133 2012-03-12 14:08:22

0

使用GetString()看到用戶選擇的內容:

wxString GetString的()const的 返回項目字符串列表框或選擇的選擇事件。

+0

...但他不問有關列表框或選擇,而是關於菜單。 – ravenspoint 2012-03-12 13:06:53

+0

是的,我錯讀了。在那種情況下,他可以通過整數ID去。 [一個菜單項有一個與它關聯的整數ID,可以用來識別選擇](http://docs.wxwidgets.org/2.8/wx_wxmenu.html) – 01100110 2012-03-12 13:25:57

相關問題