网络蚂蚁的拖放窗口实现 (50分)

  • 主题发起人 主题发起人 xxy888
  • 开始时间 开始时间
X

xxy888

Unregistered / Unconfirmed
GUEST, unregistred user!
类似网络蚂蚁的小窗口,以及foxmail的提示窗口是怎样实现的
 
其实那也是一个子窗体,当你的主程序窗体启动时,同时创建打开那个子窗体就可以了!
 
但是当主窗口最小化时,子窗口也会看不见,而网络蚂蚁的小窗口却看的到。
 
你把它设成ON TOP不就行了吗?
 
我来答好啦。
foxmail上面的滚动条是小龙自己做的,我虽然没有看到代码但是我想应该是使用的双缓冲
技术,而你说的netants当中的拖放窗口则比简单。
可以重载窗口的createparams方法,然后将wndparent设为0即可。
 
procedure TForm3.CreateParams(var Params:TCreateParams);
begin
inherited;
with Paramsdo
begin
Style:=Params.Style xor WS_DLGFRAME;
WndParent:=0;//此行
end;

end;

procedure TForm3.FormCreate(Sender: TObject);
begin
Width:=36;
Height:=36;
SetWindowLong(Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
end;
好早以前我写的代码,希望对您有些帮助。
 
Public
procedure Createparams(Var Params:TCreateParams);override;
...

procedure TFormDrop.Createparams(var Params:TCreateParams);
begin

Inherited CreateParams(Params);
With Paramsdo

begin

EXStyle:=ExStyle or WS_EX_TOPMOST OR WS_EX_ACCEPTFILES or WS_DLGFRAME
wndParnet:=GetDesktopWindow;
//关键一行,用SetParent都不行!!
end;

end;

 
多人接受答案了。
 
后退
顶部