WxWidgets自定义事件

3
我可以帮您翻译成中文。这段内容讲述了一个使用自定义事件的WxWidgets C++应用程序。为了达到目的,需要在wxApp的构造函数中进行设置。具体请参考该链接:here
Connect(wxID_ANY, wxCommandEventHandler(APP::OnMyEvent));

然后是应该捕获事件的函数:

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

最后,进行测试:
wxCommandEvent MyEvent(wxEVT_COMMAND_BUTTON_CLICKED); 
wxPostEvent(this, MyEvent);

我启动了这个东西...但似乎事件没有被发布或捕获。

有人理解这种行为吗?

1个回答

2
你似乎在使用Connect的以下重载方式:
void Connect(wxEventType eventType, wxObjectEventFunction function, 
    wxObject* userData = NULL, wxEvtHandler* eventSink = NULL)

如果是这样,那么如果发生类型为wxID_ANY的事件(从未发生?),则将调用连接的函数。

也许你需要:

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

非常好,它完美地工作了,谢谢 :) 我以为wxID_ANY会是任何类型的事件...但事实并非如此? - Klaus
添加了文档链接。你必须说明想要处理哪种类型的事件,否则无法继续。id 应该是来源于事件的小部件的标识符。(例如,让这个函数处理来自具有特定(或任何)标识符的小部件的 wxEVT_... 类型的事件。) - UncleBens
如果您对我的问题(http://stackoverflow.com/questions/4037525/wxwidgets-2-9-custom-events)有任何意见,我将不胜感激。 - JnBrymn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接