procedure TForm1.OpenVideoClick(Sender: TObject);
begin 
hWndC := capCreateCaptureWindowA('My Own Capture Window',
WS_CHILD or WS_VISIBLE ,
Panel1.Left,
Panel1.Top,
Panel1.Width,
Panel1.Height,
Form1.Handle,
0);
if hWndC <> 0 then
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);
OpenVideo.Enabled :=false;
end;
为什么显示在PANEL控件上面的监控图像会是黑色一遍呢?

解决方案 »

  1.   

    begin 
     hWndC := capCreateCaptureWindowA('My Own Capture Window',WS_CHILD or WS_VISIBLE ,Panel1.Left,Panel1.Top,Panel1.Width,Panel1.Height,Form1.Handle,0);  hWndC := capCreateCaptureWindowA('My Own Capture Window',WS_CHILD or WS_VISIBLE ,Panel1.Left,Panel1.Top,Panel1.Width,Panel1.Height,Form1.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; delphi7+winxp测试通过,没问题...