急关于回调函数有关问题的请问

急!关于回调函数问题的请教。
先看使用函数相关说明
函 数:MV_ SetCallBack原 型:BOOL WINAPI MV_SetCallBack( HANDLE hCap, void* pCall,PVOID pContext )
参 数:HANDLE hCap图像卡句柄void* pCall指向回调函数PVOID pContext指向用户定义参数,参数对应于回调函数参数Parma,它是传递给回调函数的返回值:调用成功,TRUE,否则返回FALSE说 明:指定回调函数和用户定义的参数
回调函数原型:void WINAPI streamcallback(LPBYTE lpBuf,long len,PVOID Parma)
参 数:LPBYTE lpBuf指向图像数据地址long len图像数据大小PVOID Parma指向用户定义参数
实例使用(delphi代码 ):
  MV_SetCallBack(mhandle,SnapCallback,nil);//SnapCallback为回调函数 ,其定义见下:
procedure SnapCallback(lpBuf: PBYTE; len:integer; pContext:PInteger); stdcall
var
  dc:HDC;
begin
   if(bSanp)then
   begin
     bSanp:=False;
     MV_SaveBMPFile('test.bmp',pInfo,lpBuf);
   end;
   dc:= GetDc(FormSnap.Handle);
   StretchDIBits(dc, 0, 0, 640, 480, 0, 0, 640, 480, lpBuf, pInfo^, DIB_RGB_COLORS, SRCCOPY);
   ReleaseDC(FormSnap.Handle, dc);
end;
问题:1)回调函数SnapCallback中的那些形参有什么用???调用回调函数SnapCallback时,根本木有告知形参呀???
2)如果想将delphi改成BCB代码,如何改?也有VB、VC代码 ,请大家帮忙呀。
------解决思路----------------------
BOOL WINAPI MV_SetCallBack( HANDLE hCap, void* pCall,PVOID pContext ) 
pCall接收的是一个函数指针,指向你定义的回调函数.
回调函数的定义就是
procedure SnapCallback(lpBuf: PBYTE; len:integer; pContext:PInteger); stdcall
转为c++
void _stdcall  MySnapCallback(byte *lpbuf, int len, void *pContext)
{
//你的代码
}

具体代码大体如下:
MV_SetCallBack(
 hCap, 
 MySnapCallback,  //你定义的回调函数
 MyContext  //你传递到回调中的上下文
);


------解决思路----------------------
1)回调函数SnapCallback中的那些形参有什么用???调用回调函数SnapCallback时,根本木有告知形参呀???
回调函数原型是:void WINAPI streamcallback(LPBYTE lpBuf,long len,PVOID Parma)
函数是:procedure SnapCallback(lpBuf: PBYTE; len:integer; pContext:PInteger); stdcall 
这是不匹配的。这里最主要的疑问是参数pContext 与Parma,它们并不匹配,我们看你的描述:
“PVOID pContext指向用户定义参数,参数对应于回调函数参数Parma”
其中的 PVOID pContext , 从后面的调用来看是辅助用的,可有可无的参数。你需要用到它,那么你就定义它,可以是任何类型 的参数,毕竟它只是传递一个地址。如何定义它,那是你自己的事。
理解一下:
 1、执行streamcallback时,传入LPBYTE lpBuf,long len,PVOID Parma 三个参数,这三个都是地址,而其中PVOID Parma这个地址是用户在MV_ SetCallBack中设定的地址。
 2、这样就实现了用户事先定义好的上下文数据,可以传递进回调函数中。也就是pContext(上下文环境)的意思。
 3、因为这些回调函数不支持闭包__closure,所以这种方法可以通过pContext传递上下文环境,达到__closure类似的功能。
 4、如果你不需要上下文环境,那么就将pContext设为NULL即可。但
函数:void _stdcall  MySnapCallback(byte *lpbuf, int len, void *pContext) ,第三个参数不能省,否则因参数个数不一样,会造 成错误。而且,这第三个参数是一个指针(地址值),什么指针都可以,不能是其他。
 5、执行过程与总结:MV_ SetCallBack将要调用的上下文环境的地址pContext先注册下来,然后,使用该 pContext 地址调用对应的回调函数,这样回调函数中可以得到一个上下文地址,从而达到闭包(__closure)调用的功能。

   好象不该用那么多文字地描述这个问题,显得啰嗦了,但我码字码快了,也不好修改那一段,就这样子了。

2)如果想将delphi改成BCB代码,如何改?也有VB、VC代码 ,请大家帮忙呀

楼上有了C++的。会写回调函数的,都会改。注意调用协议及第三个参数是一个指针就是了。