首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

怎么定义动态创建的组件函数

2012-04-20 
如何定义动态创建的组件函数TTimer *time1TIdUDPClient *udpclt1TIdUDPServer *udpsvr1BOOL WINAPI Dll

如何定义动态创建的组件函数
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个字节长,你将这个函数换成类成员函数就应该可以了。

热点排行