将DLL中的窗体放到主窗体的一个Panel中(100分)

  • 主题发起人 主题发起人 zmaze
  • 开始时间 开始时间
Z

zmaze

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样将DLL中的窗体放到主窗体的一个Panel中?我已经试过很多种方法,都没有成功,请大家指点!
 
我也想知道
 
我也是<br>
 
panel.dock(控件,rect)
 
废话两句,顺便UP,期待答案<br>windows里面的屏保预览就是这种例子
 
&nbsp; &nbsp;h:=FindWindow(nil,pchar('DLL窗口'));<br>&nbsp; &nbsp; windows.SetParent(h,frmMainFrame.panel1.handle);
 
在Dll中注册窗口类<br>import一个函数将窗口类返回给应用程序<br>应用程序根据窗口类创建窗口,指定窗口的父为panel
 
豁然开朗
 
谢谢Nstar的指点,如果成功的话,我一定会给分的!
 
哎呀,早看到这个贴子就好了!Nstar,到 <br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=1285867<br>这个帖子里来拿分吧!
 
Nstar,您给出的方法我没有试成功,如果可以的话,请给出完整一点的例子,可以吗?<br>siyan,你可以把你的想法说得详细一点吗?
 
到底成功了没有啊?
 
我觉得我已经说得很清楚了呀<br>Nstar的方法通过查找窗口获得窗口句柄,然后对句柄进行操作<br>我的方法是在主程序里生成窗口的实列,对实列进行操作<br>只是在窗口类是在Dll中定义的,如果要在主程序中生成它的实列<br>则必须在Dll中注册这个窗口类并把它传回给主程序<br>主程序获得类之后,就可以生成类的实例,并进行相应操作<br>
 
siyan:<br>你的方法我已经试过了,应该说可以达到我的目的,谢谢!<br>但现在还是存在一个比较严重的问题:报内存错,不知道有没有查错的方法没有?
 
确保窗体FREE<br>NIL了
 
搞定!<br>是刚才我的ShameMem单元加错地方啦,谢谢!给分!
 
目前该问题已经完全解决,解决的方法如下:<br>将EXE和DLL都采用Build With?Runtime Package进行编译,这样的话保证EXE和DLL使用同一<br>个VCL的包,然后在DLL中设置窗体的Parent属性为从EXE中传过来的控件,一切搞定!
 
后退
顶部