Fosdccf.blog.chinaunix.net
sdccf
全部博文(19283)
Linux酷软(214)
tmp(0)
PostgreSQL(93)
Solaris(383)
AIX(173)
SCOUNIX(575)
DB2(1005)
Shell(386)
C/C++(1187)
MySQL(1750)
Sybase(465)
Oracle(3695)
Informix(548)
HP-UX(0)
IBM AIX(2)
Sun Solaris(0)
BSD(1)
Linux(8597)
SCO UNIX(23)
2011年(1)
2009年(125)
2008年(19094)
2007年(63)
clifford
linky521
曾德标
fengzhan
leon_yu
mcuflowe
yt200902
guanyuji
GY123456
snow888
carlos94
丸喵喵
sean229
cxunix
可怜的猪
cqxc413
xzzgege
wb123456
分类: C/C++
2008-04-16 18:51:10
对于回调函数的编写始终是写特殊处理功能程序时用到的技巧之一。先介绍一下回调的使用基本方法与原理。 1、在这里设:回调函数为A()(这是最简单的情况,不带参数,但我们应用的实际情况常常很会复杂),使用回调函数的操作函数为B(), 但B函数是需要参数的,这个参数就是指向函数A的地址变量,这个变量一般就是函数指针。使用方法为: int A(char *p); // 回调函数 typedef int(*CallBack)(char *p) ; // 声明CallBack 类型的函数指针 CallBack myCallBack ; // 声明函数指针变量myCallBack = A; // 得到了函数A的地址 B函数一般会写为 B(CallBack lpCall,char * P,........); // 此处省略了p后的参数形式 。 所以回调机制可解为,函数B要完成一定功能,但他自己是无法实现全部功能的。 需要借助于函数A来完成,也就是回调函数。B的实现为: B(CallBack lpCall,char *pProvide){ ........... // B 的自己实现功能语句 lpCall(PpProvide); // 借助回调完成的功能 ,也就是A函数来处理的。 ........... // B 的自己实现功能语句}// -------------- 使用例子 -------------char *p = "hello!";CallBack myCallBack ; myCallBack = A ;B(A, p); 以上就是回调的基本应用,本文所说的变身,其实是利用传入不同的函数地址,实现调用者类与回调函数所在类的不同转换。 1、问题描述 CUploadFile 类完成数据上传,与相应的界面进度显示。
对于回调函数的编写始终是写特殊处理功能程序时用到的技巧之一。先介绍一下回调的使用基本方法与原理。 1、在这里设:回调函数为A()(这是最简单的情况,不带参数,但我们应用的实际情况常常很会复杂),使用回调函数的操作函数为B(), 但B函数是需要参数的,这个参数就是指向函数A的地址变量,这个变量一般就是函数指针。使用方法为:
上一篇:C++箴言:理解new-handler的行为 (7)
下一篇:Visual C++中回调函数使用的变身大法 (2)
登录 注册