C ++ MFC创建新对话框并添加Combobox项

时间:2015-09-30 20:17:25

标签: c++ combobox mfc

我使用MFC构建具有两个对话框的应用程序。 当我在父对话框中按下一个按钮时,一个包含Combobox的新窗口应该可以显示。

我用按钮" New"创建了第一个对话框。此按钮将打开第二个对话框。 因此我用Combobox创建了第二个对话框。 Combobox有一个链接变量variableCombobox。第二节叫做CSecond

在我在新对话框中执行任何操作之前,我想在Combobox中添加一个项目。 在第一个对话框类中,我创建了这样的新窗口:

void CFirstDlg::OnBnClickedNew()
{
    CSecond dlg2 = new CSecond();
    dlg2.variableCombobox.AddString(L"test");
    dlg2.DoModal();
}

程序在我想要将test字符串添加到Combobox的行中崩溃,显示断言错误。 我注意到dlg2对象是null,但我不知道为什么。

有人能告诉我如何在第二个窗口的Combobox中立即添加新项目来创建第二个窗口吗?

1 个答案:

答案 0 :(得分:1)

问题是第二个对话框是模态对话框。在调用DoModal()之前窗口不存在,并且在该函数返回后不再存在。因此,在组合框上调用AddString是不对的,因为那时组合框不存在。

解决方案是使用所需的值初始化对话框(例如在构造函数中或其他方法),然后在OnInitDialog()中使用这些值来设置控件(包括对{{1}的此调用}对于组合框。)