1. 程式人生 > >“正被停用的啟用上下文不是最近啟用的”的錯誤的解決

“正被停用的啟用上下文不是最近啟用的”的錯誤的解決

作者:朱金燦

       前幾天同事叫我幫忙看一個問題,問題是這樣的:MFC程式中建立了一個停靠欄視窗之後視窗跟檢視視窗貼在一塊是透明的,然後程式退出時崩潰。經過檢視堆疊,發現錯誤資訊是:正被停用的啟用上下文不是最近啟用的

        開始我對這個錯誤有點百思不得其解,通過檢視他的程式碼,發現了問題所在:原來他在CMainFrame類的OnCreate函式裡使用停靠欄類的區域性變數建立停靠欄視窗。這樣做有什麼問題呢?大家知道,MFC的視窗類都是支援動態建立的,而MFC的動態建立機制的一步是將視窗類資訊(如名字)之類儲存在一個全域性連結串列裡(具體請見《深入淺出MFC》)。而使用視窗類的區域性變數建立視窗意味著一處這個函式這個變數就析構了,而視窗類資訊(如名字)之類還儲存在全域性連結串列裡。當這個連結串列最後析構時發現視窗已經無效了,自然崩潰了。明白了這點,我叫同事將停靠欄類的區域性變數改為CMainFrame類的資料成員,這樣確保它是全域性的有效物件。由此可以得知,支援MFC的動態建立的物件都必須是全域性有效的物件,否則在程式退出時必然崩潰。

相關推薦

啟用上下文最近啟用的”的錯誤解決

作者:朱金燦       前幾天同事叫我幫忙看一個問題,問題是這樣的:MFC程式中建立了一個停靠欄視窗之後視窗跟檢視視窗貼在一塊是透明的,然後程式退出時崩潰。經過檢視堆疊,發現錯誤資訊是:正被停用的啟用

0xC015000F:啟用上下文最近啟用

專案程式執行的時候,突然出現這個錯誤,呼叫堆疊中的函式,沒有一個是自己寫的,非常困惑。  在網上搜索了一下,先找到一個提示,可以在CApp::InitInstance()中禁用ActivationContext:  afxAmbientActCtx= FALSE;  這種做法

“0xC015000F 正在啟用上下文最近啟用的”錯誤解決方法

   程式在windowsXP和Windows7 32系統下執行的好好的,今天裝了一個windows7 64位系統(說明,程式本身還是32位開發的),執行時出現“0xC015000F 正在被停用的啟用上下文不是最近啟用的”這個錯誤,找了好長時間才解決,下面總結如下:   網上

0xC015000F 正在啟用上下文最近啟用的”錯誤解決方法

程式在windowsXP和Windows7 32系統下執行的好好的,今天裝了一個windows7 64位系統(說明,程式本身還是32位開發的),執行時出現“0xC015000F 正在被停用的啟用上下文不是最近啟用的”這個錯誤,找了好長時間才解決,下面總結如下: 網上

VS2008中0xC015000F:正在啟用上下文最近啟用解決方法

        今天在設計介面的時候遇到了如上問題,網上搜了也沒有找到正確解決辦法,自己摸索了一番,正確。我的出錯原因是我刪除了一些無用的控制元件。         解決辦法如下:找到與你刪除資源有關

如何啟用工作管理員

使用快捷鍵“Win+R”彈出【執行】,輸入“gpedit.msc”,點選【確定】: 依次展開【本地計算機 策略】→【使用者配置】→【管理模板】→【系統】→【Ctrl+Al

Apple ID了這麼辦?apple id解決方法!

如果您或其他人輸入您的密碼、安全提示問題的回答或其他帳戶資訊的錯誤次數過多,您的 Apple ID 會自動鎖定以保護您帳戶的安全,並且您無法登入任何 Apple 服務。在驗證您的身份之後,您可以解鎖 Apple ID。 如果您的 Apple ID 出於安全原因而被鎖定,您可能會看到以下警告

谷歌瀏覽器如何正確安裝第三方已的擴充套件外掛

上期介紹瞭如何修復損壞的擴充套件,那麼這次分享安裝第三方擴充套件的方法。 如果不是在Google網上商店下載的擴充套件則均為第三方擴充套件,有些可以安裝,但有些會顯示“該擴充套件程式未列在 Chrome 網上應用店中,並可能是在您不知情的情況下新增的。”而無法新增,其實就是沒有被官網認

