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

求在动态链接库中控件事件的动态加载步骤

2012-09-06 
求在动态链接库中控件事件的动态加载方法。/////////dll 文件。///////////C/C++ code#include vcl.h#incl

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

C/C++ code
#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 hdrstopextern "C" __declspec(dllexport) void __stdcall CatchScreenInition(UnicodeString ,UnicodeString);extern "C" __declspec(dllexport) void __stdcall CatchScreenDestroy(void);#pragma argsusedTIdTCPServer *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);    [color=#FFCC99]cScreen->OnExecute=CatchScreenExecute;[/color]//这里是错误。    cScreen->Active=true;}//---------------------------------------void __stdcall CatchScreenExecute(TIdContext *AContext){}

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


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

热点排行