CreateEx Ursachen nicht Behandelte Ausnahme Des Aktivierungs-Kontext deaktiviert wird, ist nicht die vor kurzem aktiviert
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 );
Diese Linie hat kostete mich zwei Tage Aufwand keine Lösung. itsAnalysisDataTable ist eine benutzerdefinierte windows-Steuerelement müssen CWnd als seine grand-grand-grand-Eltern. Die Steuerung wurde erfolgreich verwendet, in anderen Gangarten ohne Probleme in unserem code. diese ist ein CPropertyPage.
Das problem, das ich habe, ist die Linie die Ursachen (und es tut jedes mal) ein
Nicht behandelte Ausnahme bei 0x76f7fd5c in MyProduct (x64).exe: 0xC015000F: Die Aktivierung Kontext deaktiviert wird, ist nicht zuletzt aktivierte ein.
Ausnahme erfolgt in 32-bit-als auch. Ich bin auf Windows 7 x64, VS 2008.
Was ich bereits probiert habe:
- Aktivieren der Pause auf win32-Ausnahmen in den debugger. Keine Ausnahme Auftritt (mit Ausnahme der erste-chance-Ausnahmen, von denen es eine Menge in unserem code und haben keinen Effekt)
- Erneut kompiliert das gesamte Projekt
- Debuggen der OnCreate-handler für die Kontrolle für Ausnahmen.
Call Stack:
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++
Beobachtungen:
- Wenn ich überspringen der WS_CHILD-flag Ausnahme nicht passieren, aber OnCreate ist auch nicht auf das Steuerelement aufgerufen!
- Wenn ich ignorieren die Ausnahme und weiter, die Anwendung funktioniert gut, die Steuerung funktioniert auch einwandfrei.
- Aufrufen AfxSetAmbientActCtx(FALSE), während der app-init unterdrückt die Ausnahme. Aber ich denke, dies ist ein hack, es sei denn, ich kann es rechtfertigen.
- Die "activation context being deactivated" symptom ist oft ein cascading symptom eines vorgelagerten Ausnahme crossing-Aktivierung zusammenhängen. Vielleicht eine von Ihr gefangen erste-chance-Ausnahmen ist dies zu tun. Sehen Sie, wenn Sie Sie zu fangen und zu verarbeiten, die erste-chance-Ausnahme, das passiert kurz vor der "Aktivierung Kontext" Ausnahme näher an, wo Sie geworfen wird.
- Debug + Ausnahmen, markieren Sie die Boxen Geworfen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach auf eine Menge von diesen, die ich gefunden habe, der einfache Weg, um track down der root-Problem ist zu gehen, um Debug -> Ausnahmen und aktivieren Sie ALLE Geworfen Ausnahmen. Dann finden Sie noch einige andere Ausnahme wird ausgelöst, werden lautlos gefangen, ABER vermasselt der Aktivierung Kontext. Sobald Sie beheben die erste Ausnahme, die Aktivierung Kontext-Ausnahme wird nicht passieren.
Stellt sich heraus, mir wurde aufgrund einer nicht initialisierten Mitglied in der beanstandeten control-Klasse. Initialisieren der Variablen, die im Konstruktor das Problem behoben wurde. Also ich habe nicht zu greifen, zu AfxSetAmbientActCtx(FALSE)
Den Diskussion über MS Connect "MFC-Standard-exception-Behandlung führt zu Problemen mit der Aktivierung Kontext' könnte Ihnen helfen, rechtfertigen den hack als ein workaround-Vorschlag von Microsoft.
Hatte das gleiche problem.
In meinem Fall war ich beim Lesen einer Datei aus einem Pfad und ich versehentlich gelöscht, die Datei. Setzen Sie die Datei wieder gelöst das Problem.
Hatte einige rätselhafte Abstürze in einem Programm, gehostet, DH zusammen mit mehreren ActiveX-Steuerelementen.
Erweist sich eine frühere Teilung durch null (durch eine der AX-Steuerelemente), die schließlich verursacht diese Ausnahme und eine anschließende Zugriffsverletzung wie gut.