调用DLL窗体的问题(100分)

  • 主题发起人 主题发起人 RJU
  • 开始时间 开始时间
R

RJU

Unregistered / Unconfirmed
GUEST, unregistred user!
&nbsp;调用DLL中的窗体在主窗体中的一个PANEL中显示,<br>&nbsp; DLL中的接口函数如下,创建窗体的句子是<br>&nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; &nbsp; MYFORM:=TFORM.CREATE(NIL);//注意 没有SHOW<br>&nbsp; &nbsp; &nbsp; Result:=myform.Handle;<br><br>&nbsp; 发现,DLL创建的窗体会马上SHOW出来。本来打算是先SetParent然后再SHOW出来的,结果窗体马上SHOW出来,造成界面很闪烁。<br>&nbsp; &nbsp; &nbsp;不知道是何原因,应该如何解决
 
何不用Frame呢
 
有好处吗,我立刻试试
 
这样做<br>写一个函数比如是 SHOWFORM<br>在函数体中,创建FORM.<br>然后呢将SHOWFORM导出.<br>这样就行了.
 
问题是这样。<br>在DLL中创建窗体,返回这个窗体的句柄,我想拿到句柄之后对窗体做一些处理,然后再SHOW出来。但是现在调试发现,只要在DLL中创建窗体之后,窗体就马上自己SHOW了处理,用什么方法可以做到:在DLL中创建窗体(没有PARENT),这个窗体创建后不自动SHOW?<br><br>有大侠遇到过同样的情况吗?
 
TFORM.CREATE(NIL)?<br>nil?<br>Application
 
MYFORM:=TFORM.CREATE(NIL);//注意 没有SHOW<br>那可否加 myform.hide;<br>&nbsp; &nbsp; &nbsp; Result:=myform.Handle;
 
onlyonekgx:<br>&nbsp; &nbsp;这样做的效果是一样<br><br>Aiirii<br>&nbsp; &nbsp;不能,因为HIDE之前它已经SHOW了一次!!
 
在FORM的CREATE事件中将FORM的是否可视属性设置为FALSE。
 
我想知道,调用DLL窗体的时候,在什么情况下,窗体只要CREATE,它就自动SHOW??<br><br>吹成大富翁:<br>&nbsp; &nbsp;因为这个DLL将交给别人写,设置属性VISEABLE=FALSE不理想
 
当你创建的窗体没有Owner时,可能会马上SHOW出(没有测试过)<br>窗体的Create事件相当于用API注册窗口类.它并不负责窗口的显示与否.DELPHI可能替用户想的太周到了..<br>在CREATE事件中将VISEABLE设置为FALSE是正确的做法.
 
吹成大富翁:<br>&nbsp; 谢谢,暂时考虑设置为非可视吧,主要问题是DLL是其它服务商提供,不是自行设计。<br>&nbsp; 另外,设置为非可视后,只知道窗体句柄如何设置它为可视?SHOWWINDOW好象不行。
 
根据窗体的句柄给它发个消息.应该是这样写的吧,记不太清楚了.<br>postmessage(AHander,WM_SHOW,0,0);AHander就是窗体的句柄.
 
此问题仍没有很好的解决,也结束了<br>谢谢吹成
 
后退
顶部