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

C++ MFC create new dialog and add Combobox item

我正在使用 MFC 构建具有两个对话框的应用程序。 当我在父对话框中按下一个按钮时,应该会出现一个包含组合框的新 window。

我创建了第一个带有按钮的对话框 "New"。此按钮将打开第二个对话框。 因此,我创建了第二个带有组合框的对话框。 Combobox 有一个链接变量 variableCombobox。第二个 class 称为 CSecond.

在新对话框中执行任何操作之前,我想向组合框添加一个项目。 在第一个对话框 class 中,我像这样创建新的 window:

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

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

谁能告诉我如何创建第二个 window 立即在第二个 window 的组合框中添加新项目?

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

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