Winsnap




me tweaking.
VERSION 5.00
Begin VB.Form frmSnapTo
BorderStyle =0 'None
Caption ="Form1"
ClientHeight=1335
ClientLeft =0
ClientTop=0
ClientWidth =3660
LinkTopic="Form1"
ScaleHeight =1335
ScaleWidth =3660
ShowInTaskbar=0'False
StartUpPosition =3 'Windows Default
Begin VB.Timer tmrPos
Enabled =0'False
Interval=1
Left=120
Top =360
End
Begin VB.Label lblTop
BackColor=&H000000FF&
Caption ="Caption"
Height =255
Left=0
TabIndex=0
Top =0
Width=3720
End
End
Attribute VB_Name = "frmSnapTo"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
Dim iX As Integer, iY As Integer
Private Sub lblTop_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
iX% = X: iY% = Y
tmrPos.Enabled = True
End Sub

Private Sub lblTop_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
tmrPos.Enabled = False
End Sub

Private Sub tmrPos_Timer()
Dim ptPos As POINTAPI
Call GetCursorPos(ptPos)
lblTop.Caption = ptPos.X & " - " & ptPos.Y
If ptPos.Y - ((lblTop.Top + iY%) / Screen.TwipsPerPixelY) <= 20 Then ptPos.Y = 0 + ((lblTop.Top + iY%) / Screen.TwipsPerPixelY)
If ptPos.X - ((lblTop.Left + iX%) / Screen.TwipsPerPixelX) <= 20 Then ptPos.X = 0 + ((lblTop.Left + iX%) / Screen.TwipsPerPixelX)
If ptPos.Y - ((lblTop.Top + iY%) / Screen.TwipsPerPixelY) >= (Screen.Height - Me.Height - 400) / Screen.TwipsPerPixelY - 20 Then
ptPos.Y = (Screen.Height - Me.Height + iY% - 400) / Screen.TwipsPerPixelY
End If
If ptPos.X - ((lblTop.Left + iX%) / Screen.TwipsPerPixelX) >= (Screen.Width - Me.Width) / Screen.TwipsPerPixelX - 20 Then
ptPos.X = (Screen.Width - Me.Width + iX%) / Screen.TwipsPerPixelX
End If
Me.Top = (ptPos.Y * Screen.TwipsPerPixelY) - lblTop.Top - iY%
Me.Left = (ptPos.X * Screen.TwipsPerPixelX) - lblTop.Left - iX%
End Sub

' Name: Real Window Snap to

' Description:This code produces a snap to effect exactly like Winamp.

Uses POINTAPI Type and GetCursorPos API.
It gets the current x and y does a few calculations and snaps-to the screen edge.
It does take into account For the taskbar but that may need so










( winsnap.html )- by Paolo Puglisi - Modifica del 17/12/2023