在本程序的C++版本中,函数原型如下:
DT_API DS_CAMERA_STATUS CameraInit(DS_SNAP_PROC pCallbackFunction,IN DS_RESOLUTION uiResolution, IN HWND hWndDisplay, IN LPVOID lpThreadparam );调用时:
if (STATUS_OK != CameraInit(SnapThreadCallback, 
m_Resolution,
GetDlgItem(IDC_VIDEO)->m_hWnd, //NULL,//
CamNum+1) )其中IDC_VIDEO控件是一个在VC中的picture控件。在delphi中使用什么控件?
上面那个函数的第三个参数怎么用?

解决方案 »

  1.   

    usb摄像头,有原生的delphi代码可以访问
      

  2.   

    http://www.2ccc.com/article.asp?articleid=272
      

  3.   

    用户要求使用他们提供的DLL。
      

  4.   

    你必需要有他自定义的类型,你再用DELPHI定义一下,这样你才能定义这些变量,你才能调用.
      

  5.   

    需要有他自定义的类型,再用DELPHI定义一下,直接用他们给你的DLL,可以直接调用
      

  6.   

    不需要使用控件,而是需要调用AVICAP32.DLL通用的摄像头控制链接库。
    我手里就有现成的例子。
    下面的代码是打开摄像头显示的按键程序。
     if state=0 then exit;
     hWndC := capCreateCaptureWindowA('My Own Capture Window',WS_CHILD or WS_VISIBLE ,Panel1.Left,Panel1.Top+29,Panel1.Width,Panel1.Height,Form3.Handle,0);
     hWndC := capCreateCaptureWindowA('My Own Capture Window',WS_CHILD or WS_VISIBLE ,Panel1.Left,Panel1.Top+29,Panel1.Width,Panel1.Height,Form3.Handle,0);
     if hWndC <> 0 then
      begin
       SendMessage(hWndC, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0);
       SendMessage(hWndC, WM_CAP_SET_CALLBACK_ERROR, 0, 0);
       SendMessage(hWndC, WM_CAP_SET_CALLBACK_STATUSA, 0, 0);
       SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);
       SendMessage(hWndC, WM_CAP_SET_SCALE, 1, 0);
       SendMessage(hWndC, WM_CAP_SET_PREVIEWRATE, 66, 0);
       SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0);
       SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0);
      end;显示上我在窗体上放了一个panel控件,调整好它的大小和位置,到时控制显示的窗体与它一样的大小和位置,就象是在它上面显示一样。其它的代码你需要我可以发给你的
      

  7.   

    //////定义部分///////
      const WM_CAP_START = WM_USER;
      const WM_CAP_STOP = WM_CAP_START + 68;
      const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10;
      const WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11;
      const WM_CAP_SAVEDIB = WM_CAP_START + 25;
      const WM_CAP_GRAB_FRAME = WM_CAP_START + 60;
      const WM_CAP_SEQUENCE = WM_CAP_START + 62;
      const WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20;
      const WM_CAP_SEQUENCE_NOFILE =WM_CAP_START+ 63;
      const WM_CAP_SET_OVERLAY =WM_CAP_START+ 51;
      const WM_CAP_SET_PREVIEW =WM_CAP_START+ 50;
      const WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START +6;
      const WM_CAP_SET_CALLBACK_ERROR=WM_CAP_START +2;
      const WM_CAP_SET_CALLBACK_STATUSA= WM_CAP_START +3;
      const WM_CAP_SET_CALLBACK_FRAME= WM_CAP_START +5;
      const WM_CAP_SET_SCALE=WM_CAP_START+ 53;
      const WM_CAP_SET_PREVIEWRATE=WM_CAP_START+ 52;
      function capCreateCaptureWindowA(lpszWindowName : PCHAR; dwStyle : longint; x : integer;
               y : integer;nWidth : integer;nHeight : integer;ParentWin : HWND;
               nId : integer): HWND;STDCALL EXTERNAL 'AVICAP32.DLL';
      

  8.   

    /////////下面是关闭摄像头按钮的程序//////////
    procedure TForm3.bp2Click(Sender: TObject);
    begin
     if state=0 then exit;
     if hWndC <> 0 then
      begin
       SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
       SendMessage(hWndC, WM_CLOSE, 0, 0);
       hWndC := 0;
      end;
    end;