Anchor(ctrl, a, draw = false) { ; v3.4 - Titan static pos GuiControlGet, p, Pos, %ctrl% If !A_Gui or ErrorLevel Return sig = `n%A_Gui%:%ctrl%= c = x.w.y.h./.7.%A_GuiWidth%.%A_GuiHeight% StringSplit, c, c, . Loop, 4 b%A_Index% += !RegExMatch(a, c%A_Index% . "(?P<" . A_Index . ">[\d.]+)", b) If !InStr(pos, sig) pos := pos . sig . px - A_GuiWidth * b1 . c5 . pw - A_GuiWidth * b2 . c5 . py - A_GuiHeight * b3 . c5 . ph - A_GuiHeight * b4 . c5 StringMid, p, pos, InStr(pos, sig) + StrLen(sig) StringSplit, p, p, %c5% Loop, 4 If InStr(a, c%A_Index%) { i = %A_Index% c6 += i > 2 m := m . c%i% . p%i% + c%c6% * b%i% } If draw d = Draw GuiControl, Move%d%, %ctrl%, %m% }