Windows APIメモ PtInRect
Windows APIのメモ。
PtInRect。
参考サイト
PtInRect 関数
http://msdn.microsoft.com/ja-jp/library/cc410525.aspx
PtInRectの古いAPIヘルプによると
>PtInRect関数は、 指定された点が、 指定された長方形内にあるかどうかを調べます。
>点が左辺か上辺の上、 または4辺の内側にあるときは、 点は長方形内にあることになります。
>点が右辺か底辺の上にあるときは、 点は長方形外にあることになります。
とあります。
「点が右辺か底辺の上にあるとき」とはつまりRectが(0, 0, 100, 200)であるときXが200であるときかYが100であるときのことです。
下の例ではButton1を押しても「点が右辺か底辺の上にあるとき」に該当するので範囲外となりBeepは鳴りません。
Button2を押すと鳴ります。
Button3を押すと「点が左辺か上辺の上」にあるときはRect内にあるということなので鳴ります。
procedure TApp_BugsEye.Button1Click(Sender: TObject);
var
lrc_Rect: TRect;
lpt_Pos: TPoint;
begin
lrc_Rect := Rect (0, 0, 100, 200);
lpt_Pos := Point(100, 200); //範囲外なのでBeepは鳴らない。
if (PtInRect(lrc_Rect, lpt_Pos)) then begin
Beep;
end;
end;
procedure TApp_BugsEye.Button2Click(Sender: TObject);
var
lrc_Rect: TRect;
lpt_Pos: TPoint;
begin
lrc_Rect := Rect (0, 0, 100, 200);
lpt_Pos := Point(99, 199); //範囲内なのでBeepは鳴る。
if (PtInRect(lrc_Rect, lpt_Pos)) then begin
Beep;
end;
end;
procedure TApp_BugsEye.Button3Click(Sender: TObject);
var
lrc_Rect: TRect;
lpt_Pos: TPoint;
begin
lrc_Rect := Rect (0, 0, 100, 200);
lpt_Pos := Point(0, 0); //範囲内なのでBeepは鳴る。
if (PtInRect(lrc_Rect, lpt_Pos)) then begin
Beep;
end;
end;