请教:简单问题,与窗体创建及显示有关的(50分)

  • 主题发起人 主题发起人 gyang
  • 开始时间 开始时间
G

gyang

Unregistered / Unconfirmed
GUEST, unregistred user!
已知窗体的 Handle<br>如何单独创建这个窗体 及 单独显示(Show)这个窗体呢?<br>(创建是单独一个过程,显示也是一个单独的过程,也就是说这两步要单独完成)<br>窗体的TComponentClass不定,可能是任意TForm的继承类(可能是n层)
 
不明白,没创建哪来的handle<br>如果要问动态创建的话:<br>ex:<br>&nbsp; var<br>&nbsp; &nbsp;xx:tform;<br>begin<br>&nbsp; xx:=tform.create(nil);<br>&nbsp; xx.show;<br>end;
 
可能是我打字的时候打错了,不好意思<br>我是指,<br>从另一个已创建的窗体中(其它的EXE或DLL),得到了Handle<br>现在要显示这个窗体(不能用ShowWindow API),如何做到,最好还能返回来这个窗体的TComponentClass
 
不知道你有什么用?
 
exe我没使用过不太清楚<br>dll倒是使用过<br>dll的中的窗体模态与非模态的创建是不一样的,我不知道你是那类窗体<br>模态的话,和普通的设计时候一般使用就是我上面的那些代码类似<br>非模态具体可以这么使用:<br>application.handle:=dll中窗体的handle<br>显示窗体代码就可以<br><br>主要原因是dll自己也拥有一个独立的application对象
 
又如说<br>我得到了一个DLL或EXE程序的某个窗体的Handle<br>现在我要用那一个自己写的程序显示这个DLL或EXE上的这个窗体<br>(当然这个窗体已经创建过了,只是没有显示出来,)<br>应该说清楚了吧。。。。<br><br>还有一个小问题:<br>根据一个窗体的Handle,获得它的实例<br>如:vHandle := Form1.Handle;<br>目的:根据这个vHandle反回这Form1(Form1: TForm)
 
已经知道handle的窗体的话,用sendmessage,showwindow都可以
 
就是不想直接用API,用delphi自己的方法,有没有
 
如果说有API能直接解决为什么还用Delphi自己的方法呢?
 
.................晕,有api干什么不用,说白了不管什么方法都是调用api
 
如果是用API我就不能提问了
 
我宁愿用API,起码速度更快。<br><br>显示窗口<br>showwindow(handle,sw_show);<br><br>取得窗口类名<br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; s:array[0..127] of char;<br>begin<br>&nbsp; getclassname(handle,s,127);<br>&nbsp; showmessage(strpas(s));<br>end;
 
我不是要类名,是要类的实例
 
偶认为什么方法的最终都是调用API!<br>这不是同样的原理了吗!
 
如果考虑跨平台需要还是有一定实用意义的
 
多人接受答案了。
 
后退
顶部