Как проверить, какой пункт из меню был выбран?Как отправить int / wxstring с выбором пункта меню? - PullRequest
0 голосов
/ 12 марта 2012

У меня есть меню, в котором нужно динамически размещать несколько элементов (я не знаю, сколько их до запуска приложения ;-). Нет проблем поместить элемент в меню и связать его событие с какой-либо функцией. Но мне нужно проверить, какой пункт из меню был выбран. Могу ли я отправить 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 ]

1 голос
/ 12 марта 2012

Как насчет назначения диапазона идентификаторов этому меню? Затем, когда вы добавляете элементы в меню, вы можете каждый раз увеличивать идентификатор, чтобы каждый элемент получал уникальный идентификатор. Затем вы создаете обработчик событий для каждого идентификатора и вызываете общий обработчик с идентификатором в качестве параметра. Или вы можете использовать

wxEvent::GetId()

Если строки меняются во время выполнения, вам придется хранить строки в массиве и вызывать их оттуда, используя идентификатор минус начало идентификатора диапазона в качестве индекса в массиве.

0 голосов
/ 12 марта 2012

Используйте GetString () , чтобы увидеть, что выбрал пользователь:

wxString GetString () const Возвращает строку элемента для списка или события выбора.

...