如何使程序窗口永远在windows最前面(不被其他窗口挡住)

dghrkj 2006-03-31 11:00:36
如何使程序窗口永远在windows最前面(不被其他窗口挡住)
form要如何设置?
...全文
517 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuteant 2006-03-31
  • 打赏
  • 举报
回复
转载一点:
------------------

昨天在DFW上看到一个问题,要求“使程序窗口置于最低层(在桌面上);点击“显示桌面”以后还是在桌面上”,琢磨了一下,实现了“让窗体在执行了‘显示桌面’以后仍旧显示在桌面上”,代码如下:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;

type
TForm1 = class(TForm)
private
{ Private declarations }
procedure WndProc(var Message: TMessage); override; // 重载
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WndProc(var Message: TMessage);
var
WndPosFlag: Integer;
begin
if Message.Msg = WM_SHOWWINDOW then
begin
if Message.WParam = 0 then
begin
Exit;
end;
end;
inherited;
end;

end.

可是。。。。。。有个前提:窗体属性 FormStyle = fsStayOnTop 这个不可省。。。所以不能呆在所有窗体最后

spy++跟了半天,还是没想明白为什么FormStyle属性为fxNormal的时候WM_SHOWWINDOW消息在程序里就截不到。。。而断点调试时能截到第一次,后面也再截不到了,神奇
不管FormStyle为什么程序明明都收到了WM_SHOWWINDOW消息的(而且消息值也都相同)

汗ing.....
Dlwxn 2006-03-31
  • 打赏
  • 举报
回复
永远是不可能的,formCreat中
SetWindowPos(FrmMain.Handle,HWND_TOPMOST,1,1,1,1,SWP_NOMOVE or SWP_NOSIZE or SWP_SHOWWINDOW)

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