hi leute, ich hab mir von dieser seite einen tipp angesehen, den auch dann verwendet. es geht darum, ein fester immer im vordergrund zu halten. der tipp funktioniert auch wunderbar, allerdings weiß ich nicht, wie ich das wieder "deaktivieren" kann.
hier mal der code, den ich im modul habe:
Option Explicit
' alle 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 Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const SWP_FRAMECHANGED = &H20
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOZORDER = &H4
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_REFRESH = SWP_NOZORDER Or _
SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or _
SWP_FRAMECHANGED
Private Const GWL_STYLE = (-16)
Private Const WS_MAXIMIZEBOX = &H10000
Private Const WS_MINIMIZEBOX = &H20000
Private Const HWND_TOPMOST = -1
' Minimieren/Maximieren Button einer Form anzeigen
Public Sub MinMaxButton(Form As Form)
Dim Style As Long
With Form
Style = GetWindowLong(.hwnd, GWL_STYLE)
Style = Style Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
SetWindowLong .hwnd, GWL_STYLE, Style
SetWindowPos .hwnd, 0, 0, 0, 0, 0, SWP_REFRESH
End With
End Sub
' Fenster immer im Vordergrund
Public Sub TopWindow(hwnd As Long)
SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, _
SWP_NOSIZE + SWP_NOMOVE
End Sub wie kann ich jetzt das im vordergrund wieder deaktivieren? im moment rufe ich es so auf:
Private Sub form_load()
Befzurueck.default = True
If mainform.Check2.Enabled = True Then
' Fenster immer im Vordergrund anzeigen
TopWindow Me.hwnd
End If
End Sub ich glaube ihr seht auch schon mein zweites problem, das sub wird nur ausgeführt wenn das form geladen wird, was bei mir auch beim programmstart passiert. wie kann ich jetzt das steuern, dass er jedesmal wenn das fenster neu geöffnet wird überprüft wird, ob der benutzer das form noch im vordergrund habne möchte oder nicht.
meine idee: ich habe einen timer laufen, der jede sekunde eine uhrenanzeige aktualisiert, ich könnte das jedesmal mit dem überprüfen lassen, allerdings glaube ich dass es schöner auch zum lösen geht.
ich hoffe ihr könnt mir helfen.
mfg disconnect
Gehe immer vom Guten Willen Anderer aus! |