2010-04-25 48 views
3

我想在我的wxWidgets的 C++应用程序使用自定义事件,就像描述herewxWidgets的自定义事件

在我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 2010-04-25 19:58:37

+0

添加了文档的链接。没有告诉您想要处理哪种类型的事件,您将不会离开。 'id'应该是事件来自的小部件的标识符。 (例如,让这个函数处理来自具有特定(或任何)标识符的小部件的'wxEVT _...'类型的事件。 – UncleBens 2010-04-25 20:02:24

+0

好的,谢谢你的精度:) – Klaus 2010-04-26 14:56:47