文创资讯网
当前位置:首页 > 图说天下 > Delphi窗口置顶及非主窗口置顶_setwindowpos窗口置顶 > 正文

Delphi窗口置顶及非主窗口置顶_setwindowpos窗口置顶

来源:新浪博客 2017年02月13日 热度: °c

摘要:窗口置顶setwindowpos(self.handle,HWND_TOPMIOST,0,0,0,0,SWP_NOMOVEorSWP_NOSIZE);//窗口置顶setwindowpos(self.handle,HWND_NOTOPMIOST,0,0,0,0,SWP_NOMOVEorSWP_NOSI...

 

窗口置顶

setwindowpos(self.handle,HWND_TOPMIOST,0,0,0,0,SWP_NOMOVE  or  SWP_NOSIZE);//窗口置顶

setwindowpos(self.handle,HWND_NOTOPMIOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE);//取消窗口置顶

 

非主窗口置顶(来与网络)

在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也可以实现将窗口置前的效果

阅读排行

编辑推荐

专题推荐

Copyright © 2015 文创资讯网 setwindowpos窗口置顶 All rights reserved.