如何定义动态创建的组件函数
TTimer *time1;
TIdUDPClient *udpclt1;
TIdUDPServer *udpsvr1;
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
return 1;
}
//---------------------------------------
extern "C" void _stdcall dllin(int,int);
void times(int);
void __fastcall udpout(TObject *Sender);
void _export _stdcall dllin(int ports,int delaytime)
{
udpclt1=new TIdUDPClient(Application);
udpclt1->BufferSize=8192;
udpclt1->BroadcastEnabled=true;
udpclt1->Port=ports;
udpclt1->Active=true;
times(delaytime);
}
void times(int delaytime)
{
time1=new TTimer(Application);
time1->OnTimer=udpout;
time1->Interval=delaytime;
time1->Enabled=true;
}
void __fastcall udpout(TObject *Sender)
{
udpclt1->Send("haha!");
}
可是编译时总是提示[BCC32 Error] File1.cpp(43): E2034 Cannot convert 'void(TObject *)' to 'TNotifyEvent'
哪位大哥知道该怎么解决,希望附带讲解一下组件的各种响应函数如何定义.
[解决办法]
错误在这里 void __fastcall udpout(TObject *Sender)
TNotifyEvent需要一个Closure的,就是包含了对象实例和函数指针的一个东西,在32位操作系统是8个字节长,你将这个函数换成类成员函数就应该可以了。