我正在使用 MFC 构建具有两个对话框的应用程序。 当我按下父对话框中的按钮时,应该会出现一个包含组合框的新窗口。
我创建了第一个带有“新建”按钮的对话框。此按钮将打开第二个对话框。
因此,我创建了第二个带有组合框的对话框。 Combobox 有一个链接变量 variableCombobox
。第二个类称为 CSecond
。
在新对话框中执行任何操作之前,我想向组合框添加一个项目。 在第一个对话框类中,我创建了这样的新窗口:
void CFirstDlg::OnBnClickedNew()
{
CSecond dlg2 = new CSecond();
dlg2.variableCombobox.AddString(L"test");
dlg2.DoModal();
}
程序在我想将 test
字符串添加到 Combobox 的行中崩溃,显示断言错误。
我注意到 dlg2
对象是 null
但我不知道为什么。
谁能告诉我如何立即在第二个窗口的组合框中添加新项目来创建第二个窗口?
最佳答案
问题是第二个对话框是模态对话框。这些窗口在调用 DoModal()
之前不存在,并且在该函数返回后不再存在。因此在组合框上调用 AddString
是不行的,因为组合框当时不存在。
解决方案是用你想要的值初始化对话框(比如在构造函数中,或者其他方法),然后在 OnInitDialog()
中使用这些值来设置控件(包括这个调用到组合框的 AddString
)。
关于C++ MFC 创建新对话框并添加 Combobox 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32874848/