VERIFICAR SAIDA DO MOUSE?
Olá,
Alguém já usou função para Verificar SaÃda do Mouse?
Eu uso a função abaixo em uma aplicação antiga e funciona normalmente.
Usei a mesma rotina em uma aplicação nova e não funciona!
Alguém saberia alguma razão pra isto acontecer?
Private Type TrackMouseEventType
cbSize As Long
dwFlags As Long
hwndTrack As Long
dwHoverTime As Long
End Type
Private Declare Function TrackMouseEvent Lib "User32" (lpEventTrack As TrackMouseEventType) As Long
'Essa função deve ser chamada toda vez que se quiser saber quando o mouse sai do form.
'No caso, deve ser feita toda vez que o mouse entrar na tela.
Public Sub VerificaSaidaMouse()
g_blnPararScroll = True
Dim vntTrack As TrackMouseEventType
With vntTrack
.cbSize = Len(vntTrack)
.dwFlags = TME_LEAVE
.hwndTrack = frmTicker.hwnd
.dwHoverTime = HOVER_DEFAULT
End With
TrackMouseEvent vntTrack
End Sub
----
OBRIGADO
Alguém já usou função para Verificar SaÃda do Mouse?
Eu uso a função abaixo em uma aplicação antiga e funciona normalmente.
Usei a mesma rotina em uma aplicação nova e não funciona!
Alguém saberia alguma razão pra isto acontecer?
Private Type TrackMouseEventType
cbSize As Long
dwFlags As Long
hwndTrack As Long
dwHoverTime As Long
End Type
Private Declare Function TrackMouseEvent Lib "User32" (lpEventTrack As TrackMouseEventType) As Long
'Essa função deve ser chamada toda vez que se quiser saber quando o mouse sai do form.
'No caso, deve ser feita toda vez que o mouse entrar na tela.
Public Sub VerificaSaidaMouse()
g_blnPararScroll = True
Dim vntTrack As TrackMouseEventType
With vntTrack
.cbSize = Len(vntTrack)
.dwFlags = TME_LEAVE
.hwndTrack = frmTicker.hwnd
.dwHoverTime = HOVER_DEFAULT
End With
TrackMouseEvent vntTrack
End Sub
----
OBRIGADO
Colega com o código abaixo vc consegue isso perfeitamente, basta colocar um Timer no Form com o intervalo de 100 e Enabled = False:
[/c]
Option Explicit
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
[c]Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Qdo mover o mouse sobre o form habilita o Timer para iniciar a verificação
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Dim mousePt As POINTAPI, MouseHWND As Long
'Pega a posição do mouse
GetCursorPos mousePt
'Pega o HWND do objeto sob o cursor
MouseHWND = WindowFromPoint(mousePt.X, mousePt.Y)
'Verifica se o HWND pego é diferente do do Form
If MouseHWND <> Me.hwnd Then
'Verifica agora se o "Parent" do objeto sob o cursor não é o form,
'pois se não, caso mova o mouse no form mas sobre um objeto do mesmo ele
'considera como se estivesse fora
If GetParent(MouseHWND) <> Me.hwnd Then
'****AQUI VAI O CÓ“DIGO QUE VC QUER REALIZAR QUANDO O MOUSE SAIR DO FORM****
MsgBox "Mouse fora do form!"
'Desabilitar o Timer para não ficar verificando...
Timer1.Enabled = False
End If
End If
End Sub
[/c]
Ok, valeu!
A rotina que eu postei tb. funcionou agora!
O problema é que tinha um "módulo fantasma" atachado ao projeto, onde havia redeclaração de APIs já declaradas em um módulo principal!
Tks ;)
A rotina que eu postei tb. funcionou agora!
O problema é que tinha um "módulo fantasma" atachado ao projeto, onde havia redeclaração de APIs já declaradas em um módulo principal!
Tks ;)
Tópico encerrado , respostas não são mais permitidas