Функция PtInRegion

Declare Function PtInRegion Lib "gdi32" (ByVal hRgn As Long, ByVal x As Long, ByVal y As Long) As Long

PtInRegion определяет, находится ли данная точка в пределах региона

Возвращаемое значение

Функция возвращает 0, если точка не внутри региона или ненулевое значение, если точка находится в регионе

Параметры

hRgn
Дескриптор региона, чтобы определить, находится ли данная точка в пределах региона
x
Координата x точки для определения, находится ли точка в пределах региона
y
Координата y точки для определения, находится ли точка в пределах региона

Пример

' Рассмотрим линию, соединяющую правую верхнюю и левую нижнюю углы экрана
' и рассмотрим регион, сделанный левой верхней стороной этой линии. Определим,
' находится ли курсор мыши  в пределах этой области или нет
Dim swidth As Long, sheight As Long  ' ширина и высота экрана
Dim hRgn As Long  ' дескриптор к треугольной области, объясненной выше
Dim curpos As POINTAPI  ' получаем местоположение курсора мыши
Dim vertices(0 To 2) As POINTAPI  ' Вершина региона
Dim isinside As Long  ' получает 0 если не внутри, иначе - ненулевое значение
Dim retval As Long  ' возвращаемое значение

' Получим ширину и высоту экрана. Используем эту информацию, чтобы создать регион
swidth = GetSystemMetrics(SM_CXSCREEN)  ' ширина экрана
sheight = GetSystemMetrics(SM_CYSCREEN)   'высота экрана
' Загрузим вершину региона в массив и создадим его
vertices(0).x = 0: vertices(0).y = 0  ' vertex #1: верхний левый угол экрана
vertices(1).x = swidth: vertices(1).y = 0  ' vertex #2: верхний правый угол экрана
vertices(2).x = 0: vertices(2).y = sheight  ' vertex #3: нижний левый угол экрана
hRgn = CreatePolygonRgn(vertices(0), 3, ALTERNATE)  ' создаем регион

' получим местоположение курсора мыши
retval = GetCursorPos(curpos)
' Определим, находится ли местоположение курсора в пределах региона
isinside = PtInRegion(hRgn, curpos.x, curpos.y) 
If isinside = 0 Then 
  Debug.Print "Курсор вне региона"
Else
  Debug.Print "Курсор внутри региона"
End If

' Удаляем регион для освобождения ресурсов
retval = DeleteObject(hRgn)

Смотри также

RectInRegion

Категория

Регионы