【发布时间】:2014-11-09 20:37:46
【问题描述】:
我正在处理一个 MFC 项目。在主对话框中,有一个按钮可以打开子对话框以供某些用户输入。然后,当在子框中单击“确定”时,此数据将设置为父对话框中的变量。这一点都工作得很好。
现在子框中的文本框初始化为子对话框的 OnInitDialog() 中的预设值。我希望这些值初始化为它们当前在父对话框中连接到的任何变量。
因此,例如,我有一个文本框,它设置在名为 sampleCount 的整数变量中。在我的子对话框中(仅显示此变量的代码)
void ChildBox::DoDataExchange(CdataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_SAMPCOUNT, sampCnt);
}
BOOL FNameIn::OnInitDialog()
{
CDialog::OnInitDialog();
GetDlgItem(IDC_SAMPCOUNT)->SetWindowTextA("1");
return TRUE;
}
然后在我的父对话框中
void ParentDialog::OnInput()
{
ChildBox dlg;
if (dlg.DoModal() == IDOK)
{
sampleCount = dlg.sampCnt;
}
}
正如我所说,这段代码一切正常,但每次我打开 ChildBox 时,sampleCount 文本框都会设置为 1。如果我输入 20,然后点击确定并将 ParentDialog 中的 sampleCount 变量设置为 20 我希望它下次打开子对话框时,在文本框中显示 20。该变量也可以由 ParentDialog 中的另一个函数自动设置,因此子对话框中输入的最后一个值并不总是正确的,它需要使用 ParentDialog 中变量 sampleCount 的当前值。
我觉得这应该很简单,但我不太明白,谢谢你的帮助。
【问题讨论】:
-
对不起,我在复制代码时犯了一个错误。 sampleCount 是在 ParentDialog 的初始化时声明的,所以它不会消失。编辑我的问题以摆脱大括号内的 int 。
-
另外,我在研究中遇到过几次该链接,但我无法完全弄清楚我需要什么。我可能只是没有完全理解它,或者它没有完全涵盖我需要的东西,但无论哪种方式,我似乎都无法从中得到答案。
标签: c++ visual-c++ mfc dialog