VC++中,如何定义callback函数和它的触发事件?
来源:互联网 发布:成都文殊院网络素食 编辑:程序博客网 时间:2024/06/08 19:04
对于回调函数的编写始终是写特殊处理功能程序时用到的技巧之一。先介绍一下回调的使用基本方法与原理。
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);
以上就是回调的基本应用,本文所说的变身,其实是利用传入不同的函数地址,实现调用者类与回调函数所在类的不同转换。
阅读全文
0 0
- VC++中,如何定义callback函数和它的触发事件?
- VC++中,如何定义callback函数和它的触发事件?
- DataList中DropDownList如何触发它的SelectedIndexChanged事件
- VC中如何定义消息和消息函数
- PB事件/函数的触发机制和触发方式
- PB事件/函数的触发机制和触发方式
- PB事件/函数的触发机制和触发方式
- PB事件/函数的触发机制和触发方式
- callback的定义和调用
- JS自定义事件的定义和触发(createEvent, dispatchEvent)
- JS自定义事件的定义和触发(createEvent, dispatchEvent)
- 如何在JavaScript里防止事件函数的高频触发和调用
- javascript中函数事件触发和Obj对象获取
- MFC中CALLBACK函数 和WINAPI函数的区别
- MFC中CALLBACK函数 和WINAPI函数的区别
- MFC中CALLBACK函数 和WINAPI函数的区别
- 复选框的选中和图片的点击都让它触发同一个事件
- 事件的触发机制,定义,注册
- static成员理解
- class.forName和Classloader的区别
- 学习Spring boot AOP
- JAVA获取某段时间内的所有日期
- bzoj 1237(dp)
- VC++中,如何定义callback函数和它的触发事件?
- FastDFS分布式文件系统
- 面向对象程序设计上机练习六(类和对象)
- hashTable与布隆过滤器(Bloom Filter)初识
- Android中打开本地doc、pdf、ppt、text等文件功能的实现
- Linux下去掉^M的方法
- 这是我的第一篇csdn博客
- [Android][第一行代码][第 8 章 多媒体]
- 欢迎使用CSDN-markdown编辑器