MFC CDialog :: Создать не удалось - PullRequest
0 голосов
/ 07 мая 2009

У меня проблемы с кодом для создания окна на основе CDialog. Код работал нормально на прошлой неделе. Единственное, что я сделал, это заменил деку C ++ массивом хешей. Я закомментировал строку кода с вызываемым методом 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. Сейчас я провожу больше тестов по этому вопросу.

Ответы [ 2 ]

1 голос
/ 08 мая 2009

Проблемы, похоже, были с вызовом CDynLinkLibrary ().

Я прокомментировал это по запросу компании, которая пишет программное обеспечение, загружающее мой плагин. Добавление этой строки обратно привело к тому, что некоторые значения по-прежнему были нулевыми, но теперь окно создано правильно.

Я собираюсь немного изучить это и обновлю, если найду что-нибудь. Если кто-то знает об этом больше, чем я (не трудно), не стесняйтесь оставлять комментарии.

0 голосов
/ 07 мая 2009

Использует ли диалоговое окно какие-либо элементы управления, которые могут вызывать проблему? Ричедит например?

...