问题: DLL反回以后,主窗体看不见了是怎么回事? ( 积分: 50 )
分类: Windows API
来自: Killer1225, 时间: 2004-02-23 21:41:00, ID: 2468055
请问我在Delphi中动态的加载一个封装有一个窗体的DLL,该DLL返
回一个Integer型数据,当这个DLL返回以后,我的主窗体总是变地看
不见了,然后我把主窗体最小化后,再最大化就可以看见的,请问这个
问题如何解决.谢谢!
来自: wind28, 时间: 2004-02-23 21:45:31, ID: 2468064
没碰过,看看窗体属性有没有设成最小。
来自: dirk, 时间: 2004-02-23 22:35:43, ID: 2468151
是Application.Handle的问题,在dll中定义一个全局HWnd:
var
AppHwnd:HWnd;
把调用dll的Application传过去(FApp),并用AppHwnd记录下原Application的Handle:
AppHwnd:=Application.Handle;
然后把传过去的FApp.Handle赋给Application,
Application.Handle :=FApp.Handle ;
退出dll时再将Application.Handle 还原即可
Application.Handle :=AppHwnd ;
呵呵,写的这么罗嗦是因为我不知道怎么说。
来自: zxdcj, 时间: 2004-02-28 15:32:55, ID: 2475648
楼上说的对,我也遇见过,
因为DLL中的application对象与调用它的应用程序是分离的
为使DLL中的窗体成为真正成为应用程的窗体必须将应用程序的句柄传给DLL的Application.handle,
你可以给dll加一个HANDLE参数,用于接收当前程序的APPLICATION。HANDLE
你在调用DLL的窗体的时候一定要把当前application.handle传给DLL的application.handle
问题讨论没有结束 ...