amel27,
Цитата amel27:
в твоем примере нет динамического создания/удаления описателей »
|
Есть, ты видимо не ту версию скачал (нужно ту что для 3.2.10.0)

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

#include <GuiConstants.au3>
#include <GUICtrlSetOnHover_UDF_For 3.2.10.0.au3>
$GUI = GUICreate("Test Script", 300, 200)
$Button = GUICtrlCreateButton("Button", 20, 40, 60, 20)
For $i = 1 To 10
If Mod($i, 2) = 0 Then
_GUICtrlSetOnHover($Button, "Hover_Func", "Leave_Hover_Func")
Else
_GUICtrlUnSetOnHover($Button)
EndIf
Next
GUISetState(@SW_SHOW, $GUI)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
В этом случае, если не проверять If $pTimerProc <> 0 в UDF, то скрипт вылетает.
Цитата amel27:
не вижу проблемы как таковой »
|
Я проблему то решил для себя, но по большому проблема есть, и заключается она в том, что Аутоит "вылетает" когда от него это не ожидается.
Цитата amel27:
Могу предложить свой вариант системы UDF, причем без создания глобальных данных »
|
Хм, у тебя получается сделать без глобальных переменных? А как быть с LAST_HOVERED_ELEMENT? т.е нужно чтобы функция не вызывалась всё время, а только при навидении в первый раз.
Цитата amel27:
для штатного GUI не нужен никакой таймер - достаточно поставить обработчик сообщения WM_MOUSEMOVE »
|
Имхо, этого не будет достаточно если нужно чтобы обработка OnHover была и при
не активном GUI, а также в последних версиях UDF добавлена возможность OnClick ($sPrimaryDownFuncName, $sPrimaryUpFuncName), там явно MouseMove не поможет.