ウィンドウの枠(?)の処理 ClientWidth(?)

解決


 2009-11-28 12:58:39  No: 142888  IP: 192.*.*.*

VB6です。

XP、VISTAで、ウィンドウのデザインが異なる場合ですが、
枠の幅、ウィンドウの幅を正確に得るにはどうしたらよいでしょうか?

また、幅(横方向)だけでなく、高さ(縦方向)も正確に得たいです。
高さのほうは、上側、下側の枠だけでなく、
キャプションが表示されるエリアの高さも得たいです。

すいませんが、教えていただけますでしょうか?

編集 削除
魔界の仮面弁士  2009-11-28 14:43:52  No: 142889  IP: 192.*.*.*

この場合のウィンドウというのが Form だとして、
  (1) タイトルバーの高さ
  (2) 枠線の太さ
  (3) フォーム内部の高さ/幅
  (4) 1〜3を合わせたフォーム外側の高さ/幅
などが分かれば良いのでしょうか。


まず、4 については、
    Debug.Print Width / Screen.TwipsPerPixelX
    Debug.Print Height / Screen.TwipsPerPixelY
にて得る事ができます。

3 については、ScaleMode を vbPixels にしておくと、
ScaleHeight / ScaleWidth にして調べられます。

通常は、これらが分かれば充分かと思いますが、もし、1 や 2 も
知りたいのであれば、GetSystemMetrics API を使ってみてください。

編集 削除
 2009-11-28 23:59:49  No: 142890  IP: 192.*.*.*

GetSystemMetrics で、

・枠の幅
・キャプションが表示されるエリア(タイトルバー?)の高さ

だけでなく、

・メニューバーの高さ

も得ることができました。

ありがとうございました。

編集 削除