在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());
浙公网安备 33010602011771号