K
kelisten
Unregistered / Unconfirmed
GUEST, unregistred user!
在使用的DLL和头文件中有如下的声明:
typedef int HandleFunc(int a, int b);//头文件声明
int sethandle(char *handleName, void *tag, HandlerFunc*);//dll提供的函数
我想在一个class TA中设置成回调方式,让另外的一个class TB处理回调的内容,如下:
typedef void __fastcall (__closour *TOnLogText)(AnsiString Log)
class TA{
private:
HandleFunc FHanFunc;
TOnLogText FOnLog;
public:
void InvokeHandle();
__property HandleFunc OnHanFunc = {read =FHanFunc, write = FHanFunc }
__property TOnLogText OnLog = {read = FOnLog, write = FOnLog}
}
void TA::InvokeHandle()
{
sethandle("Set Test", NULL, &FHanFunc);
//上面的如果改为函数方式
//3:sethandle("Set Test", NULL, invokeFunc);
//int invokeFunc(int a, int b)
}
class TB{
private:
TA *A;
int func(int a, int b);
void __fastcall OnLog(AnsiString Log);
public:
void initA();
}
void TB::initA()
{
A = new TA;
A->OnLog = OnLog;
//1:回调声明成功
A->OnHanFunc = func;
//2:这项声明的时候提示错误
}
上面的问题我在class TB中处理TA的属性OnHanFunc的时候,声明不成功,如果改为回调函数不在class TA中进行处理的时候,即改为在class TA外进行处理,如上面的3处,函数int invokeFunc(int a, int b)在TA之外进行处理的时候,成功。
试问:1:需要在上面的声明中,TB中如何处理TA的回调属性?
2:如何处理TA中的sethandle(char *handleName, void *tag, HandlerFunc*)函数,使其HandlerFunc的指针指向TB中的函数,让TB中的函数处理HandlerFunc回调的内容?
typedef int HandleFunc(int a, int b);//头文件声明
int sethandle(char *handleName, void *tag, HandlerFunc*);//dll提供的函数
我想在一个class TA中设置成回调方式,让另外的一个class TB处理回调的内容,如下:
typedef void __fastcall (__closour *TOnLogText)(AnsiString Log)
class TA{
private:
HandleFunc FHanFunc;
TOnLogText FOnLog;
public:
void InvokeHandle();
__property HandleFunc OnHanFunc = {read =FHanFunc, write = FHanFunc }
__property TOnLogText OnLog = {read = FOnLog, write = FOnLog}
}
void TA::InvokeHandle()
{
sethandle("Set Test", NULL, &FHanFunc);
//上面的如果改为函数方式
//3:sethandle("Set Test", NULL, invokeFunc);
//int invokeFunc(int a, int b)
}
class TB{
private:
TA *A;
int func(int a, int b);
void __fastcall OnLog(AnsiString Log);
public:
void initA();
}
void TB::initA()
{
A = new TA;
A->OnLog = OnLog;
//1:回调声明成功
A->OnHanFunc = func;
//2:这项声明的时候提示错误
}
上面的问题我在class TB中处理TA的属性OnHanFunc的时候,声明不成功,如果改为回调函数不在class TA中进行处理的时候,即改为在class TA外进行处理,如上面的3处,函数int invokeFunc(int a, int b)在TA之外进行处理的时候,成功。
试问:1:需要在上面的声明中,TB中如何处理TA的回调属性?
2:如何处理TA中的sethandle(char *handleName, void *tag, HandlerFunc*)函数,使其HandlerFunc的指针指向TB中的函数,让TB中的函数处理HandlerFunc回调的内容?