關於MFC報錯mfc110ud.dll Line: 554

具體錯誤:
Debug Assertion Failed!

Program: C:\Windows\SYSTEM32\mfc110ud.dll
File: f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\viewscrl.cpp
Line: 554
問題描述:
我新建的工程是MFC單文檔,應用 VS2008主題,視圖繼承 ScrollView,此時編譯運行程序沒有報錯。
修改ScrollView 子類的OnDraw()函數如下:
這裏寫圖片描述

編譯運行程序,如果關閉程序之前窗口爲最大化,下次運行時就會報上述錯誤。
這裏寫圖片描述

原因在於窗口最大化狀態下,沒完成初始化時調用了函數GetScrollPosition(),導致上述報錯,奇怪的是如果不是最大化狀態下,即使窗口沒完成初始化,調用函數GetScrollPosition()也沒有問題,目前我也找不到真正的原因。
解決方法:

沒有找到什麼好的解決方案,但可以使用一些技巧,在OnDraw()函數中儘量不要調用GetScrollPosition()函數,但有時又非要不可,可以設置標誌位,只要讓程序第一次調用OnDraw()函數時,不執行GetScrollPosition()函數即可,後面再調用也不會報錯。
這裏寫圖片描述

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