Это кажется тривиальным, но с MFC я всегда получаю какую-то тупую тривиальную проблему, которая останавливает мой рабочий процесс.Почему я не могу добавить строку в поле со списком?
Я получаю «Debug Assertion Failed» ошибка указывает на afxcmn2.inl линии 352:
_AFXCMN_INLINE int CComboBoxEx::AddString(LPCTSTR lpszString)
{ UNUSED_ALWAYS(lpszString); ASSERT(FALSE); return CB_ERR;}
Я пытающегося просто добавить несколько строк в поле со списком инициализации, как так:
BOOL myDialog::OnInitDialog()
{
CDHtmlDialog::OnInitDialog();
cb_direction.AddString(CString("North"));
}
Большинство ответов на Google, похоже, предполагают, что AddString происходит до OnInitDialog, что, похоже, не так. Еще одна серии ответов на Google предполагает обмен данных не происходит или это неправильно, но это не так:
void myDialog::DoDataExchange(CDataExchange* pDX)
{
CDHtmlDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_WHEDIT_DIR, cb_direction);
}
Другое предложение заключалось в том, что поле со списком не было создано, но если отключить выпадающий с помощью следующий код, я не только НЕ получаю сообщение об ошибке, но он действительно работает и отключает этот ящик!
BOOL myDialog::OnInitDialog()
{
CDHtmlDialog::OnInitDialog();
cb_direction.EnableWindow(FALSE);
}
Я очистил решение и перестроил его. Я не уверен, что еще мне не хватает. И все, что я хочу сделать, это добавить строку в поле со списком, которое займет 2 секунды в .Net (эта программа была написана много лет назад кем-то другим, поэтому именно в MFC, а не в .NET, но я отвлекаюсь) ,
CComboBoxEx связывает изображения с элементами. Вместо этого используйте метод InsertItem(). –