C++中回调函数使用的变身大法

C++中回调函数使用的变身大法,第1张

C++中回调函数使用的变身大法,第2张

接口类CShowGUI,数据上传类CUploadData

类CUploadData
{
......
typedef int(* SetUploadCaller)(int nCurData,int nInAll,void * PP aram);
int upload file(LPCTSTR lpfilename path,LPVOID lparam,SetUploadCaller Caller);
//接受外部访问的参数,主要是回调函数的地址通过参数caller传递,
int send (lpctstr LP服务器IP,lpctstr LP服务器端口,lpctstr上传文件路径);
......//注意,此时不再需要GetCurState函数。
}

类CShowGUI:public CDialog
{
.......
typedef int(* SetUploadCaller)(int nCurData,int nInAll,void * PP aram);
void set callback(LPCTSTR strPath);
static int GetCurState(int nCurData,int nInAll,void * PP aram);
CUploadData m _ Uploa
d;//数据上传类是接口显示类的成员变量。
.......
}

void CShowGUI::set callback(LPCTSTR strPath)
{
CUploadData myUploadData;
SetUploadCaller my caller;//声明一个函数指针变量
my caller = CurState;//获取接口处理程序的地址
myuploaddata . uploadfile(strpath,this,my caller);//接口处理类的函数输入实现了数据输入和接口处理的分离。
}

通过上面的演示,接口和数据是分离的,回调函数扮演的角色也不同,所以要结合不同的问题灵活应用。但是由于数据处理类不知道接口处理类或者外部调用类的类型,所以无法灵活处理界面的不同显示方式。这方面也希望喜欢研究技术的朋友继续研究。

接口类CShowGUI,数据上传类CUploadData

类CUploadData
{
......
typedef int(* SetUploadCaller)(int nCurData,int nInAll,void * PP aram);
int upload file(LPCTSTR lpfilename path,LPVOID lparam,SetUploadCaller Caller);
//接受外部访问的参数,主要是回调函数的地址通过参数caller传递,
int send (lpctstr LP服务器IP,lpctstr LP服务器端口,lpctstr上传文件路径);
......//注意,此时不再需要GetCurState函数。
}

类CShowGUI:public CDialog
{
.......
typedef int(* SetUploadCaller)(int nCurData,int nInAll,void * PP aram);
void set callback(LPCTSTR strPath);
static int GetCurState(int nCurData,int nInAll,void * PP aram);
CUploadData m _ Uploa
d;//数据上传类是接口显示类的成员变量。
.......
}

void CShowGUI::set callback(LPCTSTR strPath)
{
CUploadData myUploadData;
SetUploadCaller my caller;//声明一个函数指针变量
my caller = CurState;//获取接口处理程序的地址
myuploaddata . uploadfile(strpath,this,my caller);//接口处理类的函数输入实现了数据输入和接口处理的分离。
}

通过上面的演示,接口和数据是分离的,回调函数扮演的角色也不同,所以要结合不同的问题灵活应用。但是由于数据处理类不知道接口处理类或者外部调用类的类型,所以无法灵活处理界面的不同显示方式。这方面也希望喜欢研究技术的朋友继续研究。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++中回调函数使用的变身大法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情