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

вроде так


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

вроде так


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

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

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

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

В модуле формы
Код: 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
15.09.2008, 17:59
    #35540437
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
событие MouseExit
Сомневаюсь, что автору нужно ограничить движения мыши.

СуКакой я гений
В Control_MouseMove включаешь таймер, в таймере делаешь GetCursorPos, WindowFromPoint, и сравниваешь результат последней с Control.hWnd. Если не совпадает — MsgBox "MouseLeave" — и выключаешь таймер.
...
Рейтинг: 0 / 0
15.09.2008, 18:03
    #35540451
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
событие MouseExit
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
15.09.2008, 18:18
    #35540481
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
событие MouseExit
AntonariyСел в ту же лужу, что и HandKot . Отрицательных и значений > Scale здесь не будет."Не суди..."
При установленном перехвате мыши (SetCapture) будут.
...
Рейтинг: 0 / 0
15.09.2008, 18:39
    #35540526
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
событие MouseExit
Для TrackMouseEvent заявлено:
Minimum operating systems Windows 98, Windows NT 4.0

Так что можно сабклассить элемент управления и ловить WM_MOUSELEAVE вне привязки к стилям XP.
...
Рейтинг: 0 / 0
15.09.2008, 23:30
    #35540869
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
событие MouseExit
Бенедикт AntonariyСел в ту же лужу, что и HandKot . Отрицательных и значений > Scale здесь не будет."Не суди..."
При установленном перехвате мыши (SetCapture) будут.Пардон, перепутал с ClipCursorRect.
БенедиктТак что можно сабклассить элемент управления и ловить WM_MOUSELEAVE вне привязки к стилям XP.Собственными глазами видел, как это событие переставало приходить после отключения стилей.
...
Рейтинг: 0 / 0
16.09.2008, 08:31
    #35541064
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
событие MouseExit
СуКакой я гений 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
16.09.2008, 17:59
    #35542712
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
событие MouseExit
AntonariyСобственными глазами видел, как это событие переставало приходить после отключения стилей.Может быть, но я такого пока у себя не вижу. Возможно, повторный вызов TrackMouseEvent() при отключении стилей исправит ситуацию.

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


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