nel debug.print appaiono due numeri per ciascun angolo perche' il primo rappresenta la coordinata x e il secondo la coordinata y.
Private Sub Timer1_Timer()
Dim pt As POINTAPI
Call GetCursorPos(pt)
Call ScreenToClient(Me.hwnd, pt)
Debug.Print "Screen Coords: ", pt.x, pt.y
If pt.x < 57 Or pt.x > 224 Or pt.y > 98 Or pt.y < 57 Then
List1.Visible = False
Else
List1.Visible = True
End If
End Sub
Da questo codice puoi capire che le coordinate della mia listbox sono:
angolo in alto a sx = (57;57)
angolo in alto a dx = (224;57)
angolo in basso a sx = (57;98)
angolo in basso a dx = (224;98)
chiaramente ho indicato le coordinate in questo modo (coordinatax;coordinatay)
----------------------------------
La coordinata x di un punto varia se questo punto si muove lungo una linea orizzontale, piu' precisamente diminuisce se il punto si sposta a sinistra, mentre aumenta se il punto si sposta a destra;
La coordinata y di un punto varia se questo punto si muove lungo una linea verticale, piu' precisamente diminuisce se il punto si sposta verso l'alto, mentre aumenta se il punto si sposta verso il basso;
Detto questo, nel codice il timer controlla se la coordinata x del cursore (mouse) si sposta piu' a sinistra della coordinata x del punto piu' a sinistra della listbox.
Sembra un gioco di parole ma detto terra-terra e' proprio cosi'.
Questa operazione viene ripetuta per i 4 lati della listbox, quindi il timer controlla se il cursore si trova piu' in alto, piu' in basso, piu' a sinistra o piu' a destra della listbox, se e' così la listbox viene nascosta, altrimententi viene visualizzata.
Fammi sapere