• ベストアンサー

VC(Ver6.0)でダイアログサイズの設定

VisualC++(Ver6.0)で開発を行っていますが、ダイアログのサイズ(幅、高さ)を任意で設定する方法を探しています。 やりたい事としては、親ウインドウの幅に合わせて、子ウインドウとなるダイアログの幅を変更し、表示させたいと考えております。(高さは親ウインドウの3分の1の高さと考えております) すいませんが、お教えいただけると大変助かります。 よろしくお願い致します。

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

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.3

VS2005でやってみました。 MFCアプリケーションで自動生成されるCAbortDlgです。 # VC++6.0とだと…MFCの世代が微妙に異なりますけどね……。 インデント(というか全角空白)が深くなっている部分が追加したコードです。 BOOL CAboutDlg::OnInitDialog() {  CDialog::OnInitDialog();  // TODO: ここに初期化を追加してください   CWnd *MainWnd = this->GetParent();   RECT MainRect;   MainWnd->GetWindowRect(&MainRect);   SetWindowPos(&wndTop, 0, 0, ((MainRect.right - MainRect.left) /2), ((MainRect.bottom - MainRect.top) / 3), SWP_NOMOVE);  return TRUE; // return TRUE unless you set the focus to a control  // 例外 : OCX プロパティ ページは必ず FALSE を返します。 } MainWndにダイアログの親ウィンドウを取得して、GetWindiwRect()で親ウィンドのサイズを取得。 SetWindowPos()でサイズを変えてみました。 ダイアログ内のコントロールの再配置は行っていないので、親ウィンドウのサイズによっては悲惨なことになりますが。 # 実際にやるなら…算出したサイズと最小サイズで処理するべきでしょう。

dbc47828
質問者

お礼

お忙しいところありがとうございました。 教えていただいた方法で出来ました。 コントロールの配置は、自分なりにやってみます。 本当にありがとうございました。 また、何かの際はよろしくお願い致します。

その他の回答 (2)

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

>MFCを使いたいと思います。 でしたら…OnInitDialog()をイベントハンドラに追加してください。 VC++6は手元にありませんので手順は自分で調べていただくことになりますが。 # クラスウィザードあたりから追加でしたかねぇ… # http://denno.hinodetown.net/denno/dbase/vc6dao.htm こんな感じ? # オブジェクトIDがダイアログのリソースID、メッセージにWM_INITDIALOGとかあるかと。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

今時VC++6.0というのも…… まぁ、古い資産が残っている関係で使い続けるしかない。 というのも判りますが。 で、MFCなんですか? Win32APIなんですか? ダイアログ開いた場合、ダイアログプロシージャにWM_INITDIALOGが通知されますから、 そこでサイズを変更するようなコードを入れればいいのではないでしょうか?

dbc47828
質問者

補足

MFCを使いたいと思います。 何か良い方法はあるでしょうか? 度々もうしわけありません。

関連するQ&A