五笔打字通主页
一个输入法,一般来说,是没有标题栏的,那么我们可以通过鼠标按下窗体其它空白处,或按下窗口上的某个控件来移动窗体。现在通过VB来移动一个无标题栏窗体。
原理是:通过计算计算鼠标移动后的位置,来计算窗体应该到达什么新的位置,并重新设置窗体的新位置来达到移动无标题栏窗口的目的。
很简单,没有多少源代码,先在窗体模块写入代码
Dim MoveScreen As Boolean’这个布尔型变量业决定是否可以移动窗体
Dim MousX As Integer'计录鼠标X位置
Dim MousY As Integer'计录鼠标Y位置
Dim CurrX As Integer'计录窗体X位置
Dim CurrY As Integer'计录窗体Y位置
然后,在窗体上画一个标签,在标签的MouseDown,MouseMove,MouseUp事件中写入下面的源码。
Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'如果是鼠标左键按下
If Button = 1 Then
'标示为移动状态
MoveScreen = True
'得到鼠标在窗体上的位置(相对与窗体内部坐标)
MousX = X
MousY = Y
End If
End Sub
Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'如果处于鼠标左键按下的状态,即MoveScreen = True时
If MoveScreen=True Then
'计算新的窗体坐标值
'仔细想一下,看看是不是这样
CurrX = Form1.Left - MousX + X
CurrY = Form1.Top - MousY + Y
'移动窗体到新的位置
Form1.Move CurrX, CurrY
End If
End Sub
Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
MoveScreen = False
End Sub
说明:
当鼠标左键在标签上按下,MoveScreen = True 说明可以移动窗体,并记下鼠标当时的位置
当鼠标在按下时并拖动,计算窗体的应该移动的坐标位置,并通过move方法移动到相应的位置
当鼠标左键在标签下抬起 MoveScreen = False 说明窗体移动中止。
编译并运行,用鼠标拖动标签1就可以移动这个窗体,是管它是不是有标题栏,都可以移动。
-----------------------
其实,你也可以把标签1的MouseDown,MouseMove,MouseUp事件代码写到窗体的MouseDown,MouseMove,MouseUp事件代码中去,这样,你就可以不用借标签1,而直接拖动窗体的来移动无标题栏的窗口了。
来源:济亨网
本文链接:http://wb86.com/post/19.html