H Heado Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-24 #1 如何实现窗口自吸附功能.如winamp和phtoshop中的窗口
L lczhuohuo Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-24 #2 只要判断一下两个窗口的位置,如果距离靠近到一定程度,例如小于5像素, 就用一个标志(boolean变量)表示两个窗体应该贴在一起,编写一个主窗体 的移动的事件,然后在这个事件中随之改变吸附窗体的位置就可以了,当标志 为真的时候,这个事件处理程序起作用.
只要判断一下两个窗口的位置,如果距离靠近到一定程度,例如小于5像素, 就用一个标志(boolean变量)表示两个窗体应该贴在一起,编写一个主窗体 的移动的事件,然后在这个事件中随之改变吸附窗体的位置就可以了,当标志 为真的时候,这个事件处理程序起作用.
S SuperMMX Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-24 #3 应该对移动的窗口处理鼠标动作, 有一个疑问,当移开时,怎么知道是要离开? 不然它会一直附在其上。
C Chenlili Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-24 #4 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; 大概是这样,自己多试试吧!!
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; 大概是这样,自己多试试吧!!
H Heado Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-24 #5 我怎么没有找到窗口的移动事件(OnFormMove)?
C cAkk Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-25 #7 No,WMWindowPosChanged时已经移动了. 应该响应WM_Moving消息,该消息的lParam参数是一个PRECT类型, 指示当前虚线框的RECT,然后自己判断并修改lParam即可