#include "stdafx.h"

#include "Event.H"
#include <iostream>
using namespace std;

void ProcArg3(int a,int b,int c)
{
cout<<"Call In ProcArg3."<<endl;
}

void ProcArg2(int a,int b)
{
cout<<"Call In ProcArg2."<<endl;
}

void ProcArgA0()
{
cout<<"Call In ProcArgA0."<<endl;
}

void ProcArgB0()
{
cout<<"Call In ProcArgB0."<<endl;
}

static void ProcArgC0_Static()
{
cout<<"Call In static ProcArgC0_Static."<<endl;
}

class Test
{
private:
void ProcArg1(int )
{
cout<<"Call In Test::ProcArg1."<<endl;
}

void ProcArgA0()
{
cout<<"Call In Test::ProcArgA0."<<endl;
}

void ProcArgB0()
{
cout<<"Call In Test:ProcArgB0."<<endl;
}

static void ProcArgStatic()
{
cout<<"Call In static Test:ProcArgStatic."<<endl;
}

public:
//委托
__Delegate<void,int,int,int> OnArg3Func;
__Delegate<void,int,int> OnArg2Func;
__Delegate<void,int> OnArg1Func;
//事件
__Event<void> OnArg0Func;

Test()
{
OnArg3Func=EventHandler(ProcArg3); //外部函数处理事件
OnArg2Func=EventHandler(ProcArg2); //不同参数的处理
OnArg1Func=EventHandler(this,&Test::ProcArg1); //类成员函数事件处理

//OnArg0Func =EventHandler(::ProcArgA0);

//类的静态方法
OnArg0Func+=EventHandler(Test::ProcArgStatic);
//对象方法
OnArg0Func+=EventHandler(this,&Test::ProcArgA0);
//全局方法
OnArg0Func+=EventHandler(::ProcArgB0);
//全局的静态方法
OnArg0Func+=EventHandler(ProcArgC0_Static);

OnArg0Func+=EventHandler(this,&Test::ProcArgA0);
//演示__Event的 += 操作符
OnArg0Func+=EventHandler(::ProcArgB0);
//演示__Event的 -= 操作符
OnArg0Func-=EventHandler(this,&Test::ProcArgA0);

//OnArg0Func-=EventHandler(this,&Test::ProcArgA0);
OnArg0Func-=EventHandler(::ProcArgA0);

}

void Invoke()
{
OnArg0Func.Invoke();
OnArg1Func.Invoke(0);
OnArg2Func.Invoke(0,0);
OnArg3Func.Invoke(0,0,0) ; //调用事件
}
};


void main()
{
Test *t=new Test;
t->Invoke();
cin.get();
delete t;
}
拒绝显摆。