Debug Assertion Failed! f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\dlgdata.cpp Line: 42
--------------------------- Microsoft Visual C++ Debug Library --------------------------- Debug Assertion Failed! Program: d:\dev\debug\Qzone2WP.exe File: f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\dlgdata.cpp Line: 42 For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts. (Press Retry to debug the application) --------------------------- 终止(A) 重试(R) 忽略(I) ---------------------------
打开mfc源代码文件dlgdata.cpp 报错的那个一行:
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); AfxThrowNotSupportedException(); } m_hWndLastControl = hWndCtrl; m_bEditLastControl = FALSE; // not an edit item by default ASSERT(hWndCtrl != NULL); // never return NULL handle return hWndCtrl; }
DebugView里面报错:
[6932] Error: no data exchange control with ID 0x0400.
果然ID为0×400(1024)的控件用了DDX,没有删除关联变量的情况下,在界面删除了控件
问题的原因是在界面上删除了相应的Control,但是没有删掉相应的DDV
void CQzone2WPDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_USERLIST, m_userList); //delete this line! }