【发布时间】:2025-12-24 10:10:06
【问题描述】:
我正在尝试为我的用户创建一个“表单”类型的输入,因此我在 Visual Studio 中有一个 C++ 对话框项目。这个项目有许多可以填写的字段。其中一个字段需要更多信息,所以我想为此应用程序创建一个“子对话框”。我弹出子对话框,但无法弄清楚如何将信息返回到我的“主”应用程序中。
loan_info newLoan;
LoanDlg dlgAbout(&newLoan);
if (dlgAbout.DoModal() == IDOK)
{
CString string;
dlgAbout.GetDlgItemText(IDC_EDIT__LOAN_PRINCIPLE, string);
}
我在“GetDlgItemText”处收到一个错误 - 我似乎无法在此时获取对话框中的元素(因为 dlgAbout 现在为 NULL)。 任何有关在“对话”Visual Studio 项目中创建和访问对话的指针都将不胜感激。 谢谢。
【问题讨论】:
-
一旦对话框关闭,您将无法使用
GetDlgItemText。GetDlgItemText只能用于现有窗口。一旦对话框关闭(例如单击“确定”),对话框窗口就不再存在。主题很广,请谷歌“mfc modal dialog tutorial”。 This tutorial 看起来不错。 -
在子对话框的
OnOK()处理程序中,调用GetDlgItemText()并将结果存储到“LoanDlg”类的成员变量中。或者,如果您使用了向导并为控件创建了成员变量,只需调用UpdateData(TRUE)(如果基类中的默认实现已经这样做了,可能也不需要这样做)。无论哪种情况,在子对话框关闭后,其控件当然不可用,但对话框的 C++ 类将可用,数据也将可用(可通过成员变量访问,例如dlgAbout.szLoanPrinciple)。