请问怎么让程序最小化时,在桌面留一个窗体不最小化。。。(50分)

  • 主题发起人 主题发起人 asaili
  • 开始时间 开始时间
A

asaili

Unregistered / Unconfirmed
GUEST, unregistred user!
是这样的:
程序有两个窗体,主程序最小化时,我想让一个还留在桌面上
请问怎么做?
 
就像网络蚂蚁那样的浮动窗体
 
可不可以直接用窗体的属性呢?
设置主窗体为最小化,第二窗体为normal。
 
结果主窗体最小化时,第二窗体也最小化了
 
这样好象是不行的,违背了规则。
 
//BorderStyle:=bsNone;
//FormStyle:=fsStayOnTop;
procedure TForm2.CreateParams(var Params:TCreateParams);
begin
inherited;
with Params do
begin
Style:=Params.Style xor WS_DLGFRAME;
WndParent:=0; end;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
Width:=36;
Height:=36;
SetWindowLong(Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
end;
 
to zhai_xin:你的方法不成功

我不是高手,但我想,那个浮动的窗口会不会就是主窗口呢?
 
怎么不成功?
我试过了,不过我没有加拖动的代码;
你要show Form2,才可以看到它,他不会因为form1的最小化而最小化,你可以在form2中
添加拖动的代码,就会像flashget的悬浮窗了,你要确信你的form2的create事件指到了上述
create代码
 
showwindow(Application.handle,sw_hide);
setwindowlong(application.handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);

From.width:=0;
From.height:=0;
showwindow(Application.Handle,SW_HIDE);
打開時這樣一下不就OK了麼
 
看看托盘方面的编程,隐藏窗体的BorderStyle:=bsNone,Application.Handle实际上是指
程序中主窗体的句柄,如果主窗体最小化了,另外一个也不会显示了。
 
主窗体不用管它,让子窗体formstyle=stayontop;(可能还要做些处理) 然后show出来就可以了,主窗体干什么是不会影响小窗口的.
 
多人接受答案了。
 
后退
顶部