关闭

CALLBACK总结

460人阅读 评论(0) 收藏 举报
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的东西(不管是函数或变量)都并不和对象结合在一起,它们是类的一部分,不属于对象。  


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:201042次
    • 积分:3364
    • 等级:
    • 排名:第10611名
    • 原创:114篇
    • 转载:37篇
    • 译文:0篇
    • 评论:25条
    最新评论