2011-10-05 17 views
6
itsAnalysisDataTable.CreateEx(WS_EX_CLIENTEDGE, AfxRegisterWndClass(CS_DBLCLKS, LoadCursor(NULL, IDC_ARROW), (HBRUSH)::GetStockObject(NULL_BRUSH), NULL), "AnalysiysTable", WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP, dialogItemRect, this, IDC_ANALYSIS_DATA_TABLE); 

इस लाइन ने मुझे समाधान के बिना दो दिन का प्रयास किया है। itsAnalysisDataTable एक कस्टम विंडोज नियंत्रण है जिसमें सीडब्ल्यूएनडी अपने ग्रैंड ग्रैंड ग्रैंड पेरेंट के रूप में है। नियंत्रण हमारे कोड में मुद्दों के बिना अन्य चरणों में सफलतापूर्वक उपयोग किया गया है। यह एक CPropertyPage है।CreateEx कारण अनचाहे अपवाद सक्रियण संदर्भ निष्क्रिय किया गया है हाल ही में सक्रिय एक

समस्या मेरे पास है

लाइन का कारण बनता है (और यह हर बार करता है) MyProduct (64) .exe में 0x76f7fd5c में एक क्रिया के अपवाद: 0xC015000F: सक्रियण संदर्भ निष्क्रिय नहीं किया जा रहा सबसे हाल ही में है एक सक्रिय।

अपवाद 32-बिट में भी होता है। मैं विंडोज 7 64 पर हूँ, वी.एस. 2008

क्या मैं पहले से ही की कोशिश की है:

  1. डीबगर में Win32 अपवाद पर ब्रेक को सक्षम करने से। कोई अपवाद नहीं होता है (इसके पहले मौके अपवादों को छोड़कर हमारे कोड में बहुत कुछ है और इसका कोई प्रभाव नहीं है)
  2. पूरे प्रोजेक्ट को रीकंपलिंग
  3. अपवादों के नियंत्रण के लिए ऑनक्रेट हैंडलर को डिबग करना।

कॉल स्टैक:

ntdll.dll!0000000076f7fd5c()  
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll] 
kernel32.dll!0000000076df42d3()  
mfc90d.dll!AfxDeactivateActCtx(unsigned long dwFlags=0, unsigned __int64 ulCookie=2077018657900210161) Line 260 + 0x19 bytes C++ 

टिप्पणियों:

  1. अगर मैं WS_CHILD झंडा अपवाद नहीं होता है को छोड़, लेकिन OnCreate भी नियंत्रण पर बुलाया नहीं है!
  2. यदि मैं अपवाद को अनदेखा करता हूं और जारी रखता हूं, तो एप्लिकेशन ठीक काम करता है, नियंत्रण भी ठीक काम करता है।
  3. ऐप init के दौरान AfxSetAmbientActCtx (FALSE) को कॉल करना अपवाद को दबा देता है। लेकिन मुझे लगता है कि यह एक हैक है, जब तक कि मैं इसे औचित्य नहीं दे सकता।
+1

"सक्रियण संदर्भ निष्क्रिय किया जा रहा है" लक्षण प्रायः अपस्ट्रीम अपवाद क्रॉसिंग सक्रियण संदर्भों का एक कैस्केडिंग लक्षण होता है। शायद आपके पहले पकड़े गए अपवादों में से एक यह कर रहा है। देखें कि क्या आप पहले-मौका अपवाद को पकड़ और संभाल सकते हैं जो "सक्रियण संदर्भ" अपवाद से पहले ही इसे फेंकने के करीब होता है। –

+0

डीबग + अपवाद, फेंकने वाले बक्से पर टिकटें। –

उत्तर

11

इनमें से बहुत से मारने के बाद, मुझे रूट समस्या को ट्रैक करने का सरल तरीका डीबग -> अपवादों पर जाने और सभी थ्रो अपवादों को सक्षम करने का आसान तरीका मिला है। फिर आप पाएंगे कि कुछ अन्य अपवाद है जो चुपचाप पकड़ा जा रहा है, लेकिन सक्रियण संदर्भ को गड़बड़ कर रहा है। एक बार जब आप पहले अपवाद को ठीक कर लेंगे, तो सक्रियण संदर्भ अपवाद नहीं होगा।

3

एप्लिकेशन init दौरान AfxSetAmbientActCtx (FALSE) कॉलिंग अपवाद को रोकता है। लेकिन मुझे लगता है कि यह एक हैक है, जब तक कि मैं इसे औचित्य नहीं दे सकता।

discussion on MS Connect 'MFC default exception handling causes problems with activation context' आपको हैक को माइक्रोसॉफ्ट से एक कामकाजी सुझाव होने का औचित्य साबित करने में मदद कर सकता है।

6

मेरा कहना है कि मेरा अपमानजनक नियंत्रण वर्ग में एक प्रारंभिक सदस्य के कारण था। कन्स्ट्रक्टर में चर को शुरू करने से समस्या ठीक हो गई। तो मुझे AfxSetAmbientActCtx (FALSE) का सहारा लेने की आवश्यकता नहीं थी

0

एक ही समस्या थी।

मेरे मामले में मैं पथ से एक फाइल पढ़ रहा था और मैंने गलती से उस फ़ाइल को हटा दिया। फ़ाइल को वापस रखकर समस्या हल हो गई।

0

एक प्रोग्राम में कुछ रहस्यमय क्रैश था जो कई ActiveX नियंत्रणों के साथ आईई की मेजबानी करता था।

शून्य से पहले (एएक्स नियंत्रणों में से एक) के पहले विभाजन को बदल देता है अंततः इस अपवाद और बाद में एक्सेस उल्लंघन का कारण बनता है।

संबंधित मुद्दे