在MDI主窗体中调用DLL中的子窗体后,用MDIChildCount却返回0,为什么,但调用主体程序中的子窗体时, MDIChildCount 就可正常得到打开的子窗体数为什么?要怎样解决?
谢谢

解决方案 »

  1.   

    在线等待,请各位高手提供各种方案
    不会这个问题成了死贴吧,要不这就是Delphi的Bug
      

  2.   

    因为你是在调用DLL中的子窗体时,传了MDI的Applivation的Handle过去的,所以他并不知道该子窗体时自己的子窗体,调用时它的MDIChildCount 当然不对,而它本身的子窗体则没有这个问题,要解决的话,就不能用的MDIChildCount 这个属性来调用子窗体,直接通过调子窗体的函数来调
      

  3.   

    to -> ljmanage ,请再说详细一点,谢谢
      

  4.   

    最好不要在DLL中使用MDIChildForm,因为在不同的执行模块间传递的对象不支持RTTI,这样就导致你在DLL中的MDIChildForm不能使用调用模块的Application及它的主窗体(MDIForm).
    在DLL和EXE(或两个DLL)之间传递对象(参数或返回值)时也要小心,被传递的对象或使用这个对象的代码有对RTTI的调用就会不正常,VCL的对象就大量使用了RTTI。
      

  5.   

    楼上的已经给你解释的差不多了,我也就是这个意思,你不能用父窗体的那些属性来关闭DLL中得子窗体。
      

  6.   

    简单点说,调用子窗体很容易内存出错,不过你可以调用Dll中的主窗体现实,可以把应用程序的主窗体作为参数传过去,不过也不是很容易控制。