在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());