GpiRectInRegion
Appearance
This function checks whether any part of a rectangle lies within the specified region.
Syntax
GpiRectInRegion(hps, hrgn, prclRect)
Parameters
- hps (HPS) - input
- Presentation-space handle.
- The region must be owned by the device identified by the currently associated device context.
- hrgn (HRGN) - input
- Region handle.
- prclRect (PRECTL) - input
- Test rectangle.
- The rectangle is specified in device coordinates.
Return Value
- lInside (LONG) - returns
- Inside and error indicators.
- RRGN_OUTSIDE
- Not in region
- RRGN_PARTIAL
- Some in region
- RRGN_INSIDE
- All in region
- RRGN_ERROR
- Error.
Remarks
It is invalid if the specified region is currently selected as the clip region (by GpiSetClipRegion).
Errors
Possible returns from WinGetLastError:
- PMERR_INV_HPS (0x207F)
- An invalid presentation-space handle was specified.
- PMERR_PS_BUSY (0x20F4)
- An attempt was made to access the presentation space from more than one thread simultaneously.
- PMERR_INV_HRGN (0x2080)
- An invalid region handle was specified.
- PMERR_INV_COORDINATE (0x205B)
- An invalid coordinate value was specified.
- PMERR_INV_RECT (0x20BD)
- An invalid rectangle parameter was specified.
- PMERR_REGION_IS_CLIP_REGION (0x20F8)
- An attempt was made to perform a region operation on a region that is selected as a clip region.
- PMERR_HRGN_BUSY (0x2034)
- An internal region busy error was detected. The region was locked by one thread during an attempt to access it from another thread.
Example Code
#define INCL_GPIREGIONS /* Or use INCL_GPI, INCL_PM, */ #include <os2.h> HPS hps; /* Presentation-space handle. */ HRGN hrgn; /* Region handle. */ PRECTL prclRect; /* Test rectangle. */ LONG lInside; /* Inside and error indicators. */ lInside = GpiRectInRegion(hps, hrgn, prclRect);
In this example we check to see if a a rectangle is inside a region before we destroy the region.
#define INCL_GPIREGIONS #include <OS2.H> HPS hps; /* presentation-space handle. */ HRGN hrgn; /* region handle. */ PRECTL prclRect; /* test rectangle. */ LONG lInside; /* result. */ lInside = GpiRectInRegion(hps, hrgn, prclRect); if (lInside == RRGN_OUTSIDE) { GpiDestroyRegion(hps, hrgn); }