下面是一个工业相机采集的帧回调定义:
被调用者定义如下:
//定义回调 一般定义成宏
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;
//..省略
}