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:

  1. 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)
  2. Erneut kompiliert das gesamte Projekt
  3. 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:

  1. Wenn ich überspringen der WS_CHILD-flag Ausnahme nicht passieren, aber OnCreate ist auch nicht auf das Steuerelement aufgerufen!
  2. Wenn ich ignorieren die Ausnahme und weiter, die Anwendung funktioniert gut, die Steuerung funktioniert auch einwandfrei.
  3. 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.
InformationsquelleAutor Ali | 2011-10-05
Schreibe einen Kommentar