Mfc DoModal()在第一行断言

Mfc DoModal()在第一行断言,mfc,visual-c++,modal-dialog,Mfc,Visual C++,Modal Dialog,我在VisualStudio2008中创建了一个基于MFC对话框的应用程序 CCalendarWindowDlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); 当我运行应用程序时,DoModal()在第一行断言 INT_PTR CDialog::DoModal() { // can be constructed with a resource template or InitModalIndirect

我在VisualStudio2008中创建了一个基于MFC对话框的应用程序

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);
}

有人能帮忙吗?

似乎资源模板丢失或映射错误

查看CCalendarWindowDlg类中的IDD属性,查看资源视图中是否存在相应的对话框


您是否将卫星DLL用于本地化或其他目的?或者CCalendarWindowDlg组件资源DLL可能丢失。

为了在Dialog类的构造函数中解决这个问题,我做了如下操作

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

请注意,我正在使用要呈现的表单的资源ID调用CDialog父类的构造函数。

我在使用Visual Studio 2012创建新的基于对话框的MFC应用程序时遇到了相同的问题。对我来说,解决方案是使用以对话框资源ID为参数的对话框构造函数

例如:

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

希望这能有所帮助。

感谢Gopalakrishnan的及时回复。但我已经检查了IDD属性,它与“resource.h”和“CalendarWindow.rc”中的属性匹配。我还可以做什么?您可以查看CCalenderWindowDlg是否使用卫星DLL