Я делал подобный прикол иначе ... Через вот такую рагулину.
- Код: Выделить всё
function CreateSnapshot ( WindowHD : HWND ):TBitmap;
var
wnd:HWND;
dc:HDC;
Bmp:TBitmap;
r:TRect;
begin
wnd :=WindowHD;
if wnd = 0 then
begin
dc := GetDC(0);
Bmp := TBitmap.Create;
Bmp.SetSize (Screen.Width,Screen.Height);
end
else
begin
Bmp := TBitmap.Create;
dc := GetWindowDC(wnd);
GetWindowRect(wnd,r);
Bmp.SetSize(r.Right-r.Left,r.Bottom-r.Top);
end;
BitBlt(Bmp.Canvas.Handle,0,0,Bmp.Width,Bmp.Height,DC,0,0,SRCCOPY);
Result:= bmp;
ReleaseDC(wnd,dc);
end;
Но через SetParent круче !
Зы
Если планируется изменение размера формы или панели
Нужно добавить вот такую заплатку....
- Код: Выделить всё
procedure TForm1.FormResize(Sender: TObject);
begin
if h<>0 then begin
MoveWindow(h,0,0,Width,Height,true);
end;
end;
Ну и при инициализации MoveWindow тоже предпочтительней чем
вызов ShowWindow(h,SW_SHOWMAXIMIZED);
Вообщем для интеграции разных утилит и плагинов внутрь своих приложений "то что доктор прописал"
Зы Зы
Интересно, а можно ли браузер таким же образом вызвать?
(А то мучать огромадный ХромАпи из за нужды показать одну страничку изрядно накладно )