怎么关闭另一个用DLL作的子窗体? ( 积分: 100 )

  • 主题发起人 主题发起人 dataking
  • 开始时间 开始时间
D

dataking

Unregistered / Unconfirmed
GUEST, unregistred user!
我在写一个MDI程序,主窗体是一个EXE,几个子窗体是封装在各自的DLL中,我想在打开某一个DLL子窗体时,把另外的已经打开的DLL子窗体关闭,一直都没法实现,哪位大哥能帮忙指点一下小弟,谢了!
 
我在写一个MDI程序,主窗体是一个EXE,几个子窗体是封装在各自的DLL中,我想在打开某一个DLL子窗体时,把另外的已经打开的DLL子窗体关闭,一直都没法实现,哪位大哥能帮忙指点一下小弟,谢了!
 
你想在一个dll去关掉另一个dll的窗口这个问题很多办法<br>findwindow找到那个dll窗的句柄关掉它,这是系统的<br>也可以在主程序中写一个管理函数,然后使用回调的方法,让exe帮你关掉它
 
SendMessage(Handle, WM_CLOSE, 0, 0);<br>或<br>PostMessage(Handle, WM_CLOSE, 0, 0);<br>看看能关闭没?
 
我建议用主程序中写管理函数,通过exe联系关闭窗口,因为有时候findwindow找句柄不好使,比如,当dll窗体被重复打开,标题相同时,不知道要关哪一个。
 
To kinneng:我也想这么做,可否举个好的例子呀?谢了!
 
由主窗体来实现。
 
在dll的显示子窗体函数中返回指向窗体对象的指针,,并在主程序中保存,,在调用关闭函数时传入这个指针。<br><br> 大体就是如下这么写:<br>procedure show:pointer<br>begin<br>...<br>mdiform:=TMdiForm.create(application);<br>return:=pointer(mdiform);<br>end;<br><br>procedure close(mdi:pointer);<br>begin<br>...<br>TMdiForm(mdi).close;<br>TMdiForm(mdi).free;<br>end;
 
后退
顶部