科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Visual C++中回调函数使用的变身大法 (1)

Visual C++中回调函数使用的变身大法 (1)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:upCAL 来源:vczx 2007年10月27日

关键字: C++ Visual Linux

  • 评论
  • 分享微博
  • 分享邮件
对于回调函数的编写始终是写特殊处理功能程序时用到的技巧之一。先介绍一下回调的使用基本方法与原理。

  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 类完成数据上传,与相应的界面进度显示。查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章