gpt4 book ai didi

c++ - 显示断言对话框时提供 Windows 消息服务吗?

转载 作者:行者123 更新时间:2023-11-30 01:32:35 25 4
gpt4 key购买 nike

我有一个 MFC 应用程序,它生成许多不同的工作线程,并使用 VS2003 进行编译。

当调用 CTreeCtrl::GetItemState() 时,我偶尔会弹出一个调试断言对话框。我假设这是因为我传递了一个无效项目的句柄,但这不是我直接关心的问题。

我担心的是:从我的日志来看,在显示断言对话框的同时,MFC 线程似乎继续为许多 Windows 消息提供服务。我认为断言对话框是模态的,所以我想知道这是否可能?

最佳答案

显示断言失败的消息框有一个用于其自身目的的消息泵。但它会分派(dispatch)所有传入的消息,而不仅仅是消息框的消息(否则可能会被阻止)。

对于普通的模式对话框,这不是问题,因为父窗口通常在对话框期间处于禁用状态。

启动断言对话框的代码一定无法找出父窗口,因此它没有被禁用。如果您的主窗口在断言时不是事件窗口,则可能会发生这种情况。其他事情也可能出错。

您可以使用 _CrtSetReportMode 更改 Visual Studio 的 C 运行时库报告断言失败的方式。 。您可以使其在调试器中停止和/或记录到输出窗口,而不是尝试显示对话框。

关于c++ - 显示断言对话框时提供 Windows 消息服务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1454058/

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