Автор Тема: GUICtrlOnHover - Обработка событии при наведении мышки  (Прочитано 40166 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2696
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: GUICtrlSetOnHover - Обработка событии при наведении
« Ответ #15, Отправлен: Сентябрь 28, 2009, 19:09:27 »
Ты пробовал то что я написал?

Выложи пожалуйста правленный UDF, я протестирую.

Кстати, я приспособил свой Icons.au3 для совместной работы с твойм GUICtrlSetOnHover_UDF.au3. Пока только на оф. форуме, но там я выложил прикольный пример, обязательно посмотри.

http://www.autoitscript.com/forum/index.php?showtopic=92675


Думай, прежде чем говорить.

Русское сообщество AutoIt

Re: GUICtrlSetOnHover - Обработка событии при наведении
« Ответ #15 Отправлен: Сентябрь 28, 2009, 19:09:27 »

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2696
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: GUICtrlSetOnHover - Обработка событии при наведении
« Ответ #16, Отправлен: Сентябрь 28, 2009, 19:42:00 »
Ок, нашёл где это может не сработать - если при удерживании кнопки увести курсор за пределы окна и отпустить...

Не только за пределы окна, но и на любой другой элемент или заголовок.


Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827

  • Автор темы
  • Репутация: 2288
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: GUICtrlSetOnHover - Обработка событии при наведении
« Ответ #17, Отправлен: Сентябрь 28, 2009, 19:58:36 »
Yashied [?]
Цитировать
Выложи пожалуйста правленный UDF
Ок, обновил.

Цитировать
там я выложил прикольный пример, обязательно посмотри
Клас, мне понравилось. Только вот ширина GUI большая, лучше ориентироваться по @DesktopWidth-10.


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2696
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: GUICtrlSetOnHover - Обработка событии при наведении
« Ответ #18, Отправлен: Сентябрь 28, 2009, 20:03:55 »
Клас, мне понравилось. Только вот ширина GUI большая, лучше ориентироваться по @DesktopWidth-10.

Да, об этом как-то не подумал.

OffTopicКогда на столе стоит 30", то сам понимаешь, о таких мелочах начинаешь забывать. :)

Русское сообщество AutoIt

Re: GUICtrlSetOnHover - Обработка событии при наведении
« Ответ #18 Отправлен: Сентябрь 28, 2009, 20:03:55 »

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2696
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: GUICtrlSetOnHover - Обработка событии при наведении
« Ответ #19, Отправлен: Сентябрь 28, 2009, 20:08:44 »
Ок, обновил.

Да, сейчас работает как нужно, спасибо. Более детально буду разбираться позже.

+1

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827

  • Автор темы
  • Репутация: 2288
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Обновление библиотеки...

Список изменении:
Цитировать
[v1.9] - [21.05.2010]
* Библиотека теперь совместима с AutoIt 3.3.6.1.
* Библиотека переименована в GUICtrlOnHover.au3.
* Изменено название главной функции на _GUICtrl_OnHoverRegister, из соображении обратной совместимости, старые имена функции по прежнему поддерживаются:
   _GUICtrl_SetOnHover, GUICtrl_SetOnHover, GUICtrlSetOnHover, _GUICtrlSetOnHover
* Исправлена(?) проблема связанная с работой библиотеки на 64-битной ОС.
* Переименование глобальных переменных и внутренних функции (исключительно из "косметических" соображении).
* Оптимизирован код библиотеки для более удобного чтения.

Оффлайн kzru_hunter [?]

  • Осваивающий
  • **
  • Сообщений: 144
  • Репутация: 49
    • Награды
Заметил баг в примере Letters Hovering Example.au3: если навести курсор на какую-нибудь букву и потом нажать esc, то скрипт зависает. Если закоментировать _GUICtrl_OnHoverRegister, то такого не происходит.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827

  • Автор темы
  • Репутация: 2288
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
kzru_hunter  [?]
Цитировать
Если закоментировать _GUICtrl_OnHoverRegister, то такого не происходит
Так и пример тогда не работает :)
Нужно просто перед Exit добавить GUIDelete(). Спасибо, поправлю.

Русское сообщество AutoIt

Re: GUICtrlOnHover - Обработка событии при наведении мышки
« Ответ #22 Отправлен: Май 25, 2010, 07:37:54 »

Оффлайн kzru_hunter [?]

  • Осваивающий
  • **
  • Сообщений: 144
  • Репутация: 49
    • Награды
Если добавить GuiDelete() перед Exit, то форма закрывается, но скрипт все ещё продолжает работать и грузит проц на 100%.

Исправить можно, если убрать sleep в главном цикле и использовать задержку другими функциями, например GuiGetMsg().
Но sleep все равно может когда-нибудь понадобится.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827

  • Автор темы
  • Репутация: 2288
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
kzru_hunter  [?]
Цитировать
Исправить можно, если убрать sleep в главном цикле
Его можно выставить на 1000, это частично решает проблему, но также желательно в UDF таймер запускать режже чем каждые 10 мс, например каждые 30, но это уже влияет на скорость Hovering'а.


