#include <iostream>
#include "xevent.h"
#include "xeventlistener.h"
#include "xeventdispatcher.h"
#include "factory.h"
class Mouse :virtual public XEvent{
virtual void dump(){
printf("Mouse event rn");
}
};
class Keyboard :virtual public XEvent{
virtual void dump(){
printf("Keyboard event rn");
}
};
class HandlerClass
{
public:
int OnEvent(XEvent *evt)
{
evt->dump();
return 0;
}
};
int main(int argc, _TCHAR* argv[])
{
HandlerClass h;
Keyboard k1;
Keyboard k2;
Mouse m1;
Mouse m2;
{
ClassEventListener<HandlerClass, Keyboard> mouseEvthandler(&h, &HandlerClass::OnEvent);
ClassEventListener<HandlerClass, Mouse> keyboardEvthandler(&h, &HandlerClass::OnEvent);
XEventDispatcher * dispatcher = Factory::getEventDispatcher();
dispatcher->addEventListener(&mouseEvthandler);
dispatcher->addEventListener(&keyboardEvthandler);
dispatcher->dispatchEvent(&m1);
dispatcher->dispatchEvent(&m2);
dispatcher->dispatchEvent(&k1);
dispatcher->dispatchEvent(&k2);
dispatcher->setEnabled(true);
dispatcher->dispatchEvent(&m1);
dispatcher->dispatchEvent(&m2);
dispatcher->dispatchEvent(&k1);
dispatcher->dispatchEvent(&k2);
dispatcher->removeEventListener(&mouseEvthandler);
dispatcher->removeEventListener(&keyboardEvthandler);
}
printf("===================================================== rn");
{
ClassEventListener<HandlerClass> mouseEvthandler1(&h, &HandlerClass::OnEvent);
ClassEventListener<HandlerClass> keyboardEvthandler1(&h, &HandlerClass::OnEvent);
XEventDispatcher * dispatcher = Factory::getEventDispatcher();
dispatcher->addEventListener(&mouseEvthandler1);
dispatcher->addEventListener(&keyboardEvthandler1);
dispatcher->dispatchEvent(&m1);
dispatcher->dispatchEvent(&m2);
dispatcher->dispatchEvent(&k1);
dispatcher->dispatchEvent(&k2);
dispatcher->removeEventListener(&mouseEvthandler1);
dispatcher->removeEventListener(&keyboardEvthandler1);
}
getchar();
return 0;
}
近期评论