Autor
|
Tema: Saber cuando se pone en primer plano un formulario (Leído 3,346 veces)
|
icisneros
GNU/Linux
Ex-Staff
Desconectado
Mensajes: 1.296
|
Necesito saber cuando ponen mi formulario en primer plano.
Si cargan mi programa y luego van a la barra de tareas y maximizan otra ventana, quiero saber cuando vuelven a pulsar sobre mi formulario de nuevo, cuando vuelven a activar mi ventana.
He probado con gotfocus y activate, pero esos eventos no se producen. Conoceis el evento?
Un saludo!
|
|
|
En línea
|
|
|
|
Kizar
Desconectado
Mensajes: 1.325
kizar_net
|
Yo he probado los eventos y ninguno hace lo que quieres, lo que se me ocurre es con un timer llamar a la api "GetForegroundWindow" que te da el handle de la ventana activa y lo comparas con el de tu ventana "Me.hWnd" si coincide esta activa.
|
|
|
En línea
|
|
|
|
icisneros
GNU/Linux
Ex-Staff
Desconectado
Mensajes: 1.296
|
El evento activate sólo detecta los cambios de ventana dentro de la misma aplicación, para vb 2005 ya está solucionado y detecta tambien los cambios entre diferentes aplicaciones.
Tendré que plantearme usar un timer para poder detectar eso.
Gracias KiZaR
Un Saludo
|
|
|
En línea
|
|
|
|
Kizar
Desconectado
Mensajes: 1.325
kizar_net
|
La propiedad "Resize" te vale para cuando maximizan y minimizan tu ventana, pero si esta visible y pulsas en la barra de tareas no hace nada....
|
|
|
En línea
|
|
|
|
LeandroA
|
hola puedes hacer un gancho con hook en un modulo: Const WM_ACTIVATEAPP = &H1C
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Public Const GWL_WNDPROC = (-4) Dim PrevProc As Long Public Sub HookForm(F As Form) PrevProc = SetWindowLong(F.hwnd, GWL_WNDPROC, AddressOf WindowProc) End Sub Public Sub UnHookForm(F As Form) SetWindowLong F.hwnd, GWL_WNDPROC, PrevProc End Sub Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long WindowProc = CallWindowProc(PrevProc, hwnd, uMsg, wParam, lParam)
If uMsg = WM_ACTIVATEAPP Then If wParam Then Debug.Print "Activate" Else Debug.Print "Deactivate" End If End If End Function
y en el formulario: Private Sub Form_Load() HookForm Me End Sub
Private Sub Form_Unload(Cancel As Integer) UnHookForm Me End Sub
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Saber si un Formulario esta cargado
.NET (C#, VB.NET, ASP)
|
TheGhost(Z)
|
2
|
8,614
|
18 Enero 2011, 21:06 pm
por TheGhost(Z)
|
|
|
Como saber si un formulario se ha enviado
« 1 2 3 »
PHP
|
Shell Root
|
25
|
20,390
|
19 Marzo 2011, 19:32 pm
por Spider-Net
|
|
|
Un nuevo centro de investigación pone a prueba el primer ordenador cuántico
Noticias
|
wolfbcn
|
3
|
3,416
|
18 Enero 2012, 01:33 am
por beholdthe
|
|
|
Un patinazo en Twitter pone en aprietos al ex primer ministro libanés Saad Harir
Noticias
|
wolfbcn
|
0
|
1,232
|
15 Enero 2012, 02:00 am
por wolfbcn
|
|