按照catman的方式已经实现了,代码如下
dll中:
function GetForm(hParent:HWND) : TForm; stdcall;export
begin
Result := TForm1.CreateParented(hParent);
end;
主窗口中:
function FormShowInPanel(dllPath:string):TForm;
var GetForm:TGetForm;
handles:Integer;
begin
handles:=LoadLibrary(Pchar(DllPath));
if handles<>0 then
begin
@GetForm:=GetProcAddress(handles,'GetForm');
if @GetForm <> nil then
with GetForm(frmMain.pnl1.Handle) do
show;
end;
end;
不过这样做的话要先释放生成的form,才能释放dll.
散分了