サイズ変更可能なダイアログボックスアプリケーションを作っています
ダイアログサイズ変更時に
GetClientRect( m_DlgSize );
のようにしてサイズを取得し、設定ファイルにm_DlgSizeを保存します
次回起動時にInitDialog()で
SetWindowPos( NULL, 0, 0, m_DlgSize.Width(),m_DlgSize.Height() ,SWP_NOMOVE);
のように復元しました。
幅はきちんと復元できたんですけど高さが小さくなってしまいます。
どうやらGetClientRectではメニューバーやタイトルバーの高さを含めない座標を返し、
SetWindowPosではそれらも含めてサイズを設定してしまうようです
この差を埋めるためにメニューバーやタイトルバーの高さを取得する方法がわかりません。
何か良い方法があったらご教授願います。
環境はVC++6.0 MFCです。
No.2ベストアンサー
- 回答日時:
dannerです。
>> WINDOWPLACEMENTは最大化とか最小化には対応できそうですが、ウィンドウの角を引っ張っての微妙なサイズ変更を保存することができないですよね??(本当か?)。
保存できますよ。
やり方としては
保存:
GetWindowPlacementしてWINDOWPLACEMENTのメンバ変数をすべて保存
復元:
保存したファイルからWINDOWPLACEMENTのメンバ変数に設定
SetWindowPlacementを実行
ShowWindow(wndplace.showCmd);を実行 ←いらないかも
こんな感じでできると思うのですが?
たびたびどうもすみませんです。
GetWindowPlacementで出来ました。
rcNormalPosition変数に保存されてたんですね;;
よく考えたらそんな中途半端な関数作らないですよね。
完全に独学でやっているので知識不足や思い込みで
簡単なことにするのに何時間もかかってしまったりします。
あげく訳のわからんコードを書いて自己満足してたりして・・
ほんとにネットだけが頼りです(寂しいな)
おかげさまで簡単に保存することが出来ました
No.1
- 回答日時:
メニューバーやタイトルバーの高さは
GetSystemMetricsで取得することはできますよ。
ただ、ウィンドウサイズの保存・復元は
ウィンドウを閉じるときに保存したほうがいいと思います。
あとサイズの保存・復元は、
GetWindowPlacementとSetWindowPlacementを使用すれば
メニューバーとかのサイズを気にしなくてすみます。
この回答への補足
GetWindowPlacementの存在には気づいてはいたんですが
WINDOWPLACEMENTは最大化とか最小化には対応できそうですが、ウィンドウの角を引っ張っての微妙なサイズ変更を保存することができないですよね??(本当か?)。
説明不足で申し訳ありませんです。
とりあえずGetSystemMetrics()で挑戦してみます。
これは知りませんでした(でもすごく重要そうな関数ですね・・)
あと保存は閉じるときにします。
Windowsプログラミングはいくらやっても判らないことだらけで・・
うまくいったら報告致します。
また、なんか勘違いしてたら突っ込んでください。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Excel(エクセル) Excel グラフのプロットエリアについて 2 2022/08/26 18:12
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- 筋トレ・加圧トレーニング 上半身だけを大きくしたく、1週間のメニューを作りたいです。回復日を含めて、メニューの参考をお願いしま 1 2022/07/31 16:49
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Windows 10 (続き)2つのウィンドウ選択時の表示について 6 2023/08/13 15:05
- Windows 10 Windowsのアイコンの整列が変になりました 2 2022/06/24 00:02
- 画像編集・動画編集・音楽編集 動画をディスク作成すると画像が乱れる。 4 2022/06/24 07:49
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
ボタンの配置を変更したい
C言語・C++・C#
-
メニューをグレー表示でなく非表示にするには?
C言語・C++・C#
-
ダイアログボックスで指定したサイズどおり表示されない
C言語・C++・C#
-
-
4
EXCEL ユーザーフォームのタイトルバーの高さを広くしたい
Excel(エクセル)
-
5
画面を強制的に再描画させる方法
C言語・C++・C#
-
6
メモ帳(notepad.exe)の起動オプション
UNIX・Linux
-
7
ダイアログ内コントロールの位置取得について
C言語・C++・C#
-
8
サイズ変更枠ダイアログのタイトルバー左端のアイコンを消す
C言語・C++・C#
-
9
CListCtrlで行の高さを指定したい。
C言語・C++・C#
-
10
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
11
VC++にてボタン等のサイズ取得
C言語・C++・C#
-
12
MFC ダイアログ上のID取得について
C言語・C++・C#
-
13
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBAでほかのアプリケーシ...
-
読み取り専用ファイルを上書き...
-
Excel VBAで作成したマクロをxl...
-
EclipseでJavaScriptファイルの...
-
VBScriptで日本語が変です
-
VBScriptでのSaveAsについて
-
VBA メモ帳の上書き保存がしたい
-
EXCEL VBAでカンマ区切りCSVフ...
-
JavaScriptを実行するリンクで...
-
CImageのファイル名を指定して保存
-
ファイルのダウンロード保存先...
-
vbaでIEの名前を付けて保存(A)...
-
VBAで、強制保存してブックを閉...
-
VSCodeの自動保存の2か所を無...
-
コマンドプロンプトでデスクト...
-
VBSでHPを保存するにはど...
-
ExcelVBAでデスクトップのPATH...
-
意味不明のタグが挿入されてい...
-
Corel Digital Studioの動画をS...
-
エクセルマクロ PDF出力、CSV出力
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
読み取り専用ファイルを上書き...
-
Excel VBAでほかのアプリケーシ...
-
VBAで、強制保存してブックを閉...
-
Excel VBAで作成したマクロをxl...
-
Corel Digital Studioの動画をS...
-
エクセルで「名前を付けて保存...
-
VBA メモ帳の上書き保存がしたい
-
コマンドプロンプトでデスクト...
-
vbaでIEの名前を付けて保存(A)...
-
VB.NETでEXCELファイルを開き、...
-
VBScriptでのSaveAsについて
-
エクセル:マクロ:保存時に連...
-
Pivot table で集計されたデー...
-
AccessVBAでレポートをPDFで出力
-
VBScriptで日本語が変です
-
ExcelVBAでデスクトップのPATH...
-
htmlから取り込んだ を消...
-
EXCEL/VBA:WORDファイルの上書...
-
AccessVBAでIEを操作、ページ内...
-
webページの特定の部分だけ消し...
おすすめ情報