Top / TIPS / PtInRect

PtInRect は、指定された POINT が、RECT の中に含まれるかどうかを調べる API です。

WIN32API.TXT では、次のように定義されています。

Declare Function PtInRect Lib "user32" Alias "PtInRect" (lpRect As RECT, pt As POINTAPI) As Long

ところが、SDK では

BOOL PtInRect(
  CONST RECT *lprc,
  POINT pt
);

と定義されていて、POINT 構造体が値渡しされています。 VB6 では、構造体の値渡しはできませんので

Declare Function PtInRect Lib "user32" (lpRect As RECT, ByVal x As Long, ByVal y As Long) As Long

とすれば動くことは動くんですが、うーん・・・

まぁ、これくらいの機能なら作ったほうが無難かも

Public Function PtInRect(ByRef rc As RECT, ByRef pt As POINTAPI) As Boolean
    PtInRect = False
    Select Case pt.X
        Case rc.Left To rc.Right
            Select Case pt.Y
                Case rc.Top To rc.Bottom
                    PtInRect = True
            End Select
    End Select
End Function

Select Case の柔軟さに感謝。




トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2015-02-28 (土) 22:04:45 (900d)