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

求在动态链接库中控件事件的动态加载方法。该怎么解决

2013-01-26 
求在动态链接库中控件事件的动态加载方法。/////////dll 文件。///////////#include vcl.h#include Vcl.C

求在动态链接库中控件事件的动态加载方法。
/////////dll 文件。///////////


#include <vcl.h>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.ComCtrls.hpp>
#include <IdCustomTCPServer.hpp>
#include <IdTCPServer.hpp>
#include <IdSocks.hpp>
#include <IdSchedulerOfThreadPool.hpp>
#pragma hdrstop
extern "C" __declspec(dllexport) void __stdcall CatchScreenInition(UnicodeString ,UnicodeString);
extern "C" __declspec(dllexport) void __stdcall CatchScreenDestroy(void);
#pragma argsused

TIdTCPServer *cScreen;
TIdSchedulerOfThreadPool *sThreadPool;

typedef void __stdcall CatchScreenExecute(TIdContext *AContext);

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//----------------------------------------
void __stdcall CatchScreenDestroy(void)
{
delete sThreadPool;
delete cScreen;
}
//----------------------------------------
void __stdcall CatchScreenInition(UnicodeString srvport,UnicodeString srvip)
{
cScreen =new TIdTCPServer(NULL);
sThreadPool=new TIdSchedulerOfThreadPool(NULL);
cScreen->Scheduler= sThreadPool;
cScreen->TerminateWaitTime=5000;
cScreen->MaxConnections=1000;
sThreadPool->MaxThreads=5000;
cScreen->Bindings->Clear();
cScreen->Bindings->Add()->IP=srvip;
cScreen->Bindings->Add()->Port = StrToInt(srvport);
cScreen->OnExecute=CatchScreenExecute;//这里是错误。
cScreen->Active=true;
}
//---------------------------------------
void __stdcall CatchScreenExecute(TIdContext *AContext)
{
}

求在动态链接库中控件事件的动态加载方法。

[解决办法]
VCL组件的事件处理函数必须是类成员函数。
[解决办法]
将CatchScreenExecute定义成某个类的成员函数即可。

热点排行