具有动态创建控件的 MFC 应用程序突然停止响应
Posted
技术标签:
【中文标题】具有动态创建控件的 MFC 应用程序突然停止响应【英文标题】:MFC application with dynamically created controls suddenly stops responding 【发布时间】:2015-11-17 08:11:47 【问题描述】:我有一个 MFC 应用程序 (Visual Studio 2010),它根据用户的后续输入动态创建和销毁大量编辑框、下拉框和按钮。
我使用“Create”函数动态创建控件,在删除控件时系统先对每个控件调用“DestoryWindow”函数,然后删除每个控件指针。
在迭代一定数量的创建/删除控件后,如果我尝试“打开”下拉菜单,系统将无法打开它并停止响应我的输入 - 但如果我不尝试,我可以添加更多控件打开下拉菜单。
有人可以告诉我如何解决这个奇怪的问题吗?这个差点把我逼疯了……
【问题讨论】:
也许你有资源泄漏? 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误和在问题本身中重现它所需的最短代码。没有明确的问题陈述的问题对其他读者没有用处。见:How to create a Minimal, Complete, and Verifiable example. 【参考方案1】:解决方法很简单 - 不要试图“打开”该菜单 :)
现在我假设您想要FIX这个问题。然后你需要弄清楚发生了什么。系统可能由于多种原因没有响应,很可能是以下两种原因之一:
您正处于主 UI 线程的繁忙循环中。 您正在等待一个永远不会发生的事件。例如死锁。当您的应用程序被冻结时,尝试将调试器附加到它并执行 Debug -> Break All。然后看看执行的是什么代码。如果这种“冻结”的原因不明显,请发布相关代码。
【讨论】:
以上是关于具有动态创建控件的 MFC 应用程序突然停止响应的主要内容,如果未能解决你的问题,请参考以下文章