H HNXXCXG Unregistered / Unconfirmed GUEST, unregistred user! 2008-03-07 #1 DLL封装了多个窗口对象<br>由主EXE动态调用<br>怎样做到当这个DLL封装的窗口全部关闭时,立即释放这个DLL?
X xifengge Unregistered / Unconfirmed GUEST, unregistred user! 2008-03-07 #2 在DLL里postmessage给主程序,在主程序里 freelib
L liyinwei Unregistered / Unconfirmed GUEST, unregistred user! 2008-03-07 #4 不用写代码了吧。<br>主程序设一个计数器<br>iShowCount: Integer;<br>每当打开新窗口就 Inc(iShowCount),每当DLL中的窗口关闭就 PostMessage 一个消息给主程序,<br>主程序收到消息就 Dec(iShowCount),当 iShowCount = 0 时就 FreeLibrary
不用写代码了吧。<br>主程序设一个计数器<br>iShowCount: Integer;<br>每当打开新窗口就 Inc(iShowCount),每当DLL中的窗口关闭就 PostMessage 一个消息给主程序,<br>主程序收到消息就 Dec(iShowCount),当 iShowCount = 0 时就 FreeLibrary
X xifengge Unregistered / Unconfirmed GUEST, unregistred user! 2008-03-08 #5 楼上的这样做可能有些小问题,就是有多个这样的DLL时主程序就要定义多个计数器了。<br>不如把计数器变量定义在DLL里,呵呵。
H HNXXCXG Unregistered / Unconfirmed GUEST, unregistred user! 2008-03-17 #8 EXE肯定比DLL释放晚些,也就是说在EXE中负责释放DLL.<br>EXE中窗体和句柄可以通过变量的方式传入DLL中,而DLL中的句柄不能往外传.<br>所以只要每次传递消息时将字参数或者长参数的传设定为DLL中窗体句柄就好了,另一个参数用来传递值信息就好了.
EXE肯定比DLL释放晚些,也就是说在EXE中负责释放DLL.<br>EXE中窗体和句柄可以通过变量的方式传入DLL中,而DLL中的句柄不能往外传.<br>所以只要每次传递消息时将字参数或者长参数的传设定为DLL中窗体句柄就好了,另一个参数用来传递值信息就好了.