OS -> Windows7 Enterprice SP1
VSバージョン -> VS2008 Professional Edition
メインフレーム(CFrameWnd)内に分割ウィンドウでCFormViewを縦2つ内包した画面です。
(内1つはダミーで縦サイズが0指定)
フォームビューの初期表示時にデータの有無を判定し、
データが無ければリストコントロールを非表示にして、
それ以下のコントロールを上詰めする、という処理を取っています。
その際、フレームサイズもコントロールの非表示に伴い
サイズを縮小したいのですが、現状のやり方では
想定よりも縦幅が大きくなってしまいます。
以下にコードを記述します。
// CFormView
void CSumpleFormView::InitFormView()
{
// データ取得、コントロールの位置変更は省略
// 現在のフレームサイズを取得
RECT stFrameRect;
GetParentFrame()->GetWindowRect(&stFrameRect);
// フレーム幅
int iFrameWidth = stFrameRect.right - stFrameRect.left;
// 最下端(OKボタン)のコントロール
RECT stBtnRect;
m_BtnOk.GetWindowRect(&stBtnRect);
// ダイアログベース単位を取得
iDlgBaseY = HIWORD(GetDialogBaseUnits());
// 余白をピクセル高さに換算する
int iYPadding = MulDiv(4, iDlgBaseY, 8);
// フレーム高さ
// 最下端コントロールのbottom + 余白をフレーム高さとする
int iFrameHeight = stBtnRect.bottom + iYPadding;
// メインフレームにサイズを渡す
pclMainFrame->ChangeSize(iFrameWidth, iFrameHeight);
}
// CFrameWnd
void CSumpleFrameWnd::ChangeSize(int iWidth, int iHeight)
{
RECT stRect;
GetWindowRect(&stRect);
SetWindowPos(&CWnd::wndTop, stRect.left, stRect.top
, iWidth, iHeight, SWP_SHOWWINDOW);
}
余白(iYPadding)を加算せずにサイズを変更しても
最下端コントロールの下に余白が出来るので、
縦幅の設定に問題があるようです。
ですが、原因が分かりません…。
ご教授のほど、宜しくお願い致します。
また、不明な点がありましたらご質問下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- 画像編集・動画編集・音楽編集 動画をディスク作成すると画像が乱れる。 4 2022/06/24 07:49
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- Excel(エクセル) コントロールにリンクするセルが選択されない 3 2022/06/12 14:37
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- その他(動画サービス) VLCメディアプレーヤーについて 1 2022/11/29 14:19
- ホームページ作成・プログラミング グリッドレイアウトHTMLとCSS 1 2023/02/22 02:36
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
ダイアログボックスで指定したサイズどおり表示されない
C言語・C++・C#
-
MFC - ダイアログボックスのPictureControlへの画像表示
C言語・C++・C#
-
VC++にてボタン等のサイズ取得
C言語・C++・C#
-
-
4
エディットボックスのフォントを変えたい
C言語・C++・C#
-
5
ダイアログ内コントロールの位置取得について
C言語・C++・C#
-
6
MFCのキャプション変更
C言語・C++・C#
-
7
MFCでOnPaintのタイミング
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カメラスクロールするのを動画...
-
エクセルVBAでオプションボタン...
-
Property Letについて
-
EXCELでactivexコントロールを...
-
フォーム上の現在アクティブな...
-
質問です。 場面緘黙症で苦しん...
-
Excel VBA 動的に作成したチェ...
-
ActiveXコントロールを作成して...
-
VBからのTIFFファイルの編集に...
-
VB.NETで、DataGridのヘッダー...
-
コントロールを移動できない
-
透明なフレーム VB.net
-
Excelコマンドボタン名を変数に...
-
ExcelVBAでListViewが使用できない
-
エクセル・VBA CheckBoxのオブ...
-
プロパティをループで指定する
-
VB6のユーザーコントロールの受...
-
vb.netで画面のコントロールId...
-
VBAでドラッグ・アンド・ドロップ
-
VBA Web Browserコントロー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カメラスクロールするのを動画...
-
エクセル・VBA CheckBoxのオブ...
-
vb.netで画面のコントロールId...
-
EXCELでactivexコントロールを...
-
ExcelVBAでListViewが使用できない
-
(VBA)スピンボタンの大量...
-
エクセルVBAでオプションボタン...
-
C#で角が丸いテキストボックス
-
ユーザーフォームで動的(Me.Con...
-
アクセス特有の書き方?
-
間違えて配置してしまったコン...
-
VBAのエラーについて、”実行時...
-
コンボボックスの文字によるif...
-
変数をコントロール型で使用す...
-
chr関数の呼び出しで「プロ...
-
With~EndWithの省略部分と引数...
-
C#で自分のウインド・ハンド...
-
excelのリストボックスで選択し...
-
'ckbl' コントロールは作成され...
-
フォーム上の現在アクティブな...
おすすめ情報