Jeg vil gerne lave en lille popup a la messengers popups. Derfor skal popuppen være always on top, men uden at tage fokus. Jeg har prøvet at leget lidt med det her:
'Module:
#If Win32 Then Public Const HWND_TOPMOST& = -1 #Else Public Const HWND_TOPMOST& = -1 #End If 'WIN32
#If Win32 Then 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) #Else Declare Sub SetWindowPos Lib "user" (ByVal hWnd As Integer, ByVal hWndInsertAfter As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) #End If 'WIN32
Den sætter godt nok formen on top fra starten men den stjæler samtidgi fokus hvilket ikke er så smart altid. Desuden, hvis man åbner et andet program maksimeret så kommer popuppen bagved programmet hvilket heller ikke er så smart.
Jeg håber at der er nogen der har en god ide til at løse problemet.
Private Const HWND_TOPMOST As Long = -1 Private Const SWP_NOSIZE As Long = &H1 Private Const SWP_NOMOVE As Long = &H2 Private Const SWP_NOACTIVATE As Long = &H10 Private Const SWP_SHOWWINDOW As Long = &H40
Private Declare Sub 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)
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function SetActiveWindow Lib "user32.dll" ( _ ByVal hwnd As Long) As Long
Private Sub Form_Load() Call SetWindowPos(Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, _ SWP_NOACTIVATE Or SWP_SHOWWINDOW Or _ SWP_NOMOVE Or SWP_NOSIZE) Call SetActiveWindow(GetActiveWindow) End Sub '---------------------- Form1 ----------------------
Private Const HWND_TOPMOST As Long = -1 Private Const SWP_NOSIZE As Long = &H1 Private Const SWP_NOMOVE As Long = &H2 Private Const SWP_NOACTIVATE As Long = &H10 Private Const SWP_SHOWWINDOW As Long = &H40
Private Declare Sub 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)
Private Declare Function SetActiveWindow Lib "user32.dll" ( _ ByVal hwnd As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Sub Form_Load() Call SetWindowPos(Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, _ SWP_NOACTIVATE Or SWP_SHOWWINDOW Or _ SWP_NOMOVE Or SWP_NOSIZE) Call SetActiveWindow(GetDesktopWindow) End Sub '---------------------- Form1 ----------------------
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.