#pragma once
#include <string>
using namespace std;
class NCEventArg{
public:
enum MSGType{CENTRAL_WIN_CHANGE, ALARM, TOOL_CHANGE, \
KEYBOARD, MARGIN_WIN_CHANGE, GENERAL, CLOSE, RESTART};
protected:
MSGType _EventType;
public:
NCEventArg(void){};
virtual ~NCEventArg(void){};
MSGType GetEventType() const {return _EventType;}
};
class CenteralWinChangeEventArg : public NCEventArg{
public:
CenteralWinChangeEventArg(void){ _EventType = CENTRAL_WIN_CHANGE;}
~CenteralWinChangeEventArg(void){}
void SetEvent(string str){_eventMsg = str;}
string GetEvent(){return _eventMsg;}
private:
string _eventMsg;
};
class Alarm : public NCEventArg{
public:
Alarm(void){ _EventType = ALARM;}
~Alarm(void){}
void SetEvent(string str){_eventMsg = str;}
string GetEvent(){return _eventMsg;}
private:
string _eventMsg;
};
class ToolChange : public NCEventArg{
public:
ToolChange(void){ _EventType = TOOL_CHANGE;}
~ToolChange(void){}
void SetEvent(string str){_eventMsg = str;}
string GetEvent(){return _eventMsg;}
private:
string _eventMsg;
};
class MarginWinChange : public NCEventArg{
public:
MarginWinChange(void){ _EventType = MARGIN_WIN_CHANGE;}
~MarginWinChange(void){}
void SetEvent(string str){_eventMsg = str;}
string GetEvent(){return _eventMsg;}
private:
string _eventMsg;
};
void test(NCEventArg &e)
{
if(CenteralWinChangeEventArg *centerEvent = dynamic_cast<CenteralWinChangeEventArg*>(&e))
{
cout << "CenteralWinChange" << endl;
cout << centerEvent->GetEvent() << endl;
}
else if(Alarm *centerEvent = dynamic_cast<Alarm*>(&e))
{
cout << "Alarm"<< endl;
cout << centerEvent->GetEvent() << endl;
}
else if(ToolChange* toolChange = dynamic_cast<ToolChange*>(&e))
{
cout << "Tool change"<< endl;
cout << toolChange->GetEvent() << endl;
}
else if(MarginWinChange* marginWinChange = dynamic_cast<MarginWinChange*>(&e))
{
cout << "MarginWinChange"<< endl;
cout << centerEvent->GetEvent() << endl;
}
}
int main(void)
{
Alarm e;
e.SetEvent("AlarmEvent");
test(e);
CenteralWinChangeEventArg e1;
e1.SetEvent("centerEvent");
test(e1);
ToolChange e2;
e2.SetEvent("ToolChangeEvent");
test(e2);
}