Rubrik: Oberfläche · Effekte | VB-Versionen: VB4, VB5, VB6 | 19.06.01 |
Fenster zeitgesteuert ein-/ausblenden Dieser Tipp zeigt, wie man ein Fenster zeitgesteuert ein- und ausblenden kann. | ||
Autor: Dieter Otter | Bewertung: | Views: 19.008 |
www.tools4vb.de | System: 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.