2015-09-30 4 views
1

Я использую MFC для создания приложения с двумя диалогами. Когда я нажимаю кнопку в родительском диалоговом окне, должно появиться новое окно, включающее Combobox.C++ MFC создайте новое диалоговое окно и добавьте элемент 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

Ваш код выглядит некорректно. «Новый» класс возвращает указатель. Вы не указали «dlg2» как указатель. – rrirower

+0

Благодарим вас за ответ. Я изменил строку на CSecond * dlg2 = new CSecond(); и dlg2-> вместо dlg2. ... Я до сих пор получаю сообщение об ошибке –

ответ

1

Проблема заключается во втором диалоге модального диалога. Окна не существуют до вызова DoModal() и больше не существуют после возвращения этой функции. Поэтому вызов AddString в combobox не прав, поскольку в это время в поле со списком не существует.

Решение состоит в том, чтобы инициализировать диалог с вашими желаемыми значениями (например, в конструкторе, например, или другими методами), а затем в OnInitDialog() использовать эти значения для настройки элементов управления (включая этот вызов для AddString для combobox).

+0

Это было сделано. Спасибо за ваш быстрый ответ и решение –

Смежные вопросы