如何使一个窗体始终在其他窗体的前面(包括其他软件的窗体)(100分)

  • 主题发起人 主题发起人 delphi98
  • 开始时间 开始时间
D

delphi98

Unregistered / Unconfirmed
GUEST, unregistred user!
How to Always on top.
 
Form都有AlwaysOnTop的属性,在formstyle中选择.
 
Form1.FormStyle
 
用formstyle属性设为AlwaysOnTop
 
把formstyle属性设为AlwaysOnTop<br>我也来分一份 :)
 
把Form属性FormStyle设为ALWAYSONTOP.<br>显示其他窗体时最好用ShowModal 方法<br><br>
 
把formstyle属性设为AlwaysOnTop好象只对自己的程序有用,对别的程序呢? &nbsp; &nbsp; &nbsp; &nbsp; <br>
 
用API函数SetWindowPos可以将任何窗体设置成为TopMost窗体, 即AlswaysOnTop:<br><br>function SetWindowPos(hWnd: HWND; hWndInsertAfter: HWND;<br>&nbsp; X, Y, cx, cy: Integer; uFlags: UINT): BOOL; stdcall;<br><br>其中:<br>&nbsp; hWnd: 窗体的 handle (参见已答问题如何得到窗体的handle)<br>&nbsp; hWndInsertAfter: 设置为 HWND_TOPMOST<br>&nbsp; 其他信息可以用 GetWindowPlacement 函数得到<br><br>function GetWindowPlacement(hWnd: HWND; WindowPlacement: PWindowPlacement): BOOL; stdcall;<br><br>&nbsp; PWindowPlacement = ^TWindowPlacement;<br>&nbsp; {$EXTERNALSYM tagWINDOWPLACEMENT}<br>&nbsp; tagWINDOWPLACEMENT = packed record<br>&nbsp; &nbsp; length: UINT;<br>&nbsp; &nbsp; flags: UINT;<br>&nbsp; &nbsp; showCmd: UINT;<br>&nbsp; &nbsp; ptMinPosition: TPoint;<br>&nbsp; &nbsp; ptMaxPosition: TPoint;<br>&nbsp; &nbsp; rcNormalPosition: TRect;<br>&nbsp; end;<br>
 
用SetWindowPos和设置Form1.FormStyle都只能使<br>主窗体实现AlwaysOnTop,如果不是主窗体呢?<br>
 
Use Windows API:<br>&nbsp;Method 1:<br>&nbsp; &nbsp;BringWindowToTop(...);<br>&nbsp;Method 2:<br>&nbsp; &nbsp;SetForegroundWindow(...);
 
try AlwaysOnTop()
 
非主窗体设置成StayOnTop后只在本程序的多个窗体的最前面, 其他APP的窗体还是能<br>够到它的前面来的. 可以将主窗体和子窗体都设成StayOnTop or TopMost, 则子窗<br>体就会保持在最前面.<br><br>把你的要干点什么说一说, 大家讨论一下有没有变通方法
 
我是要给一个软件加一个定时提醒功能,软件的主程序别人已经做好,<br>如果没有好办法,只能另做一个EXE了.<br><br>谢谢各位
 
干吗一定要用窗体呢?<br>在状态蓝里面加入不是更好吗!<br>
 
放在状态蓝里不是太醒目,而且状态栏有的人喜欢设为自动隐藏.<br>
 
就这样吧.<br><br>谢谢各位.:)
 
多人接受答案了。
 
后退
顶部