我想点击按钮,然后弹出DLL中的窗口,这些窗口可以同时工作。DLL中,我这样编写:procedure CreateForm(AHandle:THandle);
begin
Application.Handle:=AHandle; //传递句柄
PForm:=TForm1.Create(Application); //创建Application
PForm.Show; //显示窗口
PForm.Free; //释放
end;主程序中,把Application的Handle赋值给AHandle,然后调用。
但是,点击按钮的时候,窗口总是一闪而过,不知道为什么。如果我把上面中的代码改写成:
1.TForm1.Create(nil)
2.PFrom.Showmodal
这样就可以显示了,两个条件缺一不可。--->不过,这样不符合我同时工作的要求。另外,我是不是需要在主程序中,在关闭的时候,把那些窗口给DestroyWindow,把窗口销毁掉?否则会有内存泄露?
begin
Application.Handle:=AHandle; //传递句柄
PForm:=TForm1.Create(Application); //创建Application
PForm.Show; //显示窗口
PForm.Free; //释放
end;主程序中,把Application的Handle赋值给AHandle,然后调用。
但是,点击按钮的时候,窗口总是一闪而过,不知道为什么。如果我把上面中的代码改写成:
1.TForm1.Create(nil)
2.PFrom.Showmodal
这样就可以显示了,两个条件缺一不可。--->不过,这样不符合我同时工作的要求。另外,我是不是需要在主程序中,在关闭的时候,把那些窗口给DestroyWindow,把窗口销毁掉?否则会有内存泄露?
PForm.Free; 你创建了窗体,又释放了窗体~~改为这样
try
Application.Handle:=AHandle; //传递句柄
PForm:=TForm1.Create(Application); //创建Application
PForm.ShowModal;
finally
pform.free;
end;
恩,换成ShowModal后就必须等你自己关闭窗口后才能free了,不会直接free
procedure CreateForm(AHandle:THandle);
begin
Application.Handle:=AHandle; //传递句柄
PForm:=TForm1.Create(Application); //创建Application
PForm.Show; //显示窗口
//PForm.Free; //释放 这个放在PFormOnClose里面去 就是在OnClose里面Action:=Cafree;
end;