VERIFICAR SAIDA DO MOUSE?

VILMARBR 23/08/2006 14:21:32
#166812
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
USUARIO.EXCLUIDOS 23/08/2006 15:08:12
#166834
Resposta escolhida
Colega com o código abaixo vc consegue isso perfeitamente, basta colocar um Timer no Form com o intervalo de 100 e Enabled = False:

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]
VILMARBR 23/08/2006 15:45:54
#166848
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 ;)

Tópico encerrado , respostas não são mais permitidas