|
| Autor |
Nachricht |
Marduk_ « Moderator »

Anmeldedatum: 17.06.2007 Beiträge: 389
|
Form verschieben ohne "Rand"
Verfasst am: 29.10.2007, 16:13 |
|
|
Hallo Leute,
hab mal wieder ein Problem. Hab mir so eine kleine Uhr gebastelt, die ständig OnTop da sein soll, also über allen Fenstern. Das klappt auch soweit. Zwecks Aussehen, hab ich die FormBorderStyle Eigentschaft auf None gestellt, also es gibt keinen Rahmen mehr. Das Problem dabei ist, dass ich jetzt die Form nicht mehr mit der Maus verschieben kann.
Hab mir schon gedacht, beim Mausklick sowas zu machen
[vb:1:780158b6d6]me.Location = e.Location[/vb:1:780158b6d6]
Also, dass die Form der Maus hinterherfährt. Das will aber nicht, es springt immer nur hinundher.
Hat da jemand ne andere Möglichkeit?
MfG
Marduk |
|
| |
|
 |
Viktor « Webmaster »

Anmeldedatum: 08.12.2006 Beiträge: 354 Wohnort: Berlin
|
Verfasst am: 29.10.2007, 16:23 |
|
|
| Code: | Public gapx As Single
Public gapy As Single
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
gapx = X
gapy = Y
End If
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Form1.Move Form1.Left + X - gapx, Form1.Top + Y - gapy
End If
End Sub
|
Ist aus dem Source vom DSK Trojaner.
Zuletzt bearbeitet von Viktor am 21.03.2008, 12:57, insgesamt einmal bearbeitet |
|
| |
|
 |
Marduk_ « Moderator »

Anmeldedatum: 17.06.2007 Beiträge: 389
|
Verfasst am: 29.10.2007, 23:22 |
|
|
Danke enco für den Vorschlag, aber der hat nicht richtig funktioniert, hab ihn dann noch mal umgeschrieben, aber die Form ist immer zwischen 2 Punkten hin und her gesprungen.
Hab jetzt ne neue Version mit einem Timer. Funktioniert eigentlich ganz gut.
| Code: | Private Sub Label1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseDown
Timer1.Enabled = True ' Timer wird gestartet
Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim position As System.Drawing.Point ' Ein Punkt mit den aktuellen Mauskoordinaten
position.X = Me.MousePosition.X ' wird angelegt
position.Y = Me.MousePosition.Y
Me.Location = position ' Form Location ist Mauslocation
End Sub
Private Sub Label1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseUp
Timer1.Stop() ' Stoppen
Timer1.Enabled = False
End Sub
|
Hab das ganze auf ein Label gelegt, damit man weiss wo man drücken kann.
Intervall auf 10ms gestellt und das ganze läuft flüssig durch |
|
| |
|
 |
Hamtaro_ « Moderator »

Anmeldedatum: 06.05.2007 Beiträge: 217 Wohnort: NRW
|
Verfasst am: 30.10.2007, 16:27 |
|
|
Also in VB6(schätze auch .NET) geht das mit der API so:
'#### APIs zum verschieben des Fensters
| Code: | Private Declare Function ReleaseCapture Lib "User32" () As Long
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Public Sub MoveWindow(ByVal lHandle As Long)
ReleaseCapture
Call SendMessage(lHandle, &HA1, 2, 0)
End Sub
Private Sub Form1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
MoveWindow Me.hWnd ' fenster verschieben
End Sub |
Wie findet ihr meine Sig? |
|
| |
|
 |
|
|