DLL反回以后,主窗体看不见了是怎么回事?(50分)

  • 主题发起人 主题发起人 Killer1225
  • 开始时间 开始时间
K

Killer1225

Unregistered / Unconfirmed
GUEST, unregistred user!
请问我在Delphi中动态的加载一个封装有一个窗体的DLL,该DLL返<br><br>回一个Integer型数据,当这个DLL返回以后,我的主窗体总是变地看<br><br>不见了,然后我把主窗体最小化后,再最大化就可以看见的,请问这个<br><br>问题如何解决.谢谢!
 
没碰过,看看窗体属性有没有设成最小。
 
是Application.Handle的问题,在dll中定义一个全局HWnd:<br>var<br>&nbsp; AppHwnd:HWnd;<br><br>把调用dll的Application传过去(FApp),并用AppHwnd记录下原Application的Handle:<br>&nbsp; &nbsp; AppHwnd:=Application.Handle;<br>然后把传过去的FApp.Handle赋给Application,<br>&nbsp; &nbsp; Application.Handle :=FApp.Handle ;<br>退出dll时再将Application.Handle 还原即可<br>&nbsp; &nbsp; Application.Handle :=AppHwnd ;<br><br>呵呵,写的这么罗嗦是因为我不知道怎么说。
 
楼上说的对,我也遇见过,<br>因为DLL中的application对象与调用它的应用程序是分离的<br>为使DLL中的窗体成为真正成为应用程的窗体必须将应用程序的句柄传给DLL的Application.handle,<br><br>你可以给dll加一个HANDLE参数,用于接收当前程序的APPLICATION。HANDLE<br>你在调用DLL的窗体的时候一定要把当前application.handle传给DLL的application.handle
 
后退
顶部