2017-09-27 70 views
0

ダイアログが表示されたら、いくつかのフィールドを入力したいと思います。その結果、私はこれらの手順に従ってくださいしたいと思います:モーダルダイアログを初期化するには? (C++/MFC)

  1. は、ダイアログオブジェクト
  2. コールでDoModal()
  3. は(ただし、私はDoModalの次の命令に渡すことができます

そのフィールドを初期化を構築します)ダイアログが閉じられているときだけです。したがって、私はダイアログのフィールドをどのように初期化できますか?

私は)(にDoModalを上書きしようとした:

int MyDialog::DoModal() 
{ 
    int a = CDialogEx::DoModal(); 
    InitDialog(); 

    return a; 
} 

を、それは同じ問題だ:InitDialog()ダイアログを閉じたときにOnInitDialogを追加するよりも、

+1

ダイアログが閉じられるまでにDoModalが戻らない:

コールdailog; は、あなたのダイアログに(int型)の変数を追加します。 MyDialogのインスタンス化、メンバーの初期化、DoModal()の呼び出し – mark

答えて

3

は、ダイアログオブジェクトを作成します...と呼ばれていますダイアログでは、ダイアログ(OnInitDialog msdn)を表示する前にこのメソッドが呼び出されます。

CDialog dlg; 
dlg.a = 10; 
dlg.DoModal(); 
+0

ありがとう!それは解決策でした:) – Sheep

+0

@Sheepそれがあなたのために働いた場合、あなたは受け入れられたとして答えをマークする必要があります。 – Eli

+0

メンバ変数をpublic(= bad design)にするのではなく、コンストラクタで初期化を行う必要があります。 – zett42