Функция RectInRegion

Declare Function RectInRegion Lib "gdi32.dll" (ByVal hRgn As Long, lpRect As RECT) As Long

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

RectInRegion определяет, находится ли прямоугольник в пределах данной области. Прямоугольник находится внутри региона, если любая его часть ( не обязательно весь) находится в пределах (региона. Функция возвращает 0, если прямоугольник - полностью вне региона, или ненулевое значение, если прямоугольник - по крайней мере частично в пределах региона.

hRgn
Дескриптор области, чтобы определить, находится ли прямоугольник в ее пределах.
lpRect
Прямоугольник, чтобы определить, находится ли по крайней мере частично в пределах области.

Пример:

' Рассмотрим линию, соединяющую правую верхнюю и левую нижнюю углы экрана
'  и рассмотрим регион, сделанный левой верхней стороной этой линии. Определим
'находится ли окно Form1 по крайней мере частично в пределах области.
Dim swidth As Long, sheight As Long   ' ширина и высота экрана
Dim hRgn As Long   ' дескриптор к треугольной области, объясненной выше
Dim winrect As RECT  ' Получим прямоугольник Form1 
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)  ' создаем регион

' Получим прямоугольник окна Form1, идентифицируя углы окна.
retval = GetWindowRect(Form1.hWnd, winrect)
' Определим, находится ли прямоугольник в пределах региона.
isinside = RectInRegion(hRgn, winrect)  
If isinside = 0 Then  ' не находится
  Debug.Print "Form1 - полностью вне области."
Else
  Debug.Print "Form1 находится по крайней мере частично внутри области."
End If

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

Схожие функции: PtInRegion
Категория: Регионы

В начало.