其实这个问题在以前的贴在是非常多的,遇到问题时现在以前的帖子里面搜搜看。
再贴一遍例子出来
在动态连接库中的MDI子窗体:
var
SaveDLLApp:TApplication;
procedure ShowMDIChildForm(MainApp:TApplication);
var
Child:TMDIForm;
begin
if not Assigned(SaveDllApp) then
begin
SaveDllApp:=Application;
Application:=MainApp;
end;
Child:=TMDIForm.Create(Application.MainForm);
Child.Show;
end;
procedure MyLibraryProc(Reason:integer);
begin
if Reason=DLL_PROCESS_DETACH then
if Assinged(SaveDllApp) then
Application:=SaveDllApp;
end;
export ShowMDIChildForm;
begin
DllProc:=@MyLibraryProc;
end.
在调用dll的应用中,用下述方法生MDI窗体;
procedure Form1.Button1Click(Sender:Tobject);
begin
ShowMDIChildForm(Application);
end;