powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / событие MouseExit
13 сообщений из 13, страница 1 из 1
событие MouseExit
    #35539512
Как создать событие моус Екзит т.е.
когда курсор выходит из зоны компонента то идёт посыл на выполнение события?
Заранее благодарен!!
...
Рейтинг: 0 / 0
событие MouseExit
    #35539842
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Control_MouseMove и если одна из координат станет меньше 0, то вышли за пределы контрола

вроде так


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
событие MouseExit
    #35540017
HandKot Control_MouseMove и если одна из координат станет меньше 0, то вышли за пределы контрола

вроде так


I Have Nine Lives You Have One Only
THINK!
а ты сам та пробовал?
координаты при моус мов не становятся < 0 и больше размера т.к. когда курсор выходит за пределы контрола координаты больше не поступют и и координаты остаются теми которые были до того как курсор вышел.
Этот вариант не пойдёт!!

Может кто ещё знает???
...
Рейтинг: 0 / 0
событие MouseExit
    #35540022
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не так. Если одна из координат меньше 0, то MouseMove не произойдет.

Если в системе и программе используются стили XP, то можно ловить WM_MOUSELEAVE, а если нет — проверять по таймеру что находится под курсором.
...
Рейтинг: 0 / 0
событие MouseExit
    #35540330
AntonariyНе так. Если одна из координат меньше 0, то MouseMove не произойдет.

Если в системе и программе используются стили XP, то можно ловить WM_MOUSELEAVE, а если нет — проверять по таймеру что находится под курсором.
Можешь рассказать про 2-ой вариант по подробнее?:-)
...
Рейтинг: 0 / 0
событие MouseExit
    #35540376
SoftParanoik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант:

В модуле формы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Option Explicit

Private Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private IsCaptured As Boolean

Private Sub Form_Load()
    IsCaptured = False
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Not IsCaptured Then
        IsCaptured = True
        SetCapture Me.hwnd
    Else
        If X > Me.ScaleWidth Or X <  0  Or Y > Me.ScaleHeight Or Y <  0  Then
            ReleaseCapture
            IsCaptured = False
            Debug.Print "Leave !!!"
        End If
    End If
End Sub
...
Рейтинг: 0 / 0
событие MouseExit
    #35540437
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сомневаюсь, что автору нужно ограничить движения мыши.

СуКакой я гений
В Control_MouseMove включаешь таймер, в таймере делаешь GetCursorPos, WindowFromPoint, и сравниваешь результат последней с Control.hWnd. Если не совпадает — MsgBox "MouseLeave" — и выключаешь таймер.
...
Рейтинг: 0 / 0
событие MouseExit
    #35540451
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SoftParanoik
Код: plaintext
1.
2.
Form_MouseMove
...
If X > Me.ScaleWidth Or X <  0  Or Y > Me.ScaleHeight Or Y <  0  Then
Сел в ту же лужу, что и HandKot . Отрицательных и значений > Scale здесь не будет.
...
Рейтинг: 0 / 0
событие MouseExit
    #35540481
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyСел в ту же лужу, что и HandKot . Отрицательных и значений > Scale здесь не будет."Не суди..."
При установленном перехвате мыши (SetCapture) будут.
...
Рейтинг: 0 / 0
событие MouseExit
    #35540526
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для TrackMouseEvent заявлено:
Minimum operating systems Windows 98, Windows NT 4.0

Так что можно сабклассить элемент управления и ловить WM_MOUSELEAVE вне привязки к стилям XP.
...
Рейтинг: 0 / 0
событие MouseExit
    #35540869
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бенедикт AntonariyСел в ту же лужу, что и HandKot . Отрицательных и значений > Scale здесь не будет."Не суди..."
При установленном перехвате мыши (SetCapture) будут.Пардон, перепутал с ClipCursorRect.
БенедиктТак что можно сабклассить элемент управления и ловить WM_MOUSELEAVE вне привязки к стилям XP.Собственными глазами видел, как это событие переставало приходить после отключения стилей.
...
Рейтинг: 0 / 0
событие MouseExit
    #35541064
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СуКакой я гений HandKot Control_MouseMove и если одна из координат станет меньше 0, то вышли за пределы контрола

вроде так


I Have Nine Lives You Have One Only
THINK!
а ты сам та пробовал?
координаты при моус мов не становятся < 0 и больше размера т.к. когда курсор выходит за пределы контрола координаты больше не поступют и и координаты остаются теми которые были до того как курсор вышел.
Этот вариант не пойдёт!!

Может кто ещё знает???

конечно пробовал, иначе бы не предложил.
только оказалась одна оговорка: это действует на фрейм
и проверять надо не только отрицательные значения, но и выход за другие стороны


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
событие MouseExit
    #35542712
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyСобственными глазами видел, как это событие переставало приходить после отключения стилей.Может быть, но я такого пока у себя не вижу. Возможно, повторный вызов TrackMouseEvent() при отключении стилей исправит ситуацию.

СуКакой я гений,
пример прилагаю.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / событие MouseExit
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]