debug模式下dlgdata.cpp line 43 断言失败
我在VC6下显示Line 43, Line 624行失败
网上有Line 40行猜测是其他版本
运行程序出错,定位如下:
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; }
你先看看nIDC的值是多少,再在自己的资源文件中找到对应的ID,如你发现nIDC=1012,然后发现
#define IDC_PROGRESS_FILE 1012
接下来在
void CxxxxxDlg::DoDataExchange(CDataExchange* pDX) 函数中找
DDX_Control(pDX, IDC_PROGRESS_FILE, m_Check_LCCtrl);
删除它就行了,
我认为原因是你为一个控件进行变量绑定,后来你觉得这个控件没用了,就直接在对话框上把控件删除了,而这里的关联代码却没删除
找到代码中DDX_Control部分的颜色也为灰色
VC6默认代码格式中,宏定义、汇编代码 和 部分wizard向导生成代码,都默认是灰色表示。
具体可以在菜单 Tools - Options 的 Format 中设置或者查询。
也有说是消息映射
参考:
2.CDataExchange::PrepareCtrl(int nIDC)里出错 解决