Ventana siempre visible (allways on top)
Ya sea un coqueto reloj de sistema o una aplicación de control que requiera atención permanente es común requerir que una ventana este siempre visible, por encima de todas la demás. Esto se logra recurriendo a la API.
Declaración para usar ventanas siempre visibles:
Versión para 16 bits:
Declare Function 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) As Integer
Versión para 32 bits
Declare Function SetWindowPos Lib "User32" Alias "SetWindowPos" (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
Esto es tanto para 16 como para 32 bits.
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
'Const SWP_NOZORDER = &H4
'Const SWP_NOREDRAW = &H8
Const SWP_NOACTIVATE = &H10
'Const SWP_DRAWFRAME = &H20
Const SWP_SHOWWINDOW = &H40
'Const SWP_HIDEWINDOW = &H80
'Const SWP_NOCOPYBITS = &H100
'Const SWP_NOREPOSITION = &H200
Const SWP_FLAGS = SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW Or SWP_NOACTIVATE
Quitando o agregando ' (indicadores de comentario) logramos personalizar el efecto deseado.
Ahora, en el formulario a afectar deberemos colocar, dentro del evento Load:
If SetWindowPos(hWnd, -1, 0, 0, 0, 0, SWP_FLAGS) Then
beep