• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:タイトルバーやメニューバーの高さ取得)

タイトルバー・メニューバーの高さ取得

このQ&Aのポイント
  • サイズ変更可能なダイアログボックスアプリケーションを作成しています。
  • ダイアログのサイズを変更する際に、GetClientRect関数を使用してサイズを取得し、設定ファイルに保存します。
  • しかし、GetClientRectはメニューバーやタイトルバーの高さを含まない座標を返すため、復元時に高さが小さくなってしまいます。メニューバーやタイトルバーの高さを取得する方法がわかりません。環境はVC++6.0 MFCです。

質問者が選んだベストアンサー

  • ベストアンサー
  • danner
  • ベストアンサー率72% (8/11)
回答No.2

dannerです。 >> WINDOWPLACEMENTは最大化とか最小化には対応できそうですが、ウィンドウの角を引っ張っての微妙なサイズ変更を保存することができないですよね??(本当か?)。 保存できますよ。 やり方としては 保存:  GetWindowPlacementしてWINDOWPLACEMENTのメンバ変数をすべて保存 復元:  保存したファイルからWINDOWPLACEMENTのメンバ変数に設定  SetWindowPlacementを実行  ShowWindow(wndplace.showCmd);を実行 ←いらないかも こんな感じでできると思うのですが?

ystk
質問者

お礼

たびたびどうもすみませんです。 GetWindowPlacementで出来ました。 rcNormalPosition変数に保存されてたんですね;; よく考えたらそんな中途半端な関数作らないですよね。 完全に独学でやっているので知識不足や思い込みで 簡単なことにするのに何時間もかかってしまったりします。 あげく訳のわからんコードを書いて自己満足してたりして・・ ほんとにネットだけが頼りです(寂しいな) おかげさまで簡単に保存することが出来ました

その他の回答 (1)

  • danner
  • ベストアンサー率72% (8/11)
回答No.1

メニューバーやタイトルバーの高さは GetSystemMetricsで取得することはできますよ。 ただ、ウィンドウサイズの保存・復元は ウィンドウを閉じるときに保存したほうがいいと思います。 あとサイズの保存・復元は、 GetWindowPlacementとSetWindowPlacementを使用すれば メニューバーとかのサイズを気にしなくてすみます。

ystk
質問者

お礼

GetWindowPlacementで解決できました。 ありがとうございました。

ystk
質問者

補足

GetWindowPlacementの存在には気づいてはいたんですが WINDOWPLACEMENTは最大化とか最小化には対応できそうですが、ウィンドウの角を引っ張っての微妙なサイズ変更を保存することができないですよね??(本当か?)。 説明不足で申し訳ありませんです。 とりあえずGetSystemMetrics()で挑戦してみます。 これは知りませんでした(でもすごく重要そうな関数ですね・・) あと保存は閉じるときにします。 Windowsプログラミングはいくらやっても判らないことだらけで・・ うまくいったら報告致します。 また、なんか勘違いしてたら突っ込んでください。 どうもありがとうございました。