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: Dieser Tipp wurde bereits 24.903 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 Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... |
||||||||||||||||
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. |