我在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 中設定或者查詢。
也有說是消息映射
參考:
1.dlgdata.cpp line 40 斷言失敗
2.CDataExchange::PrepareCtrl(int nIDC)裡出錯 解決
轉載于:https://www.cnblogs.com/code1992/p/10494097.html