Функция PtInRegion

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

Платформа: Win 95/98, Win NT

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
Категория: Регионы

В начало.