Hej! Hej! Jo, för mig också men har man så måste man ha koden man har i From_MouseMove i alla objekt som finns runt om pictureboxen. Men jag kör på det så länge. Det räcker väl att du har minst en pixel-bred ram av Formen runt PictureBoxen, Detta är ett fall för SubClassing....sök lite på det och se vad du hittar. Har tyvärr inte VB instalerat. Så jag kan inte testa. Men jag har för mig att det skall funka med något sånt här:OnMouseOver
Har testat och försökt och sökt med ljus och lykta men får inte fram något bra.
Det jag vill åstakomma är helt eneklt att när man för musen över en PictureBox så ska bakgrundsfärgen ändras och när musen försvinner från den så ska färgen ändras tillbaks.
Låter ju enkelt men verkar inte vara lika enkelt i praktiken, jag får iallafall inte till det så jag hoppas att någon kanske har en bra lösning? Om det finns nått bra sätt förstårs, annars får jag hitta på nått annat :)
Tack på förhand!Sv: OnMouseOver
Detta funkar för mej, i a f:
<code>
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture1.BackColor = &H00FFFFFF&
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture1.BackColor = &H0&
End Sub
</code>
Lägg en PictureBox (Picture1) på Formen.
Kopiera & Klistra in koden i Code-fönstret.
Tryck F5 (Start) -> Voila! :-)
ChristerGbgSv: OnMouseOver
Sv: OnMouseOver
så hinner SubRutinen Form_MouseMove utföra det den "ska"?
ChristerGbgSv: OnMouseOver
<code>
Private Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" _
Alias "CallWindowProcA" _
(ByVal lpPrevWndFunc As Long, _
ByVal hwnd As Long, _
ByVal uMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Public Sub Unhook(fhwnd As Long)
If defWindowProc Then
Call SetWindowLong(fhwnd, GWL_WNDPROC, defWindowProc)
defWindowProc = 0
End If
End Sub
Public Sub Hook(fhwnd As Long)
defWindowProc = SetWindowLong(fhwnd, _
GWL_WNDPROC, _
AddressOf WindowProc)
End Sub
'Lyssna på meddelanden från Windows
Function WindowProc(ByVal hwnd As Long, _
ByVal uMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
'Intercept windows messages here
'ex. Select Case uMsg
'process windows messages
WindowProc = CallWindowProc(defWindowProc, _
hwnd, _
uMsg, _
wParam, _
lParam)
End Function
</code>
En del info finns på - vbnet.mvps.org.
/EggetSv: OnMouseOver
<code>
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private mCaptured As Boolean
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If mCaptured Then
If (X < 0 Or X > Picture1.Width) Or (Y < 0 Or Y > Picture1.Height) Then
ReleaseCapture
mCaptured = False
''Call MouseExit
Picture1.BackColor = vbGreen
End If
Else
''Call MouseEnter
Picture1.BackColor = vbRed
SetCapture Picture1.hwnd
mCaptured = True
End If
End Sub
</code>