Горячее создание события мыши в vb6 над изображением - PullRequest
1 голос
/ 06 августа 2010

У меня есть изображение, для которого я написал код в MouseMove, чтобы выделить его. это делается, что я хочу, чтобы, когда мышь оставляет изображение, блики исчезают, но я не могу найти какое-либо событие, которое это сделает. Я работаю в Visual Basic 6.0. я пробовал события mouseup и down, но они не соответствуют моему требованию.

Спасибо

Ответы [ 5 ]

2 голосов
/ 09 августа 2010

Для этой конкретной цели есть отличный маленький контроль ocx, написанный Марко Беллинасо, уважаемым автором и большим вкладчиком хорошего контента в сообщество VB в свое время.

Элемент управления называется "MB MouseHelper". Вы можете скачать его с devx.com на http://www.devx.com/vb2themax/CodeDownload/19735.

альтернативный текст http://img25.imageshack.us/img25/3985/screencap20100809110523.jpg

Существуют две проблемы с использованием встроенного в VB события MouseMove, которые делают этот элемент управления полезным:

  • Вы должны поймать все места, где пользователь может поместить мышь, когда она покидает ваше изображение, например форму или другой элемент управления или соседнюю метку
  • И пользователь по-прежнему может очень быстро перемещать мышь, перепрыгивая через любую часть окна, которая вызовет событие MouseMove, которое выделит ваше изображение
2 голосов
/ 06 августа 2010

Нет такого события в VB6 (хотя VB.Net имеет MouseLeave ). Вам нужно будет что-то сделать в событии MouseMove формы (и, возможно, в любых элементах управления контейнера).

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  ' Unhighlight the image'
End Sub

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  ' Highlight the image'
End Sub
1 голос
/ 07 августа 2010

Вы также можете поместить изображение, которое вы хотите имитировать событие mouseleave, в большую картинку. Таким образом, когда вы покидаете внутреннюю картинку (поменьше), вы попадете на событие мышки на внешней картинке. Кроме того, это работает, если вы используете рамку или метку вместо другой картинки

0 голосов
/ 26 августа 2010

Если вы используете событие mouseMove, нужно обратить внимание на то, чтобы поднять флаг, когда вы находитесь в элементе управления, который вы хотите выделить, и поднять другой, когда вы выключены, чтобы не повторять одно и то же действие при каждом изменении xy мыши

Private Sub Form_MouseMove (кнопка как целое число, Shift как целое число, X как одно целое, Y как одиночное)

'если imageIsHighlighted = true, тогда

' Отменить выделение изображения '

'imageIsHighlighted = false

' end if

End Sub

Private Sub Image1_MouseMove (кнопка как целое число, Shift как целое число, X как одиночное, Y как одиночное)

'если imageIsHighlighted = false, тогда

' Выделить изображение '

' imageIsHighlighted = True

'end if

EndSub

0 голосов
/ 09 августа 2010

Вы всегда можете создать подкласс управления. Вот статья , в которой описывается, как это сделать.

...