DLL的问题(300分)

  • 主题发起人 主题发起人 SINGLBOY
  • 开始时间 开始时间
S

SINGLBOY

Unregistered / Unconfirmed
GUEST, unregistred user!
1。调用DLL中的窗体时,用Delphi调用要传入Application.handle;用C++调用该传入什么?
2。在DLL中用Form1:=TForm1.Create(Application) 和 Application.CreateForm(TForm1,Form1) 他们
;的OnCreate是不一样的为什么?
3。在DLL中用Application.CreateForm(TForm1,Form1),当退出DLL时会出错,怎么解决?
很急,请个位大富翁多多帮忙!!
 
有个返回参数,一定要把这个参数传给变量。
var newform:Tform;
newform:= Application.CreateForm(TForm1,Form1);
 
>>snjat
; Application.CreateForm 哪有什么返回值啊?
 
1。调用DLL中的窗体时,用Delphi调用要传入Application.handle;用C++调用该传入什么?
;>>用C++调用应该传递主窗口的HWND
2。在DLL中用Form1:=TForm1.Create(Application) 和 Application.CreateForm(TForm1,Form1) 他们
;的OnCreate是不一样的为什么?
;>>Create(Owner:Tobject),其中的Application 是该窗体的“拥有者”,当Application
;结束时,若Form1没有Free,Application会自动Free他的。Application.CreateForm(TForm1,Form1),
;是同样的道理。
3。在DLL中用Application.CreateForm(TForm1,Form1),当退出DLL时会出错,怎么解决?
;>>退出Dll是手动 Form1.free;

1.2.
 
学习!!!!!!!!!
听!!!!!!!!!
 
3。在DLL中用Application.CreateForm(TForm1,Form1),当退出DLL时会出错,怎么解决?
;
Applcaition变量传入后,要先保存原来application的值到一个临时变量,如:
OldApplication
窗体释放后,推出前要将Application := OldApplication;
 
都使用运行包试试
 
怪我没说清楚:我所问的都是在DLL中的情况!
2。Form1:=TForm1.Create(Application)所创建的[red]Form1的onCreate触发时 Form1还没创建:Form1=nil[/red];
; ;Application.CreateForm(TForm1,Form1) 所创建的[red]Form1的onCreate触发时 Form1已创建:Form1<>nil[/red];
; 我想知道这是为什么?
3。Form1:=TForm1.Create(Application)所创建的Form1 在退出DLL时释放或不释放都不出错
; ;Application.CreateForm(TForm1,Form1) 所创建的Form1在退出时不管怎么释放都出错!
; 我现在只能用Application.CreateForm(TForm1,Form1) 创建的Form1
; 我该怎么解决我的问题?
;
 
1。调用DLL中的窗体时,用Delphi调用要传入Application.handle;用C++调用该传入什么?
;>>用C++调用应该传递主窗口的HWND
;>>>完全同意。
2。在DLL中用Form1:=TForm1.Create(Application) 和 Application.CreateForm(TForm1,Form1) 他们
;的OnCreate是不一样的为什么?
;>>Create(Owner:Tobject),其中的Application 是该窗体的“拥有者”,当Application
;结束时,若Form1没有Free,Application会自动Free他的。Application.CreateForm(TForm1,Form1),
;是同样的道理。
;>>>Application.CreateForm执行时当然是先运行TForm1.Create(Self),然后看看Application有没有
MainForm,如果没有的话,将这个设为MainForm。这时候再去执行Form的OnCreate的。
3。在DLL中用Application.CreateForm(TForm1,Form1),当退出DLL时会出错,怎么解决?
;>>退出Dll是手动 Form1.free;
;>>>千万别!还是让Application释放的好。注意,对Form的操作千万动不动就Free,你看看
有两种可能。你在DLL中可能建立了一份与宿主程序不同的Application实例。你还是用宿主程序的
Application吧。另外,MainForm最好用Close。
 
第二个问题你们试一下再回答好不好?我已说的很清楚!!!!!!!!!
 
第二个问题中Application.CreateForm(TForm1,Form1)的区别在于将Form1作为
Application的MainForm
 
多人接受答案了。
 
后退
顶部