怎么使程序中的多个非模式窗口同时置顶呢

如何使程序中的多个非模式窗口同时置顶呢
做了一个程序,主窗口form1,还有两个窗口form2,   form3

程序运行时需要将这三个窗口都作为浮动窗口显示在桌面上,操作其他软件也不会将这三个窗口遮盖。请问要如何来做呢?

现在在每个窗口的create事件中均调用

SetWindowPos(Handle,   HWND_TOPMOST,   0,   0,   0,   0,
                        SWP_NOMOVE   or   SWP_NOSIZE);

将其置顶;程序刚运行时还可以,但是如果点击了form2或者form3窗口,这两个窗口就没有置顶的属性了,在点击其他软件,这两个窗口就跑到后面去了,看不见了。

请问大家,我还要注意什么,如何做呢

大家可以做个简单的demo试试

------解决方案--------------------
将他们放在一个大窗口里怎么样?
procedure TForm1.Button2Click(Sender: TObject);
begin
FormStyle := fsStayOnTop;
with (TForm.Create(Self)) do
begin
Parent := Self;
Show;
end;
with (TForm.Create(Self)) do
begin
Parent := Self;
Show;
end;
end;
------解决方案--------------------
如上,只要把窗体的FormStyle改为fsStayOnTop就可以了
还有另外一个办法就是可以用ShowModal,这个需要修改修改窗体的内在信息,使之在模式状态下不堵塞,比较麻烦!
------解决方案--------------------
举一个简单例子,有两个窗体,form1,form2,form1是主窗体,form2动态生成,两个窗体同时出现,并处在最上...
D7,WINXP,测试通过..

工程文件:
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas ' {Form1},
Unit2 in 'Unit2.pas ' {Form2};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.


form1的
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
procedure CreateParams(var Params: TCreateParams);override;
end;

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
ExStyle := ExStyle Or WS_EX_TOPMOST or WS_EX_TOOLWINDOW ;
WndParent := GetDesktopWindow;
// WinClassName := MSGCENTER;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Left := 0;
form1.Top := 10;

form2 := TForm2.Create(nil);
Form2.Width := Screen.Width-Form1.Width;
Form2.Left := Form1.Width;
Form2.Top :=10;
Form2.Show;
end;

end.


form2的
unit Unit2;

interface

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

type
TForm2 = class(TForm)
private
{ Private declarations }
public
procedure CreateParams(var Params: TCreateParams);override;
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

{ TForm2 }

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
ExStyle := ExStyle Or WS_EX_TOPMOST or WS_EX_TOOLWINDOW ;
WndParent := GetDesktopWindow;//关键是这里
// WinClassName := MSGCENTER;
end;
end;

end.