function DockDxfForm(ParentControl: TWinControl; Sender: TFormClass;align:TAlign): TForm; begin Result := Sender.Create(ParentControl); with Result do begin ManualDock(ParentControl, nil, align); Visible := false; end; end;function CallDXFForm(Panel:TPanel;FormName: String;formtype:TFormClass;align:TAlign):TForm ; var I: Integer; Fresult:Tform; begin Fresult:= DockDxfForm(Panel.Parent, TFormClass(formtype),align); Fresult.Left:=0; Fresult.Top:=0; // Fresult.WindowState:=wsMaximized; Fresult.Align:=align; Fresult.Visible:=true; result:=Fresult; end;
begin
Parent := Panel1;
Align := alClient;
BorderStyle := bsNone
Show;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
h: THandle;
r: TRect;
begin
h := FindWindowEx(Handle, 0, nil, '计算器');
if h = 0 then
begin
WinExec( 'calc.exe', SW_SHOW);
h := FindWindow(nil, '计算器');
GetWindowRect( h, r );
SetWindowPos( h, HWND_TOPMOST, 0, 0, 260, 250, SWP_NOMOVE);
Windows.SetParent( h, Handle );
end;
end;
OK..完全可以谢谢!我明白GetWindowRect和SetWindowPos还有指定父窗的SetParent^_^
function DockDxfForm(ParentControl: TWinControl; Sender: TFormClass;align:TAlign): TForm;
begin
Result := Sender.Create(ParentControl);
with Result do
begin
ManualDock(ParentControl, nil, align);
Visible := false;
end;
end;function CallDXFForm(Panel:TPanel;FormName: String;formtype:TFormClass;align:TAlign):TForm ;
var
I: Integer;
Fresult:Tform;
begin
Fresult:= DockDxfForm(Panel.Parent, TFormClass(formtype),align);
Fresult.Left:=0;
Fresult.Top:=0;
// Fresult.WindowState:=wsMaximized;
Fresult.Align:=align;
Fresult.Visible:=true;
result:=Fresult;
end;