Hallo VB’ler,
ich habe ein Coding, mit dem ich, egal wo ich aufs Form klicke, das Form verschieben kann. Ich weiss, dass es da auch die „SendMessage()-Variante“ gibt, möchte diese aber NICHT verwenden!!!
Prinzipiell funktioniert’s … nur wenn ich das Form verschiebe, „verwischt“ mir das System das Fenster d.h. ich ziehe so eine kleine „Fenster-Spur“ hinter mir her, und das sieht nicht besonders gut aus.
Je besser und schneller die Grafik-Karte bzw. das System, desto weniger „verwischt“ er mir - eh klar! Diverse „.Refresh“ und/oder „AutoRedraw=True,False“ haben leider keine Abhilfe geschaffen. Gibt es da einen kleinen API-Trick, ein Fenster „spuren-frei“ zu verschieben?!?
sanx from michL
PS: anbei mein Coding…
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private blnmMove As Boolean
Private xm As Single
Private ym As Single
'
'
Private Sub Form\_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
blnmMove = True
xm = X + (Me.Width - Me.ScaleWidth) / 2
ym = Y + (Me.Height - Me.ScaleHeight) / 2 + 150
End Sub
'
'
Private Sub Form\_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim p As POINTAPI
Call GetCursorPos(p)
If blnmMove Then
Call Me.Move(p.X \* Screen.TwipsPerPixelX - xm, p.Y \* Screen.TwipsPerPixelY - ym)
End If
End Sub
'
'
Private Sub Form\_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
blnmMove = False
End Sub