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的东西(不管是函数或变量)都并不和对象结合在一起,它们是类的一部分,不属于对象。