vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Oberfläche · Effekte   |   VB-Versionen: VB4, VB5, VB619.06.01
Fenster zeitgesteuert ein-/ausblenden

Dieser Tipp zeigt, wie man ein Fenster zeitgesteuert ein- und ausblenden kann.

Autor:   Dieter OtterBewertung:  Views:  19.008 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Der nachfolgende Tipp stammt wieder einmal aus einer Forums-Anfrage. Hier wurde nach einem Code gefragt, mit dem man ein Fenster für eine bestimmte Zeit verstecken kann, dann das Fenster für eine weitere bestimmbare Zeit als vorderstes Fenster einblendet und anschließend wieder versteckt. Das Ein-/Ausblenden des Fensters soll dann quasi unendlich wiederholt werden.

Alles, was man dazu benötigt, sind zwei Timer-Steuerelemente und eine API-Funktion, welche das Fenster an vorderster Stelle plaziert, so daß dieses nicht durch ein anderes Fenster verdeckt werden kann.

Um das Beispiel auszuprobieren, erstellen Sie ein neues Projekt, plazieren auf die Form zwei Timer-Steuerelement und setzen die Form-Eigenschaft ShowInTaskbar auf False.

Und hier der komplette Source-Code:

Option Explicit
 
' zunächst die benötigten API-Deklarationen
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
 
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
 
' Zeitangaben
Private Const TimeHide = 1   ' versteckt x-Minuten
Private Const TimeShow = 10  ' angezeigt x-Sekunden
                             ' max. 90 Sekunden
 
Private Sub Form_Load()
  ' Timer initialisieren
  Timer1.Tag = 0
  Timer1.Interval = 60000
  Timer1.Enabled = True
 
  Timer2.Interval = TimeShow * 1000
  Timer2.Enabled = False
 
  Me.WindowState = 1
End Sub
 
Private Sub Timer1_Timer()
  Timer1.Tag = Timer1.Tag + 1
  If Timer1.Tag >= TimeHide Then
    Timer1.Tag = 0
    Timer1.Enabled = False
    Me.WindowState = 0
    Me.Show
 
    ' als obersters Fenster anzeigen
    SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, _
      SWP_NOSIZE Or SWP_NOMOVE
 
    ' Timer2 aktivieren, so daß nach "TimeHide" Sekunden
    ' das Fenster wieder geschlossen wird
    Timer2.Enabled = True
  End If
End Sub
 
' Fenster wieder schliessen
Private Sub Timer2_Timer()
  Timer2.Enabled = False
  SetWindowPos Me.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, _
    SWP_NOSIZE Or SWP_NOMOVE
  Me.Hide
 
  ' Timer1 wieder aktivieren
  Timer1.Enabled = True
End Sub

Was passiert jetzt genau?
Die Form ist zunächst für 1 Minute versteckt (auch nicht in der Taskbar zu sehen). Nach dieser Zeit wird das Fenster eingeblendet, und zwar so, daß es das oberste Fenster darstellt - quasi im absoluten Vordergrund steht (kann also nicht verdeckt werden). Das Fenster bleibt dann für 10 Sekunden sichtbar und verschwindet dann wieder für 1 Minute... usw.
 



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.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle 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.