关于DLL中创设窗体的讨论

关于DLL中创建窗体的讨论~
在dll中创建窗体有用传入的主程序的句柄进行创建的
Application.CreateForm(Tform1,form1);
也有直接创建的
form1:=tform1.creat(nil);

利用主程序句柄创建的窗体,因为有handle只能开窗一次;

而直接创建的窗体,没有拥有者,可以开多次~~

我这样理解正确吗?

还有这两种方法的释放好像也不相同,大家也谈一下自己的心得~~


------解决方案--------------------
不管哪种方法,都是想创建多少就创建多少,只不过你这样子实例变量只有一个...如果创建多个最好用数组,list等保存好对象

释放都可用form.close,没啥不同的
------解决方案--------------------
都可以无限开的
------解决方案--------------------
好像都有拥有者吧,都是APPLICATION来管的,第一个用Application.CreateForm建的窗口,被设为FMainForm
------解决方案--------------------
form1:=tform1.create(nil); 这种方式需要自己释放吧,直接form.close,我觉得可没有释放所占内存

------解决方案--------------------
可以无限创建的,俺一般不用窗体实例变量,直接
with txx.create(nil) do
begin
do anythings;
end;

其它单元需要引用什么就传递参数过去
------解决方案--------------------
dll的导出创建窗口函数中,要有handle的参数,调用该函数时,传入application.handle,
然后创建窗口时用 form1:=tform1.creat(application.handle);
 
释放都不用管了,delphi会自动释放的。
------解决方案--------------------
手动创建的,好像要用free来释放