CALLBACK是回调函数,由其他程序调用,用户不能自己调用?那什么时候要定义这种函数?我看到一些代码里有自定义的回调函数,但我不知道写哪些程序需要用回调,能否举例说明并且详细说明一下回调函数?

解决方案 »

  1.   

    你要调用我也没有办法,一般加上CALLBACK就是说不要自己调用的意思。比如用SetTimer的时候,就需要指定回调函数
      

  2.   

    一般异步过程调用的时候,使用回调函数。
    比如说,读取磁盘操作,当大量的数据读完后,你需要做处理,
    这是不能采用同步操作(浪费cpu时间),采用回调的方式。
    就是当读完数据后,调用你的回调函数。要实现回调函数,采用的是APC(Asynchronous procedure call)技术。
      

  3.   

    回调函数有系统定义 (定义了一个指向函数的指针)格式固定 但具体实现内容由用户来完成
    何时调用系统说的算
    自己用api实现一个窗口程序就回明白
      

  4.   

    为什么用回調函數會优化CPU使用?
    它是以線程的方式工作吗?
    請多多指教。謝謝!
      

  5.   

    callback 只是提示你,该函数要被系统调用,而不是你自己直接调用,也就说,这个符号并不起限制作用,callback 实际上就是_stdcall
      

  6.   

    from yuantao(cfan) :
    “callback 实际上就是 _stdcall ?”WINAPI也是__stdcall,那WINAPI=callback ???
      

  7.   

    当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数。回调函数在windows编程使用的场合很多,比如Hook回调函数:MouseProc,GetMsgProc以及EnumWindows,DrawState的回调函数等等,还有很多系统级的回调过程。使用回调函数的编程模式,可以根据不同的需求传递不同的回调函数地址,或者定义各种回调函数的原形(同时也需要改变使用回调函数的参数和返回值约定),实现多种回调事件处理,可以使程序的控制灵活多变,也是一种高效率的,清晰的程序模块之间的耦合方式。在一些异步或复杂的程序系统里尤其有用 -- 你可以在一个模块(如DLL)里专心实现模块核心的业务流程和技术功能,外围的扩展的功能只给出一个回调函数的接口,通过调用其他模块传递过来的回调函数地址的方式,将后续处理无缝地交给另一个模块,随它按自定义的方式处理。
      

  8.   

    WINAPI Use in place of FAR PASCAL in API declarations. If you are writing a DLL with exported API entry points, you can use this for your own APIs. 
    CALLBACK Use in place of FAR PASCAL in application callback routines such as window procedures and dialog procedures. 
    这个是msdn的说明,你自己看看