Question:
I am having trouble getting the Windows API function PtInRegion()
to work correctly in Windows 3.1 and Windows 95 without
generating an application error or GPF. What can I do to determine 
if a point is in a region reliably?
Answer:
The Windows 3.1 and Windows 95 GDI heap is limited in regards 
to scan converting large and complex regions such as Ellipses, 
Polygons, and PolyPolygons. One "Brute Force" technique is to 
create an "in memory" monochrome bitmap and draw the 
required shape in black. You can then test to see if a given point in 
the bitmap is black or white. If the test pixel is black, then the given 
point is "in" the given region.
Example:
procedure TForm1.Button1Click(Sender: TObject);
var
 bm : TBitmap;
begin
 bm := TBitmap.Create;
 bm.Monochrome := true;
 bm.Height := 100;
 bm.Width := 100;
 bm.Canvas.Brush.Color := clWhite;
 bm.Canvas.FillRect(Rect(0, 0, 100, 100));
 bm.Canvas.Brush.Color := clBlack;
 bm.Canvas.Pen.Color := clBlack;
 bm.Canvas.Ellipse(10, 10, 90, 90);
 if bm.Canvas.Pixels[20, 20] = clBlack then
 ShowMessage('Point : (20, 20) is in region') else
 ShowMessage('Point : (20, 20) is not in region');
 if bm.Canvas.Pixels[50, 50] = clBlack then
 ShowMessage('Point : (50, 50) is in region') else
 ShowMessage('Point : (50, 50) is not in region');
 bm.Free;
end;