在wxWidgets中使用自定义事件

自定义事件的头文件

#ifndef _WE_EVENT_H_
#define _WE_EVENT_H_

#include <wx/event.h>

class WeEvent;
wxDECLARE_EVENT(wxEVT_WE, WeEvent);
typedef void (wxEvtHandler::*WeEventFunction)(WeEvent&);
#define WeEventHandler(func) wxEVENT_HANDLER_CAST(WeEventFunction, func)
#define EVT_WE(id, func) wx__DECLARE_EVT1(wxEVT_WE, id, WeEventHandler(func))

class WeEvent : public wxEvent
{
public:
    WeEvent(wxEventType type = wxEVT_WE, int id = wxID_ANY);
    WeEvent(const WeEvent& event);
    virtual wxEvent *Clone() const { return new WeEvent(*this); }

private:
};


#endif // _WE_EVENT_H_

自定义时间的实现文件,您可以定义一些有用的函数

#include "weevent.h"

wxDEFINE_EVENT(wxEVT_WE, WeEvent);

WeEvent::WeEvent(wxEventType type, int id) : wxEvent(id, type) {
}

WeEvent::WeEvent(const WeEvent& event) : wxEvent(event) {
}

如此,就可以在项目中使用该事件了

// handler
BEGIN_EVENT_TABLE(xxApp, wxAppConsole)
    EVT_WE(ID_WE, xxApp::OnWeEvent)
END_EVENT_TABLE()

// fire an event somewhere
WeEvent event = WeEvent(wxEVT_WE, ID_WE);
wxGetApp().QueueEvent(event.Clone());

posted @ 2011-06-03 12:50  ALLI Look for Lost Idylls  阅读(1276)  评论(0编辑  收藏  举报