windows7系統 您的賬戶已。請向系統管理員諮詢

問題細節描述: 前幾天好像是想換個使用者桌面,換個使用者桌面, 首先把Administrator使用者給禁用,然後把現在使用的使用者名稱給刪除。 重啟電腦,結果進不去了,顯示這個錯誤提示: 您的賬戶已被停用。請向系統管理員諮詢 解決辦法: 1. 首先重啟--(正常啟動)

springboot 1.5.2升級2.0.4 mongodb中QueryBuilder中DBObject,改為Document構造及解決方式

今天封裝mongo工具包,發現QueryBuilder中DBObject被棄用,改為Document構造。為什麼,我們稍微分析一下  Document實現Map,與基本的DBObject相比,可編寫的程式碼更少 DBObject雖然不被推薦,那些從2.x驅動程式系列可能繼續使用DB

網賭威尼斯平臺 黑稽核失敗提了款如何解決

網路虛擬沒有保障,騙子利用網路便利開設×××網站騙錢。被騙者雖不計其數,卻也只能選擇忍氣吞聲,因為他們根本就毫無解決辦法。他們會認為報警未必能解決實際問題,其實只要方法得當也並非毫無辦法!在這小編講講遇到黑網站時可以使用的一些出款方法技巧,希望大家在自己束手無策的時候也能抓住這一顆救命的稻草,1,看準黑網站所

Android入門發行版本與測試版本的庫一樣build錯誤

氣死了,前天安裝模擬器,不小心把存本地學習日誌的盤刪除了!!!Android studio build 報錯Conflict with dependency 'com.android.support:support-annotations' in project ':app'

vs2008 當前上下文存在名稱xxx 解決辦法

      使用VS2008的時候,生成檔案時候,老是提示 當前上下文不存在名稱XXXXXXX  的。明明裡面有的。為什麼不存在呢? 搜尋網路上的辦法,解決起來雲裡霧裡,不知道他想幹什麼,而且非常複雜。拷貝,生成。下面是摘抄: 採用了Save As的辦法複製了一個.Asp

iNode mac版網線上去網的解決方法 thunderbolt

山大的校園網我已無力吐槽。 16年Air系統Sierra 10.12.3。連網線需要thunderbolt轉換器。 在山大網管會的網站下了inode客戶端,一直提示伺服器沒響應和網路有問題。後來

IIS前端頁面顯示詳細錯誤解決方法

詳細 命令 服務器 lex post layer item read 信息服務 要想解決這個問題,有三種方法可以考慮: 1.Internet信息服務(IIS)管理器 2.Web.config文件 3. 命令行 在IIS的“錯誤頁”右邊的“編輯功能設置”選擇“

java和groovy混合程式設計時提示找到符合錯誤解決辦法

本人在使用java和groovy混合程式設計時,發現一個問題,當java和groovy相互呼叫的過程中在本機執行沒有任何問題,但當弄到Jenkins上之後總是報錯,本機使用gradle執行build的task的時候,也是報錯,資訊如下: 錯誤: 找不到符號 import com.fission

Android Studio 報 Failed to resolve: support-core-utils 找到依賴 錯誤解決

Google不支援通過SDK的更新來更新support庫,需要通過maven倉庫來下載支援庫。 解決方法: allprojects {     repositories {         maven { url 'https://dl.google.com/dl/and

wamp圖示橙色mysql啟動【錯誤解決】本地計算機上的mysql服務啟動停止後,某些服務在未由其他服務或程式使用時將自動停止

在啟動MySQL服務時出現該錯誤:  本地計算機上的mysql服務啟動停止後,某些服務在未由其他服務或程式使用時將自動停止。 mysql 版本 5.7.14  系統 win 7 後來經過一系列的百度,谷歌,總算是解決了。 首先,你需要把原來的服務刪除: mysqld --remove mysq

Linux下Tomcat伺服器,出現Connection refused錯誤解決辦法

錯誤內容如下 : 2010-9-19 16:09:58 org.apache.catalina.startup.Catalina stopServer 嚴重: Catalina.stop:  java.net.ConnectException: Connectio

在Windows系統下pip安裝時,PremissionError錯誤解決辦法

當用pip install package_name 語句直接安裝時,出現如下報錯: C:\Users\wangz>pip install pygame Collecting pygame   Using cached pygame-1.9.3-cp36-cp36m-