如何初始化模态对话框? (C++/MFC)
Posted
技术标签:
【中文标题】如何初始化模态对话框? (C++/MFC)【英文标题】:How to initialize a modal dialog ? (C++ / MFC) 【发布时间】:2017-09-27 10:10:15 【问题描述】:我想在对话框显示时填写一些字段。因此,我想遵循这些步骤:
-
构造对话框对象
调用 DoModal()
初始化其字段
但是,只有在对话框关闭时,我才能传递给 DoModal() 之后的指令。因此,如何初始化对话框的字段?
我试图覆盖 DoModal():
int MyDialog::DoModal()
int a = CDialogEx::DoModal();
InitDialog();
return a;
但这是同样的问题:对话框关闭时调用 InitDialog()...
【问题讨论】:
DoModal 在对话框关闭之前不会返回。实例化 MyDialog,初始化成员,然后调用 DoModal() 【参考方案1】:创建对话框对象,而不是在对话框上添加OnInitDialog
,此方法将在显示对话框之前调用(OnInitDialog msdn)。
将变量添加到您的对话框(int a;)
通话对话:
CDialog dlg;
dlg.a = 10;
dlg.DoModal();
【讨论】:
谢谢!这就是解决方案:) 初始化应该由构造函数完成,而不是公开成员变量(= 糟糕的设计)。 默认只有默认构造函数,需要重写 或添加公共方法,将值作为参数传入,然后将其分配给您的变量。以上是关于如何初始化模态对话框? (C++/MFC)的主要内容,如果未能解决你的问题,请参考以下文章