程式在windowsXP和Windows7 32系統下運作的好好的,今天裝了一個windows7 64位系統(說明,程式本身還是32位開發的),運作時出現“0xC015000F 正在被停用的激活上下文不是最近激活的”這個錯誤,找了好長時間才解決,下面總結如下:
網上提到較多的方法是在調用CWinApp::InitInstance();接口後面使用afxAmbientActCtx = FALSE;我采用這個方法後确實不會出現這個問題,不過我的程式中有一些代碼由于把這個變量設成false後導緻不執行,是以會出現其他問題,是以放棄該方法。
我采用的方式是将Debug時所有MFC異常都抛出,不讓MFC處理異常,這樣就不會導緻crash,方法如下:在VS2008中“Debug”菜單->“Exceptions”->"Win32 Exceptions",然後将這些異常都抛出就可以了,将所有的都check上。不過這樣的話應該也會把其他異常給抛出了,比如記憶體越界之類的。你的代碼最好在其他機子上測一下,處理這些異常。
抛出異常後,才發現,原來是自己寫的代碼纰漏太多,再次建議大家都把異常抛出勾上。

最新發現,所有異常都勾上後,一個普通的FileSaveDlg在儲存的時候,切換輸入法都會導緻異常。。。。汗!~
先不去分析,果斷先把異常抛出勾回去!