用VFW做视频采集时,当将程序最小化或者当前焦点不是程序上时那么程序就无法工作了,请问这是怎么回事?
我在网上找了一天答案,说是将CapSetCallbackOnFrame(CapWnd,FrameCallBack);替换为capSetCallbackOnVideoStream(CapWnd,FrameCallBack);可是我替换后capSetCallbackOnVideoStream(CapWnd,FrameCallBack);根本不工作,就是说进入不到回调的那个函数里面。
CapCaptureSequenceNoFile(CapWnd);也写了
大致的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
   CapWnd := capCreateCaptureWindow('viewwindow', WS_VISIBLE or WS_CHILD,
0, //X坐标
0, //Y坐标
panel1.Width, //窗口宽
panel1.Height, //窗口高
panel1.handle, //窗口句柄
0); //通常为0if CapWnd = 0 then exit; 
CapSetCallbackOnFrame(CapWnd,FrameCallBack);<--
这里替换为:
//--------------------CapCaptureSequenceNoFile(capWnd);
capSetCallbackOnVideoStream(CapWnd,FrameCallBack);<--这个函数执行了,可是不执行“FrameCallBack”
//--------------------CapParms.dwRequestMicroSecPerFrame:=1;
CapParms.fLimitEnabled:=FALSE;
CapParms.fCaptureAudio:=FALSE;
CapParms.fMCIControl:=FALSE;
CapParms.fYield:=TRUE;
CapParms.vKeyAbort:=VK_ESCAPE;
CapParms.fAbortLeftMouse:=False;
CapParms.fAbortRightMouse:=FALSE; 
CapCaptureSetSetup(capWnd,@CapParms,sizeof(TCAPTUREPARMS));
CapPreviewRate(capWnd,33); 
CapCaptureSequenceNoFile(capWnd); 
CapDriverConnect(CapWnd,0); 
capGetVideoFormat(capWnd, @BMPINFO,sizeof(TBitmapInfo)); 
CapPreviewScale(capWnd,TRUE); 
CapOverlay(capWnd,true);
CapPreview(capWnd,true);
CapCaptureSequenceNoFile(CapWnd);end;请各位帮帮忙,看看是怎么回事,该如何更改才能使程序能够最小化或者在后台也能够运行?

解决方案 »

  1.   

    这是个什么组件?怎么使用啊?能不能传输视频?
    这个是可以,但是还是想把问题弄清楚
    为什么capSetCallbackOnVideoStream(CapWnd,FrameCallBack);不能使用呢?
      

  2.   

    VIDEOCAP组件封装了vfw,网上有
      

  3.   


    videocap控件就是灰鸽子用过的第三方控件,我找到了
    现在这个问题该怎么解决呢?
    为什么不能使用capSetCallbackOnVideoStream(CapWnd,FrameCallBack);我找了N个搜索引擎,找了N个问题,发现这个问题一直没被解决
    请各位帮帮忙
      

  4.   

    我用的控件叫videocap23,你下载一个,代替你写的代码
      

  5.   


    除了这个方法没别的了吗?
    这个问题一直没有得到过有效的解决
    videocap23怎么使用的?
      

  6.   

    以前写过类似程序,通过串口和Timer 实现的 
      

  7.   


    这是VFW的,已经查阅了很多资料
    对于这个问题始终没有一个完美的解答
    期待高手解惑
      

  8.   

    我用VB6.0也在开发同样的一个程序,也不执行,我K。BUG~!