怎样做向网络蚂蚁一样的拖放窗口

pino 2000-08-09 05:02:00
关键是拖放窗口要始终浮在所有窗口的最上面,而不管主窗口的位置。
要用多线程吗?
有演示的源代码最好,VCL也可以。
谢谢!
...全文
161 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yeah 2000-08-10
  • 打赏
  • 举报
回复
这个问题我已回答过我次,好像应该这样做:
Public
procedure Createparams(Var Params:TCreateParams);override;
...

procedure TFormDrop.Createparams(var Params:TCreateParams);
begin
Inherited CreateParams(Params);
With Params do
begin
EXStyle:=ExStyle or WS_EX_TOPMOST OR WS_EX_ACCEPTFILES or WS_DLGFRAME
wndParnet:=GetDesktopWindow; //关键一行,用SetParent都不行!!
end;
end;
如果要移动窗体,可参照以上的办法,处理WM_NCHITTEST消息。
mophy 2000-08-09
  • 打赏
  • 举报
回复
hehe, 直接设置为“总在最前”不就行了?
setwindowpos(form1.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE)
取消:
setwindowpos(form1.Handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE)
pino 2000-08-09
  • 打赏
  • 举报
回复
好像不行啊,关键是当主窗口被其他窗口覆盖的时候,拖放窗口也会失去浮在顶层的位置
「已注销」 2000-08-09
  • 打赏
  • 举报
回复
//创建始终浮在所有窗口的最上面的窗口
protected
procedure CreateParams(var Params: TCreateParams); override;
private
{ Private declarations }
procedure WMNCHITTEST(var Message:TMessage);Message WM_NCHITTEST;


//.......

{$R *.DFM}
procedure TForm1.WMNCHITTEST(var Message:TMessage);
begin
inherited;
if Message.Result = htClient then
Message.Result := htCaption;
end;
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style := WS_POPUP or WS_DLGFRAME;
Params.ExStyle := WS_EX_PALETTEWINDOW;
end;


//至于拖放处理,去下载个控件,http://vcl.vclxx.com/DELPHI/D32FREE/DRAGDROP.EXE,

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