Добавлено: Май 26, 2010, 10:18:25
kzru_hunter  [?]
Цитировать
Если добавить GuiDelete() перед Exit, то форма закрывается, но скрипт все ещё продолжает работать и грузит проц на 100%.
Этот баг связан с тикетом который я недавно открыл, но разработчики затрудняются его воспроизвести.

Кстатит если установить:
Код: AutoIt [Выделить]
_GUICtrl_SetHoverOnBackWindow(0)

то скрипт завершается нормально, а значит проблема в __GUICtrl_SOH_ControlGetHovered().
« Последнее редактирование: Май 26, 2010, 10:18:25 от CreatoR, Причина: Объединение сообщений »

Оффлайн kzru_hunter [?]

  • Осваивающий
  • **
  • Сообщений: 144
  • Репутация: 49
    • Награды
CreatoR Ставил любые значения для Sleep, а также менял значение для SetTimer. Всё равно виснет.

Цитата: CreatoR
Этот баг связан с тикетом который я недавно открыл, но разработчики затрудняются его воспроизвести.
Получалось случайно воспроизвести, но редко.

Цитата: CreatoR
Кстатит если установить:
_GUICtrl_SetHoverOnBackWindow(0)
то скрипт завершается нормально, а значит проблема в __GUICtrl_SOH_ControlGetHovered().
Тоже нормально завершается, но использовав функцию __GUICtrl_SOH_ControlGetHovered в своём примере, проблема не возникает.

Может это из-за таймера? И почему именно таймер, а не AdlibRegister?  :)

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827

  • Автор темы
  • Репутация: 2288
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
kzru_hunter  [?]
Цитировать
почему именно таймер, а не AdlibRegister?
Потому что когда я писал UDF, AdlibRegister ещё не существовал ;) - Надо будет попробовать с ним сделать, хотя это нарушит обратную совместимость.


Добавлено: Май 27, 2010, 22:43:04
[?]
Цитировать
Потому что когда я писал UDF, AdlibRegister ещё не существовал
А также потому что функция заданная таймером выполняется даже если скрипт блокирован такой функцией как MsgBox (чтобы убедиться в этом, просто нажми на любую букву в примере, и наводи курсор над буквами после появления MsgBox).
« Последнее редактирование: Май 27, 2010, 22:43:04 от CreatoR, Причина: Объединение сообщений »

Оффлайн kzru_hunter [?]

  • Осваивающий
  • **
  • Сообщений: 144
  • Репутация: 49
    • Награды
CreatoR  [?]
Цитировать
А также потому что функция заданная таймером выполняется даже если скрипт блокирован такой функцией как MsgBox (чтобы убедиться в этом, просто нажми на любую букву в примере, и наводи курсор над буквами после появления MsgBox).
Об этом не знал, Спасибо  :)

Ещё заметил, что такой баг возникает, если быстро нажать и отпустить esc. Если нажать и держать, то не возникает.

Похоже баг в AutoIt'е
« Последнее редактирование: Май 28, 2010, 21:18:40 от kzru_hunter »

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2696
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Потому что когда я писал UDF, AdlibRegister ещё не существовал ;) - Надо будет попробовать с ним сделать, хотя это нарушит обратную совместимость.

AdlibRegister() так же тупит, как и AdlibEnable(). И MsgBox(), и контекстное меню, и при перетаскивании окна тормозится. Вряд ли это баг, типо так задумано...

Оффлайн kzru_hunter [?]

  • Осваивающий
  • **
  • Сообщений: 144
  • Репутация: 49
    • Награды
Обнаружил ещё кое-что: если в _Leave_Hover_Func добавить MessageBox, то будет печальная ситуация  :); если добавить его в _Hover_Func, то перестанет срабатывать _Leave_Hover_Func при появлении messagebox'a.

Русское сообщество AutoIt

Re: GUICtrlOnHover - Обработка событии при наведении мышки
« Ответ #29 Отправлен: Июнь 05, 2010, 21:23:20 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
77 Ответов
70047 Просмотров
Последний ответ Ноябрь 14, 2017, 23:08:08
от rpgeha
11 Ответов
11260 Просмотров
Последний ответ Март 23, 2017, 01:38:24
от CreatoR
5 Ответов
5733 Просмотров
Последний ответ Ноябрь 13, 2009, 00:09:20
от CreatoR
6 Ответов
7920 Просмотров
Последний ответ Март 20, 2015, 20:52:41
от CtrlSoft
8 Ответов
4297 Просмотров
Последний ответ Апрель 05, 2012, 09:40:35
от madmasles
8 Ответов
3150 Просмотров
Последний ответ Декабрь 12, 2014, 17:38:46
от Yashied
9 Ответов
2698 Просмотров
Последний ответ Апрель 24, 2015, 17:23:51
от Крепыш
6 Ответов
777 Просмотров
Последний ответ Декабрь 18, 2017, 17:45:42
от Tempo
8 Ответов
726 Просмотров
Последний ответ Март 22, 2018, 15:30:21
от dr.room
0 Ответов
1211 Просмотров
Последний ответ Октябрь 21, 2018, 22:48:10
от Vlasssov