首先声明: 本人对于回调函数的概念理解得不深...但既然回调函数实际上就是在调用某个函数时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。那就是一种函数指针的应用...一般的普通函数,也可以在调用某函数时将自已的
函数指针传给被调用函数啊...我想问的是:为何还要专门用CALLBACK 来声明一个回调函数呢, 函数被声明为CALLBACK后,是不是系统的处理方法与
普通函数有什么不一样的呢 ? 我感觉好像回调函数与普通的函数没什么区别.......请高手解解惑..........
函数指针传给被调用函数啊...我想问的是:为何还要专门用CALLBACK 来声明一个回调函数呢, 函数被声明为CALLBACK后,是不是系统的处理方法与
普通函数有什么不一样的呢 ? 我感觉好像回调函数与普通的函数没什么区别.......请高手解解惑..........
解决方案 »
- 谁能帮我看看这简单的程序啊,就是显示不出来啊。。。
- ーーー请问:有没有人编写过鼠标程序。我想要个实例代码,期待回答。
- 请问:VC中,对话框编辑那里,右下角的数值,是什么单位?是不是象素
- 关于变量定义的问题!
- 关于自动注册数据源的问题!
- hook explorer 里的CreateProcess 的问题
- 我又回来了,散分
- 一个关于动态连接库的调用问题。(急,在线等待)
- 怎么得到一个EditBox里的内容?很简单,大家帮忙啊
- 在窗口函数中参数lParam是什么意义?
- cnn->Open(L"Store",L"",L"",adCmdUnspecifed);中 L 有什么用,什么情况下用这个操作符?
- 如何取得系统版本号 ? 求解
如果是c的调用方式,函数执行完时调用函数负责清除传入参数的栈空间回调函数一般是由系统调用的,所以要自己负责清除栈空间
它和一般函数的区别除了上面的老兄说的外,还一点很重要的是,申明回调函数时一定要将它申明为全局函数或类函数,而不能申明为对象函数。
这是因为操用系统调用它时,不通过对象来调用它,而对象函数在编译时,会在函数的参数表的末尾插入this指针。这样你申明为对象函数,而让操用系统调用时,操作系统发现多出一个参数,而致使程序运行失败。
<<还一点很重要的是,申明回调函数时一定要将它申明为全局函数或类函数,而不能申明为对象函数。
>>不点不解,,,你说的对象函数是什么函数,,,与类函数有何区别............
class A
{
public:
int getage();
}
如果我们要调用这个函数时,必须先申明一个对象,通过对象名来使用
A a;
a.getage();
那么我们称这个函数为对象函数。
如果我们申明为:
class A
{
public:
static int getage();
}
那我们使用时不用事先申明对象
A::getage();
那么我们就称之为静态函数或类函数
回调函数就是让操作系统调用的函数,
其形不局限于int CALLBACK WinMain(.......)
当我们用SetTimer(.....)AfxBeginThread(.....)时,将函数指针作参数传进去,系统也会调用,那么这种函数据叫回调函数