USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Dicas

  Visual Basic    (Mouse/Teclado)

Título da Dica:  Capturar a Posição do Mouse
Postada em 14/8/2000 por Webmaster      Clique aqui para enviar email para o autor  webmaster@vbweb.com.br
Para saber se o mouse está sobre um objeto ou não, podemos usar de duas formas:

USANDO AS APIs GetCursorPos E WindowFromPoint:

'Use um Timer e proceda da seguinte forma:

'No Declarations
Private Declare Function GetCursorPos Lib "user32" _
        (lpPoint As POINTAPI) As Long
Private Declare Function WindowFromPoint Lib _
        "user32" (ByVal xPoint As Long, ByVal _
        yPoint As Long) As Long

Private Type POINTAPI
  X As Long
  Y As Long
End Type

Private Controle_MouseMove(...)
  Timer1.Enabled = True
  'O mouse está sobre o controle
End Sub

Private Sub Timer1_Timer()
  Dim P as POINT
  If GetCursorPos(P) Then
    If WindowFromPoint(P.X, P.Y) <> Controle.hWnd then
      Timer1.Enabled = False
      'O mouse NÃO está mais sobre o controle
    End If
  End If
End Sub

USANDO AS APIs SetCapture E ReleaseCapture:
Verificando se o cursor do mouse está ou não sobre o Form:

'Coloque num form um CommandButton e dois Labels.

'No Declarations
Private Declare Function SetCapture Lib "user32" _
        Alias "SetCapture" (ByVal hwnd As Long) _
        As Long
Private Declare Function ReleaseCapture Lib _
        "user32" Alias "ReleaseCapture" () As Long

Private Sub Form_Load()
  SetCapture Me.Hwnd
End Sub

Private Sub Command1_Click()
  ReleaseCapture
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift _
            As Integer, X As Single, Y As Single)
  Label1.Caption = X
  Label2.Caption = Y
End Sub
Quando você executar, perceberá que, mesmo que o mouse não esteja sobre o Form, os Labels serão atualizados com as posições X e Y do mouse quando você o mover.
Quando você clicar no CommandButton ele irá parar de detectar o mouse quando ele estiver fora do Form (o ReleaseCapture "desliga" o SetCapture).

Verificando se o cursor do mouse está ou não sobre um controle:

'Coloque num form um CommandButton, dois Labels e
'um PictureBox.

'No Declarations
Private Declare Function SetCapture Lib "user32" _
        Alias "SetCapture" (ByVal hwnd As Long) _
        As Long
Private Declare Function ReleaseCapture Lib _
        "user32" Alias "ReleaseCapture" () As Long

Private Sub Form_Load()
  SetCapture Picture1.Hwnd
End Sub

Private Sub Command1_Click()
  'Para de detectar o mouse no form todo.
  ReleaseCapture
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift _
            As Integer, X As Single, Y As Single)
  If X > -1 And X < Picture1.Width And Y > -1 And Y < _
        Picture1.Height Then
    Picture1.BackColor = vbRed
  Else
    Picture1.BackColor = vbBlack
  EndIf
End Sub
Quando você executar, perceberá que, quando o mouse estiver sobre o PictureBox ele ficará vermelho e quando não estiver ficará preto.
Quando você clicar no CommandButton ele irá parar de detectar o mouse quando ele estiver fora do PictureBox (o ReleaseCapture "desliga" o SetCapture). Então, ele não ficará mais preto, pois o VB não detectará mais quando o mouse "sair" do PictureBox...
 


CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página