gpt4 book ai didi

c++ - CreateEx Causes Unhandled exception 被停用的激活上下文不是最近激活的

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:27 24 4
gpt4 key购买 nike

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 是一个自定义窗口控件,以 CWnd 作为其曾祖父。该控件已成功用于其他步骤,我们的代码没有问题。 是一个 CPropertyPage。

我遇到的问题是线路导致(而且它每次都会) MyProduct (x64).exe 中 0x76f7fd5c 处的未处理异常:0xC015000F:被停用的激活上下文不是最近激活的。

异常也发生在 32 位中。我在 Windows 7 x64,VS 2008 上。

我已经尝试过的:

  1. 在调试器中启用中断 win32 异常。没有异常发生(除了第一次机会异常,我们的代码中有很多并且没有影响)
  2. 重新编译整个项目
  3. 调试异常控件的 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++

观察:

  1. 如果我跳过 WS_CHILD 标志,则不会发生异常,但也不会在控件上调用 OnCreate!
  2. 如果我忽略异常并继续,应用程序可以正常工作,控件也可以正常工作。
  3. 在应用程序初始化期间调用 AfxSetAmbientActCtx(FALSE) 可抑制异常。但我认为这是一个 hack,除非我能证明它是正确的。

最佳答案

在遇到很多这样的问题之后,我发现追踪根本问题的简单方法是转到调试 -> 异常并启用所有抛出的异常。然后你会发现有一些其他的异常正在触发,被静静地捕获,但弄乱了激活上下文。一旦修复了第一个异常,激活上下文异常就不会发生。

关于c++ - CreateEx Causes Unhandled exception 被停用的激活上下文不是最近激活的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7659127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com