callback回调函数理解

首先,callback是关键字,其实说白了,就是一种函数类型



一。

回调函数,一般是异步执行时被系统调用的函数

二。

你就把他想象成对事件的处理过程,当有指定事件发生时,系统通过注册的回调函数响应事件,程序就是通过回调函数实现功能

三。

callback函数在微软的官方手册中是这样定义的:“callback函数是应用程序定义操作系统调用的函数”。   
    
 
凡是由用户设计而却由windows系统调用的函数,统称为callback函数,这些函数都有一定的类型,以配合windows的调用操作。     
          某些api函数以callback作为其参数之一,这些api,如settimer、linedda、enumobjects.通常这种api会在进行某 种行为之后或满足某种状态之时调用该callback函数。另外,如果类的成员函数是一个callback函数,它必须被声明为”static”,才能把 c++编译器加诸于函数的一个隐藏参数this去掉。     
          那为什么要去掉this指针呢?因为callback函数是给windows函数调用的,windows并不借助任何对象调用该函数。如果去掉 static的话,就会导致堆栈中有一个随机变量会成为this指针,而结果就是程序的崩溃。记住:凡在类中声明为static的东西都并不和对象结合在 一起,它们是类的一部分,不属于对象。     
 

四。

首先我告诉你,不要把它想得复杂了   
  callback函数,其实就是一种函数类型由系统规定,   
 
你写好函数体实现,系统自动调用的东西   
    
  跟“函数指针”非常类似,差别仅在于函数指针是用户调用,而回调函数是由系统调用。   
  比如:   
    
  void   callback   timerproc(   
      hwnd   hwnd,                   //   handle   to   window   
      uint   umsg,                   //   wm_timer   message   
      uint_ptr   idevent,     //   timer   identifier   
      dword   dwtime               //   current   system   time   
  )   
  {   
  messagebox(null,"a","b",mb_ok);   
  }   
    
    
  settimer(hwnd,                                 //   handle   to   main   window     
          1,                               //   timer   identifier     
          5000,                                           //   5-second   interval     
          (timerproc)   mytimerproc);   //   timer   callback     
    
  系统会在5秒后自动调用此回调函数

五。

callback函数,其实就是一种函数类型由系统规定,   
  你写好函数体实现,系统自动调用的东西   
    
  ///   
  就是这个了

六。

对,一般的函数,都是你自己去调用。   
  而callback函数是由系统调用的。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值