Rubrik: Oberfläche · Effekte | VB-Versionen: VB4, VB5, VB6 | 01.01.03 |
Fenster Ein-/Ausblendeffekte Erzeugen Sie nette Animationseffekte für Ihre Forms: Ausblenden, Einblenden, Schieben, Rollen, Dimmen usw. | ||
Autor: Richard Musiol | Bewertung: | Views: 25.128 |
www.richard-musiol.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Ich habe zufällig die API-Funktion AnimateWindow entdeckt und sofort eine Zugriffs-Prozedur geschrieben. Mann kann damit einige Fenstereffekte erzeugen. U.a. Einfaden, Ausfaden, Schieben, Rollen... Falls der Effekt nicht mit der Windows-Version kompatibel ist, oder ein anderer Fehler auftritt, wird die Form trotzdem ein-/ausgeblendet. Genauere Beschreibung zur Handhabung im Quellcode.
Unter VB6 gibt es leider noch Probleme mit dem Fensterhintergrund. Vielleicht hat ja jemand eine Lösung:
' zunächst die benötigten API-Deklarationen Private Declare Function AnimateWindow Lib "user32" ( _ ByVal hwnd As Long, _ ByVal Time As Long, _ ByVal Flags As Long) As Long Private Const AW_ACTIVATE = &H20000 Private Const AW_BLEND = &H80000 Private Const AW_CENTER = &H10 Private Const AW_SLIDE = &H40000 Private Const AW_HIDE = &H10000 Private Const AW_HOR_POSITIVE = &H1 Private Const AW_HOR_NEGATIVE = &H2 Private Const AW_VER_POSITIVE = &H4 Private Const AW_VER_NEGATIVE = &H8 Private Const WM_PAINT = &HF Enum FensAnimArt EINBLENDEN AUSBLENDEN End Enum Enum FensAnimEffekt DIMMEN ROLLEN_SEITE ROLLEN_MITTE SCHIEBEN End Enum Enum FensAnimRichtung N NO O SO S SW W NW End Enum
Private Sub FensAnim( _ ByVal Fenster As Form, _ ByVal Art As FensAnimArt, _ ByVal Effekt As FensAnimEffekt, _ ByVal Richtung As FensAnimRichtung, _ ByVal Dauer_ms As Integer) ' Fehlerbehandlung aktivieren On Error Resume Next Dim Flags As Long Flags = 0 ' Flag Ein/Ausblenden Select Case Art Case FensAnimArt.EINBLENDEN Flags = Flags + AW_ACTIVATE Case FensAnimArt.AUSBLENDEN Flags = Flags + AW_HIDE End Select ' Effect-Flag addieren Select Case Effekt Case FensAnimEffekt.ROLLEN_SEITE Flags = Flags + 0 Case FensAnimEffekt.ROLLEN_MITTE Flags = Flags + AW_CENTER Case FensAnimEffekt.SCHIEBEN Flags = Flags + AW_SLIDE Case FensAnimEffekt.DIMMEN Flags = Flags + AW_BLEND End Select ' Richtungs-Flags addieren Select Case Richtung Case FensAnimRichtung.N Flags = Flags + AW_VER_NEGATIVE Case FensAnimRichtung.NO Flags = Flags + AW_VER_NEGATIVE + AW_HOR_POSITIVE Case FensAnimRichtung.O Flags = Flags + AW_HOR_POSITIVE Case FensAnimRichtung.SO Flags = Flags + AW_VER_POSITIVE + AW_HOR_POSITIVE Case FensAnimRichtung.S Flags = Flags + AW_VER_POSITIVE Case FensAnimRichtung.SW Flags = Flags + AW_VER_POSITIVE + AW_HOR_NEGATIVE Case FensAnimRichtung.W Flags = Flags + AW_HOR_NEGATIVE Case FensAnimRichtung.NW Flags = Flags + AW_VER_NEGATIVE + AW_HOR_NEGATIVE End Select ' Animation ausführen ' (Programm/Thread ist solange pausiert) AnimateWindow Fenster.hwnd, Dauer_ms, Flags ' sicherheits Fenster anzeigen/verstecken ' (falls Animation fehlschlägt!) Select Case Art Case FensAnimArt.EINBLENDEN Fenster.Show Case FensAnimArt.AUSBLENDEN Fenster.Hide End Select ' sicherheitshalber Neuzeichnen ' (um Grafikfehler zu vermeiden) Fenster.Refresh End Sub
Beschreibung der Parameter:
Fenster: die Form die animiert werden soll
Art:
Effekt: (probier' sie einfach aus)
Richtung: siehe Effekte
Dauer_ms: Dauer der gesamten Animation in Millisekunden
Beispiel für den Aufruf:
Private Sub Form_Load() ' Einblenden FensAnim Me, EINBLENDEN, SCHIEBEN, W, 500 End Sub Private Sub Form_Unload(Cancel As Integer) ' Ausblenden FensAnim Me, AUSBLENDEN, DIMMEN, W, 500 End Sub
Wenn Sie diesen Tipp unter VB.NET einsetzen möchten:
Fenster Ein-/Ausblendeffekte II (.NET)