错误信息:
Debug Assertion Failed!Program:F:\Test\Test.exe
File:dlgdata.cpp (  该文件是VC安装路径下的,不是工程产生的,它的 43行在下面的函数里
                  HWND CDataExchange::PrepareCtrl(int nIDC)
{
ASSERT(nIDC != 0);
ASSERT(nIDC != -1); // not allowed
HWND hWndCtrl;
m_pDlgWnd->GetDlgItem(nIDC, &hWndCtrl);
if (hWndCtrl == NULL)
{
TRACE1("Error: no data exchange control with ID 0x%04X.\n", nIDC);
ASSERT(FALSE);//此为 43 行
AfxThrowNotSupportedException();
}
m_hWndLastControl = hWndCtrl;
m_bEditLastControl = FALSE; // not an edit item by default
ASSERT(hWndCtrl != NULL);   // never return NULL handle
return hWndCtrl;
}Line:43------------------------
但是其他对话框工程能执行 *.exe

解决方案 »

  1.   

    ASSERT(FALSE);  //那就是肯定要发生断言罗
      

  2.   

    GetDlgItem(nIDC, &hWndCtrl);//这句没有执行成功
      

  3.   

    m_pDlgWnd->GetDlgItem(nIDC, &hWndCtrl);
    获取子控件指针失败。
    是不是你的对话框上有特殊的控件,比如插入的表格控件之类的。而现在,对应的ocx没有注册。
      

  4.   

    GetDlgItem(nIDC, &hWndCtrl);//这里没有得到需要的东西
      

  5.   

    改成release配置看能否编译执行成功,略过调试信息。
      

  6.   

    GetDlgItem(nIDC, &hWndCtrl);
    出错了。。你应该在resource.h检查nIDC是否唯一
    或者删除debug目录,重新编译试试
      

  7.   

    有时候你添加了一个控件,他用默认的id名,你保存了后,又给这个id重新命名,他就会在resource.h中另外添加应该id名,但是id number是一样的,所以可能会出错,你检查一下
      

  8.   

    或者检查resource symbols看是否有重复,然后rebuild all试试。
      

  9.   

    原来是一个EDIT在类向导里已经设了相应的成员变量,然后又在属性里改了ID,可是编译的时候,怎么不提示错误呢?