回调函数是做什么用的?
typedef void (CALLBACK* ONSERIESREAD)(CWnd*,BYTE* buf,int bufLen);
是什么意思?

解决方案 »

  1.   

    定义一个回调函数指针,可以指向一个参数为(CWnd*,BYTE* buf,int bufLen)的函数地址
    typedef void (CALLBACK* ONSERIESREAD)(CWnd*,BYTE* buf,int bufLen); 
    ONSERIESREAD myFun = NULL;myFun = &CustomCallBack;
    if(myFun)
    {
       myFun(XX,XX,XX);//调用,相当于在调用CustomCallBack函数
    }
    void CustomCallBack(CWnd*,BYTE* buf,int bufLen)
    {
      ....
    }
      

  2.   


    ONSERIESREAD是一个函数指针,返回值为void,有3个参数,调用约定为CALLBACK
    使用:
    ONSERIESREAD pFun = ....;
    pFun(wnd,buf, buflen);
      

  3.   

    操作系统帮你调用的函数就是回调函数。CALLBACK就是__stdcall调用约定typedef void (CALLBACK* ONSERIESREAD)(CWnd*,BYTE* buf,int bufLen); 
    这是定义一个函数指针而已。
      

  4.   

    回调函数一般是这样一种用途,最初用在驱动开发的时候,当某个事件完成的时候,需要通知某个例程,比如网卡的数据来了,来了之后怎么处理呢?就是调用当初设定好的毁掉函数,所以他本身是一个函数指针,可以指向任何地方,任何代码。
    typedef void (CALLBACK* ONSERIESREAD)(CWnd*,BYTE* buf,int bufLen); 
    的意思是,定义一个函数指针类型ONSERIESREAD,该类型返回值为void,包含三个参数CWnd*,BYTE* buf,int bufLen,
    CALLBACK 在这里应该是你自己定义的一种类型,可能是__stdcall,这个跟编译开关有关
      

  5.   

    __stdcall和__cdecl绝对不一样,__stdcall是在函数返回之前由被调函数自己负责pop函数栈参数。__cdecl是在函数返回到调用端后,由调用端负责pop函数栈参数。
    所有的win32API都是__stdcall类型的。
    用户自己写的函数,默认是__cdecl的。除非用户特别指定才能变。