+ -
当前位置:首页 → 问答吧 → VFW编程时,显示内存不足

VFW编程时,显示内存不足

时间:2011-12-14

来源:互联网



function framecallback(hwnd: hwnd; lpvhdr: pvideohdr): longint;stdcall;
var hd:thandle;
jpg:tjpegimage;
memstream :tmemorystream;
bitmap:tbitmap;
begin
bitmap:=tbitmap.create;
bitmap.width :=bmpinfo.bmiheader.biwidth;
 // new size of bitmap
bitmap.height:=bmpinfo.bmiheader.biheight;
hd:= drawdibopen;
//drawdibdraw(hd,bitmap.canvas.handle,0,0,bmpinfo.bmiheader.biwidth div 2 ,bmpinfo.bmiheader.biheight div 2,@bmpinfo.bmiheader,lpvhdr^.lpdata,0,0,bmpinfo.bmiheader.biwidth div 2,bmpinfo.bmiheader.biheight div 2,0);
drawdibdraw(hd,capwnd2,0,0,bmpinfo.bmiheader.biwidth,bmpinfo.bmiheader.biheight,@bmpinfo.bmiheader,lpvhdr^.lpdata,0,0,bmpinfo.bmiheader.biwidth,bmpinfo.bmiheader.biheight,0);


drawdibclose(hd);
bitmap.free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
capwnd := capcreatecapturewindow('ÎҵĴ°', ws_visible or ws_child,//´°¿ÚÑùʽ
0, 0, panel1.width,panel1.height, panel1.handle, 0); 
if capwnd = 0 then exit; 
capsetcallbackonframe(capwnd,@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);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
capcaptureabort(capwnd); 
capdriverdisconnect(capwnd); end;

procedure TForm1.Button3Click(Sender: TObject);
begin
capwnd22:=panel2.Handle;
end;

作者: fstfse123   发布时间: 2011-12-14

几分钟后,显示’OUT OF MEMORY',请大哥出手

作者: fstfse123   发布时间: 2011-12-14

procedure TForm1.Button3Click(Sender: TObject);
begin
capwnd2:=getdc(panel2.Handle;)
end;

作者: fstfse123   发布时间: 2011-12-14