【问题标题】:How to initialize a modal dialog ? (C++ / MFC)如何初始化模态对话框? (C++/MFC)
【发布时间】:2017-09-27 10:10:15
【问题描述】:

我想在对话框显示时填写一些字段。因此,我想遵循这些步骤:

  1. 构造对话框对象
  2. 调用 DoModal()
  3. 初始化其字段

但是,只有在对话框关闭时,我才能传递给 DoModal() 之后的指令。因此,如何初始化对话框的字段?

我试图覆盖 DoModal():

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

    return a;
}

但这是同样的问题:对话框关闭时调用 InitDialog()...

【问题讨论】:

  • DoModal 在对话框关闭之前不会返回。实例化 MyDialog,初始化成员,然后调用 DoModal()

标签: c++ mfc modal-dialog


【解决方案1】:

创建对话框对象,而不是在对话框上添加OnInitDialog,此方法将在显示对话框之前调用(OnInitDialog msdn)。 将变量添加到您的对话框(int a;)

通话对话:

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

【讨论】:

  • 谢谢!这就是解决方案:)
  • 初始化应该由构造函数完成,而不是公开成员变量(= 糟糕的设计)。
  • 默认只有默认构造函数,需要重写
  • 或添加公共方法,将值作为参数传入,然后将其分配给您的变量。
猜你喜欢
  • 2011-02-27
  • 1970-01-01
  • 2013-03-12
  • 2013-07-19
  • 2013-08-26
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多