Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di JCave
    Registrato dal
    Oct 2002
    Messaggi
    132

    [VB6] Eventi pulsanti mouse

    Ciao!

    Se tengo premuto il tasto dx del mouse e poi il clicco col sx (quindi con il dx ancora premuto) vorrei che mi apparisse una msgbox.
    Ho provato così:

    Dim risposta As String

    Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    risposta = ""

    If Button = 1 Then
    risposta = "sx"
    ElseIf Button = 2 Then
    risposta = "dx"
    End If
    End Sub

    Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
    risposta = risposta & "sx"
    ElseIf Button = 2 Then
    risposta = risposta & "dx"
    End If

    MsgBox "Ecco la sequenza: " & risposta
    End Sub

    ma non funge, come dovrei fare?

    Grazie!

  2. #2
    Ciao !
    Non funziona perchè l'argomento Button ti informa sul pulsante premuto in quell'istante. Così non ti rimane traccia delle precedenti pressioni dell'altro pulsante.
    Hai due possibilità: la prima consiste nel tenere questa traccia.
    Magari valorizzando una variabile booleana a True ogni volta che il puls. dx viene premuto o False ogni volta che viene rilasciato.
    Così, al mousedown del puls.sx non devi fare altro che controllare se il puls.dx è ancora premuto.
    codice:
    Option Explicit
    Dim iStatoPulsanti(1 To 4) As Boolean
    
    Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    
      If Button = 1 And iStatoPulsanti(2) = True Then
          ' premuto pulsante sx con puls. dx ancora premuto !!!
      End If
      
      ' memorizza che il pulsante è premuto
      iStatoPulsanti(Button) = True
    End Sub
    
    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    
      ' memorizza che il pulsante NON è premuto
      iStatoPulsanti(Button) = False
    End Sub
    La seconda possibilità consiste nel verificare semplicemente lo stato del pulsante dx.
    codice:
    Option Explicit
    Private Declare Function GetAsyncKeyState Lib "user32.dll"  _
        (ByVal vKey As Long) As Integer
    
    '
    Function IsButtonDown(ByVal Button As MouseButtonConstants) As Boolean
    ' Restitusice True se il pulsante del mouse è premuto
    
        IsButtonDown = GetAsyncKeyState(Button) And &H8000
    End Function
    
    Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    
      If Button = 1 And IsButtonDown(2) = True Then
          ' premuto pulsante sx con puls. dx ancora premuto !!!
      End If
    End Sub
    Ciao ciao
    Simo

  3. #3
    Utente di HTML.it L'avatar di JCave
    Registrato dal
    Oct 2002
    Messaggi
    132
    Perfetto! Grazie!

    Ho usato la seconda possibilità perché la prima mi ha dato quelche problema.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.