MFC CDialog:: Ошибка создания
Вопрос
У меня возникли проблемы с некоторым кодом для создания окна на основе CDialog.На прошлой неделе код работал нормально.Единственными изменениями, которые я внес, была замена C ++ deque на хэш-массив.Я закомментировал строку кода с вызовом метода Create, чтобы позволить мне пропустить загрузку окна.Теперь код вообще больше не создает окно.
Функция Create возвращает false, а функция GetLastError возвращает 0.Я не использую никаких пользовательских элементов управления внутри окна - только флажок и элемент управления списком.Насколько я могу судить (на данный момент я не могу подключить отладчик), функции onCreate и OnInitDialog вообще не вызываются.
Я вставил приведенный ниже код, который я использовал для проверки возврата функции Create и GetLastError
BOOL result = ORDER_HANDLER_GUI.Create(OrderHandlerGUI::IDD, AfxGetMainWnd());
int error = ::GetLastError();
if(result)
AfxMessageBox("Created GUI");
else
{
CString msg;
msg.Format("%d", error);
AfxMessageBox("Could not create GUI");
AfxMessageBox(msg);
}
Обновить:Наконец-то мне удалось подключить отладчик (это плагин, загруженный в стороннее приложение, которому по какой-то причине не понравился отладчик).После пошагового выполнения кода кажется, что AfxGetMainWnd() возвращает NULL .Сейчас я провожу дополнительные тесты по этому вопросу.
Решение
Проблемы, похоже, были с вызовом CDynLinkLibrary().
Я прокомментировал это по просьбе компании, которая пишет программное обеспечение, которое загружает мой плагин.Добавление этой строки обратно привело к тому, что некоторые значения по-прежнему были равны null, но теперь окно создано правильно.
Я собираюсь провести небольшое исследование по этому поводу и сообщу, если что-нибудь найду.Если кто-то знает об этом больше меня (это несложно сделать), не стесняйтесь оставлять комментарии.
Другие советы
Использует ли диалоговое окно какие-либо элементы управления, которые могут быть причиной проблемы?Например, richedit?