Rubrik: Oberfläche · Fenster | VB-Versionen: VB4, VB5, VB6 | 12.12.00 |
Verschieben eines Fensters ohne Titelleiste Ein Fenster ohne Titelleiste läßt sich bekanntlich nicht verschieben. Mit folgenden API-Routinen ist dies dennoch möglich.Hinweis: Der nachfolgende ... | ||
Autor: Dieter Otter | Bewertung: | Views: 21.097 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Ein Fenster ohne Titelleiste läßt sich bekanntlich nicht verschieben. Mit folgenden API-Routinen ist dies dennoch möglich.
Hinweis: Der nachfolgende Code kann auf alle Objekte mit einer hWnd-Eigenschaft angewandt werden.
' zunächst die benötigten Deklarationen Public Declare Sub ReleaseCapture Lib "User32" () Public Declare Function SendMessage Lib "User32" _ Alias "SendMessageA" ( _ ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) As Long Public Const WM_NCLBUTTONDOWN = &HA1 Public Const HTCAPTION = 2
Beispiele:
' Form verschieben Private Sub Form_MouseDown(Button As Integer, _ Shift As Integer, x As Single, Y As Single) Dim lResult As Long If Button = 1 Then Call ReleaseCapture lResult = SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, _ HTCAPTION, 0&) End If End Sub ' Picture-Objekt verschieben Private Sub Picture1_MouseDown(Button As Integer, _ Shift As Integer, x As Single, Y As Single) Dim lResult As Long If Button = 1 Then Call ReleaseCapture lResult = SendMessage(Picture1.hwnd, WM_NCLBUTTONDOWN, _ HTCAPTION, 0&) End If End Sub ' TextBox verschieben Private Sub Text1_MouseDown(Button As Integer, _ Shift As Integer, x As Single, Y As Single) Dim lResult As Long If Button = 1 Then Call ReleaseCapture lResult = SendMessage(Text1.hwnd, WM_NCLBUTTONDOWN, _ HTCAPTION, 0&) End If End Sub