Что нового

GUICtrlOnHover - Обработка событии при наведении мышки

Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,485
Обновление...

[v2.1] - [04.07.2012]
* Добавлена совместимость с ColorPicker.au3 UDF.
* Исправлена проблема с высвобождением ресурсов (последний перерегистрированный элемент по прежнему был активен).
+ Добавлена функция для высвобождения всех ресурсов: _GUICtrl_OnHoverReleaseResources
+ Добавлена альтернативная UDF "GUICtrlOnHover_NoCallback.au3", используется AdlibRegister вместо callback с таймерами. В некоторых случаях callback может вызывать утечку памяти.
Минус естественно в этом методе заключается в том, что любая блокирующая функция или цикл не позволят сработать процессу наведения.
 

musicstashall

Знающий
Сообщения
322
Репутация
7
Охотно пользуюсь данной функцией, но недавно возник такой баг — при клике на зарегестрированный контрол, клик проходит 3-5, а то и больше раз, то есть пока курсор находится над элементом, кликаться может много раз. Отчего такое происходит?? Использую такой метод:

Код:
$CTRL[$i][0] = GUICtrlCreatePic("", $X + 9, $Y + 9, $W - 18, $H - 18)
_GUICtrl_OnHoverRegister(-1, "_Hover_Event", "_Hover_Event", "_Primary_Event", "_Primary_Event", 0)

Func _Primary_Event($CtrlID, $iParam)
	Switch $iParam
		Case 1 ;Primary Down
		
		Case 2 ;Primary Up
	EndSwitch
EndFunc
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,485
musicstashall
Покажите работающий пример.
 

musicstashall

Знающий
Сообщения
322
Репутация
7
OffTopic:
CreatoR сказал(а):
musicstashall
Покажите работающий пример.

Сложно будет вырвать кусок кода из проекта, я наверное даже не смогу. Могу в личку весь проект скинуть.
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,485
musicstashall [?]
Сложно будет вырвать кусок кода из проекта
А я этого и не просил делать.
Мне нужен пример, который воспроизводит проблему.
Вы описали проблему, теперь из описания соорудите работающий пример :smile:.
 

musicstashall

Знающий
Сообщения
322
Репутация
7
Я разобрался. Оказывается, элементы у меня кликаются не только те, которые зарегистрированы функцией GUICtrlOnHover, поэтому отбой тревоги, здесь какие-то другие глюки, не связанные с данной функцией.
Сообщение автоматически объединено:

У меня вопрос к творцам. Скажите пожалуйста, как вызвать событие Down/Up для зарегистрированных элементов? Пробовал различные сообщения, и в окно, и в элемент непосредственно, никаких реакций.
Код:
_SendMessage($GUI1, $WM_LBUTTONDOWN, _WinAPI_MakeLong($lab16, 0), _WinAPI_MakeLong($iX, $iY))
_SendMessage(GUICtrlGetHandle($lab16), $WM_LBUTTONDOWN)


Мое окно не принимает клики мыши, так задумано, все клики эмулируются.
Сообщение автоматически объединено:

клик проходит 3-5, а то и больше раз, то есть пока курсор находится над элементом
Кстати, я выяснил причину данного недоразумения. Дело в том, что событие Down (кнопка мыши нажата) повторяется многократно, пока курсор над элементом, а событие Click нужно брать от события Up (кнопка мыши отпущена). Поставил флаги, для устранения повторов, функции повесил на событие Up и все конфликты прекратились.
 
Последнее редактирование:
Верх