Debug Assertion Failed!

相信大家搞VC的都遇到這樣一個問題


網上有很多解答,然而出現問題的line行數卻不盡相同,今天我在界面加了一個組合框CComboBox控件,然後初始化等等。。。一切都沒有問題,但是接下來調試的時候卻出現以上對話框,其實忽略之後程序也可以繼續運行並沒有什麼問題,但是每次都這樣彈出對話框心理很不錯,還要手動關閉,作爲一個程序員怎麼能忍受呢?於是上網查資料看看什麼原因。首先有人說是debug版本用到ASSERT宏,我改成release 版本運行果然沒有出現這個對話框,但是這也不能找到問題的根本。於是我找到上面所說的那個afxwin2.inl文件然後定位到852行,問題漸漸浮出水面。


注意看852行,出問題的是IsWindow(m_hWnd);這明顯就是說我的組合框沒有創建成功嘛,怎麼會呢,後來我重新審查了一下我的代碼才發現一個很重要的問題,那就是我把

m_legSelection.SetCurSel(-1);這行代碼寫在了構造函數裏面了!怎麼能這樣呢,其實這時候組合框的對象還沒有初始化,所以不能調用m_legSelection.SetCurSel(-1)這句話,所以我將這句話放在OnInitDialog();函數裏面調用就沒問題了。

遇到類似問題的人很多,網上也找不到講解比較詳細地,所以我打算記錄自己的解決問題的過程,大家遇到類似問題也可以用同樣的思路解決。:-D

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