Функция CombineRegion позволяет вам изменить существующую область, скомбинировав ее из двух других:
int WINAPI CombineRgn(HRGN hrgnDest, // новая область HRGN hrgn1, // первая исходная область HRGN hrgn2, // вторая исходная область int fnCombineMode); // режим комбинирования, задается константойТаблица 14 Значения констант для режима комбинированияРежим комбинирования | Описание |
RGN_AND | Пересечение областей |
RGN_OR | Объединение областей |
RGN_XOR | Объединение областей с исключением перекрывающихся областей |
RGN_DIFF | Область hrgn1, которая не входит в область hrgn2 |
RGN_COPY | Область hrgn1 |
В зависимости от результата выполнения операции функция CombineRegion может вернуть одно из следующих значений:
Таблица 15 Значения констант, возвращаемые функцией CombineRegionЗначение | Описание |
ERROR | Ошибка |
NULLREGION | Новая область пустая |
SIMPLEREGION | Новая область не является самопересекающейся (т. е. граница созданной области не пересекает саму себя) |
COMPLEXREGION | Создана самопересекающаяся область |
Закрашивание области
BOOL WINAPI PaintRgn(HDC hdc, HRGN hrgn); // кисть берется из котекстаBOOL WINAPI FillRgn(HDC hdc, HRGN hrgn, HBRUSH hbrush); // кисть указана явноОкраска границы области
BOOL WINAPI FrameRgn(HDC hdc, HRGN hrgn, HBRUSH hbrush, int nWidth, int nHeight);Параметры nWidth и nHeight определяют, соответственно, ширину и высоту кисти hrgn в пикселах, используемой для рисования границы.