VB如何实现拖动窗体吸附到桌面边缘?

来源:百度知道 编辑:UC知道 时间:2024/07/07 01:37:21
跟变速齿轮的效果完全一样就行了~
1、鼠标拖动时窗体跟随鼠标移动,而不是显示随动的虚线框
2、靠近桌面边缘时能自动吸附
就这两个问题~网上搜了很多代码都不尽人意~
希望高手们教教路~VB是自学的,所以表嫌弃偶笨_| ̄|●
最好能把声明啊代码啊稍微解释一下啊~谢谢鸟~
分不够可再加点o(≥ω≤)o

'在窗体上增加timer1控件,然后复制下面代码并运行,即可看到效果
'========代码部分=========
Option Explicit

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
Dim p As POINTAPI
Dim maymove As Boolean, dx As Integer, dy As Integer

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST = -1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1

Private Sub Form_Load()
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
Timer1.Interval = 100
Timer1.Enabled = True
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If (Button = 1) Then '