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

回调函数有关问题

2012-03-04 
回调函数问题功能:.exe中调用DLL,传CBFunc指针代码如下------------------------------------------------

回调函数问题
功能:.exe中调用DLL,传CBFunc指针
代码如下
------------------------------------------------------
.h中声明:         typedef   int   (WINAPI*PFCALLBACK)(int   Param1,int   Param2);
被调用函数为:int   WINAPI   CBFunc(int   Param1,int   Param2)
{
}
调用DLL代码:
typedef   void   __stdcall(*CallBack)();
HMODULE   hModule   =   LoadLibrary(AnsiString(ExtractFilePath(Application-> ExeName)   +   "CallBack.dll ").c_str());
if   (hModule)
{
        CallBack   ts   =   (CallBack)GetProcAddress(hModule, "CallBack ");
        ts(CBFunc);
}
---------------------------------------
编译无法通过
typedef   void   __stdcall(*CallBack)(???);----这里不知道怎么写类型

[解决办法]
总感觉你写的这个代码很别扭?
我这样改了下,请看:


.h中声明: int (WINAPI*PFCALLBACK)(int Param1,int Param2);
被调用函数为:int WINAPI CBFunc(int Param1,int Param2)
{
}
调用DLL代码:
void __stdcall (*CallBackA)(); //aa
HMODULE hModule = LoadLibrary(AnsiString(ExtractFilePath(Application-> ExeName) + "CallBack.dll ").c_str());
if (hModule)
{
(FARPROC &)CallBackA = (FARPROC)GetProcAddress(hModule, "CallBack ");
CallBackA(); //这个是调用的aa
(FARPROC &)PFCALLBACK = (FARPROC)GetProcAddress(hModule, "CBFunc ");
PFCALLBACK(Param1, Param2);
}
---------------------------------------
编译无法通过
typedef void __stdcall(*CallBack)(???);----这里不知道怎么写类型

热点排行