アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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()でサイズを変えてみました。

ダイアログ内のコントロールの再配置は行っていないので、親ウィンドウのサイズによっては悲惨なことになりますが。
# 実際にやるなら…算出したサイズと最小サイズで処理するべきでしょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/06/26 18:04

>MFCを使いたいと思います。



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

今時VC++6.0というのも……


まぁ、古い資産が残っている関係で使い続けるしかない。
というのも判りますが。

で、MFCなんですか?
Win32APIなんですか?

ダイアログ開いた場合、ダイアログプロシージャにWM_INITDIALOGが通知されますから、
そこでサイズを変更するようなコードを入れればいいのではないでしょうか?

この回答への補足

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

補足日時:2012/06/22 17:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています