Wer das Betriebssystem Windows 2000 oder Windows ME kennt, der hat sicherlich schon einmal etwas von "Layered Windows" gehört. Hierbei handelt es sich um Fenster mit eine frei skalierbaren Transparenz - einem Durschaubarkeits-Effekt. Um solche "Layered Windows" zu erzeugen, stellt das WinAPI die SetLayeredWindowsAttributes-Funktion zur Verfügung - aber erst ab Win2000/ME. Dadurch, dass sich die Intensität der Transparenz frei einstellen lässt, kann man diese Funktion dazu verwenden, ein Fenster zeitgesteuert ein- oder auszublenden. ' zunächst die benötigten API-Deklarationen Private Declare Function SetLayeredWindowAttributes Lib "user32" ( _ ByVal hWnd As Long, _ ByVal crKey As Long, _ ByVal bAlpha As Byte, _ ByVal dwFlags As Long) As Boolean Private Declare Function SetWindowLong Lib "user32" _ Alias "SetWindowLongA" ( _ ByVal hWnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Private Declare Function GetWindowLong Lib "user32" _ Alias "GetWindowLongA" ( _ ByVal hWnd As Long, _ ByVal nIndex As Long) As Long Private Const GWL_EXSTYLE = -20 Private Const WS_EX_LAYERED = &H80000 Private Const LWA_COLORKEY = &H1 Private Const LWA_ALPHA = &H2 Und nachfolgend zwei Prozeduren zum Ein- und Ausblenden eines Fensters. Im ersten Paramater wird das Fensterhandle erwartet. Der zweite Paramater ist optional und legt fest, in welchem Schritt-Intervall die Form ein- bzw. ausgeblendet werden soll. Hierfür eignen sich Werte zwischen 5 und 10 ganz gut Public Sub lwa_FadeIn(ByVal hWnd As Long, Optional ByVal iStep As Integer = 1) ' FadeIn Dim bAlpha As Integer bAlpha = 0 While bAlpha < 255 If bAlpha > 255 Then bAlpha = 255 SetLayeredWindowAttributes hWnd, 0, bAlpha, _ LWA_ALPHA DoEvents bAlpha = bAlpha + iStep Wend End Sub Public Sub lwa_FadeOut(ByVal hWnd As Long, Optional ByVal iStep As Integer = 1) ' FadeOut Dim bAlpha As Integer bAlpha = 255 While bAlpha > 0 If bAlpha < 0 Then bAlpha = 0 SetLayeredWindowAttributes hWnd, 0, bAlpha, _ LWA_ALPHA DoEvents bAlpha = bAlpha - iStep Wend End Sub Ein paar kurze Erklärungen: Parameterbeschreibung Beispiel Im Form_Load Event wird der "Einblenden"-Effekt realisiert. Hierzu wird zunächst der Fensterstil geändert, dann wird die Prozedur lwa_FadeIn aufgerufen. Private Sub Form_Load() ' Fenster-Attribute setzen Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, _ GetWindowLong(Me.hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED) Me.Show DoEvents lwa_FadeIn Me.hWnd, 5 End Sub Den "Ausblenden"-Effekt beim Schliessen der Form erreichen Sie so: Private Sub Form_Unload(Cancel As Integer) ' FadeOut und beenden lwa_FadeOut Me.hWnd, 5 Unload Me End End Sub Hinweis Dieser Tipp wurde bereits 26.458 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevAniGif (VB/VBA) Anzeigen von animierten GIF-Dateien Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |