_WinAPI_ScreenToClient
Преобразует координаты заданной точки относительно экрана в координаты относительно клиентской области окна/элемента
#include <WinAPI.au3>
_WinAPI_ScreenToClient($hWnd, ByRef $tPoint)
Параметры
$hWnd | Дескриптор окна / элемента управления, для которого выполняется преобразование |
$tPoint |
$tagPOINT структура, содержащая экранные координаты для преобразования |
Возвращаемое значение
Успех: | Возвращает True |
Ошибка: | Возвращает False |
Примечания
Функция использует окно, идентифицированное по параметру $hWnd и экранные координаты, содержащиеся в структуре $tagPOINT для вычисления клиентских координат. Затем заменяет экранные координаты в структуре на клиентские координаты. Новые координаты указаны относительно верхнего левого угла клиентской области указанного окна. В качестве окна могут использоваться любые элементы управления.См. также
_WinAPI_ClientToScreen, $tagPOINT, _WinAPI_GetClientRectСм. также
Искать ScreenToClient в библиотеке MSDNПример
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
_Main()
Func _Main()
Local $aPos, $aPos
Local $hWnd = GUICreate("Клиентские координаты мыши", 340, 200)
GUISetState()
; Цикл выполняется, пока окно не будет закрыто
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_MOUSEMOVE ; мышь переместилась
$aPos = _GetCursorClientPos($hWnd)
ToolTip('X= ' & $aPos[0] & @CRLF & 'Y= ' & $aPos[1])
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
GUIDelete()
EndFunc ;==>_Main
Func _GetCursorClientPos($hWnd)
Local $aPos = MouseGetPos() ; Получает абсолютные координаты
Local $tPoint = DllStructCreate("int X;int Y") ; Создаёт структуру
; Вставляет координаты
DllStructSetData($tPoint, "X", $aPos[0])
DllStructSetData($tPoint, "Y", $aPos[1])
_WinAPI_ScreenToClient($hWnd, $tPoint) ; Преобразовывает в клиентские
; Извлекает из структуры
$aPos[0] = DllStructGetData($tPoint, "X")
$aPos[1] = DllStructGetData($tPoint, "Y")
Return $aPos
EndFunc ;==>_GetCursorClientPos