Думаю, что самый простенький пример, с "гонением" в одну сторону:
Global r := 222
, step := 12
, angle := 225
, hButton
, IsEnable
CoordMode, Mouse, Client
OnMessage(0x200, "WM_MOUSEMOVE")
OnMessage(0x100, "KEYDOWN"), OnMessage(0x104, "KEYDOWN")
OnMessage(0x101, "KEYDOWN"), OnMessage(0x105, "KEYDOWN")
Gui, -DPIScale
Gui, Font, s22
Gui, Add, Button, vButton gButton hwndhButton w44 h44, % Chr(0x2639)
MoveCircle(angle)
Gui, Show, w488 h488
Return
KEYDOWN(w,l,m,h) {
Static IsDown
If ((m = 0x100 || m = 0x104) && !IsDown )
IsDown := 1
Else If (m = 0x101 || m = 0x105)
{
IsDown := 0
GuiControl, , Button, % (IsEnable := !IsEnable) ? Chr(0x263a) : Chr(0x2639)
ToolTip
}
}
WM_MOUSEMOVE(w,l,m,h) {
If (!IsEnable && h = hButton)
UnderMouse()
}
UnderMouse() {
MouseGetPos, , , , hwnd, 2
If (hwnd = hButton)
MoveCircle(angle += step)
}
MoveCircle(_angle) {
angle := _angle > 360 ? Mod(_angle, 360) : _angle
a := 0.0174532888888889 * angle
GuiControl, Move, Button, % "x" Round(r+r*cos(a))
. " y" Round(r+r*sin(a))
UnderMouse()
}
Button:
If IsEnable
ToolTip Button click
Return
Написано для собственного понимания получения координат на окружности, исходя из радиуса и градуса.
По вопросам возмездной помощи пишите на
E-Mail: serzh82saratov@mail.ru Telegram:
https://t.me/sergiol982Win10x64
AhkSpy,
Hotkey,
ClockGui