下面是一個工業相機採集的幀回撥定義:

被呼叫者定義如下:

//定義回撥 一般定義成巨集
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;
	//..省略
	
}