Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten
Autor
Nachricht
kokaiin_
Tutorial Leser
Tutorial Leser

Anmeldedatum: 03.01.2008
Beiträge: 36

Rahmenlose Form verschieben
Verfasst am: 22.04.2008, 21:14

Wie ihr seht hat diese Form keinen Rahmen, ich möchte aber das wenn man in den Rot markierten Bereich klickt das Fenster verschieben kann.
Also wie bei einer ganz normalen Form mit Rahmen.
Würde das ganze über ne imagebox regeln, dazu fehlt mir aber leider der Befehl.

 
Marduk_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 17.06.2007
Beiträge: 389


Verfasst am: 22.04.2008, 22:23

Code:
Public difference As Drawing.Point

    Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
        difference.Y = MousePosition.Y - Me.Location.Y
        difference.X = MousePosition.X - Me.Location.X
        'Differenz zum Formursprung wird berechnet(bleibt konstant)
        'Timer wird gestartet
        Time.Interval = 10
        Time.Enabled = True
        Time.Start()

    End Sub

    Private Sub Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Time.Tick
        Dim newpoint As Drawing.Point = Nothing
        Dim mouse As Drawing.Point = MousePosition 'aktuelle Mausposition
        'von der Mausposition wird mit der Differenz die neue Formlocation berechnet
        newpoint.X = mouse.X - difference.X
        newpoint.Y = mouse.Y - difference.Y

        Me.Location = newpoint
    End Sub

    Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
        Time.Stop()
        Time.Enabled = False

    End Sub



Ist zwar .NET, aber das Prinzip ist das gleiche. Du brauchst dazu noch einen Timer auf der Form.
 
exe-cute_
Poster
Poster



Anmeldedatum: 21.10.2007
Beiträge: 154


Verfasst am: 22.04.2008, 22:41

Hier eine einfachere lösung.
Code:
Public Declare Function ReleaseCapture Lib "User32" () As Long
Public 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 MoveForm(ByVal lHandle As Long)
    ReleaseCapture
    Call SendMessage(lHandle, &HA1, 2, 0)
End Sub


Und so wendest du die Funktion an:
Code:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    MoveForm Me.hwnd
End Sub
 
kokaiin_
Tutorial Leser
Tutorial Leser

Anmeldedatum: 03.01.2008
Beiträge: 36


Verfasst am: 22.04.2008, 22:44

Boahhh, vielen Dank für die Hilfe!

//edit:

Habs jetzt folgendermaßen gelöst:

Ich habe ein Modul erstellt und folgenden code für das Modul benutzt:

Code:
Declare Function SendMessage Lib "User32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam _
As Long, lParam As Any) As Long
Declare Sub ReleaseCapture Lib "User32" ()
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HTCAPTION = 2


In die Form habe ich dann folgendes geschrieben:

Code:
Private Sub Image5_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single)
Dim ReturnValue As Long
If Button = 1 Then
Call ReleaseCapture
ReturnValue = SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End If
End Sub


Image5 ist die Imagebox die jetzt auf dem rot markierten Bereich liegt (siehe 1. Post) !!!

Nochmal vielen Dank für die schnelle Hilfe!
 
socx_
Newbie
Newbie

Anmeldedatum: 19.09.2007
Beiträge: 4


Verfasst am: 23.04.2008, 11:01


Private Sub Image5_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single)

FormDrag Me

End Sub



ist auch ne möglichkeit Wink
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten

Tags: fenster verschieben, form, befehl

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Frage über mein game 237 25.09.2011, 17:33
Keine neuen Beiträge Wie bringe ich mein Programm dazu, auf Return zu reagieren? 620 24.12.2009, 15:42
Keine neuen Beiträge Nicht der ganze Queltext?? Warum 874 10.03.2009, 12:32
Keine neuen Beiträge ListView ganze Reihe markieren 622 27.03.2008, 23:32
Keine neuen Beiträge "Schließen"-drücken und das ganze Programm beenden 1011 16.11.2007, 14:47
 


[ Time: 0.0663s ][ Queries: 92 (0.0251s) ][ GZIP on - Debug on ]