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

解決


  2009-11-28 21:58:39  No: 142888

VB6です。

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

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

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


魔界の仮面弁士  2009-11-28 23:43:52  No: 142889

この場合のウィンドウというのが 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-29 08:59:49  No: 142890

GetSystemMetrics で、

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

だけでなく、

・メニューバーの高さ

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加