2017-09-27 113 views
0

我想填写我的对话框的一些领域,当它显示。因此,我想遵循这些步骤:如何初始化模态对话框? (C++/MFC)

  1. 构造对话框对象
  2. 调用的DoModal()
  3. 初始化其领域

不过,我可以通到下面的DoModal指令( )只有当对话框关闭时。因此,我如何初始化我的对话框的字段?

我试图重写的DoModal():

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

    return a; 
} 

但它是同一个问题:当对话框关闭的InitDialog()被调用......

+1

的DoModal不会返回,直到对话框被驳回。实例化MyDialog,初始化成员,然后调用DoModal() – mark

回答

3

创建对话框对象,不是增加OnInitDialog在你的对话框中,这个方法会在显示对话框之前调用(OnInitDialog msdn)。 变量添加到您的对话框(INT一)

呼叫dailog:

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

谢谢!这是解决方案:) – Sheep

+0

@Sheep如果它对你有用,你应该将答案标记为已接受。 – Eli

+0

初始化应该由构造函数完成,而不是使成员变量public(= bad design)。 – zett42