я работаю над приложением, используя delphi 6 , где я пытаюсь интегрировать камеру в существующее приложение, код камеры отображает захваченные кадры на Tpanel, в моем приложении мне нужно отобразить захваченный кадрна Tpaintbox (я не являюсь оригинальным кодером),
это пример кода из
procedure TFrameThreadX.DrawFrame;
var
hdc:THandle;
begin
//do processing
.
.
hdc := GetDC( ViewForm.ViewPanel.Handle );
SetStretchBltMode(hdc,COLORONCOLOR);
StretchDIBits(hdc,0,0,nW,nH,0,0,ScW,ScH,DibPixels,TBitMapInfo((@FDib)^),DIB_RGB_COLORS,SRCCOPY);
ReleaseDC( ViewForm.ViewPanel.Handle, hdc );
//do processing
end;
, здесь можно получить дескриптор Tpanel как 87248682 из этого
hdc := GetDC( ViewForm.ViewPanel.Handle );
, поэтому, когда я пытаюсь использовать Tpaintbox в коде, подобном этому
hdc := GetDC( ViewForm.PaintBox1.Canvas.Handle);
В результате получается 0 ,
, поэтому кадры камерыне отображаются ..
, поэтому я попробовал это
, используя GetDC и GetWindowDC , но в обоих случаях результат функций 0 для ручки,
мой код
var
hdc : THandle;
begin
hdc := GetDC(Panel1.Handle);
Label1.Caption:=inttostr(hdc);
hdc := GetDC(Image1.Canvas.Handle);
Label2.Caption:=inttostr(hdc);
hdc := GetDC(PaintBox1.Canvas.Handle);
Label3.Caption:=inttostr(hdc);
end;
и для GetWindowDC
var
hdc : THandle;
begin
hdc := GetWindowDC(Panel1.Handle);
Label4.Caption:=inttostr(hdc);
hdc := GetWindowDC(Image1.Canvas.Handle);
Label5.Caption:=inttostr(hdc);
hdc := GetWindowDC(PaintBox1.Canvas.Handle);
Label6.Caption:=inttostr(hdc);
end;
Так скажите, пожалуйста, как получить ручку Tpaint?