怎么把一个非模式窗口始终显示在主窗体前面? ( 积分: 100 )

  • 主题发起人 主题发起人 man8888
  • 开始时间 开始时间
M

man8888

Unregistered / Unconfirmed
GUEST, unregistred user!
1、别告诉我设置StayOnTop属性,这个不管用。<br>2、用SetWindowsPos也好像不管用。<br><br>注:当运行多个程序时似乎正常,但是桌面上只运行你的程序的时候ALT+TAB后就跑后面去了,代码:<br>TForm1.Button1Click(Sender:TOBject);<br>begin<br>&nbsp;&nbsp;Form2.Show;<br>end;<br>当Windows桌面上只运行这一个程序的时候用ALT+TAB切换到弹出的窗口上,再点主窗口,再ALT+TAB切换回去后这个窗口就跑主窗口的后面去了,再也无法显示出来!
 
子窗体用<br>&nbsp;&nbsp;TForm2&nbsp;=&nbsp;class(TForm)<br>&nbsp;&nbsp;protected<br>&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;CreateParams(var&nbsp;Params:&nbsp;TCreateParams);&nbsp;override;<br>&nbsp;&nbsp;end;<br><br>procedure&nbsp;TForm2.CreateParams(var&nbsp;Params:&nbsp;TCreateParams);<br>begin<br>&nbsp;&nbsp;inherited;<br>&nbsp;&nbsp;if&nbsp;Owner&nbsp;is&nbsp;TWinControl&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;Params.WndParent&nbsp;&nbsp;:=&nbsp;&nbsp;TWinControl(Owner).Handle;<br>end;<br><br><br>主窗体用<br>TForm1.Button1Click(Sender:TOBject);<br>begin<br>&nbsp;&nbsp;From2&nbsp;:=&nbsp;TForm2.Create(self);<br>&nbsp;&nbsp;Form2.Show;<br>end;
 
MoveWindows(0,0,HWND_TOPMOST&nbsp;or&nbsp;nosize等&nbsp;参见&nbsp;Delphi-&gt;Help-&gt;Windows&nbsp;SDK);
 
哈哈,高手啊!真好使,ysai,不过有点小问题:<br>当把这个窗口和主窗口全部最小化后再点子窗口,那么主窗口再也无法显示,除非把子窗口关闭。<br>怎么改正这个问题啊?
 
我喜欢用键盘hook,遇到按键就把窗口SetFocus
 
问题解决了,在Form2的OnResize事件里写Application.Restore就可以了,谢谢。
 
后退
顶部