如何将窗口从后台切换到前台?(100分)

  • 主题发起人 主题发起人 kucio
  • 开始时间 开始时间
K

kucio

Unregistered / Unconfirmed
GUEST, unregistred user!
我欲使我的程序在一定条件下能自动从后台切换到前台,于是我在timer1的<br>timer事件中使用了以下代码:<br>&nbsp; &nbsp;SetForegroundWindow(form1.handle);<br>在win95下一切正常,但在win98下窗口只是在windows的状态栏上闪烁,并没有<br>真正切换到前台,请各位大虾指点.
 
SetwindowPos行不行?
 
sendmessage(form1.handle,wm_syscommand,sc_restore,0);
 
先把它最小化,再restore<br>就是hubdog的了。
 
agree supermmx
 
Application.BringToFront 就可以了
 
上面各位说的方法在WIN98下都不能实现,据说有一个未公开的API函数<br>SwitchToThisWindow(wnd:HWND)就是纠正这个BUG的。<br><br>其实很简单,FormStyle:=fsStayOnTop就可以了。<br>处理完后再FormStyle:=fsNormal;
 
SwitchToThisWindow在哪个DLL里? 怎么写声明?
 
你自己DUMP一下User32.dll就看到了。
 
To cAkk:<br>&nbsp; &nbsp;SetwindowPos恐怕不行吧,没有合适的参数呀.<br>To o*o:<br>&nbsp; &nbsp;SwitchToThisWindow我试过了,不行,和SetForegroundWindow效果一样.<br>To hubdog:<br>&nbsp; &nbsp;你的方法虽行,但不适用我的程序,因为我的主窗口是隐藏的,要求切换到前台后<br>仍是隐藏的(原因是我要在桌面上弹出一菜单,但如果该菜单的宿主窗口如果不在前<br>台,则该菜单不选择就不会消失.)<br><br>我有一个想法,不知行不行,既然win95下的SetForegroundWindow函数可以将一个<br>隐藏的窗口切换到前台,那我们能不能将那个函数移植到win98下?<br><br>另外,在我的程序中使用了一个状态栏图标,在右键单击图标后弹出菜单前执行的<br>SetForegroundWindow(form1.handle);<br>却可以将该隐藏窗口切换到前台,不知为何?请各位指教.
 
定时弹出一个菜单?
 
当然不是定时,弹出菜单前还有一些判断语句。<br>&nbsp;<br>
 
多人接受答案了。
 
后退
顶部