如题,狂晕,那位仁兄帮我看看,不知如何处理
代码如下:
function TSnapPanel.SnapExCallback(var info: SNAP_INFO): Integer; stdcall;
begin
    result := 1;
end;function TSnapPanel.StarSnap(iType: Integer; lpFunc : Pointer): Boolean;
var
  status: CGSTATUS;
  kk : EProc;
begin
    Result := false;
    if not bInit then Exit;
    status := CGOpenSnapEx(hCGCard,@SnapExCallback, nil);???
    if (CG_SUCCESS(status)) then
        begin
        status := CGStartSnapEx(hCGCard, 0, True, 2);
        if ( not CG_SUCCESS(status)) then
            CGCloseSnapEx(hCGCard)
        else
            bSnap := True; 
    end;
end;
CGOpenSnapEx的原型如下:
原 型:CGSTATUS __stdcall CGOpenSnapEx(HCG hcg,SNAPPROC
pSnapFunc,void *pParam)
参 数:HCG hcg;
图像卡句柄。
SNAPPROC pSnapFunc;
指向回调函数。
void *pParam;
指向用户定义参数,参数对应于回调函数参数SNAP_
INFO的字段pParam,它是传递给回调函数的。

解决方案 »

  1.   

    SnapExCallback是类TSnapPanel的一个成员函数,现在是在TSnapPanel.StarSnap中要调用外部一个函数CGOpenSnapEx,现在是需要把SnapExCallBack传给CGOpenSnapEx的第二个参数。
      

  2.   

    其实我不清楚你要什么,估计你是要这个: FWndProcInstance:  Pointer;//新窗口函数的指针;  
     ...
         FWndProcInstance  :=  MakeObjectInstance(SnapExCallback);  
    问题是你的
    function TSnapPanel.SnapExCallback(var info: SNAP_INFO): Integer; stdcall;和要求的
    原 型:CGSTATUS __stdcall CGOpenSnapEx(HCG hcg,SNAPPROC
    pSnapFunc,void *pParam)根本不同,传进去,会出错的
      

  3.   

    我是想把TSnapPanel.SnapExCallback的地址指针传给CGOpenSnapEx的PsnapFunc参数,这个参数实际上类型是Pointer的。