我估计是调Api函数查找指定的窗口,然后就把自己贴上去。

解决方案 »

  1.   

    经典技术问题!
    方法很多,最简单的拦截WM_MOVE消息!
    去google.com,输入"磁性窗体 DELPHI"可以找到大量资料!
      

  2.   

    Winamp风格的磁性窗体
    拦截WM_MOVE消息即可type  TForm1 = class(TForm)  private  procedure WMMOVE(var Msg: TMessage); message WM_MOVE;  end;var  Form1: TForm1;implementation{$R *.DFM}{ TForm1 }procedure TForm1.WMMOVE(var Msg: TMessage);begin  Inherited;  if (Left < 10) and (Top < 10) and   (Left <> 0) and (Top <> 0) then // 设定移动到左上角 10 点范围内时贴到边上去  begin  Left := 0;  Top := 0;  Msg.Result := 0;  end;end;end.  
      

  3.   

    谢谢各位,不过我说的不是像WINAMP那种和屏幕边缘吸附的,而是那种像CUTEFTP PRO或是VC6那样,移到屏幕中间就成为独立的MDI子窗体,放到主窗体边上就和主窗体融为一体的,就是有一点类似于CoolBar的效果的那种。
      

  4.   

    这个!先设置停泊区,把一个TWinControl的子类控件的DockSite设置为True.再设置一个可停泊对象,DragKind为dkDock,DragMode为dmAutomatic!如果可停泊对象不是TWinControl的子类,还需要设置FloatingDockSiteClass!
    记住几个事件!
    OnGetSiteInfo,OnDockOver,OnDockDrop,OnUnDock!
      

  5.   

    记住OnGetSiteInfo事件中的的CanDock表示是否接收停泊对象!而类似吸附的效果通过坐标判断是否可停泊即可!