從網上下載了一個程序先編譯后看看效果,發現原來的工程是Visual C++ 2003寫的,于是轉化到Visual C++ 2008 SP1的工程,一編譯,直接跳出對話說 Microsoft (R) C/C++ 優化編譯器 遇到問題需要關閉。我們對此引起的不便表示抱歉。如下圖所示:

打開工程的項目屬性,發現優化選項已經選擇禁用了。沒辦法,開始慢慢檢查問題。
1、把編譯時報錯的文件注釋掉,確認其它文件編譯無誤。
2、把報錯的文件從全部注釋掉到部分注釋掉,判斷問題所在。
最終發現錯誤出在下面這句代碼上:
swprintf(text, L"text%d", this);
突然記起前面遇到同樣的問題的時候最后也是通過把sprintf函數注釋掉才解決的,把這句代碼注釋掉,再次編譯,發現問題解決了。
仔細看這句代碼,實在看不錯為什么要把類的this指針這樣輸出然后通過GDI+繪制到界面上去,也許是網上代碼良莠不齊,或者自己水平太菜還沒到能解讀的層次。
另外放上在編譯時同樣遇到過這個問題的另外程序的界面截圖,我很喜歡的一個程序界面,費了我好大勁才把殘缺的代碼弄出個勉強能看看的可執行程序來:

(別問我要代碼,這種圖和代碼網上都有,只是代碼不全而已,不過是可以拼湊出可執行程序來的)

打開工程的項目屬性,發現優化選項已經選擇禁用了。沒辦法,開始慢慢檢查問題。
1、把編譯時報錯的文件注釋掉,確認其它文件編譯無誤。
2、把報錯的文件從全部注釋掉到部分注釋掉,判斷問題所在。
最終發現錯誤出在下面這句代碼上:

突然記起前面遇到同樣的問題的時候最后也是通過把sprintf函數注釋掉才解決的,把這句代碼注釋掉,再次編譯,發現問題解決了。
仔細看這句代碼,實在看不錯為什么要把類的this指針這樣輸出然后通過GDI+繪制到界面上去,也許是網上代碼良莠不齊,或者自己水平太菜還沒到能解讀的層次。
另外放上在編譯時同樣遇到過這個問題的另外程序的界面截圖,我很喜歡的一個程序界面,費了我好大勁才把殘缺的代碼弄出個勉強能看看的可執行程序來:

(別問我要代碼,這種圖和代碼網上都有,只是代碼不全而已,不過是可以拼湊出可執行程序來的)