Что нового

Применение ControlGetPos

forfrends

Новичок
Сообщения
176
Репутация
3
Всем добрый день!
Помогите разобраться с применением команды ControlGetPos. Точнее не с ее применением, а сданными, которые она выдает.
Пример из справки:
Код:
$pos = ControlGetPos("Untitled - Notepad", "", "Edit1")
MsgBox(0, "Window Stats:", "POS: " & $pos[0] & "," & $pos[1] & " SIZE: " & $pos[2] & "," & $pos[3] )

в результате получаем координаты элемента и его размеры.
Если еще использовать команду
Код:
WinGetPos
, то получим координаты окна программы.
Теоретически, если взять координаты окна + координаты элемента в окне = координаты элемента на экране. Но на практике так не получается. Полученные коорданаты не соответствуют настоящему положению элемента на экране.
Если нужно, могу выложить фотки (пробовал с разными програмами).
Что я деллаю не так? Как правильно вычислить положение элемента в окне относительно экрана?
Прошу прощения если сдублирую тему, но в поиске я для себя ответа не нашел.
 

xaker

Знающий
Сообщения
52
Репутация
16
можно так:
Код:
$win = "Untitled - Notepad"
$control = "Edit1"

$aPos = _GetPos( $win, $control )

MsgBox(0, "Window Stats:", "POS: " & $aPos[0] & "," & $aPos[1])

Func _GetPos( $sWin, $sCont )
	WinActivate( $sWin )
	Opt("MouseCoordMode", 2)
	MouseMove( 0, 0)
	Opt("MouseCoordMode", 1)
	Local $aPosM = MouseGetPos()
	Local $aPosC = ControlGetPos( $sWin, "", $sCont)
	$aPosC[0] = $aPosM[0] + $aPosC[0]
	$aPosC[1] = $aPosM[1] + $aPosC[1]
	Return $aPosC
EndFunc
 
Автор
F

forfrends

Новичок
Сообщения
176
Репутация
3
Спасибо, выдало правильные координаты.
У меня только вопрос по:
Код:
Opt("MouseCoordMode", 2)

в справке написано что эта функция выдает "координат клиентской области активного окна".
Я не совсем понимаю что это такое "клиентская область активного окна". Можете объяснить?
За решение еще раз спасибо.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Клиентская область окна - это часть окна в котором выводится информация или графика. В нее не входит заголовок, различные меню, кнопки закрыть развернуть свернуть, бордюры окна и скролбары.
IC430481.png



Добавлено:
Сообщение автоматически объединено:

В контексе опции Opt("MouseCoordMode", 2) эти координаты, такие же, что выдает утилита windows info на вкладке control в записи ControlClick Coords
 
Автор
F

forfrends

Новичок
Сообщения
176
Репутация
3
спасибо, все стало понятней и стало на свои места :smile:
 
Верх