被去激活的激活上下文不是最近激活的激活上下文
CreateEx Causes Unhandled exception The activation context being deactivated is not the most recently activated one
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 );
这个问题花了我两天的时间,还是没有解决。它的analysisdatatable是一个自定义窗口控件,CWnd是它的祖辈。该控件已在其他地方成功使用,代码中没有出现问题。这个是一个CPropertyPage。
我遇到的问题是这行导致(它每次都这样)在MyProduct (x64).exe中的0x76f7fd5c未处理的异常:0xC015000F:被停用的激活上下文不是最近激活的激活上下文。
在32位也会出现异常。我在Windows 7 x64, VS 2008.
我已经试过了:
- 在调试器中启用win32异常中断。没有异常发生(除了第一次异常,在我们的代码中有很多并且没有影响)
- 重新编译整个项目
- 调试控件的OnCreate异常处理程序。
调用堆栈:
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++
观察:
- 如果我跳过WS_CHILD标志,则不会发生异常,但OnCreate也不会在控件上调用!
- 如果我忽略异常并继续,应用程序工作正常,控件也工作正常。
- 在应用程序初始化期间调用AfxSetAmbientActCtx(FALSE)会抑制异常。但我认为这是一个黑客,除非我能证明它。
在击中很多这些之后,我发现追踪根本问题的简单方法是去调试->异常并启用所有抛出的异常。然后你会发现有一些其他异常正在触发,被静默捕获,但搞乱了激活上下文。一旦修复了第一个异常,激活上下文异常就不会发生了。
原来是由于违规控件类中未初始化的成员。在构造函数中初始化变量解决了这个问题。所以我不需要使用AfxSetAmbientActCtx(FALSE)
在应用程序初始化期间调用AfxSetAmbientActCtx(FALSE)会抑制例外。但我认为这是一个黑客,除非我能证明它。
关于MS Connect 'MFC默认异常处理导致激活上下文问题'的讨论可能有助于您证明黑客是微软的变通建议。
有同样的问题
在我的情况下,我是从一个路径读取文件,我不小心删除了该文件。把文件放回去解决了问题。
在一个托管IE和几个ActiveX控件的程序中出现了一些神秘的崩溃。
结果是先前的除零(由一个AX控件)最终导致了此异常和随后的访问冲突。
相关文章:
- #为""定义宏;静态";针对不同的上下文
- 与互斥锁相比,旋转锁可以保证上下文切换
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 为什么在逗号分隔符上下文中将预增量的结果强制转换为void
- 错误"Could not find Boost"(缺少:上下文标头)
- 使用 mod_gsoap 部署服务时,如何在 Gsoap 中更改 soap 上下文的模式?
- 将有状态的 lambda 传递到 C 样式函数中,而无需上下文参数
- 安排带有上下文的协同程序
- 我的文件无法正常工作,无法从C++文件中读取上下文
- DCMTK 了解"DIMSE 没有有效的演示上下文 ID"错误
- 具有std::initializer_list参数的非成员函数(/non构造函数上下文)的重载解析
- 如何在日食中激活自动建议?
- antlr 规则上下文是否可以独立于目标
- OpenGL 调试上下文警告 -"将使用视频内存作为缓冲区异议的来源
- 激活上下文生成失败,依赖程序集,并行,事件 ID 33
- 被去激活的激活上下文不是最近激活的激活上下文
- 激活上下文生成失败.VC运行时错误
- 在C++组件中使用激活上下文API