我使用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中立即添加新项目来创建第二个窗口吗?
答案 0 :(得分:1)
问题是第二个对话框是模态对话框。在调用DoModal()
之前窗口不存在,并且在该函数返回后不再存在。因此,在组合框上调用AddString
是不对的,因为那时组合框不存在。
解决方案是使用所需的值初始化对话框(例如在构造函数中或其他方法),然后在OnInitDialog()
中使用这些值来设置控件(包括对{{1}的此调用}对于组合框。)