初级问题啊,使程序窗口置于最低层(在桌面上) ( 积分: 50 )

  • 主题发起人 主题发起人 linfinder
  • 开始时间 开始时间
L

linfinder

Unregistered / Unconfirmed
GUEST, unregistred user!
使程序窗口置于最低层(在桌面上);<br> &nbsp; &nbsp;点击“显示桌面”以后还是在桌面上。<br><br>procedure Chivato(var m: TWMWINDOWPOSCHANGED);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; message WM_WindowPosChanging;<br><br>procedure TForm1.Chivato(var m: TWMWINDOWPOSCHANGED);<br>begin<br> &nbsp;m.WindowPos.hwndInsertAfter:=HWND_BOTTOM;<br>end;<br><br>使用上面的代码,点击了快捷栏丽的”显示桌面“后也会消失,我想知道怎么在点击了”显示桌面“后还是显示在桌面上。谢谢了~
 
使程序窗口置于最低层(在桌面上);<br> &nbsp; &nbsp;点击“显示桌面”以后还是在桌面上。<br><br>procedure Chivato(var m: TWMWINDOWPOSCHANGED);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; message WM_WindowPosChanging;<br><br>procedure TForm1.Chivato(var m: TWMWINDOWPOSCHANGED);<br>begin<br> &nbsp;m.WindowPos.hwndInsertAfter:=HWND_BOTTOM;<br>end;<br><br>使用上面的代码,点击了快捷栏丽的”显示桌面“后也会消失,我想知道怎么在点击了”显示桌面“后还是显示在桌面上。谢谢了~
 
TForm1 = class(TForm)<br> &nbsp;protected<br> &nbsp; &nbsp;procedure CreateParams(var Params: TCreateParams); override;<br> &nbsp;end;<br><br>procedure TForm1.CreateParams(var Params: TCreateParams);<br>begin<br> &nbsp;inherited;<br> &nbsp;Params.WndParent &nbsp;:= &nbsp;GetDesktopWindow;<br>end;<br>//好象是GetDesktopWindow,反正就是让桌面成为你的窗口的父窗口,这样显示桌面命令就不会理你的窗口了
 
不行啊,实现不了,我要的效果是,窗口好像是桌面的图标一样,嵌在桌面上的。
 
嵌在桌面上应该不行,只能浮在桌面上,位于其它应用程序的下方,但一定高于桌面,会把桌面图标盖住的
 
对,我就是要这样的效果,但是你给我的代码,实现不了这个功能啊。
 
params.WndParent:=0;
 
unit Unit1;<br><br>interface<br><br>uses<br> &nbsp;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;<br><br>type<br> &nbsp;TForm1 = class(TForm)<br> &nbsp;private<br> &nbsp; &nbsp;{ Private declarations }<br> &nbsp; &nbsp;procedure WndProc(var Message: TMessage); override; &nbsp;// 重载<br> &nbsp;public<br> &nbsp; &nbsp;{ Public declarations }<br> &nbsp;end;<br><br>var<br> &nbsp;Form1: TForm1;<br><br>implementation<br><br>{$R *.dfm}<br><br>procedure TForm1.WndProc(var Message: TMessage);<br>var<br> &nbsp;WndPosFlag: Integer;<br>begin<br> &nbsp;if Message.Msg = WM_SHOWWINDOW then<br> &nbsp;begin<br> &nbsp; &nbsp;if Message.WParam = 0 then<br> &nbsp; &nbsp;begin<br> &nbsp; &nbsp; &nbsp;Exit;<br> &nbsp; &nbsp;end;<br> &nbsp;end;<br> &nbsp;inherited;<br>end;<br><br>end.<br>测试可以永远呆在桌面上!可是。。。。。。有个前提:窗体属性 FormStyle = fsStayOnTop 这个不可省。。。所以不能呆在所有窗体最后
 
我想要的是就贴在桌面上啊,,我知道《天气桌面秀》和《雪狐迷你钟》都可以做到这一点啊.,哪位高手帮帮我啊~。
 
spy++跟了半天,还是没想明白为什么FormStyle属性为fxNormal的时候WM_SHOWWINDOW消息在程序里就截不到。。。而断点调试时能截到第一次,后面也再截不到了,神奇<br>不管FormStyle为什么程序明明都收到了WM_SHOWWINDOW消息的(而且消息值也都相同)[:(]
 
我也跟踪了,就是没结果。
 
继续啊,不要沉啊,哪位大哥帮帮我啊。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部