Тема: AHK: Изменение размеров Gui контролов - мышью
Попытался сделать аналог контрола SizeBar (серая полоска посередине), для изменения размеров полей:
#SingleInstance Force
#NoEnv
SetBatchLines, -1
CoordMode, Mouse, Client
C_SIZEWE := DllCall("User32.dll\LoadCursor", "Ptr", NULL, "Int", 32644, "UPtr")
wSizeBar := 4, Margin := 2
Gui, Margin, 5, 5
Gui, -DPIScale
Gui, Add, Edit, w200 h200 -vscroll
Gui, Add, Progress, x+%Margin% yp hp w%wSizeBar% vSizeBar BackgroundDbbbbbb
Gui, Add, Edit, w200 h200 -vscroll x+%Margin%
Gui, Show
OnMessage(0x200, "SizeBar"), OnMessage(0x201, "SizeBar")
Return
SizeBar(wParam, lParam, msg) {
Global C_SIZEWE, wSizeBar, Margin
Static KeepSizeBar
If (msg = 0x200)
{
If (A_GuiControl = "SizeBar")
DllCall("User32.dll\SetCursor", "Ptr", C_SIZEWE)
If KeepSizeBar
{
DllCall("User32.dll\SetCursor", "Ptr", C_SIZEWE)
SetTimer, MoveSizeBar, -10
}
}
Else If (msg = 0x201 && A_GuiControl = "SizeBar")
{
KeepSizeBar := 1
KeyWait LButton
KeepSizeBar := 0
GoSub MoveControls
}
Return
MoveSizeBar:
MouseGetPos, SizeBarX
GuiControl, Move, SizeBar, x%SizeBarX%
GuiControl, +Redraw, SizeBar
Return
MoveControls:
GuiControlGet, SizeBar, Pos
GuiControlGet, Edit1, Pos
GuiControl, Move, Edit1, % "w" SizeBarX-Edit1X-Margin
GuiControlGet, Edit2, Pos
GuiControl, Move, Edit2, % "x" SizeBarX+Margin+wSizeBar " w" (Edit2X+Edit2W)-SizeBarX-Margin-wSizeBar
Return
}
Есть идеи, как сделать проще?
Win10x64 AhkSpy, Hotkey, ClockGui

