首页  编辑  

窗体始终置于最前但不是主窗体

Tags: /超级猛料/VCL/Form,窗体/FAQ/   Date Created:

]、。·ˉˇ¨〃々—~‖…’”〕〉》」』〗】∶!"'),.:;?]` 我用了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;