zoukankan      html  css  js  c++  java
  • VC++中,如何定义callback函数和它的触发事件?

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

    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);

    以上就是回调的基本应用,本文所说的变身,其实是利用传入不同的函数地址,实现调用者类与回调函数所在类的不同转换。
  • 相关阅读:
    SNMP、rrdtool
    mysqldump命令备份数据
    Ansible之playbook&&roles
    敏捷软件开发 原则、模式与实践 第9章的例子程序(C#版)
    iis websocket
    EDM 邮件营销 html&css编写建议和规范整理
    Microsoft .NET Framework
    线程上下文切换
    系统调用 用户态 内核态
    文件系统
  • 原文地址:https://www.cnblogs.com/sharecenter/p/5620996.html
Copyright © 2011-2022 走看看