VC++中,如何定义callback函数和它的触发事件?
2016-04-01 12:11
246 查看
对于回调函数的编写始终是写特殊处理功能程序时用到的技巧之一。先介绍一下回调的使用基本方法与原理。
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、在这里设:回调函数为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);
以上就是回调的基本应用,本文所说的变身,其实是利用传入不同的函数地址,实现调用者类与回调函数所在类的不同转换。
相关文章推荐
- 利用享元模式模拟网站对象建立 C++
- C++ 使用开源库里.h文件和.lib文件的步骤
- 使用C语言解析URL
- C/C++中的移位运算
- c语言字符数组与字符串的使用详解
- 第1周 《C语言及程序设计》资料3——C语言中转义字符
- C++ 访问属性
- 51单片机 C语言中全局变量的使用extern
- 深入理解C++的动态绑定和静态绑定
- 第1周 《C语言及程序设计》实践项目1——指针及其运算
- 一个关于友元和继承的问题
- 第1周 《C语言及程序设计》资料2——C语言中数学函数
- 第1周 《C语言及程序设计》资料1——C语言中的运算符
- codeblocks c++ 编译出错
- codeblocks c++ 编译出错
- C++标准库容器与迭代器
- C/C++二叉树搜索树操作集
- 用C语言进行CGI程序设计
- error C2660: “MessageBoxA” : 函数不接受 1 个参数
- C/C++编译常见链接错误