天天看點

debug模式下dlgdata.cpp line 43 斷言失敗

我在VC6下顯示Line 43, Line 624行失敗

網上有Line 40行猜測是其他版本

debug模式下dlgdata.cpp line 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);         //   出錯在此  
  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); 

删除它就行了,

我認為原因是你為一個控件進行變量綁定,後來你覺得這個控件沒用了,就直接在對話框上把控件删除了,而這裡的關聯代碼卻沒删除

debug模式下dlgdata.cpp line 43 斷言失敗

找到代碼中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