(轉帖只爲保存)VS2008 f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/dlgdata.cpp 錯誤調試/OnInitDialog啓動錯誤

(轉)http://blog.csdn.net/zhaodan19861107/article/details/8296187

-----------------------ge-------------------------------------------------ge-----------------------------------------

轉自:http://www.cnblogs.com/qwcbeyond/archive/2011/05/23/2054525.html

在VS2010 運行一個C++ 程序,出現下圖錯誤:

一看到這個,我頭都大了。關鍵是 f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/dlgdata.cpp 這個路徑根本在我計算機不存在。但是估計在安裝目錄下。

聯想到最近更新到VS2010_sp1 ,但是發行包:

en_visual_c++_2010_sp1_redistributable_package_x86_651767

沒安裝,安裝後再試,還是出錯。

爲了找到dlgdata.cpp 我用了下面的自己寫的搜索工具,

搜到後,用工具打開該文件,然後在打開的記事本上點擊:查看->狀態欄,然後定位到40行:

總算知道大概了,在谷歌上搜索關鍵詞:CDataExchange::PrepareCtrl ,第一個搜索結果,

http://blog.csdn.net/zipper9527/archive/2009/06/19/4282229.aspx

裏面提到“我認爲原因是你爲一個控件進行變量綁定,後來你覺得這個控件沒用了,就直接在對話框上把控件刪除了,而這裏的關聯代碼卻沒刪除”。

關鍵是我不知道我的nIDC 是多少,後來發現有好多個nIDC,因爲我綁定了很多變量。既然如此,那就把 dlgdata.cpp 拖到當前項目的vs2010 環境,打開dlgdata.cpp後,在第40行處設斷點,點綠色運行按鈕,很快到斷點處了。

哈哈,nIDC找到了,是1008。

然後找到 對應的 ID_Edit1。

然後按照

http://blog.csdn.net/zipper9527/archive/2009/06/19/4282229.aspx

註釋掉相關行

//DDX_Control(pDX, IDC_Edit1, m_xxxx);

並把IDC_Edit1註釋掉,m_xxxx 也註釋掉,

再次運行,再也沒有命中斷點了。Yeah!!!

分析原因:原來當初設置了一個文本框控件Eidt1,後來給它綁定到一個變量,然後覺得不好,又把這個控件替換成ComboBox,於是,就出現後來的這個現象了。

結論:以後刪除控件前,先取消對控件的變量綁定,然後再刪除控件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章