下面是一个工业相机采集的帧回调定义:
被调用者定义如下:
//定义回调 一般定义成宏 typedef void (__stdcall *STREAM_PROC)(unsigned char* buff, void* pUserData); class camera { private: STREAM_PROC m_pStreamProc; void* m_pUserPtr; void onGetFrame(const GenICam::CFrame& frame) //回调的函数 { if(NULL != m_pStreamProc) { m_pStreamProc(m_pBuff, m_pUserPtr); } } public: bool SetStreamHook(STREAM_PROC proc, void*) // 使用该函数设置设置回调 { if(NULL != m_pStreamProc) { return FALSE; } m_pStreamProc = proc; m_pUserPtr = pObj; return TRUE; }
//定义调用者: void CALLBACK CCDCallBack1(unsigned char* lpParam, void* pUserData); STREAM_PROC proc = (STREAM_PROC)CCDCallBack1; camera m_camera; m_camera.SetStreamHook(proc, (void*)this);//调用接口 //要回调的函数 定义全局或者类中的静态成员函数 void CALLBACK CCDCallBack1(unsigned char* lpParam, void* lpUser) { BYTE *pDataBuffer = (BYTE*)lpParam; CCCDCtrl *ccd = (CCCDCtrl*)lpUser; //..省略 }