有关DLL调用的问题(100分)

  • 主题发起人 主题发起人 yongjiang
  • 开始时间 开始时间
Y

yongjiang

Unregistered / Unconfirmed
GUEST, unregistred user!
请问:
; ;在主控代码中调用含有form的DLL,用主应用的application创建动态库的form,释放时,dll
的APPLICATION 怎么办?如果主控main 要调用的dll的form为MDI,又该如何处理。可否举
例。如果DLL释放不完,可否用别的方法进行释放。
 
创建前先将APPLICATION保存起来,DLL释放时再恢复过来。否则将无法正常返回调用的程序。

function ShowForm(AHandle : THandle) : word;
var
; PPWForm : TPWForm;
; OldApplication: TApplication;
begin
; OldApplication := Application;
; application.Handle := AHandle;
; PPWForm := TPWForm.Create(Application);
; try
; ; PPWForm.ShowModal;
; ; Result := 1;
; finally
; ; PPWForm.Free;
; ; Application := OldApplication; ;
; end;
end;
 
请继续或结束
 
你可以这样:
...
var
; ;DLLForm:TDLLForm,
; ;DLLApplication:TApplication;
...
procedure ShowDLLForm(Application_p :TApplication);StdCall;
begin
Application:=Application_p;
with TDLLForm.Create(Application) do
; ; ;Show;
end;
...
//***********
initialization//初始化
DLLApplication:=Application;
finalization//结束
Application:DLLApplication;
//****这一段代码是为了的DLL的Application初始化保存,并在结束(全部程序)结束时
//恢复,这样才能安全关闭程序。
...

这个方法这适用于MDI 窗体,或非MDI窗体。
 
1答:将动态创建的form 释放即可
 
多人接受答案了。
 
后退
顶部