刚试了下,想在按win+D也仍然显示在桌面上.....难<br><br>如果设置窗体永远在最前可以办到,但是设置窗体始终在最下时,哪个方法却不行<br><br>找原来的资料没有线索,自己想了想,找到个凑合能用的方法:<br>在一般情况下,按win+d 或则显示桌面按钮,或者最小化都仍然显示<br>但是,如果当前焦点是桌面,或者桌面上的图标就不行了<br>关键是win+d 或者显示桌面 似乎并没有发什么消息,只是重画了下桌面,然后把焦点给桌面而已<br><br> TForm1 = class(TForm)<br> ApplicationEvents1: TApplicationEvents;<br> private<br> { Private declarations }<br> Procedure CreateParams(var Params: TCreateParams);OverRide;<br> procedure SetPos(var msg: TWMWINDOWPOSCHANGED); message WM_WindowPosChanging;<br> public<br> { Public declarations }<br> end;<br><br>var<br> Form1: TForm1;<br><br>implementation<br><br>{$R *.dfm}<br><br>procedure TForm1.SetPos(var msg: TWMWINDOWPOSCHANGED);<br>begin<br> msg.WindowPos.hwndInsertAfter:=1;<br>end;<br><br>Procedure Tform1.CreateParams(var Params: TCreateParams);<br>var<br> h:hwnd;<br>Begin<br> inherited;<br> //关键是下面这2句<br> h:=findwindow(nil,'Program Manager');<br> params.WndParent:=h;<br>end;