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

标签 c++ combobox mfc

我正在使用 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/

相关文章:

c++ - 如何初始化堆以便它可以被常规 MFC dll 中的静态构造函数使用?

c++ - 如何实现CEditListCtrl

c++ - 具有静态链接的成员函数

c# - comboBox.comboSpec.SelectedItem.ToString() 没有给出正确的值

java - 在 JavaFX 中更改窗口大小后组合框下拉宽度出现问题

c++ - 如何在 GTK2 中设置 GTKListStore/GTKComboBox 的背景?

c++ - 列 ClistCtrl 的排序不正确

c++ - 将 C++ 转换为 MIPS 程序集

c++ - 什么是RMI的C版本

c++ - 第一次使用 scp -r 之前我一直收到错误 "Host Key verification error"