Другие операции
Для изменения прямоугольной области можно воспользоваться функцией SetRectRgn , изменяющей координаты существующей прямоугольной области:
void WINAPI SetRectRgn( HRGN hrgn, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);
Изменение области выполняется быстрее ее удаления с последующим повторный созданием новой.
Для перемещения области предназначена функция OffsetRgn :
int WINAPI OffsetRgn(HRGN hrgn, int nX, int nY);
Эта функция сдвигает область на nX логических единиц по горизонтали и на nY логических единиц по вертикали, возвращая такие же значения, что и функция CombineRegion.
Вы можете сравнить две области при помощи функции EqualRgn :
BOOL WINAPI EqualRgn(HRGN hrgn1, HRGN hrgn2);
Эта функция возвращает TRUE, если области совпадают, и FALSE - если нет.
С помощью функции GetRgnBox можно узнать координаты воображаемого прямоугольника, в который вписана область:
int WINAPI GetRgnBox(HRGN hrgn, RECT FAR* lprc);
Эта функция возвращает такие же значения, что и функция CombineRegion
Иногда требуется определить, находится ли заданная точка или прямоугольная область внутри другой области. Это можно сделать при помощи функций PtInRegion и RectInRegion .
Функция PtInRegion возвращает TRUE, если точка (nX,nY) находится внутри области hrgn:
BOOL WINAPI PtInRegion(HRGN hrgn, int nX, int nY);
Аналогично для прямоугольной области:
BOOL WINAPI RectInRegion(HRGN hrgn, const RECT FAR* lprc);