Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Routine Mouse che esce dal form
Forum - Visual Basic 6 - Routine Mouse che esce dal form

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
§§Felpato§§ (Normal User)
Rookie


Messaggi: 29
Iscritto: 27/04/2009

Segnala al moderatore
Postato alle 20:57
Sabato, 01/08/2009
Innanzitutto ciao a tutti.
Espongo il mio problema. Stavo provando a creare una Toolbar di quelle che si mettono ai bordi dello schermo e quando ci si passa sopra con il mouse si aprono.
Volevo sapere se esiste una routine che si attivava quando il mouse usciva dal form.(Diciamo una cosa contraria alla Routine Form1_MouseMove). Grazie

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 21:02
Sabato, 01/08/2009
No ... non esiste.

Puoi usare la MouseMove in modo da capire se il mouse non e' dentro il form ...

PM Quote
Avatar
antometal (Member)
Guru


Messaggi: 691
Iscritto: 12/09/2007

Segnala al moderatore
Postato alle 21:40
Sabato, 01/08/2009
non son sicuro che si possa risolvere col mousemove (può essere che mi sbaglio)...
ma con le pointapi e un timer, risolvi sicuramente...

PM Quote
Avatar
Louis (Normal User)
Pro


Messaggi: 150
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 5:03
Domenica, 02/08/2009
Ciao feltapo, di seguito ti posto del codice che potrebbe risolvere il tuo prob. Preciso che NON é stato scritto da me, ma solo modificato
Codice sorgente - presumibilmente VB.NET

  1. Option Explicit
  2. ' Limita i movimenti del mouse nella Form visualizzata:
  3. Private Type RECT
  4.     left As Long
  5.     top As Long
  6.     right As Long
  7.     bottom As Long
  8. End Type
  9. Private Type POINT
  10.     x As Long
  11.     y As Long
  12. End Type
  13. Private Declare Sub ClipCursor Lib "user32" (lpRect As Any)
  14. Private Declare Sub GetClientRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT)
  15. Private Declare Sub ClientToScreen Lib "user32" (ByVal hWnd As Long, lpPoint As POINT)
  16. Private Declare Sub OffsetRect Lib "user32" (lpRect As RECT, ByVal x As Long, ByVal y As Long)
  17. '------------------------------------------------------
  18. Private Sub Form_Load()
  19.     Command1.Caption = "Limita i movimenti del mouse"
  20.     Command2.Caption = "Libera il mouse"
  21. End Sub
  22. '------------------------------------------------------
  23. Private Sub Command1_Click()
  24.     Dim client As RECT
  25.     Dim upperleft As POINT
  26.     GetClientRect Me.hWnd, client
  27.     upperleft.x = client.left
  28.     upperleft.y = client.top
  29.     ClientToScreen Me.hWnd, upperleft
  30.     OffsetRect client, upperleft.x, upperleft.y
  31.     ClipCursor client
  32. End Sub
  33. '------------------------------------------------------
  34. Private Sub Command2_Click()
  35.     ClipCursor ByVal 0&
  36. End Sub
  37. '------------------------------------------------------
  38. Private Sub Form_Unload(Cancel As Integer)
  39.     ClipCursor ByVal 0&
  40. End Sub



:k:

PM Quote
Avatar
§§Felpato§§ (Normal User)
Rookie


Messaggi: 29
Iscritto: 27/04/2009

Segnala al moderatore
Postato alle 20:52
Domenica, 02/08/2009
Grazie Louis per il codice interessante che hai postato, ma credo che non si possa rivelare utile per risolvere il mio problema ;). In sostanza io voglio che il mouse possa uscire liberamente dalla form e non bloccarlo.
Posto il codice per far capire meglio:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  2. Timer1.Enabled = True
  3. End Sub
  4.  
  5. Private Sub Timer1_Timer()
  6. If Me.Left < 15000 Then
  7. Timer1.Enabled = False
  8. Else
  9. Me.Left = Me.Left - 100
  10. End If
  11. End Sub



Manca la procedura di rientro del form quando il puntatore esce.

Credo sia più semplice la soluzione di Antometal, ossia quella di individuare la posizione del puntatore. Se il mouse è fuori da una certa area (quella occupata dalle possibili posizioni del form), allora:

Codice sorgente - presumibilmente Visual Basic 6

  1. Private Sub Form_Load()
  2. Me.Left = 19130
  3. End Sub



Qual'è la procedura per individuare la posizione del mouse? Grazie

Altra domanda. E' possibile evitare di mettere tutte queste posizioni (19130, 15000) e mettere delle variabili che individuano il bordo destro dello schermo?
In questo stato la Toolbar non potrebbe funzionare a dovere in un computer con una risoluzione differente da quella attuale.
Grazie.

PM Quote
Avatar
antometal (Member)
Guru


Messaggi: 691
Iscritto: 12/09/2007

Segnala al moderatore
Postato alle 21:32
Domenica, 02/08/2009
provato con le pointapi???

in un form (con un timer: Timer1):

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Timer1_Timer()
  2. Dim mouse As Pointapi
  3. Dim pos1 As Pointapi    'angolo in alto a sinistra
  4. Dim pos2 As Pointapi    'angolo in basso a destra
  5.  
  6. Timer1.Interval = 100
  7. GetCursorPos mouse
  8. pos1.x = Me.Left / 15
  9. pos1.y = Me.Top / 15
  10. pos2.x = Me.Width / 15 + pos1.x
  11. pos2.y = Me.Height / 15 + pos1.y
  12.  
  13.     If (mouse.x > pos1.x And mouse.y > pos1.y And mouse.x < pos2.x And mouse.y < pos2.y) Then
  14.         Me.Caption = "in form"
  15.     Else: Me.Caption = "out form"
  16.     End If
  17. End Sub



in un modulo:
Codice sorgente - presumibilmente VB.NET

  1. Public Declare Function GetCursorPos Lib "user32" (lpPoint As Pointapi) As Long
  2.  
  3. Public Type Pointapi
  4. x As Long
  5. y As Long
  6. End Type


PM Quote
Avatar
§§Felpato§§ (Normal User)
Rookie


Messaggi: 29
Iscritto: 27/04/2009

Segnala al moderatore
Postato alle 15:07
Lunedì, 03/08/2009
Ok il codice naturalmente funzona, però non ho capito bene quel / 15 a cosa serve. Scusate per il disturbo e grazie.:)

PM Quote
Avatar
antometal (Member)
Guru


Messaggi: 691
Iscritto: 12/09/2007

Segnala al moderatore
Postato alle 15:24
Lunedì, 03/08/2009
15 è il rapporto tra pixel e twip
in vb usi i twip, sullo schermo i pixel
1 pixel=15 twip

PM Quote
Avatar
§§Felpato§§ (Normal User)
Rookie


Messaggi: 29
Iscritto: 27/04/2009

Segnala al moderatore
Postato alle 15:36
Lunedì, 03/08/2009
Ah ok.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo