C++ CreateEx导致未处理的异常正在停用的激活上下文不是最近激活的上下文
这条线花了我两天的时间,没有解决办法。它的AnalysisDataTable是一个自定义windows控件,它的父级为CWnd。该控件已成功地用于其他方面,代码中没有任何问题。这是一个CPropertyPage 我遇到的问题是,这条线导致(而且每次都是这样)一个错误C++ CreateEx导致未处理的异常正在停用的激活上下文不是最近激活的上下文,c++,exception,mfc,activation-context-api,C++,Exception,Mfc,Activation Context Api,这条线花了我两天的时间,没有解决办法。它的AnalysisDataTable是一个自定义windows控件,它的父级为CWnd。该控件已成功地用于其他方面,代码中没有任何问题。这是一个CPropertyPage 我遇到的问题是,这条线导致(而且每次都是这样)一个错误 MyProduct(x64)中0x76f7fd5c处未处理的异常。exe:0xC015000F:正在停用的激活上下文不是最近激活的上下文 异常也发生在32位中。我使用的是Windows7x64,VS2008 我已经尝试过的: 在调试
MyProduct(x64)中0x76f7fd5c处未处理的异常。exe:0xC015000F:正在停用的激活上下文不是最近激活的上下文 异常也发生在32位中。我使用的是Windows7x64,VS2008 我已经尝试过的:
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 );
意见:
这可能有助于您证明该黑客行为是微软提出的一项变通建议。结果表明,我的攻击是由于违规控件类中的未初始化成员造成的。在构造函数中初始化变量修复了该问题。因此,我不必求助于afxsetambientatctx(FALSE)在解决了很多问题之后,我发现跟踪根本问题的简单方法是转到Debug->Exceptions并启用所有抛出的异常。然后,您会发现还有一些异常正在触发,被静默地捕获,但会弄乱激活上下文。一旦修复了第一个异常,激活上下文异常就不会发生。也有同样的问题
在我的例子中,我从一个路径读取一个文件,我不小心删除了那个文件。把文件放回去解决了这个问题 在一个托管IE和几个ActiveX控件的程序中发生了一些神秘的崩溃
结果表明,先前的零除(由一个AX控件)最终导致了此异常以及随后的访问冲突。激活上下文被停用”症状通常是上游异常跨越激活上下文的级联症状。也许你第一次发现的例外之一就是这样做。查看是否可以捕获并处理“激活上下文”异常之前发生的第一次意外异常,该异常离引发异常的位置较近。调试+异常,勾选引发的框。
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++