【问题标题】:WxWidgets custom eventsWxWidgets 自定义事件
【发布时间】:2010-04-25 17:21:10
【问题描述】:

我正在尝试在我的 WxWidgets C++ 应用程序中使用 自定义事件,如 here 所述。

在我的 wxApp 的构造函数中:

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

那么应该捕获事件的函数:

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

最后,测试一下:

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

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

有人理解这种行为吗?

【问题讨论】:

    标签: c++ events wxwidgets


    【解决方案1】:

    您似乎正在使用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 会是任何类型的事件...不是这样吗?
    • 添加了文档链接。如果不告诉您要处理哪种类型的事件,您将无法逃脱。 id 应该是事件来自的小部件的标识符。 (例如,让此函数处理来自具有特定(或任何)标识符的小部件的 wxEVT_... 类型的事件。
    • 如果您对我的问题有什么要说的 (stackoverflow.com/questions/4037525/wxwidgets-2-9-custom-events),我将不胜感激。
    猜你喜欢
    • 2011-05-01
    • 2014-08-30
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2019-04-11
    • 1970-01-01
    相关资源
    最近更新 更多