http://blog.163.com/wang_qiming/blog/static/46437185200912025843204/

在Delphi中,非主窗体如何置顶 

2009-02-20 14:58:43|  分类: 小知识 |  标签: |举报 |字号 订阅

下载LOFTER客户端
 
 
在Delphi中,非主窗体如何置顶 SetWindowPos(Form1.Handle, HWND_TOPMIOST, Left, Top, Width, height, SWP_SHOWWINDOW)可以将窗口放在所有窗口的最前面,但是这仅对一个应用程序的主窗口有效,非主窗口只能在这个应用程序的内部被置前,但是其他应用程序的窗口仍然会盖住他。
  解决方法是将Form1的父窗口设为桌面,如:
procedure TForm1.CreateParams(var Params: TCreateParams);
begin   inherited;   with Params do   begin     WndParent := GetdesktopWindow();
  end; end;
但是这样会在进程管理器中的应用程序中多出一个Form1,怎样才能不让出现这个Form1了,其实解决方法很简单的,只需要将Form1的caption属性设为空就可以:Form1.Caption := '';
还有另外一种可以不用将Form1的父窗口设为桌面也可以置前,那就是在窗体创建置前调用 Application.NormalizeTopMosts; 然后再调用SetWindowPos也可以实现将窗口置前的效果