Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Tipps & Tricks
Autor
Nachricht
^^kev####
Überflieger
Überflieger

Anmeldedatum: 01.05.2008
Beiträge: 476
Wohnort: Haan

Fenster Ein-/Ausblendeffekte
Verfasst am: 29.06.2009, 14:26

Beschreibung:
Mit der Funktion 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.

Funktion:
Visual Basic: [code]#Region "FensAnim"

' zunächst die benötigten API-Deklarationen
Private Declare Function AnimateWindow Lib "user32" ( _
ByVal hwnd As Integer, _
ByVal Time As Integer, _
ByVal Flags As Integer) As Integer

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 As Integer
EINBLENDEN
AUSBLENDEN
End Enum

Enum FensAnimEffekt As Integer
DIMMEN
ROLLEN_SEITE
ROLLEN_MITTE
SCHIEBEN
End Enum

Enum FensAnimRichtung As Integer
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
Try
Dim Flags As Integer = 0

' Flag Ein/Ausblenden
Select Case Art
Case FensAnimArt.EINBLENDEN
Flags += AW_ACTIVATE
Case FensAnimArt.AUSBLENDEN
Flags += AW_HIDE
End Select

' Effect-Flag addieren
Select Case Effekt
Case FensAnimEffekt.ROLLEN_SEITE
Flags += 0
Case FensAnimEffekt.ROLLEN_MITTE
Flags += AW_CENTER
Case FensAnimEffekt.SCHIEBEN
Flags += AW_SLIDE
Case FensAnimEffekt.DIMMEN
Flags += AW_BLEND
End Select

' Richtungs-Flags addieren
Select Case Richtung
Case FensAnimRichtung.N
Flags += AW_VER_NEGATIVE
Case FensAnimRichtung.NO
Flags += AW_VER_NEGATIVE + AW_HOR_POSITIVE
Case FensAnimRichtung.O
Flags += AW_HOR_POSITIVE
Case FensAnimRichtung.SO
Flags += AW_VER_POSITIVE + AW_HOR_POSITIVE
Case FensAnimRichtung.S
Flags += AW_VER_POSITIVE
Case FensAnimRichtung.SW
Flags += AW_VER_POSITIVE + AW_HOR_NEGATIVE
Case FensAnimRichtung.W
Flags += AW_HOR_NEGATIVE
Case FensAnimRichtung.NW
Flags += AW_VER_NEGATIVE + AW_HOR_NEGATIVE
End Select

' Animation ausführen
' (Programm/Thread ist solange pausiert)
AnimateWindow(Fenster.Handle.ToInt32, Dauer_ms, Flags)
Catch : End Try

' 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

#End Region[/code]

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:

Visual Basic: [code]Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load

' Einblenden
FensAnim(Me, EINBLENDEN, SCHIEBEN, W, 500)
End Sub

Private Sub Form1_Closed(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles MyBase.Closed

' Ausblenden
FensAnim(Me, AUSBLENDEN, DIMMEN, W, 500)
End Sub[/code]

Quelle: vbarchiv.net
_________________
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Tipps & Tricks

Tags: visual basic, fenster, einblenden, form

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Problem mit always on top funktion 1038 30.10.2009, 11:26
Keine neuen Beiträge IntStr()funktion 1176 11.10.2007, 08:49
Keine neuen Beiträge TopMost Funktion unter DirectX 921 27.07.2007, 10:48
Keine neuen Beiträge Wie Funktion nutzen ? 1100 29.06.2007, 20:59
Keine neuen Beiträge update funktion einbauen 1341 28.01.2007, 23:11
 



[ Time: 0.1455s ][ Queries: 81 (0.0381s) ][ GZIP on - Debug on ]