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
用于组合框)。
我正在使用 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
用于组合框)。