关于DLL中FORM问题(50分)

  • 主题发起人 主题发起人 hongsen
  • 开始时间 开始时间
H

hongsen

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么在主程序中打开DLL中的窗口时,会在任务栏上出现两个象标(主程序一个,子窗口一个)?而且,
最小化DLL中的窗口时,主程序窗口也最小化了。
DLL中输出函数如下:

procedure CreateEmployeeFrm(handle: THandle)
stdcall;
begin
Application.handle := handle;//为主程序对象的handle

EmployeesFrm := TEmployeesFrm.Create(Application);
try
EmployeesFrm.showModal;
finally
EmployeesFrm.free;
end;

end;
 
把exe的application传给dll,把dll的application换成exe的application
或者,dll的application.handle := exe的application.handle
 
dll的application.handle := exe的application.handle
我就是这样作的呀。看看上面的代码。
 
EmployeesFrm.show()
两个图标可能
Application.handle := handle这句出了问题
 
如何把DLL中的Application.Handle指向主工程的Application.Handle
 
传递的是Application对象,不是Handle
主意要保存原来的Application,在卸载之前恢复
 
带包编译吧,又方便有好用,省了很多麻烦,不需要再去传句柄了!!
或者用bpl吧,更好用。
 
传递TApplication.Handle和TApplication都是比较好的,
不过个人认为传递TApplication比较好一些,
Dll内的TForm调用时就比较更有“亲和感”,
不知道的人绝对不会认为是DllForm,
只要他老爸的句柄(Owner Window)的地址为空(不存在Owner)他就永远有两个“象标”,如果你随便给一个不存在对象的句柄就报错啦!!!

呵呵~~~~~~~~~~~~~~~
 
后退
顶部