Win32 APIのRECT
構造体と.NET 5.0のRectangle
構造体は互換性がありません。C#でRECT
を使う場合、一度RECT
として取得してからRectangle
へ変換する必要があります。
C#のRECT
構造体ラッパー
// [StructLayout(LayoutKind.Sequential)] struct RECT { public int Left; public int Top; public int Right; public int Bottom; public Rectangle ToRectangle() { return Rectangle.FromLTRB(Left, Top, Right, Bottom); } }
以下の通り、RECT
とRectangle
はright
、bottom
を持つか、width
、height
を持つかが異なります。
RECT
構造体の定義(Microsoft Docsより)
typedef struct tagRECT { LONG left; LONG top; LONG right; LONG bottom; } RECT, *PRECT, *NPRECT, *LPRECT;
Rectangle
構造体の定義(Reference Sourceより)
public struct Rectangle { ...(省略) private int x; private int y; private int width; private int height; ...(省略) }
HDM_GETITEMRECT
メッセージでヘッダー項目の領域を取得しようとしたら詰まったのでメモします。