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_SEQUENCE_NOFILE, 1, 0);
SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0);
SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0);
OpenVideo.Enabled :=false;
end;procedure TForm1.CloseVideoClick(Sender: TObject);
begin
if hWndC <> 0 then begin
SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
hWndC := 0;
OpenVideo.Enabled :=true;
end;
end;这是打开视频和关闭视频的程序,可是关闭后再窗口出现一块黑快,请问捕完后如何关闭那个黑块的窗体呀???(急!!)

解决方案 »

  1.   

    再网上找的方法,可以解决。哈哈哈,我自己搞定了,由于那个窗体是使用API调出来的,它只是位置和大小与PANEL一样而已,因此要想控制它还是要使用API消息机制.利用它的句柄来操作它.方法如下: 
    //关闭摄像头 
      if   hWndC   <>   0   then 
        begin 
          SendMessage(hWndC,   WM_CAP_DRIVER_DISCONNECT,   0,   0); 
          SendMessage(hWndC,   WM_CLOSE,   0,   0); 
          hWndC   :=   0; 
        end; OK,完事了.
      

  2.   

    还得好好学习windows的Api函数功能
      

  3.   

    想在此借问个问题:如果还有一个IMAGE控件,怎样在PANEL上像拍照一样取个图直接让IMAGE去显示?
    image1.Picture.Bitmap.Assign(panel1);编译行,可运行就错。可到http://topic.csdn.net/u/20100409/17/eb2d979b-9117-414e-8e76-d9cc026c9f7c.html?seed=1023719777&r=64820244#r_64820244去接分。谢谢。