以dll形式保存的mdi子窗体的释放与同名问题。 ( 积分: 200 )

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

zzutlink

Unregistered / Unconfirmed
GUEST, unregistred user!
两个问题:
我做了个主界面,是mdiform,通过菜单调用各个不同的模块,每个模块都以dll形式保存,调用后以mdichild形式显示(无模式窗体),现在存在两个问题:
1、当mdichild关闭时,并没能释放这个dll;要把主界面关掉才能完全释放;
2、我其中的模块开发的时候都是单独开发的,然后改成dll,结果发现当模块1和模块2里面的form都叫做form1时,会发生同名导致无法同时创建的问题,我把其中一个改成其他名字的话,就没有问题,我现在不可能把所有的都去改名字,看有没有什么办法。

请大家帮忙。
 
两个问题:
我做了个主界面,是mdiform,通过菜单调用各个不同的模块,每个模块都以dll形式保存,调用后以mdichild形式显示(无模式窗体),现在存在两个问题:
1、当mdichild关闭时,并没能释放这个dll;要把主界面关掉才能完全释放;
2、我其中的模块开发的时候都是单独开发的,然后改成dll,结果发现当模块1和模块2里面的form都叫做form1时,会发生同名导致无法同时创建的问题,我把其中一个改成其他名字的话,就没有问题,我现在不可能把所有的都去改名字,看有没有什么办法。

请大家帮忙。
 
我劝你还是去改名吧,用一些有意义的名字,就不会有这样的问题了
 
要看你的mdichild是由一个dll创建的,还是每一个mdichild都由不同的dll创建的。
假设是由不同的dll创建的。
1.主程序定义一个消息 WM_XX,mdichild的destroy事件里发送这个消息postmessage();
然后主程序接收消息,在这个消息里判断是否释放dll,可以通过消息里带来的参数来释放
freelibrary(GetModelName(DLLName)).
2.改名字很简单,在主程序加载dll时可以传不同的参数给dll,dll根据这个参数给form重命名,但是现在是类名重复,应该只能重复改了。

如果是在一个dll里创建的话,就需要一个窗体列表来维护这个dll,mdichild关闭是窗体列表长度减一,主程序判断窗体列表长度为0时,就释放dll.
 
后退
顶部