]、。·ˉˇ¨〃々—~‖…’”〕〉》」』〗】∶!"'),.:;?]` 我用了SetWindowPos函数,窗体是启动的主窗体时,就可以。
但是如果窗体是在另一个窗体中通过form.show方法显示出来时,怎么也不行了。
原因是什么呢?
/////////////////////////
方法一:
先setforegroundwindow(HWND);然后再setwindowpos(form2.Handle,HWND_TOPmost,10,10,200,300,SWP_SHOWWINDOW );
////////////////////////
方法二:
关键技术是重载Form的CreateParams方法
{form2 code}
public
procedure CreateParams(Var Params:TCreateParams);override;
uses unit1;
procedure tform2.CreateParams(var Params:TCreateParams);
begin
inherited;
With Params do
begin
wndParent:=GetDesktopwindow;
ExStyle:=ExStyle or WS_EX_TOPMOST;
end;
end;
procedure TForm2.FormClose(Sender :TObject;var Action:TCloseAction);
begin
Form1.show;
ShowWindow(Application.handle,sw_show);
end;
{Form1}
uses unit2;
procedure TForm1.Button1Click(Sender:TObject);
begin
with tform2.create(self) do show;
hide; {Hide Form1}
ShowWindow(Application.handle,sw_hide); {Hide Application}
end;