Я могу исправить полученную ошибку, но меня интересует причина ошибки.
Я использовал указатель в поле со списком (который был создан с использованием механизма DDX) в качестве аргумента в одном из моих методов.
Например:
bool CMyStuff::FillCombo(CComboBox* combo_ctrl)
Но мое поле со списком создается путем перетаскивания, MFC по умолчанию создает объект вместо указателя. Поскольку для отправки мне требовался указатель, я изменил эту переменную-член на указатель.
Но после этого я получил ошибку компиляции, так как DDX не принимает указатель в качестве входных данных. Так изменил мой код DDX с:
DDX_Control(pDX, IDC_COMBO1, m_ptr_combo1);
в
DDX_Control(pDX, IDC_COMBO1, *m_ptr_combo1);
Теперь приложение успешно скомпилировано, и при запуске приложения диалоговое окно также отображается правильно. (Примечание: обычно диалоговое окно отображается в центре рабочего стола, но на этот раз оно отображается в левом верхнем углу).
Теперь, когда я перетаскиваю свой диалог или что-то делаю, происходит сбой приложения.
Когда я изменил всю эту декларацию и послал ссылку, а не указатель, мое приложение работает правильно. Кто-нибудь может объяснить причины такого поведения?
Задача ещё не решена.
Других решений пока нет …