2004/08/28(土)GetClientRectの謎

知り合いにきかれたので調べたのだが、私も迷宮に迷い込んでしまった。
さっさと、メモって忘れてしまおう。

GetClientRectで取得した短形領域を子フォームのWindows Sizeに指定すると、子フォームのサイズがクライエント領域から少しはみ出す問題。

API自体大して知らないので、表示の方から逆に調査してみることにした。
適当にDelphiアプリを作って、色々いじってみる。

まず、CapCapで取得したフォームの全体サイズが1088x750だった。
BoundsRectでWindow Sizeを取得すると、ltrbが192,107,1280,857で返ってくるのでサイズは合っているようである。TRectの基準はどうもよく分からないが、left-right=Widthなので、TopLeftが左上ピクセル端、BottomRigthが右下ピクセル端に1pixelずつずらした点だろうか。

さて、GetClientRectだと、lrtbが0,0,1080,723である。GetClient領域の描画エリアの幅がタイトルバーの青く色が変わっている部分と同じ幅で、描画できるエリアはそれより少し狭い。

これをMDI子フォームのWindowサイズに指定すると若干はみだし、それぞれ幅、高さそれぞれ-4するとぴったり。枠線幅の分だろうか? 枠線の幅は所得できるが、確証がもてない。

なぞ

眠くて何書いてるのか分からない……
OK キャンセル 確認 その他