Re: Почему не работает ComboBox в CDialog?
От: REV1  
Дата: 07.10.09 23:33
Оценка:
Здравствуйте, ymax, Вы писали:

Y>в обработчике основного окна:

Y>[ccode]
Y>void cMyWnd::OnLButtonDown(UINT, CPoint)
Y>{
Y> rrr tmprr(this);
Y> tmprr.m_val = "текст1";
Y> tmprr.m_cb.AddString("текст2"); // !!! Здесь студия выдает ошибку ассерта
В этот момент собственно Windows-окна ни диалога, ни, тем более ComboBox-a, еще не существует
Y> tmprr.DoModal();
Они создадутся в DoModal.

Если нужно заполнить комбик извне, то возможно применить след.варианты:
1) В классе диалога rrr создать коллекцию строк (+, возможно, ассоциированную коллекцию числовых значений), проинициализировать ее/их или в конструкторе, или вызовом специального метода типа rrr::AddString(CString& str). Собственно комбик заполнить в rrr::OnInitDialog;
2) Создать собственный сабкласс от CComboBox, который будет хранить всю информацию о комбике. Заполнить его любым доступным способом (конструктор, метод инициализации), а потом также в rrr::OnInitDialog вызвать собственный метод по инициализации уже окна ComboBox.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.