Сбой приложения при перетаскивании диалогового окна, созданного с помощью MFC из-за механизма DDX

Я могу исправить полученную ошибку, но меня интересует причина ошибки.

Я использовал указатель в поле со списком (который был создан с использованием механизма 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);

Теперь приложение успешно скомпилировано, и при запуске приложения диалоговое окно также отображается правильно. (Примечание: обычно диалоговое окно отображается в центре рабочего стола, но на этот раз оно отображается в левом верхнем углу).

Теперь, когда я перетаскиваю свой диалог или что-то делаю, происходит сбой приложения.

Когда я изменил всю эту декларацию и послал ссылку, а не указатель, мое приложение работает правильно. Кто-нибудь может объяснить причины такого поведения?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector