Start / Tipps / VB.NET-Tipp 0045: Form ohne Titelleiste bewegen
 
Startseite Up-/Download Tutorials Club Das Team
Rubriken Foren Bücher Tips 'n Tricks Suche


VB.NET-Tipp 0045: Form ohne Titelleiste bewegen


Was tun mit einer Form ohne Titelleiste, wenn sie per Maus hin- und hergeschoben werden soll? Dieses Beispiel zeigt, wie man dieses Problem mit den zwei API-Funktionen SendMessage und ReleaseCapture elegant lösen kann.

Schwierigkeitsgrad 1 .NET Framework 1.0, .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5 Visual Basic 2002, Visual Basic 2003, Visual Basic 2005, Visual Basic 2008
Download des Beispielprojektes Download des Beispielprojektes [3,88 KB]
 
' Dieser Quellcode stammt von http://www.activevb.de
' und kann frei verwendet werden. Für eventuelle Schäden
' wird nicht gehaftet.

' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
' Ansonsten viel Spaß und Erfolg mit diesem Source!

' Projektversion:   Visual Studio 2002/2003
' Option Strict:    Aus
' Option Explicit:  An
'
' Referenzen: 
'  - System
'  - System.Data
'  - System.Drawing
'  - System.Windows.Forms
'  - System.XML
'
' Imports: 
'  - Microsoft.VisualBasic
'  - System
'  - System.Collections
'  - System.Data
'  - System.Drawing
'  - System.Diagnostics
'  - System.Windows.Forms
'

' ##############################################################################
' ################################# Form1.vb ###################################
' ##############################################################################
Public Class Form1
    Inherits System.Windows.Forms.Form


    Private Declare Function ReleaseCapture Lib "user32" () As Integer
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
        ByVal hwnd As Integer, _
        ByVal wMsg As Integer, _
        ByVal wParam As Integer, _
        ByRef lParam As Object) As Integer

    Private Const HTCAPTION As Short = 2
    Private Const WM_NCLBUTTONDOWN As Short = &HA1S
    Private Const WM_SYSCOMMAND As Short = &H112S

    Private Sub Label1_MouseDown( _
        ByVal eventSender As System.Object, _
        ByVal eventArgs As System.Windows.Forms.MouseEventArgs) _
        Handles Label1.MouseDown

        ReleaseCapture()
        SendMessage(Me.Handle.ToInt32, WM_NCLBUTTONDOWN, HTCAPTION, 0)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click

        Me.Close()
    End Sub
End Class

Ihre Meinung

Falls Sie Fragen zu oder Erfahrungen mit diesem Tipp haben, dann sollten Sie diese hier posten. Für alles weitere melden Sie sich bitte in einem zum Thema passendem Forum.

Falls Sie in ihren Kommentar Quellcode einbinden wollen, verwenden Sie bitte Pseudotags: Quellcode Bei VB.NET wird durch ein vorangestelltes [dotnet] markiert und durch [/dotnet] abgeschlossen.

Ihr Name:   
Ihre E-Mailadresse:   
 
Bitte folgende Kontrollnummer eingeben: 2025
Kontrolle:   
 
Ihre Frage/Ihr Kommentar:
Ja, ich möchte weitere Beiträge per E-Mail erhalten
Von Philipp Serrer am 18.09.2009 um 19:49
Hi,

wenn du die größe andern willst, gibt es noch die anderen HT Konstanten - HTTOP, HTLEFT, HTBOTTOM und HTRIGHT. Funktioniert genauso wie mit HTCAPTION(getestet unter WinVista, sollte aber auch auf anderen Versionen laufen)

PS: Die Konstanten findest du im API-Viewer

Gruß
Philipp
Von am 25.04.2008 um 16:59
Hallo

wie kann ich eine Form mit der Eigenschaft <FormBorderstyle>
<None> auseinanderziehen wie wenn sie <Sizeable> wäre.

Mit freundlichem Gruß

Ferneschild


Erstellt: 16.07.2004
Aktualisierung: 26.07.2010
  Autor: Thomas Frömmel
E-Mail: tom@thomas-froemmel.de



Copyright © 1998-2010 by ActiveVB
Alle Rechte vorbehalten.