程序在windowsXP和Windows7 32系統下運行的好好的,今天裝了一個windows7 64位系統(說明,程序本身還是32位開發的),運行時出現“0xC015000F 正在被停用的激活上下文不是最近激活的”這個錯誤,找了好長時間才解決,下面總結如下:
網上提到較多的方法是在調用CWinApp::InitInstance();接口后面使用afxAmbientActCtx = FALSE;我采用這個方法后確實不會出現這個問題,不過我的程序中有一些代碼由於把這個變量設成false后導致不執行,所以會出現其他問題,所以放棄該方法。
我采用的方式是將Debug時所有MFC異常都拋出,不讓MFC處理異常,這樣就不會導致crash,方法如下:在VS2008中“Debug”菜單->“Exceptions”->"Win32 Exceptions",然后將這些異常都拋出就可以了,將所有的都check上。不過這樣的話應該也會把其他異常給拋出了,比如內存越界之類的。你的代碼最好在其他機子上測一下,處理這些異常。
拋出異常后,才發現,原來是自己寫的代碼紕漏太多,再次建議大家都把異常拋出勾上。
最新發現,所有異常都勾上后,一個普通的FileSaveDlg在保存的時候,切換輸入法都會導致異常。。。。汗!~
先不去分析,果斷先把異常拋出勾回去!