2010-04-25 3 views
3

Я пытаюсь использовать пользовательское событие в моем приложении WxWidgets C++, как описано here.WxWidgets пользовательские события

В конструкторе моего wxApp:

Connect(wxID_ANY, wxCommandEventHandler(APP::OnMyEvent)); 

Тогда функция, которая должна поймать событие:

void APP::OnMyEvent(wxCommandEvent& event) 
{ 
    exit(0); //testing 
} 

Наконец, чтобы проверить это:

wxCommandEvent MyEvent(wxEVT_COMMAND_BUTTON_CLICKED); 
wxPostEvent(this, MyEvent); 

Я запустить вещь ... но кажется, что событие не опубликовано или не поймано.

Кто-то понимает это поведение?

ответ

2

Вы, кажется, используя следующую перегрузку Connect:

void Connect(wxEventType eventType, wxObjectEventFunction function, 
    wxObject* userData = NULL, wxEvtHandler* eventSink = NULL) 

Если это так, то должно событие типа wxID_ANY произойдет, то связная функция будет вызываться (никогда?).

Возможно, вам необходимо:

Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(APP::OnMyEvent)); 
+0

Отлично, она прекрасно работает, спасибо :) Я думал wxID_ANY бы любого рода мероприятия ... Это не так? – Klaus

+0

Добавлена ​​ссылка на документацию. Вы не уйдете, не сообщив, какой тип события вы хотите обработать. «Id» должен быть идентификатором виджета, с которого произошло событие. (Например, пусть эта функция обрабатывает события типа 'wxEVT _...', которые поступают от виджета с определенным (или любым) идентификатором. – UncleBens

+0

Хорошо, спасибо за точность :) – Klaus