DoModal () утверждает в самой первой строке

У меня есть приложение на основе диалогового окна MFC, созданное в Visual Studio 2008.

CCalendarWindowDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();

Когда я запускаю приложение, DoModal () утверждает в самой первой строке

INT_PTR CDialog::DoModal()
{
    // can be constructed with a resource template or InitModalIndirect
    ASSERT(m_lpszTemplateName != NULL || m_hDialogTemplate != NULL ||
    m_lpDialogTemplate != NULL);
}

Кто-нибудь может помочь?


person user196614    schedule 11.01.2010    source источник


Ответы (3)


Для решения этой проблемы в конструкторе моего класса Dialog я сделал что-то вроде

CCalendarWindowDlg::CCalendarWindowDlg ()
    :CDialog(IDD)
{
}

Обратите внимание, я вызываю конструктор родительского класса CDialog с идентификатором ресурса формы, которую хочу представить.

person sergiol    schedule 13.01.2012

Похоже, что шаблон ресурса отсутствует или неправильно сопоставлен.

Посмотрите на атрибут IDD в своем классе CCalendarWindowDlg и проверьте, есть ли у вас соответствующий диалог в представлении ресурсов.

Вы используете вспомогательные библиотеки DLL для локализации или других целей? или библиотека ресурсов компонента CCalendarWindowDlg может отсутствовать.

person Community    schedule 11.01.2010
comment
Спасибо Гопалакришнану за быстрый ответ. Но я проверил атрибут IDD, и он совпадает с атрибутом в resource.h и CalendarWindow.rc. Что еще я могу сделать? - person user196614; 11.01.2010
comment
вы можете увидеть, использует ли CCalenderWindowDlg вспомогательную DLL - person ; 12.01.2010

У меня была та же проблема, когда я просто создавал новое приложение MFC на основе диалогового окна с помощью Visual Studio 2012. Для меня решением было использовать конструктор диалогового окна, который принимает идентификатор ресурса диалогового окна в качестве параметра.

Например:

CCalendarWindowDlg dlg(IDD_MYDIALOG);
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();

Надеюсь это поможет.

person Tero Salonen    schedule 28.11.2013