А зачем добавлять несколько меток перехода? Достаточно одной:
Gui, Font, s24
Gui, Add, Text, cBlue y+5, Forever blue!
Loop 3 {
; нужна метка перехода g, иначе переменная A_GuiControl будет пустой
Gui, Add, Text, cBlue xp y+5 wp center vChangeColor%A_Index% gDummy, I'm blue
}
Gui, Show
OnMessage(0x200, "WM_MOUSEMOVE")
Dummy:
Return
WM_MOUSEMOVE(wp, lp, msg) {
static hover := {}
if (msg = "timer") {
MouseGetPos,,,, hControl, 2
if (hControl != lp) {
SetTimer,, Delete
hover[lp] := false
Gui, %wp%:Font, cBlue
GuiControl, %wp%:Font, %lp%
GuiControl, %wp%:, %lp%, I'm blue
}
}
else {
GuiControlGet, hText, hwnd, %A_GuiControl%
if ( !hover[hText] && InStr(A_GuiControl, "ChangeColor") ) {
hover[hText] := true
Gui, Font, cRed
GuiControl, Font, %A_GuiControl%
GuiControl,, %A_GuiControl%, I'm red!
timer := Func(A_ThisFunc).Bind(A_Gui, hText, "timer")
SetTimer, % timer, 100
}
}
}
Или то же самое без цикла:
Gui, Font, s24
Gui, Add, Text, cBlue y+5, Forever blue!
Gui, Add, Text, cBlue xp y+5 wp center vChangeColor1 gDummy, I'm blue
Gui, Add, Text, cBlue xp y+5 wp center vChangeColor2 gDummy, I'm blue
Gui, Add, Text, cBlue xp y+5 wp center vChangeColor3 gDummy, I'm blue
Gui, Show
OnMessage(0x200, "WM_MOUSEMOVE")
Dummy:
Return
WM_MOUSEMOVE(wp, lp, msg) {
static hover := {}
if (msg = "timer") {
MouseGetPos,,,, hControl, 2
if (hControl != lp) {
SetTimer,, Delete
hover[lp] := false
Gui, %wp%:Font, cBlue
GuiControl, %wp%:Font, %lp%
GuiControl, %wp%:, %lp%, I'm blue
}
}
else {
GuiControlGet, hText, hwnd, %A_GuiControl%
if ( !hover[hText] && InStr(A_GuiControl, "ChangeColor") ) {
hover[hText] := true
Gui, Font, cRed
GuiControl, Font, %A_GuiControl%
GuiControl,, %A_GuiControl%, I'm red!
timer := Func(A_ThisFunc).Bind(A_Gui, hText, "timer")
SetTimer, % timer, 100
}
}
}
Разработка AHK-скриптов:
e-mail
dfiveg@mail.ruTelegram
jollycoder