il codice di MdE, può andar bene...
ma forse in questo modo hai più libertà di movimento per gestire ulteriori controlli, e poi, utilizzando come dicevo prima, la WindowFromPoint, puoi evitare di scrivere ogni volta le coordinate del controllo, anche in virtù del fatto che mi sembra di aver capito che potrebbero essere anche più di uno...
per provare il codice, metti sul form:
- 1 Timer
- 1 Pulsante con Style = Graphical
- 2 PictureBox
- 2 ImageBox con 2 immagini differenti
lascia tutti i nomi di default, e copia questo codice:
codice:Private Declare Function GetCursorPos Lib "user32.dll" ( _ ByRef lpPoint As POINTAPI) As Long Private Type POINTAPI X As Long Y As Long End Type Private Declare Function WindowFromPoint Lib "user32.dll" ( _ ByVal xPoint As Long, _ ByVal yPoint As Long) As Long Dim ActControl As Object Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Set ActControl = Command1 Timer1.Enabled = True End Sub Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Set ActControl = Picture1 Timer1.Enabled = True End Sub Private Sub Picture2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Set ActControl = Picture2 Timer1.Enabled = True End Sub Private Sub Timer1_Timer() Dim pt As POINTAPI If ActControl Is Nothing Then Timer1.Enabled = False Exit Sub End If On Error Resume Next GetCursorPos pt If WindowFromPoint(pt.X, pt.Y) = ActControl.hWnd Then ActControl.Picture = Image1.Picture Else ActControl.Picture = Image2.Picture Timer1.Enabled = False Set ActControl = Nothing End If End SubBoolean

Boolean
Rispondi quotando