vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Oberfläche · Effekte   |   VB-Versionen: VB4, VB5, VB601.01.03
Fenster Ein-/Ausblendeffekte

Erzeugen Sie nette Animationseffekte für Ihre Forms: Ausblenden, Einblenden, Schieben, Rollen, Dimmen usw.

Autor:   Richard MusiolBewertung:     [ Jetzt bewerten ]Views:  24.863 
www.richard-musiol.deSystem:  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:

  • EINBLENDEN: Fenster wird eingeblendet (bei sichtbaren Fenstern geschieht nichts)
  • AUSBLENDEN: Fenster wird ausgeblendet (bei unsichtbaren Fenstern geschieht nichts)

    Effekt: (probier' sie einfach aus)

  • DIMMEN: Fenster Ein-/Ausdimmen (Richtung wird ignoriert)
  • ROLLEN_SEITE: Fenster wird von einer Seite/Ecke aus sichtbar/unsichtbar (Richtung -> in diese Richtung wird gerollt)
  • ROLLEM_MITTE: Fenster wird von der Mitte aus sichtbar/zur Mitte hin unsichtbar (Richtung wird ignoriert)
  • SCHIEBEN: Fenster wird von/zu einer Seite/Ecke eingeschoben/ausgeschoben (Richtung -> in diese Richtung wird geschoben)

    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)
     

  • Dieser Tipp wurde bereits 24.863 mal aufgerufen.

    Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

    Über diesen Tipp im Forum diskutieren
    Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

    Neue Diskussion eröffnen

    nach obenzurück


    Anzeige

    Kauftipp Unser Dauerbrenner!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.
     
       

    Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
    Alle Rechte vorbehalten.
    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.

    Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel