The CombineRgn function combines two regions and stores the result in a third region. The two regions are combined according to the specified mode.
int CombineRgn(
| HRGN hrgnDest, | // handle to destination region | 
| HRGN hrgnSrc1, | // handle to source region | 
| HRGN hrgnSrc2, | // handle to source region | 
| int fnCombineMode | // region combining mode | 
| ); | 
| Value | Description | 
| RGN_AND | Creates the intersection of the two combined regions. | 
| RGN_COPY | Creates a copy of the region identified by hrgnSrc1. | 
| RGN_DIFF | Combines the parts of hrgnSrc1 that are not part of hrgnSrc2. | 
| RGN_OR | Creates the union of two combined regions. | 
| RGN_XOR | Creates the union of two combined regions except for any overlapping areas. | 
The return value specifies the type of the resulting region. It can be one of the following values:
| Value | Meaning | 
| NULLREGION | The region is empty. | 
| SIMPLEREGION | The region is a single rectangle. | 
| COMPLEXREGION | The region is more than a single rectangle. | 
| ERROR | No region is created. | 
The three regions need not be distinct. For example, the hrgnSrc1 parameter can equal the hrgnDest parameter.
CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreatePolyPolygonRgn, CreateRectRgn, CreateRectRgnIndirect, CreateRoundRectRgn