vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Fenster einblenden 
Autor: RalfH
Datum: 08.12.03 08:35

Servus,

erstelle ein neues Projekt und ändere die Formeigenschaften wie folgt:
- StartUpPosition = Manuell
- BorderStyle=None
- Backcolor ändern um Bsp. besser verfolgend zu können

Füge 1 Timer auf die Form und ändere dessen Namen in tmrWinFade

Anschließend folgenden Code ins Form-Modul kopieren:
Option Explicit
 
' ermittelt die Größe eines Fensters
Private Declare Function GetWindowRect Lib "user32" ( _
   ByVal hwnd As Long, _
   lpRect As RECT) As Long
 
Private Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type
 
' Fensterhandle eines Fensters ermitteln
Private Declare Function FindWindow Lib "user32.dll" _
  Alias "FindWindowA" ( _
  ByVal lpClassName As String, _
  ByVal lpWindowName As String) As Long
 
' Fenster-ZRichtung, -position und -größe ändern
Private Declare Function SetWindowPos Lib "user32" ( _
   ByVal hwnd As Long, _
   ByVal hWndInsertAfter As Long, _
   ByVal X As Long, _
   ByVal y As Long, _
   ByVal cx As Long, _
   ByVal cy As Long, _
   ByVal wFlags As Long) As Long
 
' Fenster immer im Vordergrund halten (ZRichtung)
Private Const HWND_TOPMOST As Long = -1
 
' Fensterposition nicht ändern
Private Const SWP_NOMOVE As Long = &H2
 
' Fenstergröße nicht ändern
Private Const SWP_NOSIZE As Long = &H1
 
 
Private Sub Form_Load()
  On Error Resume Next
 
  ' Fenster immer im Vordergrund halten (Fenstergröße und -position nicht 
  ' ändern)
  SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
 
  ' Start-Fenster-Position festlegen
  ' obere Fensterposition = (Bildschirmhöhe) - (Taskleisten-Höhe) - ( 
  ' Fensterhöhe)
  Me.Top = Screen.Height - GetTaskbarHeight - Me.Height
  Me.Left = Screen.Width
 
  ' Tag="1": FadeIn / Tag="2": FadeOut / Tag="": Warten
  tmrWinFade.Tag = "1"
  tmrWinFade.Interval = 25
  tmrWinFade.Enabled = True
End Sub
 
Private Sub tmrWinFade_Timer()
  Dim X As Long
 
  ' FadeIn
  If tmrWinFade.Tag = "1" Then
 
    ' Fenster um 4 Pixel nach links schieben
    ' (VB rechnet mit Twips und Screen.TwipsPerPixelX ermittelt die Twips je 
    ' Pixel in X-Richtung)
    X = Me.Left - (Screen.TwipsPerPixelX * 4)
 
    ' prüfen, ob das Fenster vom Bildschirmrand weg positioniert werden soll...
    If X <= Screen.Width - Me.Width Then
 
      ' ...wenn ja, dann Fenster direkt am Bildschirmrand positionieren...
      X = Screen.Width - Me.Width
 
      ' ...FadeIN beenden und  "Warten" aktivieren
      tmrWinFade.Tag = "" ' Warten aktivieren
 
      ' 5Sek warten
      tmrWinFade.Interval = 5000 ' = 5Sek warten
    End If
 
    ' Fensterposition ändern
    Me.Left = X
 
  ' FadeOut
  ElseIf tmrWinFade.Tag = "2" Then
 
    ' Fenster um 4 Pixel nach rechts schieben
    ' (VB rechnet mit Twips und Screen.TwipsPerPixelX ermittelt die Twips je 
    ' Pixel in X-Richtung)
    X = Me.Left + (Screen.TwipsPerPixelX * 4)
 
    ' prüfen, ob das Fenster über den Bildschirmrand hinaus positioniert werden 
    ' soll...
    If X > Screen.Width Then
 
      ' wenn ja, dann Fenster direkt am Bildschirmrand positionieren ...
      X = Screen.Width
 
      ' ...Fenster entladen...
      Unload Me
 
      ' ...Speicher freigeben...
      Set Form1 = Nothing
 
      ' Programm beenden
      End
 
      ' Sub beenden
      Exit Sub ' kann gelöscht werden, wenn vorliegendes "End" nicht entfernt _
        wird
 
    End If
 
    ' Fensterposition ändern
    Me.Left = X
 
  ' Warten
  Else
    tmrWinFade.Tag = "2"  ' FadeOut aktivieren
    tmrWinFade.Interval = 25
  End If
 
End Sub
 
' Höhe der Taskleiste ermitteln (in Twips)
Private Function GetTaskbarHeight() As Long
 
  Dim lhwnd As Long, rPos As RECT
 
  ' Fensterhandle der Taskleiste ermitteln
  lhwnd = FindWindow("Shell_TrayWnd", vbNullString)
 
  ' ist Fensterhandle gültig?
  If lhwnd <> 0 Then
 
    ' Größe der Taskleiste ermitteln (in Pixel)
    GetWindowRect lhwnd, rPos
 
    ' Höhe der Taskleiste = (untere Position) - (obere Position) - (2)
    ' VB rechnet mit Twips (Pixelhöhe*Screen.TwipsPerPixelY=TwipsHöhe)
    GetTaskbarHeight = (rPos.Bottom - rPos.Top - 2) * Screen.TwipsPerPixelY
  Else
    ' wenn kein Taskleisten-Handle ermittelt werden konnte,
    ' dann 0 zurückgeben
    GetTaskbarHeight = 0
  End If
 
End Function

Viel Spass,
R@lf

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Fenster einblenden1.093web4free07.12.03 15:26
Re: Fenster einblenden1.018RalfH08.12.03 08:35
Re: Fenster einblenden743web4free08.12.03 13:05
Re: Problem846web4free08.12.03 13:52
Re: Antwort? 726TimSp08.12.03 14:08
Re: Lösung gefunden897web4free08.12.03 14:16

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 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