函数指针的使用,模拟事件机制

void proc1()
{
 ShowMessage("1");
}
void proc2()
{
 ShowMessage("2");
}

void proc3()
{
    ShowMessage("3");
}


class event
{
public:
    //void (*fun)(void)[100];
    event()
    {
          index = 0;
          fun = (DWORD *)malloc(100);
    }
    DWORD *fun;
    int index;
    Register(void *re)
    {
         fun[index++] = (DWORD)re;
    }
    CallEvent()
    {
         void (*proc)(void);
         for(int i = 0; i < index ; i++)
         {
             (void *)proc = (void *)(fun[i]);
             proc();
         }
    }
};

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    event even;
    even.Register((void *)proc1);
    even.Register((void *)proc2);
    even.Register(proc3);
    even.CallEvent();
}

posted on 2004-10-28 17:20  flyingleaf  阅读(514)  评论(0编辑  收藏  举报