如何实现窗口自吸附功能如winamp和phtoshop中的窗口(30分)

  • 主题发起人 主题发起人 Heado
  • 开始时间 开始时间
H

Heado

Unregistered / Unconfirmed
GUEST, unregistred user!
如何实现窗口自吸附功能.如winamp和phtoshop中的窗口
 
只要判断一下两个窗口的位置,如果距离靠近到一定程度,例如小于5像素,
就用一个标志(boolean变量)表示两个窗体应该贴在一起,编写一个主窗体
的移动的事件,然后在这个事件中随之改变吸附窗体的位置就可以了,当标志
为真的时候,这个事件处理程序起作用.
 
应该对移动的窗口处理鼠标动作,
有一个疑问,当移开时,怎么知道是要离开?
不然它会一直附在其上。
 
1、假设现在主窗口和吸附窗口在一起
2、设定全局变量oldx,oly,xpos,ypos
3、OnCreate :
oldx := mainform1.x;
oldy := mainform1.y
4、OnFormMove:
xpos := x - oldx;
ypos := y - oldy;
oldx := x;
oldy := y;
3、根据吸附的位置设定公式(x*x+y*y=?)。当两个窗口的位置发生相对变化时。
将吸附窗口的 x :=x + xpos, y := y + ypos;
大概是这样,自己多试试吧!!
 
我怎么没有找到窗口的移动事件(OnFormMove)?
 
响应WMWindowPosChanged消息即可!
 
No,WMWindowPosChanged时已经移动了.

应该响应WM_Moving消息,该消息的lParam参数是一个PRECT类型,
指示当前虚线框的RECT,然后自己判断并修改lParam即可
 
多人接受答案了。
 
后退
顶部