请问怎样让一个窗体总是显示在另一个指定窗体的上面(100分)

  • 主题发起人 主题发起人 oisiv
  • 开始时间 开始时间
O

oisiv

Unregistered / Unconfirmed
GUEST, unregistred user!
我自己的程序中有一个窗体form2,当另外一个程序打开对话框时,form2就会弹出覆盖,
显示在该程序的界面之上,但当点击该程序其他位置时,form2就不在最上层即被该
应用程序的界面所覆盖。请问怎样让form2始终在这个应用程序界面之上?
 
Form属性中的FormStyle设置为StayOntop
 
把form的formstyle属性设为fsStayOnTop

或者
procedure TForm1.FormCreate(Sender: TObject);
begin
SetWindowPos(self.handle,HWND_TOPMOST,self.left,self.top,
self.width,self.height,SWP_NOMOVE);
end;
 
以上两种方法我也试过,但都没有达到效果,当显示桌面后在再从任务栏恢复程
序时form2就不见了。我试过用重载Createparams函数,其中
wndParent:=application.handle,但form2就总是浮在所有的程序上面,并不能单独
只浮在某应用程序上面。
 
>>当显示桌面后在再从任务栏恢复程序时form2就不见了
如果是VB开发的程序调用SetWindowPos就不会出现上面的情况,但DELPHI真的如上面所说,
解决方法是在一个Timer控件中隔很短时间就调用一次SetWindowPos,或者在应用程序的
OnMessage事件中调用它就行了。
 
真不行,也只有采用楼上的方法
 
真不知道有这么多的古怪要求,它有什么用?
用钩子 WH_CBT
 
多人接受答案了。
 
后退
顶部