Mein Lösungsweg wie man ganz einfach ein Fenster ohne Titelleiste bewegen kann
Dabei wird die Form ausgeblendet und beim Loslassen der Maustaste wieder eingeblendet
Hier die Vorschau
Was zu tun ist:
- neues einfaches Projekt erstellen
- neues Modul erstellen
- auf der Form eine PicBox anlegen
- Wenn der Standartname nicht "PictureBox1" ist dann in diesen umbenennen
- Folgendes als jeweiligen Code einfügen:
Code für die Form
Code für das Modul
Würd mich freuen wenn dies für den ein oder anderen interessant ist ^,^
Dabei wird die Form ausgeblendet und beim Loslassen der Maustaste wieder eingeblendet
Hier die Vorschau
Was zu tun ist:
- neues einfaches Projekt erstellen
- neues Modul erstellen
- auf der Form eine PicBox anlegen
- Wenn der Standartname nicht "PictureBox1" ist dann in diesen umbenennen
- Folgendes als jeweiligen Code einfügen:
Code für die Form
VB.NET-Quellcode
- Imports System.Threading
- Public Class Form1
- Public MyForm As Class_MyForm
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- MyForm = New Class_MyForm(Me)
- MyForm.SetAlpha(0.0)
- MyForm.SetFading(1.0, 20, 50)
- Dim NewThread = New Thread(AddressOf MyForm.StartFading)
- NewThread.Start()
- End Sub
- Private Sub PicBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseDown
- Dim NewThread As Thread = Nothing
- MyForm.SetFading(0.4, 10, 100)
- NewThread = New Thread(AddressOf MyForm.StartFading)
- NewThread.Start()
- MyForm.DragMe(Me.Handle)
- MyForm.SetFading(1, 5, 50)
- NewThread = New Thread(AddressOf MyForm.StartFading)
- NewThread.Start()
- End Sub
- Public Sub CallBack_SetOpacity(ByVal Opacity_ As Double)
- Me.Opacity = Opacity_
- End Sub
- End Class
Code für das Modul
VB.NET-Quellcode
- Public Class Class_MyForm
- 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 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
- Private Delegate Sub CallBack_SetOpacity(ByVal Alpha As Double)
- Private Const HTCAPTION As Short = 2
- Private Const WM_NCLBUTTONDOWN As Short = &HA1S
- Private Const WM_SYSCOMMAND As Short = &H112S
- Private AlphaNow As Double = 1
- Private AlphaNew As Double
- Private LoopsI As Integer
- Private SleepI As Integer
- Private IsFading As Boolean = False
- Private LoopI As Integer
- Private AlphaBit As Double
- Protected That As Object
- Sub New(ByVal This As Object)
- That = This
- End Sub
- Public Sub SetAlpha(ByVal AlphaNow_ As Double)
- Dim frm = That
- Dim d As New CallBack_SetOpacity(AddressOf frm.CallBack_SetOpacity)
- AlphaNow = AlphaNow_
- If (AlphaNow > 1) Then AlphaNow = 1
- If (AlphaNow < 0) Then AlphaNow = 0
- frm.Invoke(d, New Object() {AlphaNow})
- End Sub
- Public Sub SetFading(ByVal AlphaNew_ As Double, ByVal LoopsI_ As Integer, ByVal SleepI_ As Integer)
- AlphaNew = AlphaNew_
- LoopsI = LoopsI_
- SleepI = SleepI_
- LoopI = 1
- AlphaBit = ((AlphaNew - AlphaNow) / LoopsI)
- End Sub
- Public Sub StartFading()
- If (IsFading = False) Then
- IsFading = True
- For Me.LoopI = 1 To LoopsI
- SetAlpha(AlphaNow + AlphaBit)
- Application.DoEvents()
- Sleep(SleepI)
- Next LoopI
- SetAlpha(AlphaNew)
- IsFading = False
- End If
- End Sub
- Public Sub DragMe(ByVal hwnd As Long)
- ReleaseCapture()
- SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)
- End Sub
- End Class
Würd mich freuen wenn dies für den ein oder anderen interessant ist ^,^
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Agita“ ()